Ver código fonte

修改营销系统

YPZ 3 semanas atrás
pai
commit
c3a90dcf02
13 arquivos alterados com 397 adições e 6 exclusões
  1. 162 0
      java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/controller/MarketingCampaignSopDetailController.java
  2. 3 0
      java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/dto/MarketingCampaignDTO.java
  3. 51 0
      java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/dto/MarketingCampaignSopDetailDTO.java
  4. 5 0
      java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/dto/SopDetailCreateDTO.java
  5. 5 0
      java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/dto/SopDetailUpdateDTO.java
  6. 4 0
      java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/entity/MarketingCampaignEntity.java
  7. 55 0
      java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/entity/MarketingCampaignSopDetailEntity.java
  8. 4 0
      java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/entity/SopDetailEntity.java
  9. 12 0
      java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/mapper/MarketingCampaignSopDetailMapper.java
  10. 1 0
      java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/MarketingCampaignEntityService.java
  11. 10 0
      java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/MarketingCampaignSopDetailService.java
  12. 69 6
      java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/impl/MarketingCampaignEntityServiceImpl.java
  13. 16 0
      java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/impl/MarketingCampaignSopDetailServiceImpl.java

+ 162 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/controller/MarketingCampaignSopDetailController.java

@@ -0,0 +1,162 @@
+package com.storlead.trade.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.storlead.framework.common.result.Result;
+import com.storlead.trade.dto.MarketingCampaignSopDetailDTO;
+import com.storlead.trade.entity.MarketingCampaignSopDetailEntity;
+import com.storlead.trade.service.MarketingCampaignSopDetailService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 营销活动SOP明细 Controller
+ */
+@RestController
+@RequestMapping("/marketing/campaign/sop-detail")
+@Api(tags = "营销: 营销活动SOP详情明细")
+public class MarketingCampaignSopDetailController {
+
+    @Resource
+    private MarketingCampaignSopDetailService marketingCampaignSopDetailService;
+
+    /**
+     * 分页查询
+     */
+    @PostMapping("/list")
+    @ApiOperation(value = "分页查询营销活动SOP明细", notes = "支持按营销活动id筛选")
+    public Result<Object> list(@RequestBody MarketingCampaignSopDetailDTO dto) {
+        Page<MarketingCampaignSopDetailEntity> page = new Page<>(dto.getPageIndex(), dto.getPageSize());
+        LambdaQueryWrapper<MarketingCampaignSopDetailEntity> wrapper = new LambdaQueryWrapper<>();
+        // 按营销活动id筛选
+        if (!ObjectUtils.isEmpty(dto.getMarketingCampaignId())) {
+            wrapper.eq(MarketingCampaignSopDetailEntity::getMarketingCampaignId, dto.getMarketingCampaignId());
+        }
+        // 按SOP明细id筛选
+        if (!ObjectUtils.isEmpty(dto.getSopDetailId())) {
+            wrapper.eq(MarketingCampaignSopDetailEntity::getSopDetailId, dto.getSopDetailId());
+        }
+        // 按步骤序号筛选
+        if (!ObjectUtils.isEmpty(dto.getStep())) {
+            wrapper.eq(MarketingCampaignSopDetailEntity::getStep, dto.getStep());
+        }
+        // 按触达渠道筛选
+        if (!ObjectUtils.isEmpty(dto.getType())) {
+            wrapper.eq(MarketingCampaignSopDetailEntity::getType, dto.getType());
+        }
+        // 按创建时间倒序
+        wrapper.orderByDesc(MarketingCampaignSopDetailEntity::getCreateTime);
+        // 分页查询
+        IPage<MarketingCampaignSopDetailEntity> iPage = marketingCampaignSopDetailService.page(page, wrapper);
+        return Result.result(iPage);
+    }
+
+    /**
+     * 新增
+     */
+    @PostMapping("/add")
+    @ApiOperation(value = "新增营销活动SOP明细", notes = "支持单条新增")
+    @Transactional(rollbackFor = Throwable.class)
+    public Result<?> add(@RequestBody MarketingCampaignSopDetailDTO dto) {
+        if (ObjectUtils.isEmpty(dto.getMarketingCampaignId())) {
+            return Result.error("营销活动id不能为空");
+        }
+        if (ObjectUtils.isEmpty(dto.getSopDetailId())) {
+            return Result.error("SOP明细id不能为空");
+        }
+        MarketingCampaignSopDetailEntity entity = new MarketingCampaignSopDetailEntity();
+        BeanUtils.copyProperties(dto, entity);
+        boolean isOk = marketingCampaignSopDetailService.save(entity);
+        if (!isOk) {
+            return Result.error("添加失败");
+        }
+        return Result.result(entity);
+    }
+
+    /**
+     * 批量新增
+     */
+    @PostMapping("/add/batch")
+    @ApiOperation(value = "批量新增营销活动SOP明细", notes = "支持批量新增")
+    @Transactional(rollbackFor = Throwable.class)
+    public Result<?> addBatch(@RequestBody List<MarketingCampaignSopDetailDTO> dtoList) {
+        if (CollectionUtils.isEmpty(dtoList)) {
+            return Result.error("数据不能为空");
+        }
+        List<MarketingCampaignSopDetailEntity> entityList = new ArrayList<>();
+        for (MarketingCampaignSopDetailDTO dto : dtoList) {
+            MarketingCampaignSopDetailEntity entity = new MarketingCampaignSopDetailEntity();
+            BeanUtils.copyProperties(dto, entity);
+            entityList.add(entity);
+        }
+        boolean isOk = marketingCampaignSopDetailService.saveBatch(entityList);
+        if (!isOk) {
+            return Result.error("批量添加失败");
+        }
+        return Result.ok();
+    }
+
+    /**
+     * 编辑
+     */
+    @PostMapping("/edit")
+    @ApiOperation(value = "编辑营销活动SOP明细", notes = "编辑营销活动SOP明细")
+    @Transactional(rollbackFor = Throwable.class)
+    public Result<?> edit(@RequestBody MarketingCampaignSopDetailDTO dto) {
+        if (ObjectUtils.isEmpty(dto.getId())) {
+            return Result.error("id不能为空");
+        }
+        MarketingCampaignSopDetailEntity entity = new MarketingCampaignSopDetailEntity();
+        BeanUtils.copyProperties(dto, entity);
+        boolean isOk = marketingCampaignSopDetailService.updateById(entity);
+        if (!isOk) {
+            return Result.error("修改失败");
+        }
+        return Result.result(entity);
+    }
+
+    /**
+     * 删除
+     */
+    @PostMapping("/delete")
+    @ApiOperation(value = "删除营销活动SOP明细", notes = "支持单条id或批量idList删除")
+    @Transactional(rollbackFor = Throwable.class)
+    public Result<?> delete(@RequestBody MarketingCampaignSopDetailDTO dto) {
+        boolean isOk = false;
+        Long id = dto.getId();
+        if (!ObjectUtils.isEmpty(id)) {
+            isOk = marketingCampaignSopDetailService.removeById(id);
+        }
+        List<Long> idList = dto.getIdList();
+        if (!CollectionUtils.isEmpty(idList)) {
+            isOk = marketingCampaignSopDetailService.removeByIds(idList);
+        }
+        if (!isOk) {
+            return Result.error("删除失败");
+        }
+        return Result.ok();
+    }
+
+    /**
+     * 根据营销活动id查询SOP明细列表
+     */
+    @GetMapping("/campaign/{marketingCampaignId}")
+    @ApiOperation(value = "根据营销活动id查询SOP明细列表", notes = "查询该营销活动关联的所有SOP明细")
+    public Result<Object> getByCampaignId(@PathVariable Long marketingCampaignId) {
+        LambdaQueryWrapper<MarketingCampaignSopDetailEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(MarketingCampaignSopDetailEntity::getMarketingCampaignId, marketingCampaignId);
+        wrapper.orderByAsc(MarketingCampaignSopDetailEntity::getStep);
+        List<MarketingCampaignSopDetailEntity> list = marketingCampaignSopDetailService.list(wrapper);
+        return Result.result(list);
+    }
+}

