Przeglądaj źródła

优惠券创建和更新支持指定门店

cup 2 lat temu
rodzic
commit
acf86769dd

+ 2 - 2
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/CouponMgrController.java

@@ -226,7 +226,7 @@ public class CouponMgrController extends BaseApiController {
 		}
 		// 3.插入数据
 		try {
-			couponService.saveCoupon(coupon,ticketList);
+			couponService.saveCoupon(coupon,ticketList,couponParam.getChannelIdList());
 		} catch (Exception e) {
 			return AjaxResult.error("代金券'" + coupon.getTitle() + "'新增失败" + e.getMessage());
 		}
@@ -276,7 +276,7 @@ public class CouponMgrController extends BaseApiController {
 	        }
 		}
 		try {
-			couponService.updateCoupon(coupon, ticketList);
+			couponService.updateCoupon(coupon, ticketList, couponParam.getChannelIdList());
 		} catch (Exception e) {
 			return AjaxResult.error(e.getMessage());
 		}

+ 1 - 1
mp-service/src/main/java/com/qs/mp/admin/domain/CouponChannel.java

@@ -29,7 +29,7 @@ public class CouponChannel implements Serializable {
    * 优惠券ID
    */
   @TableField("coupon_id")
-  private String couponId;
+  private Long couponId;
 
   /**
    * 渠道ID

+ 2 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/CouponParam.java

@@ -112,6 +112,8 @@ public class CouponParam {
   @ApiModelProperty(value = "盲票购买优惠券使用范围限制实体类列表", required = false)
   private String boxIds;
 
+  @ApiModelProperty("门店消费优惠券使用范围限制实体类列表")
+  private List<Long> channelIdList;
 
   @ApiModelProperty("排除的优惠券id列表")
   private List<Long> excludeCouponIds;

+ 2 - 2
mp-service/src/main/java/com/qs/mp/admin/service/ICouponService.java

@@ -23,7 +23,7 @@ public interface ICouponService extends IService<Coupon> {
 	 * @param coupon
 	 * @param ticketList
 	 */
-	public void saveCoupon(Coupon coupon, List<CouponTicket> ticketList);
+	public void saveCoupon(Coupon coupon, List<CouponTicket> ticketList, List<Long> channelIdList);
 
 	/**
 	 * 修改信息
@@ -31,7 +31,7 @@ public interface ICouponService extends IService<Coupon> {
 	 * @param coupon
 	 * @param ticketList
 	 */
-	public void updateCoupon(Coupon coupon, List<CouponTicket> ticketList);
+	public void updateCoupon(Coupon coupon, List<CouponTicket> ticketList, List<Long> channelIdList);
 
 	/**
 	 * 发放

+ 68 - 18
mp-service/src/main/java/com/qs/mp/admin/service/impl/CouponServiceImpl.java

@@ -2,12 +2,15 @@ package com.qs.mp.admin.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.qs.mp.admin.domain.Coupon;
+import com.qs.mp.admin.domain.CouponChannel;
 import com.qs.mp.admin.domain.CouponTicket;
 import com.qs.mp.admin.domain.Goods;
 import com.qs.mp.admin.domain.GoodsSku;
 import com.qs.mp.admin.domain.Ticket;
 import com.qs.mp.admin.mapper.CouponMapper;
+import com.qs.mp.admin.service.ICouponChannelService;
 import com.qs.mp.admin.service.ICouponService;
 import com.qs.mp.admin.service.ICouponTicketService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -30,6 +33,7 @@ import com.qs.mp.user.service.IUserTicketOrderItemService;
 
 import com.qs.mp.user.service.IUserTicketOrderService;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.slf4j.Logger;
@@ -76,6 +80,9 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
     @Autowired
     private IChannelService channelService;
 
+    @Autowired
+    private ICouponChannelService couponChannelService;
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void distributeByMarketing(Long userId, String couponId) {
@@ -140,13 +147,28 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void saveCoupon(Coupon coupon, List<CouponTicket> ticketList) {
+    public void saveCoupon(Coupon coupon, List<CouponTicket> ticketList,List<Long> channelIdList) {
         boolean res = couponService.save(coupon);
         if (!res) {
             throw new ServiceException("请联系管理员");
         }
-        if (res && null != ticketList
-                && ticketList.size() > 0) {
+
+        // 指定门店
+        if (CollectionUtils.isNotEmpty(channelIdList)) {
+            List<CouponChannel> channelList = new ArrayList<>();
+            for (Long channelId : channelIdList) {
+                CouponChannel couponChannel = new CouponChannel();
+                couponChannel.setChannelId(channelId);
+                couponChannel.setCouponId(coupon.getCouponId());
+                channelList.add(couponChannel);
+            }
+            if (!couponChannelService.saveBatch(channelList)) {
+                throw new ServiceException("保存指定门店失败");
+            }
+        }
+
+        // 指定盲票
+        if (CollectionUtils.isNotEmpty(ticketList)) {
             for (CouponTicket couponTicket : ticketList) {
                 if (null != couponTicket) {
                     couponTicket.setCouponId(coupon.getCouponId());
@@ -154,39 +176,67 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
             }
             boolean skuRes = couponTicketService.saveBatch(ticketList);
             if (!skuRes) {
-                throw new ServiceException("请联系管理员");
+                throw new ServiceException("保存指定盲票失败");
             }
         }
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void updateCoupon(Coupon coupon, List<CouponTicket> ticketList) {
+    public void updateCoupon(Coupon coupon, List<CouponTicket> ticketList, List<Long> channelIdList) {
         boolean res = couponService.updateById(coupon);
         if (!res) {
             throw new ServiceException("请联系管理员");
         }
-        // 多SKU
-        if (res && null != ticketList
-                && ticketList.size() > 0) {
+
+        // 删除指定票
+        LambdaQueryWrapper<CouponTicket> couponTicketQueryWrapper = new LambdaQueryWrapper<>();
+        couponTicketQueryWrapper.eq(CouponTicket::getCouponId, coupon.getCouponId());
+        if (couponTicketService.count(couponTicketQueryWrapper) > 0) {
+            boolean delRes = couponTicketService.remove(couponTicketQueryWrapper);
+            if (!delRes) {
+                throw new ServiceException("删除原指定盲票关联失败");
+            }
+        }
+
+
+        // 删除指定门店
+        LambdaQueryWrapper<CouponChannel> couponChannelLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        couponChannelLambdaQueryWrapper.eq(CouponChannel::getCouponId, coupon.getCouponId());
+        if (couponChannelService.count(couponChannelLambdaQueryWrapper) > 0) {
+            boolean delRes = couponChannelService.remove(couponChannelLambdaQueryWrapper);
+            if (!delRes) {
+                throw new ServiceException("删除原指定门店关联失败");
+            }
+        }
+
+        // 保存指定门店
+        if (CollectionUtils.isNotEmpty(channelIdList)) {
+            List<CouponChannel> channelList = new ArrayList<>();
+            for (Long channelId : channelIdList) {
+                CouponChannel couponChannel = new CouponChannel();
+                couponChannel.setChannelId(channelId);
+                couponChannel.setCouponId(coupon.getCouponId());
+                channelList.add(couponChannel);
+            }
+            if (!couponChannelService.saveBatch(channelList)) {
+                throw new ServiceException("保存指定门店失败");
+            }
+        }
+
+
+        // 保存指定盲票
+        if (CollectionUtils.isNotEmpty(ticketList)) {
             for (CouponTicket couponTicket : ticketList) {
                 if (null != couponTicket) {
-                    couponTicket.setCouponId(couponTicket.getCouponId());
+                    couponTicket.setCouponId(coupon.getCouponId());
                 }
-            }
 
-            LambdaQueryWrapper<CouponTicket> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(CouponTicket::getCouponId, coupon.getCouponId());
-            boolean delRes = couponTicketService.remove(queryWrapper);
-            if (delRes) {
                 boolean skuRes = couponTicketService.saveBatch(ticketList);
                 if (!skuRes) {
-                    throw new ServiceException("请联系管理员");
+                    throw new ServiceException("更新指定盲票失败");
                 }
-            } else {
-                throw new ServiceException("请联系管理员");
             }
-
         }
     }
 }