Przeglądaj źródła

复制营销活动接口

cup 2 lat temu
rodzic
commit
05890fe35f

+ 11 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/MarketingMgrController.java

@@ -70,6 +70,17 @@ public class MarketingMgrController extends BaseApiController {
     @Autowired
     private IMarketingHitPrizeService marketingHitPrizeService;
 
+    @PreAuthorize("@ss.hasPermi('business:marketing:add')")
+    @PostMapping("/copy/{marketingId}")
+    @ApiOperation("拷贝营销活动")
+    public AjaxResult copy(@PathVariable("marketingId") Long marketingId) {
+
+        marketingService.copyById(marketingId);
+
+        return AjaxResult.success();
+    }
+
+
     @Log(title = "营销活动新增", businessType = BusinessType.INSERT)
     @ApiOperation(value = "营销活动新增")
     @PostMapping("/create")

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

@@ -64,4 +64,10 @@ public interface IMarketingService extends IService<Marketing> {
      * @param userId
      */
     void generateCode(Long marketingId, Long userId);
+
+    /**
+     * 拷贝营销活动
+     * @param marketingId
+     */
+    void copyById(Long marketingId);
 }

+ 38 - 0
mp-service/src/main/java/com/qs/mp/admin/service/impl/MarketingServiceImpl.java

@@ -112,6 +112,44 @@ public class MarketingServiceImpl extends ServiceImpl<MarketingMapper, Marketing
     private DistributedLocker distributedLocker;
 
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void copyById(Long marketingId) {
+        Marketing marketing = this.getById(marketingId);
+        if (Objects.isNull(marketing)) {
+            throw new ServiceException("活动不存在");
+        }
+        // 初始化活动
+        marketing.setId(null);
+        marketing.setFakeNum(0);
+        marketing.setRealNum(0);
+        marketing.setIsOn(MarketingStatusEnum.OFF.getValue());
+        marketing.setIsSend(0);
+        marketing.setTriggerStatus(0);
+        marketing.setCreatedTime(null);
+        Assert.isTrue(this.save(marketing), "复制营销活动失败");
+
+        List<MarketingAwards> marketingAwardsList = marketingAwardsService.list(new LambdaQueryWrapper<MarketingAwards>().eq(MarketingAwards::getMarketingId, marketingId));
+        if (CollectionUtils.isEmpty(marketingAwardsList)) {
+            throw new ServiceException("活动奖级信息不存在");
+        }
+        for (MarketingAwards marketingAwards : marketingAwardsList) {
+            List<MarketingAwardsPrize> marketingAwardsPrizeList = marketingAwardsPrizeService.list(new LambdaQueryWrapper<MarketingAwardsPrize>()
+                    .eq(MarketingAwardsPrize::getMarketingId, marketingId)
+                    .eq(MarketingAwardsPrize::getAwardsId, marketingAwards.getId()));
+            marketingAwards.setId(null);
+            marketingAwards.setMarketingId(marketing.getId());
+            Assert.isTrue(marketingAwardsService.save(marketingAwards),"复制营销活动奖级失败");
+            for (MarketingAwardsPrize marketingAwardsPrize : marketingAwardsPrizeList) {
+                marketingAwardsPrize.setId(null);
+                marketingAwardsPrize.setAwardsId(marketingAwards.getId());
+                marketingAwardsPrize.setMarketingId(marketing.getId());
+            }
+            Assert.isTrue(marketingAwardsPrizeService.saveBatch(marketingAwardsPrizeList),"复制营销活动奖品失败");
+        }
+
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void generateCode(Long marketingId, Long userId) {