+ 3 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/dto/MarketingCampaignDTO.java

@@ -116,6 +116,9 @@ public class MarketingCampaignDTO extends Page {
     @TableField("sop_id")
     private Integer sopId;
 
+    @ApiModelProperty(value = "SOP序列详情idList")
+    private List<Long> sopDetailIdList;
+
     @ApiModelProperty(value = "未打开邮件跟进规则(1是0否)")
     @TableField("follow_up_rules_not_opened")
     private Integer followUpRulesNotOpened;

+ 51 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/dto/MarketingCampaignSopDetailDTO.java

@@ -0,0 +1,51 @@
+package com.storlead.trade.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 营销活动SOP明细 DTO
+ */
+@Data
+@ApiModel(value = "MarketingCampaignSopDetailDTO", description = "营销活动SOP明细请求")
+public class MarketingCampaignSopDetailDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键id(编辑时必填)")
+    private Long id;
+
+    @ApiModelProperty(value = "主键id(编辑时必填)")
+    private List<Long> idList;
+
+    @ApiModelProperty(value = "营销活动id")
+    private Long marketingCampaignId;
+
+    @ApiModelProperty(value = "SOP明细id")
+    private Long sopDetailId;
+
+    @ApiModelProperty(value = "步骤序号")
+    private Integer step;
+
+    @ApiModelProperty(value = "步骤名称")
+    private String name;
+
+    @ApiModelProperty(value = "邮件内容模板")
+    private String emailContent;
+
+    @ApiModelProperty(value = "间隔天数")
+    private String days;
+
+    @ApiModelProperty(value = "触达渠道")
+    private String type;
+
+    @ApiModelProperty(value = "页码", required = true)
+    private Integer pageIndex = 1;
+
+    @ApiModelProperty(value = "每页数量", required = true)
+    private Integer pageSize = 10;
+}

