package cn.lili.modules.order.order.entity.dos; import cn.hutool.core.collection.CollUtil; import cn.hutool.json.JSONUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.utils.BeanUtil; import cn.lili.common.utils.SnowFlake; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.vo.CartSkuVO; import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.order.entity.dto.PriceDetailDTO; import cn.lili.modules.order.order.entity.enums.CommentStatusEnum; import cn.lili.modules.order.order.entity.enums.OrderComplaintStatusEnum; import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum; import cn.lili.modules.order.order.entity.enums.RefundStatusEnum; import cn.lili.modules.promotion.entity.vos.PromotionSkuVO; import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.stream.Collectors; /** * 子订单 * * @author Chopper * @since 2020/11/17 7:30 下午 */ @Data @TableName("li_order_item") @ApiModel(value = "子订单") @NoArgsConstructor @AllArgsConstructor public class OrderItem extends BaseEntity { private static final long serialVersionUID = 2108971190191410182L; @ApiModelProperty(value = "订单编号") private String orderSn; @ApiModelProperty(value = "子订单编号") private String sn; @ApiModelProperty(value = "单价") private Double unitPrice; @ApiModelProperty(value = "小记") private Double subTotal; @ApiModelProperty(value = "商品ID") private String goodsId; @ApiModelProperty(value = "货品ID") private String skuId; @ApiModelProperty(value = "销售量") private Integer num; @ApiModelProperty(value = "交易编号") private String tradeSn; @ApiModelProperty(value = "图片") private String image; @ApiModelProperty(value = "商品名称") private String goodsName; @ApiModelProperty(value = "分类ID") private String categoryId; @ApiModelProperty(value = "快照id") private String snapshotId; @ApiModelProperty(value = "规格json") private String specs; @ApiModelProperty(value = "促销类型") private String promotionType; @ApiModelProperty(value = "促销id") private String promotionId; @ApiModelProperty(value = "销售金额") private Double goodsPrice; @ApiModelProperty(value = "实际金额") private Double flowPrice; /** * @see CommentStatusEnum */ @ApiModelProperty(value = "评论状态:未评论(UNFINISHED),待追评(WAIT_CHASE),评论完成(FINISHED),") private String commentStatus; /** * @see OrderItemAfterSaleStatusEnum */ @ApiModelProperty(value = "售后状态") private String afterSaleStatus; @ApiModelProperty(value = "价格详情") private String priceDetail; /** * @see OrderComplaintStatusEnum */ @ApiModelProperty(value = "投诉状态") private String complainStatus; @ApiModelProperty(value = "交易投诉id") private String complainId; @ApiModelProperty(value = "退货商品数量") private Integer returnGoodsNumber; /** * @see cn.lili.modules.order.order.entity.enums.RefundStatusEnum */ @ApiModelProperty(value = "退款状态") private String isRefund; @ApiModelProperty(value = "退款金额") private Double refundPrice; @ApiModelProperty(value = "已发货数量") private Integer deliverNumber; public Integer getDeliverNumber() { if(deliverNumber == null){ return 0; } return deliverNumber; } public OrderItem(CartSkuVO cartSkuVO, CartVO cartVO, TradeDTO tradeDTO) { String oldId = this.getId(); BeanUtil.copyProperties(cartSkuVO.getGoodsSku(), this); BeanUtil.copyProperties(cartSkuVO.getPriceDetailDTO(), this); BeanUtil.copyProperties(cartSkuVO, this); this.setId(oldId); if (cartSkuVO.getPriceDetailDTO().getJoinPromotion() != null && !cartSkuVO.getPriceDetailDTO().getJoinPromotion().isEmpty()) { this.setPromotionType(CollUtil.join(cartSkuVO.getPriceDetailDTO().getJoinPromotion().stream().map(PromotionSkuVO::getPromotionType).collect(Collectors.toList()), ",")); this.setPromotionId(CollUtil.join(cartSkuVO.getPriceDetailDTO().getJoinPromotion().stream().map(PromotionSkuVO::getActivityId).collect(Collectors.toList()), ",")); } this.setAfterSaleStatus(OrderItemAfterSaleStatusEnum.NEW.name()); this.setCommentStatus(CommentStatusEnum.NEW.name()); this.setComplainStatus(OrderComplaintStatusEnum.NEW.name()); this.setPriceDetailDTO(cartSkuVO.getPriceDetailDTO()); this.setOrderSn(cartVO.getSn()); this.setTradeSn(tradeDTO.getSn()); this.setImage(cartSkuVO.getGoodsSku().getThumbnail()); this.setGoodsName(cartSkuVO.getGoodsSku().getGoodsName()); this.setSkuId(cartSkuVO.getGoodsSku().getId()); this.setCategoryId(cartSkuVO.getGoodsSku().getCategoryPath().substring( cartSkuVO.getGoodsSku().getCategoryPath().lastIndexOf(",") + 1 )); this.setGoodsPrice(cartSkuVO.getGoodsSku().getPrice()); this.setUnitPrice(cartSkuVO.getPurchasePrice()); this.setSubTotal(cartSkuVO.getSubTotal()); this.setSn(SnowFlake.createStr("OI")); } public String getIsRefund() { if (isRefund == null) { return RefundStatusEnum.NO_REFUND.name(); } return isRefund; } public double getRefundPrice() { if (refundPrice == null) { return 0; } return refundPrice; } public PriceDetailDTO getPriceDetailDTO() { return JSONUtil.toBean(priceDetail, PriceDetailDTO.class); } public void setPriceDetailDTO(PriceDetailDTO priceDetail) { this.priceDetail = JSONUtil.toJsonStr(priceDetail); } public String getAfterSaleStatus() { if (!PromotionTypeEnum.isCanAfterSale(this.promotionType)) { return OrderItemAfterSaleStatusEnum.EXPIRED.name(); } return afterSaleStatus; } }