Browse Source

修改营销活动

cup 3 years ago
parent
commit
096d0e5fb0

+ 9 - 1
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/MarketingMgrController.java

@@ -1,6 +1,7 @@
 package com.qs.mp.web.controller.api.admin;
 
 import com.qs.mp.admin.domain.param.MarketingCreateParam;
+import com.qs.mp.admin.domain.param.MarketingUpdateParam;
 import com.qs.mp.admin.service.IMarketingService;
 import com.qs.mp.common.annotation.Log;
 import com.qs.mp.common.core.domain.AjaxResult;
@@ -33,9 +34,16 @@ public class MarketingMgrController {
     @PostMapping("/create")
     @PreAuthorize("@ss.hasPermi('business:marketing:add')")
     public AjaxResult create(@Validated @RequestBody MarketingCreateParam marketingCreateParam) {
-
         marketingService.createMarketing(marketingCreateParam);
         return AjaxResult.success();
     }
 
+    @PostMapping("/update")
+    @PreAuthorize("@ss.hasPermi('business:marketing:edit')")
+    @ApiOperation("修改营销活动")
+    public AjaxResult update(@Validated @RequestBody MarketingUpdateParam marketingUpdateParam) {
+        marketingService.updateMarketing(marketingUpdateParam);
+        return AjaxResult.success();
+    }
+
 }

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

@@ -16,8 +16,6 @@ import java.util.List;
 @Data
 public class MarketingAwardsParam {
 
-    @ApiModelProperty("奖项ID")
-    private Long id;
 
     @NotEmpty(message = "奖品列表不能为空")
     @ApiModelProperty(value = "奖品列表",required=true)

+ 0 - 3
mp-service/src/main/java/com/qs/mp/admin/domain/param/MarketingAwardsPrizeParam.java

@@ -15,9 +15,6 @@ import javax.validation.constraints.NotNull;
 @Data
 public class MarketingAwardsPrizeParam {
 
-    @ApiModelProperty("奖品id")
-    private Long id;
-
     @NotNull(message = "奖品关联ID不能为空")
     @ApiModelProperty(value = "奖品关联ID",required=true)
     private String refId;

+ 52 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/MarketingUpdateParam.java

@@ -0,0 +1,52 @@
+package com.qs.mp.admin.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 营销活动更新入参类
+ *
+ * @author Cup
+ * @date 2022/5/16
+ */
+@ApiModel("营销活动更新入参类")
+@Data
+public class MarketingUpdateParam {
+
+    @ApiModelProperty("营销活动id")
+    @NotNull(message = "营销活动id不能为空")
+    private Long id;
+
+    @ApiModelProperty(value = "活动标题", required = true)
+    @NotBlank(message = "活动标题不能为空")
+    private String title;
+
+    @ApiModelProperty(value = "活动主图", required = true)
+    @NotBlank(message = "活动主图不能为空")
+    private String picUrl;
+
+    @ApiModelProperty(value = "初始人数", required = true)
+    private Integer fakeNum;
+
+    @ApiModelProperty(value = "开始时间", required = true)
+    @NotNull(message = "开始时间不能为空")
+    private Date startTime;
+
+    @ApiModelProperty(value = "结束时间", required = true)
+    @NotNull(message = "结束时间不能为空")
+    private Date endTime;
+
+    @ApiModelProperty(value = "活动描述",required = false)
+    private String description;
+
+    @NotEmpty(message = "奖级列表不能为空")
+    @ApiModelProperty(value = "奖级列表", required = true)
+    List<MarketingAwardsParam> awardsList;
+}

+ 7 - 0
mp-service/src/main/java/com/qs/mp/admin/service/IMarketingService.java

@@ -3,6 +3,7 @@ package com.qs.mp.admin.service;
 import com.qs.mp.admin.domain.Marketing;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qs.mp.admin.domain.param.MarketingCreateParam;
+import com.qs.mp.admin.domain.param.MarketingUpdateParam;
 
 /**
  * <p>
@@ -19,4 +20,10 @@ public interface IMarketingService extends IService<Marketing> {
      * @param marketingCreateParam
      */
     void createMarketing(MarketingCreateParam marketingCreateParam);
+
+    /**
+     * 更新营销活动
+     * @param marketingUpdateParam
+     */
+    void updateMarketing(MarketingUpdateParam marketingUpdateParam);
 }

+ 33 - 3
mp-service/src/main/java/com/qs/mp/admin/service/impl/MarketingServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qs.mp.admin.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.qs.mp.admin.domain.*;
 import com.qs.mp.admin.domain.param.*;
 import com.qs.mp.admin.mapper.MarketingMapper;
@@ -16,6 +17,7 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -52,11 +54,39 @@ public class MarketingServiceImpl extends ServiceImpl<MarketingMapper, Marketing
         BeanUtils.copyProperties(marketingCreateParam, marketing);
         this.save(marketing);
 
+        // 创建奖级和奖品信息
+        createAwardsAndPrize(marketingCreateParam.getAwardsList(), marketing);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateMarketing(MarketingUpdateParam marketingUpdateParam) {
+        Marketing marketing = this.getById(marketingUpdateParam.getId());
+        if (Objects.isNull(marketing)) {
+            throw new ServiceException("营销活动不存在");
+        }
+
+        // 更新营销活动
+        BeanUtils.copyProperties(marketingUpdateParam, marketing);
+        this.updateById(marketing);
+
+        // 删除奖级和奖品信息
+        marketingAwardsService.remove(new LambdaUpdateWrapper<MarketingAwards>().eq(MarketingAwards::getMarketingId, marketing.getId()));
+        marketingAwardsPrizeService.remove(new LambdaUpdateWrapper<MarketingAwardsPrize>().eq(MarketingAwardsPrize::getMarketingId, marketing.getId()));
+
+        // 创建奖级和奖品信息
+        createAwardsAndPrize(marketingUpdateParam.getAwardsList(), marketing);
+    }
+
+    /**
+     * 创建奖级和奖品信息
+     * @param awardsList
+     * @param marketing
+     */
+    private void createAwardsAndPrize(List<MarketingAwardsParam> awardsList, Marketing marketing) {
         // 创建奖级
         List<MarketingAwardsPrize> marketingAwardsPrizeList = new ArrayList<>();
-        for (int i = 0; i < marketingCreateParam.getAwardsList().size(); i ++) {
-            MarketingAwardsParam awardsParam = marketingCreateParam.getAwardsList().get(i);
-
+        for (MarketingAwardsParam awardsParam : awardsList) {
             if (awardsParam.getInsideNum() > awardsParam.getQuantity()) {
                 throw new ServiceException("内定数量不能大于奖品数量");
             }