package cn.lili.modules.order.order.entity.vo; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.modules.order.cart.entity.enums.DeliveryMethodEnum; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.enums.DeliverStatusEnum; import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; import cn.lili.modules.order.order.entity.enums.OrderTypeEnum; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; /** * 订单可进行的操作 * * @author Chopper * @since 2020/11/17 7:29 下午 */ @Data public class AllowOperation implements Serializable { private static final long serialVersionUID = -5109440403955543227L; @ApiModelProperty(value = "可以取消") private Boolean cancel = false; @ApiModelProperty(value = "可以支付") private Boolean pay = false; @ApiModelProperty(value = "可以发货") private Boolean ship = false; @ApiModelProperty(value = "可以收货") private Boolean rog = false; @ApiModelProperty(value = "是否允许查看物流信息") private Boolean showLogistics = false; @ApiModelProperty(value = "是否允许更改收货人信息") private Boolean editConsignee = false; @ApiModelProperty(value = "是否允许更改价格") private Boolean editPrice = false; @ApiModelProperty(value = "是否可以进行核销") private Boolean take = false; /** * 根据各种状态构建对象 * * @param order */ public AllowOperation(Order order) { //获取订单类型 String status = order.getOrderStatus(); String payStatus = order.getPayStatus(); //编辑订单价格 未付款并且是新订单 if (payStatus.equals(PayStatusEnum.UNPAID.name()) && status.equals(OrderStatusEnum.UNPAID.name())) { this.editPrice = true; } //新订单 if (CharSequenceUtil.equalsAny(status, OrderStatusEnum.UNPAID.name(), OrderStatusEnum.PAID.name(), OrderStatusEnum.UNDELIVERED.name(), OrderStatusEnum.STAY_PICKED_UP.name(), OrderStatusEnum.TAKE.name())) { this.cancel = true; } //新订单,允许支付 this.pay = status.equals(OrderStatusEnum.UNPAID.name()) && payStatus.equals(PayStatusEnum.UNPAID.name()); //可编辑订单收件人信息=实物订单 && 订单未发货 && 订单未取消 && 订单不是自提 this.editConsignee = order.getOrderType().equals(OrderTypeEnum.NORMAL.name()) && order.getDeliverStatus().equals(DeliverStatusEnum.UNDELIVERED.name()) && !status.equals(OrderStatusEnum.CANCELLED.name()) && !order.getDeliveryMethod().equals(DeliveryMethodEnum.SELF_PICK_UP.name()); //是否允许被发货 this.ship = editConsignee && status.equals(OrderStatusEnum.UNDELIVERED.name()); //是否允许被收货 this.rog = status.equals(OrderStatusEnum.DELIVERED.name()); //是否允许查看物流信息 this.showLogistics = order.getDeliverStatus().equals(DeliverStatusEnum.DELIVERED.name()) && status.equals(OrderStatusEnum.DELIVERED.name()); //虚拟订单 或 自提订单可以核销 this.take = (order.getOrderType().equals(OrderTypeEnum.VIRTUAL.name()) && order.getOrderStatus().equals(OrderStatusEnum.TAKE.name())) || (order.getDeliveryMethod().equals(DeliveryMethodEnum.SELF_PICK_UP.name()) && order.getOrderStatus().equals(OrderStatusEnum.STAY_PICKED_UP.name())); } /** * 根据各种状态构建对象 * * @param order */ public AllowOperation(OrderSimpleVO order) { //获取订单类型 String status = order.getOrderStatus(); String payStatus = order.getPayStatus(); //编辑订单价格 未付款并且是新订单 if (payStatus.equals(PayStatusEnum.UNPAID.name()) && status.equals(OrderStatusEnum.UNPAID.name())) { this.editPrice = true; } //取消判定 if (CharSequenceUtil.equalsAny(status, OrderStatusEnum.UNPAID.name(), OrderStatusEnum.PAID.name(), OrderStatusEnum.UNDELIVERED.name())) { this.cancel = true; } //新订单,允许支付 this.pay = status.equals(OrderStatusEnum.UNPAID.name()); //订单未发货,就可以编辑收货人信息 this.editConsignee = order.getDeliverStatus().equals(DeliverStatusEnum.UNDELIVERED.name()); //是否允许被发货 this.ship = editConsignee && status.equals(OrderStatusEnum.UNDELIVERED.name()); //是否允许被收货 this.rog = status.equals(OrderStatusEnum.DELIVERED.name()); //是否允许查看物流信息 this.showLogistics = order.getDeliverStatus().equals(DeliverStatusEnum.DELIVERED.name()) && status.equals(OrderStatusEnum.DELIVERED.name()); this.take = order.getOrderType().equals(OrderTypeEnum.VIRTUAL.name()) && order.getOrderStatus().equals(OrderStatusEnum.TAKE.name()); } /** * 根据各种状态构建对象 * * @param order */ public AllowOperation(OrderSimpleXcxVO order) { //获取订单类型 String status = order.getOrderStatus(); String payStatus = order.getPayStatus(); //编辑订单价格 未付款并且是新订单 if (payStatus.equals(PayStatusEnum.UNPAID.name()) && status.equals(OrderStatusEnum.UNPAID.name())) { this.editPrice = true; } //取消判定 if (CharSequenceUtil.equalsAny(status, OrderStatusEnum.UNPAID.name(), OrderStatusEnum.PAID.name(), OrderStatusEnum.UNDELIVERED.name())) { this.cancel = true; } //新订单,允许支付 this.pay = status.equals(OrderStatusEnum.UNPAID.name()); //订单未发货,就可以编辑收货人信息 this.editConsignee = order.getDeliverStatus().equals(DeliverStatusEnum.UNDELIVERED.name()); //是否允许被发货 this.ship = editConsignee && status.equals(OrderStatusEnum.UNDELIVERED.name()); //是否允许被收货 this.rog = status.equals(OrderStatusEnum.DELIVERED.name()); //是否允许查看物流信息 this.showLogistics = order.getDeliverStatus().equals(DeliverStatusEnum.DELIVERED.name()) && status.equals(OrderStatusEnum.DELIVERED.name()); this.take = order.getOrderType().equals(OrderTypeEnum.VIRTUAL.name()) && order.getOrderStatus().equals(OrderStatusEnum.TAKE.name()); } }