!225 增加订单取消返还优惠券

Merge pull request !225 from OceansDeep/feature/pg
This commit is contained in:
OceansDeep 2022-08-16 00:36:58 +00:00 committed by Gitee
commit 9eba3287b2
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
4 changed files with 65 additions and 2 deletions

View File

@ -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(",")));
}
}
}
}

View File

@ -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());
}

View File

@ -139,4 +139,12 @@ public interface MemberCouponService extends IService<MemberCoupon> {
*/
void closeMemberCoupon(List<String> couponIds);
/**
* 恢复会员优惠券
*
* @param memberCouponIds 会员优惠券id列表
* @return 是否恢复成功
*/
boolean recoveryMemberCoupon(List<String> memberCouponIds);
}

View File

@ -285,6 +285,14 @@ public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, Mem
this.update(memberCouponLambdaUpdateWrapper);
}
@Override
public boolean recoveryMemberCoupon(List<String> memberCouponIds) {
LambdaUpdateWrapper<MemberCoupon> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(MemberCoupon::getId, memberCouponIds);
updateWrapper.set(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.NEW.name());
return this.update(updateWrapper);
}
/**
* 清除无效的会员优惠券
*