Procházet zdrojové kódy

创建活动-优惠券

skyline před 2 roky
rodič
revize
3390c9c0ce

+ 4 - 3
admin/src/main/java/com/kym/admin/controller/CouponController.java

@@ -3,6 +3,7 @@ package com.kym.admin.controller;
 import com.kym.common.R;
 import com.kym.entity.admin.Coupon;
 import com.kym.entity.admin.queryParams.CouponQueryParam;
+import com.kym.entity.admin.vo.CouponVo;
 import com.kym.service.admin.CouponService;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -31,12 +32,12 @@ public class CouponController {
     /**
      * 添加优惠券
      *
-     * @param coupon
+     * @param couponVo
      * @return
      */
     @PostMapping("add")
-    public R<?> addCoupon(@RequestBody Coupon coupon) {
-        couponService.save(coupon);
+    public R<?> addCoupon(@RequestBody CouponVo couponVo) {
+        couponService.addCoupon(couponVo);
         return R.success();
     }
 

+ 7 - 4
entity/src/main/java/com/kym/entity/admin/Coupon.java

@@ -3,14 +3,12 @@ package com.kym.entity.admin;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.kym.entity.BaseEntity;
-
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
 import lombok.Getter;
 import lombok.Setter;
 import lombok.experimental.Accessors;
 
+import java.time.LocalDateTime;
+
 /**
  * <p>
  * 优惠券表
@@ -27,6 +25,11 @@ public class Coupon extends BaseEntity {
 
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 活动id
+     */
+    private Long activityId;
+
     /**
      * 优惠券名称
      */

+ 6 - 0
entity/src/main/java/com/kym/entity/admin/vo/ActivityVo.java

@@ -3,6 +3,7 @@ package com.kym.entity.admin.vo;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.kym.entity.BaseEntity;
 import com.kym.entity.admin.Banner;
+import com.kym.entity.admin.Coupon;
 import com.kym.entity.admin.RechargeRights;
 import com.kym.entity.admin.Station;
 import lombok.Data;
@@ -100,6 +101,11 @@ public class ActivityVo extends BaseEntity {
      */
     List<RechargeRights> rechargeRightsList;
 
+    /**
+     * 优惠券列表
+     */
+    List<Coupon> couponList;
+
     /**
      * 活动banner
      */

+ 87 - 0
entity/src/main/java/com/kym/entity/admin/vo/CouponVo.java

@@ -0,0 +1,87 @@
+package com.kym.entity.admin.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.kym.entity.BaseEntity;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 优惠券表
+ *
+ * @author skyline
+ * @since 2024-04-25
+ */
+@Data
+@Accessors(chain = true)
+public class CouponVo extends BaseEntity {
+
+    /**
+     * 活动id
+     */
+    private Long activityId;
+
+    /**
+     * 优惠券名称
+     */
+    private String couponName;
+
+    /**
+     * 优惠券描述
+     */
+    private String couponDesc;
+
+    /**
+     * 开始时间
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime startTime;
+
+    /**
+     * 结束时间
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime endTime;
+
+    /**
+     * 券种:Discount折扣券、FullDiscount满减券
+     */
+    private String couponType;
+
+    /**
+     * 使用门槛:最小服务费金额(分)
+     */
+    private Integer minServiceMoney;
+
+    /**
+     * 折扣:100代表无折扣,75代表75折;折扣金额(分)
+     */
+    private Integer discount;
+
+    /**
+     * 优惠允许叠加:0-不允许,1-允许
+     */
+    private Integer allowStacke;
+
+    /**
+     * 数量限制
+     */
+    private Integer quantity;
+
+    /**
+     * 活动状态:0-未开始,1-进行中,2-已结束,3-已取消
+     */
+    private Integer status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 适用站点ID
+     */
+    private List<String> stationIds;
+}

+ 2 - 1
mapper/src/main/resources/mappers/admin/CouponMapper.xml

@@ -5,6 +5,7 @@
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.kym.entity.admin.Coupon">
         <result column="id" property="id" />
+        <result column="activity_id" property="activityId" />
         <result column="coupon_name" property="couponName" />
         <result column="coupon_desc" property="couponDesc" />
         <result column="start_time" property="startTime" />
@@ -22,7 +23,7 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id,coupon_name, coupon_desc, start_time, end_time, coupon_type, min_service_money, discount, allow_stacke, quantity, status, remark,create_time,update_time
+        id,activity_id,coupon_name, coupon_desc, start_time, end_time, coupon_type, min_service_money, discount, allow_stacke, quantity, status, remark,create_time,update_time
     </sql>
 
 </mapper>

+ 3 - 0
service/src/main/java/com/kym/service/admin/CouponService.java

@@ -4,6 +4,7 @@ import com.github.yulichang.base.MPJBaseService;
 import com.kym.entity.admin.Coupon;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.kym.entity.admin.queryParams.CouponQueryParam;
+import com.kym.entity.admin.vo.CouponVo;
 import com.kym.entity.common.PageBean;
 
 /**
@@ -15,6 +16,8 @@ import com.kym.entity.common.PageBean;
  * @since 2024-04-25
  */
 public interface CouponService extends MPJBaseService<Coupon> {
+    void addCoupon(CouponVo couponVo);
 
     PageBean<Coupon> listCoupon(CouponQueryParam params);
+
 }

+ 16 - 4
service/src/main/java/com/kym/service/admin/impl/ActivityServiceImpl.java

@@ -47,16 +47,19 @@ public class ActivityServiceImpl extends MPJBaseServiceImpl<ActivityMapper, Acti
 
     private final ActivityStationService activityStationService;
     private final RechargeRightsService rechargeRightsService;
+
+    private final CouponService couponService;
     private final UserRechargeRightsService userRechargeRightsService;
     private final StationService stationService;
     private final DelayService<DelayActivity> activityDelayService;
     private final BannerService bannerService;
 
-    public ActivityServiceImpl(ActivityStationService activityStationService, RechargeRightsService rechargeRightsService,
+    public ActivityServiceImpl(ActivityStationService activityStationService, RechargeRightsService rechargeRightsService, CouponService couponService,
                                UserRechargeRightsService userRechargeRightsService, StationService stationService,
                                @Lazy DelayService<DelayActivity> activityDelayService, BannerService bannerService) {
         this.activityStationService = activityStationService;
         this.rechargeRightsService = rechargeRightsService;
+        this.couponService = couponService;
         this.userRechargeRightsService = userRechargeRightsService;
         this.stationService = stationService;
         this.activityDelayService = activityDelayService;
@@ -84,17 +87,26 @@ public class ActivityServiceImpl extends MPJBaseServiceImpl<ActivityMapper, Acti
             activityStationService.saveBatch(activityStationList);
         }
 
-        // 新增rechargeRights
-        if (activityVo.getDiscountType().equals(DISCOUNT_TYPE_服务费折扣权益) && !CommUtil.isEmptyOrNull(activityVo.getRechargeRightsList())) {
+        // 新增充值优惠活动
+        if (activityVo.getDiscountType().equals(Activity.DISCOUNT_TYPE_服务费折扣权益) && !CommUtil.isEmptyOrNull(activityVo.getRechargeRightsList())) {
             var rechargeRightsList = activityVo.getRechargeRightsList().stream().peek(rechargeRights -> {
                 BeanUtils.copyProperties(activity, rechargeRights, "id");
                 rechargeRights.setActivityId(activity.getId());
             }).toList();
             rechargeRightsService.saveBatch(rechargeRightsList);
-            activityVo.setRechargeRightsList(rechargeRightsList);
+        }
+
+        // 新增优惠券活动
+        if (activityVo.getDiscountType().equals(Activity.DISCOUNT_TYPE_优惠券) && !CommUtil.isEmptyOrNull(activityVo.getCouponList())) {
+            var couponList = activityVo.getCouponList().stream().peek(coupon -> {
+                BeanUtils.copyProperties(activity, coupon, "id");
+                coupon.setActivityId(activity.getId());
+            }).toList();
+            couponService.saveBatch(couponList);
         }
 
         // 加入活动延迟启停队列
+        // todo 优惠券活动延迟启停改造
         activityDelayService.addToDelayQueue(new DelayActivity(activity.getId(), activity.getName(), activity.getStartTime(), DelayActivity.TYPE_启动));
         activityDelayService.addToDelayQueue(new DelayActivity(activity.getId(), activity.getName(), activity.getEndTime(), DelayActivity.TYPE_结束));
     }

+ 18 - 1
service/src/main/java/com/kym/service/admin/impl/CouponServiceImpl.java

@@ -1,14 +1,18 @@
 package com.kym.service.admin.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.PageHelper;
 import com.kym.common.utils.CommUtil;
+import com.kym.common.utils.IDGenerator;
 import com.kym.entity.admin.Coupon;
 import com.kym.entity.admin.queryParams.CouponQueryParam;
+import com.kym.entity.admin.vo.CouponVo;
 import com.kym.entity.common.PageBean;
 import com.kym.mapper.admin.CouponMapper;
 import com.kym.service.admin.CouponService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * <p>
@@ -21,6 +25,18 @@ import org.springframework.stereotype.Service;
 @Service
 public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> implements CouponService {
 
+
+    @Override
+    @Transactional
+    public void addCoupon(CouponVo couponVo) {
+        // 新增优惠券
+        var coupon = new Coupon();
+        BeanUtils.copyProperties(couponVo, coupon);
+        coupon.setId(IDGenerator.INS().nextId());
+        save(coupon);
+        // 新增优惠券-站点关联
+    }
+
     @Override
     public PageBean<Coupon> listCoupon(CouponQueryParam params) {
         PageHelper.startPage(params.getPageNum(), params.getPageSize());
@@ -30,4 +46,5 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
                 .list();
         return new PageBean<>(res);
     }
+
 }