+ 5 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/dto/SopDetailCreateDTO.java

@@ -1,5 +1,6 @@
 package com.storlead.trade.dto;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -21,6 +22,10 @@ public class SopDetailCreateDTO implements Serializable {
     @ApiModelProperty(value = "步骤名称", required = true)
     private String name;
 
+    @ApiModelProperty(value = "邮件内容模板")
+    @TableField("email_content")
+    private String emailContent;
+
     @ApiModelProperty(value = "间隔天数")
     private String days;
 

+ 5 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/dto/SopDetailUpdateDTO.java

@@ -1,5 +1,6 @@
 package com.storlead.trade.dto;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -21,6 +22,10 @@ public class SopDetailUpdateDTO implements Serializable {
 
     @ApiModelProperty(value = "步骤名称")
     private String name;
+    
+    @ApiModelProperty(value = "邮件内容模板")
+    @TableField("email_content")
+    private String emailContent;
 
     @ApiModelProperty(value = "间隔天数")
     private String days;

+ 4 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/entity/MarketingCampaignEntity.java

@@ -114,6 +114,10 @@ public class MarketingCampaignEntity extends SysBaseField {
     @TableField("sop_id")
     private Integer sopId;
 
+    @ApiModelProperty(value = "sop详情id(逗号分隔)")
+    @TableField("sop_detail_ids")
+    private String sopDetailIds;
+
     @ApiModelProperty(value = "未打开邮件跟进规则(1是0否)")
     @TableField("follow_up_rules_not_opened")
     private Integer followUpRulesNotOpened;

+ 55 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/entity/MarketingCampaignSopDetailEntity.java

@@ -0,0 +1,55 @@
+package com.storlead.trade.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.storlead.framework.mybatis.entity.SysBaseField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 营销活动SOP明细关联表 Entity
+ */
+@Data
+@TableName("marketing_campaign_sop_detail")
+@ApiModel(value = "MarketingCampaignSopDetailEntity", description = "营销活动SOP明细关联")
+public class MarketingCampaignSopDetailEntity extends SysBaseField implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键id")
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "营销活动id")
+    @TableField("marketing_campaign_id")
+    private Long marketingCampaignId;
+
+    @ApiModelProperty(value = "SOP明细id")
+    @TableField("sop_detail_id")
+    private Long sopDetailId;
+
+    @ApiModelProperty(value = "步骤序号")
+    @TableField("step")
+    private Integer step;
+
+    @ApiModelProperty(value = "步骤名称")
+    @TableField("name")
+    private String name;
+
+    @ApiModelProperty(value = "邮件内容模板")
+    @TableField("email_content")
+    private String emailContent;
+
+    @ApiModelProperty(value = "间隔天数")
+    @TableField("days")
+    private String days;
+
+    @ApiModelProperty(value = "触达渠道")
+    @TableField("type")
+    private String type;
+}

+ 4 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/entity/SopDetailEntity.java

@@ -28,6 +28,10 @@ public class SopDetailEntity extends SysBaseField {
     @TableField("name")
     private String name;
 
+    @ApiModelProperty(value = "邮件内容模板")
+    @TableField("email_content")
+    private String emailContent;
+
     @ApiModelProperty(value = "间隔天数")
     @TableField("days")
     private String days;

+ 12 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/mapper/MarketingCampaignSopDetailMapper.java

@@ -0,0 +1,12 @@
+package com.storlead.trade.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.storlead.trade.entity.MarketingCampaignSopDetailEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 营销活动SOP明细 Mapper接口
+ */
+@Mapper
+public interface MarketingCampaignSopDetailMapper extends BaseMapper<MarketingCampaignSopDetailEntity> {
+}

+ 1 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/MarketingCampaignEntityService.java

@@ -12,4 +12,5 @@ public interface MarketingCampaignEntityService extends MyBaseService<MarketingC
     Result<Object> addMarket(MarketingCampaignDTO marketingCampaignDTO);
 
     Result<Object> editMarket(MarketingCampaignDTO marketingCampaignDTO);
+    
 }

+ 10 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/MarketingCampaignSopDetailService.java

@@ -0,0 +1,10 @@
+package com.storlead.trade.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.storlead.trade.entity.MarketingCampaignSopDetailEntity;
+
+/**
+ * 营销活动SOP明细 Service接口
+ */
+public interface MarketingCampaignSopDetailService extends IService<MarketingCampaignSopDetailEntity> {
+}

+ 69 - 6
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/impl/MarketingCampaignEntityServiceImpl.java

@@ -5,14 +5,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.storlead.framework.common.util.StringUtil;
+import com.storlead.trade.controller.MarketingCampaignSopDetailController;
 import com.storlead.trade.dto.MarketingCampaignDTO;
-import com.storlead.trade.entity.CustomerAnalysisResultEntity;
-import com.storlead.trade.entity.CustomerBaseEntity;
-import com.storlead.trade.entity.MarketingCampaignEntity;
+import com.storlead.trade.entity.*;
 import com.storlead.trade.mapper.MarketingCampaignEntityMapper;
-import com.storlead.trade.service.CustomerAnalysisResultEntityService;
-import com.storlead.trade.service.CustomerBaseEntityService;
-import com.storlead.trade.service.MarketingCampaignEntityService;
+import com.storlead.trade.service.*;
 import com.storlead.trade.vo.MarketingCampaignVO;
 import com.storlead.framework.common.constant.CommonConstant;
 import com.storlead.framework.common.result.Result;
@@ -20,6 +18,7 @@ import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 
 
 import javax.annotation.Resource;
@@ -36,6 +35,10 @@ public class MarketingCampaignEntityServiceImpl
     private CustomerBaseEntityService customerBaseEntityService;
     @Resource
     private CustomerAnalysisResultEntityService customerAnalysisResultEntityService;
+    @Resource
+    private SopDetailService sopDetailService;
+    @Resource
+    private MarketingCampaignSopDetailService marketingCampaignSopDetailService;
     @Override
     public Result<Object> getList(MarketingCampaignDTO marketingCampaignDTO) {
         IPage<MarketingCampaignVO> pageVO = new Page<>(marketingCampaignDTO.getPageIndex(), marketingCampaignDTO.getPageSize());
@@ -112,6 +115,36 @@ public class MarketingCampaignEntityServiceImpl
                 return Result.error("添加失败");
             }
         }
