diff --git a/consumer/src/main/java/cn/lili/event/impl/MemberCouponExecute.java b/consumer/src/main/java/cn/lili/event/impl/MemberCouponExecute.java index 8ab710c1..fc567b35 100644 --- a/consumer/src/main/java/cn/lili/event/impl/MemberCouponExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/MemberCouponExecute.java @@ -2,11 +2,14 @@ package cn.lili.event.impl; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.text.CharSequenceUtil; +import cn.lili.event.AfterSaleStatusChangeEvent; import cn.lili.event.OrderStatusChangeEvent; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dto.OrderMessage; import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; import cn.lili.modules.order.order.service.OrderService; +import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum; import cn.lili.modules.promotion.service.MemberCouponService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -18,7 +21,7 @@ import org.springframework.stereotype.Service; * @since 2022/8/12 **/ @Service -public class MemberCouponExecute implements OrderStatusChangeEvent { +public class MemberCouponExecute implements OrderStatusChangeEvent, AfterSaleStatusChangeEvent { /** * 订单 @@ -33,15 +36,30 @@ public class MemberCouponExecute implements OrderStatusChangeEvent { public void orderChange(OrderMessage orderMessage) { // 订单取消返还优惠券 if (orderMessage.getNewStatus() == OrderStatusEnum.CANCELLED) { - Order order = orderService.getBySn(orderMessage.getOrderSn()); - if (CharSequenceUtil.isNotEmpty(order.getUseStoreMemberCouponIds())) { - memberCouponService.recoveryMemberCoupon(ListUtil.toList(order.getUseStoreMemberCouponIds().split(","))); - } - if (CharSequenceUtil.isNotEmpty(order.getUsePlatformMemberCouponId())) { - memberCouponService.recoveryMemberCoupon(ListUtil.toList(order.getUsePlatformMemberCouponId().split(","))); - } + this.refundCoupon(orderMessage.getOrderSn()); } } + @Override + public void afterSaleStatusChange(AfterSale afterSale) { + // 售后完成返还优惠券 + if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) { + this.refundCoupon(afterSale.getOrderSn()); + } + } + + /** + * 退款返还优惠券 + * @param orderSn 订单编号 + */ + private void refundCoupon(String orderSn) { + Order order = orderService.getBySn(orderSn); + if (CharSequenceUtil.isNotEmpty(order.getUseStoreMemberCouponIds())) { + memberCouponService.recoveryMemberCoupon(ListUtil.toList(order.getUseStoreMemberCouponIds().split(","))); + } + if (CharSequenceUtil.isNotEmpty(order.getUsePlatformMemberCouponId())) { + memberCouponService.recoveryMemberCoupon(ListUtil.toList(order.getUsePlatformMemberCouponId().split(","))); + } + } } diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/DraftGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/DraftGoodsServiceImpl.java index 02072469..14860643 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/DraftGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/DraftGoodsServiceImpl.java @@ -5,15 +5,13 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONUtil; import cn.lili.modules.goods.entity.dos.*; -import cn.lili.modules.goods.entity.dto.DraftGoodsDTO; -import cn.lili.modules.goods.entity.dto.DraftGoodsSearchParams; -import cn.lili.modules.goods.entity.dto.GoodsOperationDTO; -import cn.lili.modules.goods.entity.dto.GoodsParamsDTO; +import cn.lili.modules.goods.entity.dto.*; import cn.lili.modules.goods.entity.vos.DraftGoodsVO; import cn.lili.modules.goods.mapper.DraftGoodsMapper; import cn.lili.modules.goods.service.*; import cn.lili.modules.goods.sku.GoodsSkuBuilder; import cn.lili.mybatis.util.PageUtil; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; @@ -75,13 +73,23 @@ public class DraftGoodsServiceImpl extends ServiceImpl goodsSkus = GoodsSkuBuilder.buildBatch(new Goods(draftGoods), draftGoods.getSkuList()); - goodsSkuService.renderGoodsSkuList(goodsSkus, GoodsOperationDTO.builder().goodsTemplateFlag(true).wholesaleList(draftGoods.getWholesaleList()).salesModel(draftGoods.getSalesModel()).build()); - draftGoods.setSkuListJson(JSONUtil.toJsonStr(goodsSkus)); + // 商品参数 draftGoods.setGoodsParamsListJson(JSONUtil.toJsonStr(draftGoods.getGoodsParamsDTOList())); - this.saveOrUpdate(draftGoods); + boolean result = this.saveOrUpdate(draftGoods); + if (result) { + // 商品sku + List goodsSkus = GoodsSkuBuilder.buildBatch(new Goods(draftGoods), draftGoods.getSkuList()); + for (WholesaleDTO wholesaleDTO : draftGoods.getWholesaleList()) { + wholesaleDTO.setTemplateId(draftGoods.getId()); + } + goodsSkuService.renderGoodsSkuList(goodsSkus, GoodsOperationDTO.builder().goodsTemplateFlag(true).wholesaleList(draftGoods.getWholesaleList()).salesModel(draftGoods.getSalesModel()).build()); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(DraftGoods::getId, draftGoods.getId()); + updateWrapper.set(DraftGoods::getSkuListJson, JSONUtil.toJsonStr(goodsSkus)); + this.update(updateWrapper); + } } @Override diff --git a/framework/src/main/java/cn/lili/modules/goods/sku/render/impl/WholesaleSaleModelRenderImpl.java b/framework/src/main/java/cn/lili/modules/goods/sku/render/impl/WholesaleSaleModelRenderImpl.java index 55a95bb2..d34a4ac2 100644 --- a/framework/src/main/java/cn/lili/modules/goods/sku/render/impl/WholesaleSaleModelRenderImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/sku/render/impl/WholesaleSaleModelRenderImpl.java @@ -55,7 +55,9 @@ public class WholesaleSaleModelRenderImpl implements SalesModelRender { skus.setPrice(collect.get(0).getPrice()); skus.setCost(collect.get(0).getPrice()); } - if (Boolean.FALSE.equals(goodsOperationDTO.getGoodsTemplateFlag())) { + if (Boolean.TRUE.equals(goodsOperationDTO.getGoodsTemplateFlag())) { + wholesaleService.removeByTemplateId(goodsSkus.get(0).getGoodsId()); + } else { wholesaleService.removeByGoodsId(goodsSkus.get(0).getGoodsId()); } wholesaleService.saveOrUpdateBatch(collect);