diff --git a/consumer/src/main/java/cn/lili/event/impl/MemberCouponExecute.java b/consumer/src/main/java/cn/lili/event/impl/MemberCouponExecute.java new file mode 100644 index 00000000..d32c3fdb --- /dev/null +++ b/consumer/src/main/java/cn/lili/event/impl/MemberCouponExecute.java @@ -0,0 +1,46 @@ +package cn.lili.event.impl; + +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.text.CharSequenceUtil; +import cn.lili.event.OrderStatusChangeEvent; +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.promotion.service.MemberCouponService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 会员优惠券执行类 + * + * @author paulG + * @since 2022/8/12 + **/ +@Service +public class MemberCouponExecute implements OrderStatusChangeEvent { + + /** + * 订单 + */ + @Autowired + private OrderService orderService; + + @Autowired + private MemberCouponService memberCouponService; + + @Override + 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(","))); + } else if (CharSequenceUtil.isNotEmpty(order.getUsePlatformMemberCouponId())) { + memberCouponService.recoveryMemberCoupon(ListUtil.toList(order.getUsePlatformMemberCouponId().split(","))); + } + } + } + + +} diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java index 0bc211fc..e2f3f883 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java @@ -6,6 +6,7 @@ import cn.lili.common.enums.ClientTypeEnum; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.utils.BeanUtil; import cn.lili.modules.goods.entity.enums.GoodsTypeEnum; +import cn.lili.modules.order.cart.entity.dto.MemberCouponDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.enums.CartTypeEnum; import cn.lili.modules.order.cart.entity.enums.DeliveryMethodEnum; @@ -238,8 +239,8 @@ public class Order extends BaseEntity { //店铺优惠券判定 if (tradeDTO.getStoreCoupons() != null && !tradeDTO.getStoreCoupons().isEmpty()) { StringBuilder storeCouponIds = new StringBuilder(); - for (String s : tradeDTO.getStoreCoupons().keySet()) { - storeCouponIds.append(s).append(","); + for (MemberCouponDTO value : tradeDTO.getStoreCoupons().values()) { + storeCouponIds.append(value.getMemberCoupon().getId()).append(","); } this.setUseStoreMemberCouponIds(storeCouponIds.toString()); } diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/MemberCouponService.java b/framework/src/main/java/cn/lili/modules/promotion/service/MemberCouponService.java index 0d438b6a..132367a9 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/MemberCouponService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/MemberCouponService.java @@ -139,4 +139,12 @@ public interface MemberCouponService extends IService { */ void closeMemberCoupon(List couponIds); + /** + * 恢复会员优惠券 + * + * @param memberCouponIds 会员优惠券id列表 + * @return 是否恢复成功 + */ + boolean recoveryMemberCoupon(List memberCouponIds); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java index 9cd0961e..cee103dc 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java @@ -285,6 +285,14 @@ public class MemberCouponServiceImpl extends ServiceImpl memberCouponIds) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.in(MemberCoupon::getId, memberCouponIds); + updateWrapper.set(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.NEW.name()); + return this.update(updateWrapper); + } + /** * 清除无效的会员优惠券 *