+        //添加关联sopDetailIdList,并调取ai生成邮件内容
+        List<Long> sopDetailIdList = marketingCampaignDTO.getSopDetailIdList();
+        if (!CollectionUtils.isEmpty(sopDetailIdList)) {
+            //将sopDetailIdList转为 逗号分隔的字符串
+            String sopDetailIdListString = StringUtil.longListToString(sopDetailIdList);
+            //判断是否和原有的相同
+            if (!StringUtils.isEmpty(marketingCampaignEntity.getSopDetailIds()) && !marketingCampaignEntity.getSopDetailIds().equals(sopDetailIdListString)) {
+
+                marketingCampaignEntity.setSopDetailIds(sopDetailIdListString);
+                this.updateById(marketingCampaignEntity);
+                //删除原有关联sopDetail
+                LambdaUpdateWrapper<MarketingCampaignSopDetailEntity> MarketingCampaignSopDetailUpdateWrapper = new LambdaUpdateWrapper<>();
+                MarketingCampaignSopDetailUpdateWrapper.eq(MarketingCampaignSopDetailEntity::getMarketingCampaignId, marketingCampaignEntity.getId());
+                MarketingCampaignSopDetailUpdateWrapper.set(MarketingCampaignSopDetailEntity::getIsDelete, 1);
+                marketingCampaignSopDetailService.update(MarketingCampaignSopDetailUpdateWrapper);
+
+                List<SopDetailEntity> sopDetailEntityList = sopDetailService.listByIds(sopDetailIdList).stream().toList();
+                List<MarketingCampaignSopDetailEntity> marketingCampaignSopDetailEntityList = new ArrayList<>();
+                for (SopDetailEntity sopDetailEntity : sopDetailEntityList) {
+                    MarketingCampaignSopDetailEntity marketingCampaignSopDetailEntity = new MarketingCampaignSopDetailEntity();
+                    marketingCampaignSopDetailEntity.setMarketingCampaignId(marketingCampaignEntity.getId());
+                    marketingCampaignSopDetailEntity.setSopDetailId(sopDetailEntity.getId());
+                    //预留补充ai生成的邮件内容模板
+//                    marketingCampaignSopDetailEntity.setEmailContent();
+                    marketingCampaignSopDetailEntityList.add(marketingCampaignSopDetailEntity);
+                }
+                boolean saveOk = marketingCampaignSopDetailService.saveBatch(marketingCampaignSopDetailEntityList);
+            }
+
+        }
         return Result.ok();
     }
 
@@ -141,6 +174,36 @@ public class MarketingCampaignEntityServiceImpl
                 return Result.error("修改失败");
             }
         }
+        //添加关联sopDetailIdList,并调取ai生成邮件内容
+        List<Long> sopDetailIdList = marketingCampaignDTO.getSopDetailIdList();
+        if (!CollectionUtils.isEmpty(sopDetailIdList)) {
+            //将sopDetailIdList转为 逗号分隔的字符串
+            String sopDetailIdListString = StringUtil.longListToString(sopDetailIdList);
+            //判断是否和原有的相同
+            if (!StringUtils.isEmpty(marketingCampaignEntity.getSopDetailIds()) && !marketingCampaignEntity.getSopDetailIds().equals(sopDetailIdListString)) {
+
+                marketingCampaignEntity.setSopDetailIds(sopDetailIdListString);
+                this.updateById(marketingCampaignEntity);
+                //删除原有关联sopDetail
+                LambdaUpdateWrapper<MarketingCampaignSopDetailEntity> MarketingCampaignSopDetailUpdateWrapper = new LambdaUpdateWrapper<>();
+                MarketingCampaignSopDetailUpdateWrapper.eq(MarketingCampaignSopDetailEntity::getMarketingCampaignId, marketingCampaignEntity.getId());
+                MarketingCampaignSopDetailUpdateWrapper.set(MarketingCampaignSopDetailEntity::getIsDelete, 1);
+                marketingCampaignSopDetailService.update(MarketingCampaignSopDetailUpdateWrapper);
+
+                List<SopDetailEntity> sopDetailEntityList = sopDetailService.listByIds(sopDetailIdList).stream().toList();
+                List<MarketingCampaignSopDetailEntity> marketingCampaignSopDetailEntityList = new ArrayList<>();
+                for (SopDetailEntity sopDetailEntity : sopDetailEntityList) {
+                    MarketingCampaignSopDetailEntity marketingCampaignSopDetailEntity = new MarketingCampaignSopDetailEntity();
+                    marketingCampaignSopDetailEntity.setMarketingCampaignId(marketingCampaignEntity.getId());
+                    marketingCampaignSopDetailEntity.setSopDetailId(sopDetailEntity.getId());
+                    //预留补充ai生成的邮件内容模板
+//                    marketingCampaignSopDetailEntity.setEmailContent();
+                    marketingCampaignSopDetailEntityList.add(marketingCampaignSopDetailEntity);
+                }
+                boolean saveOk = marketingCampaignSopDetailService.saveBatch(marketingCampaignSopDetailEntityList);
+            }
+
+        }
         return Result.ok();
     }
 }

+ 16 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/impl/MarketingCampaignSopDetailServiceImpl.java

@@ -0,0 +1,16 @@
+package com.storlead.trade.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.storlead.trade.entity.MarketingCampaignSopDetailEntity;
+import com.storlead.trade.mapper.MarketingCampaignSopDetailMapper;
+import com.storlead.trade.service.MarketingCampaignSopDetailService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 营销活动SOP明细 Service实现
+ */
+@Service
+public class MarketingCampaignSopDetailServiceImpl
+        extends ServiceImpl<MarketingCampaignSopDetailMapper, MarketingCampaignSopDetailEntity>
+        implements MarketingCampaignSopDetailService {
+}