Kaynağa Gözat

新增营销对应邮件

YPZ 2 hafta önce
ebeveyn
işleme
a3e575acac

+ 71 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/controller/MarketEmailsController.java

@@ -0,0 +1,71 @@
+package com.storlead.trade.controller;
+
+import com.storlead.trade.dto.MarketEmailsDTO;
+import com.storlead.trade.service.MarketEmailsService;
+import com.storlead.framework.common.result.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/marketEmails")
+@Api(tags = "营销: 营销邮件管理")
+public class MarketEmailsController {
+
+    @Autowired
+    private MarketEmailsService marketEmailsService;
+
+    @PostMapping("/list")
+    @ApiOperation("营销: 营销邮件列表")
+    public Result<Object> list(@RequestBody MarketEmailsDTO marketEmailsDTO) {
+        return marketEmailsService.getList(marketEmailsDTO);
+    }
+
+    @PostMapping("/add")
+    @ApiOperation("营销: 营销邮件添加")
+    public Result<?> add(@RequestBody MarketEmailsDTO marketEmailsDTO) {
+        return marketEmailsService.add(marketEmailsDTO);
+    }
+
+    @PostMapping("/edit")
+    @ApiOperation("营销: 营销邮件修改")
+    public Result<?> edit(@RequestBody MarketEmailsDTO marketEmailsDTO) {
+        return marketEmailsService.edit(marketEmailsDTO);
+    }
+
+    @PostMapping("/delete")
+    @ApiOperation("营销: 营销邮件删除")
+    public Result<?> delete(@RequestBody MarketEmailsDTO marketEmailsDTO) {
+        boolean isOk = false;
+        Long id = marketEmailsDTO.getId();
+        if (!ObjectUtils.isEmpty(id)) {
+            isOk = marketEmailsService.removeById(id);
+        }
+        List<Long> idList = marketEmailsDTO.getIdList();
+        if (!CollectionUtils.isEmpty(idList)) {
+            isOk = marketEmailsService.removeByIds(idList);
+        }
+        if (!isOk) {
+            return Result.error("删除失败");
+        }
+        return Result.ok();
+    }
+
+    @GetMapping("/getById")
+    @ApiOperation("营销: 营销邮件详情")
+    public Result<Object> getById(Long id) {
+        if (ObjectUtils.isEmpty(id)) {
+            return Result.error("id不能为空");
+        }
+        return Result.result(marketEmailsService.getById(id));
+    }
+}

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

@@ -0,0 +1,51 @@
+package com.storlead.trade.dto;
+
+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.page.Page;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@TableName("market_emails")
+public class MarketEmailsDTO extends Page {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键id")
+    private Long id;
+
+    @ApiModelProperty(value = "客户id")
+    @TableField("customer_analysis_id")
+    private Long customerAnalysisId;
+
+    @ApiModelProperty(value = "营销活动id")
+    @TableField("marketing_campaign_id")
+    private Long marketingCampaignId;
+
+    @ApiModelProperty(value = "邮件模板id")
+    @TableField("sop_detail_id")
+    private Long sopDetailId;
+
+    @ApiModelProperty(value = "对应的邮件id")
+    @TableField("email_id")
+    private Long emailId;
+
+    @ApiModelProperty(value = "状态:0草稿,1已发送,2发送失败")
+    @TableField("status")
+    private Integer status;
+
+    @ApiModelProperty(value = "是否已读:0否,1是")
+    @TableField("has_reader")
+    private Integer hasReader;
+
+    @ApiModelProperty(value = "是否已回复:0否,1是")
+    @TableField("has_reply")
+    private Integer hasReply;
+
+    @ApiModelProperty(value = "id列表(批量操作用)")
+    private List<Long> idList;
+}

+ 46 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/entity/MarketEmailsEntity.java

@@ -0,0 +1,46 @@
+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.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@TableName("market_emails")
+public class MarketEmailsEntity extends SysBaseField {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键id")
+    private Long id;
+
+    @ApiModelProperty(value = "客户id")
+    @TableField("customer_analysis_id")
+    private Long customerAnalysisId;
+
+    @ApiModelProperty(value = "营销活动id")
+    @TableField("marketing_campaign_id")
+    private Long marketingCampaignId;
+
+    @ApiModelProperty(value = "邮件模板id")
+    @TableField("sop_detail_id")
+    private Long sopDetailId;
+
+    @ApiModelProperty(value = "对应的邮件id")
+    @TableField("email_id")
+    private Long emailId;
+
+    @ApiModelProperty(value = "状态:0草稿,1已发送,2发送失败")
+    @TableField("status")
+    private Integer status;
+
+    @ApiModelProperty(value = "是否已读:0否,1是")
+    @TableField("has_reader")
+    private Integer hasReader;
+
+    @ApiModelProperty(value = "是否已回复:0否,1是")
+    @TableField("has_reply")
+    private Integer hasReply;
+}

+ 9 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/mapper/MarketEmailsMapper.java

@@ -0,0 +1,9 @@
+package com.storlead.trade.mapper;
+
+import com.storlead.trade.mapper.support.TradeBaseMapper;
+import com.storlead.trade.entity.MarketEmailsEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface MarketEmailsMapper extends TradeBaseMapper<MarketEmailsEntity> {
+}

+ 15 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/MarketEmailsService.java

@@ -0,0 +1,15 @@
+package com.storlead.trade.service;
+
+import com.storlead.trade.dto.MarketEmailsDTO;
+import com.storlead.trade.entity.MarketEmailsEntity;
+import com.storlead.framework.common.result.Result;
+import com.storlead.framework.mybatis.service.MyBaseService;
+
+public interface MarketEmailsService extends MyBaseService<MarketEmailsEntity> {
+
+    Result<Object> getList(MarketEmailsDTO marketEmailsDTO);
+
+    Result<Object> add(MarketEmailsDTO marketEmailsDTO);
+
+    Result<Object> edit(MarketEmailsDTO marketEmailsDTO);
+}

+ 101 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/impl/MarketEmailsServiceImpl.java

@@ -0,0 +1,101 @@
+package com.storlead.trade.service.impl;
+
+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.constant.CommonConstant;
+import com.storlead.framework.common.result.Result;
+import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
+import com.storlead.trade.dto.MarketEmailsDTO;
+import com.storlead.trade.entity.MarketEmailsEntity;
+import com.storlead.trade.mapper.MarketEmailsMapper;
+import com.storlead.trade.service.MarketEmailsService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.ObjectUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class MarketEmailsServiceImpl extends MyBaseServiceImpl<MarketEmailsMapper, MarketEmailsEntity>
+        implements MarketEmailsService {
+
+    @Override
+    public Result<Object> getList(MarketEmailsDTO dto) {
+        Page<MarketEmailsEntity> page = new Page<>(dto.getPageIndex(), dto.getPageSize());
+        LambdaQueryWrapper<MarketEmailsEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(MarketEmailsEntity::getIsDelete, CommonConstant.DEL_FLAG_0);
+        wrapper.orderByDesc(MarketEmailsEntity::getCreateTime);
+
+        if (!ObjectUtils.isEmpty(dto.getId())) {
+            wrapper.eq(MarketEmailsEntity::getId, dto.getId());
+        }
+        if (!ObjectUtils.isEmpty(dto.getCustomerAnalysisId())) {
+            wrapper.eq(MarketEmailsEntity::getCustomerAnalysisId, dto.getCustomerAnalysisId());
+        }
+        if (!ObjectUtils.isEmpty(dto.getMarketingCampaignId())) {
+            wrapper.eq(MarketEmailsEntity::getMarketingCampaignId, dto.getMarketingCampaignId());
+        }
+        if (!ObjectUtils.isEmpty(dto.getSopDetailId())) {
+            wrapper.eq(MarketEmailsEntity::getSopDetailId, dto.getSopDetailId());
+        }
+        if (!ObjectUtils.isEmpty(dto.getEmailId())) {
+            wrapper.eq(MarketEmailsEntity::getEmailId, dto.getEmailId());
+        }
+        if (!ObjectUtils.isEmpty(dto.getStatus())) {
+            wrapper.eq(MarketEmailsEntity::getStatus, dto.getStatus());
+        }
+        if (!ObjectUtils.isEmpty(dto.getHasReader())) {
+            wrapper.eq(MarketEmailsEntity::getHasReader, dto.getHasReader());
+        }
+        if (!ObjectUtils.isEmpty(dto.getHasReply())) {
+            wrapper.eq(MarketEmailsEntity::getHasReply, dto.getHasReply());
+        }
+
+        IPage<MarketEmailsEntity> iPage = this.page(page, wrapper);
+        List<MarketEmailsEntity> records = iPage.getRecords();
+        if (CollectionUtils.isEmpty(records)) {
+            records = new ArrayList<>();
+        }
+        Page<MarketEmailsEntity> pageVO = new Page<>();
+        pageVO.setRecords(records);
+        pageVO.setTotal(iPage.getTotal());
+        pageVO.setCurrent(iPage.getCurrent());
+        pageVO.setSize(iPage.getSize());
+
+        return Result.result(pageVO);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Throwable.class)
+    public Result<Object> add(MarketEmailsDTO dto) {
+        MarketEmailsEntity entity = new MarketEmailsEntity();
+        BeanUtils.copyProperties(dto, entity);
+        boolean isOk = this.save(entity);
+        if (!isOk) {
+            return Result.error("添加失败");
+        }
+        return Result.ok();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Throwable.class)
+    public Result<Object> edit(MarketEmailsDTO dto) {
+        if (ObjectUtils.isEmpty(dto.getId())) {
+            return Result.error("id不能为空");
+        }
+        MarketEmailsEntity entity = this.getById(dto.getId());
+        if (ObjectUtils.isEmpty(entity)) {
+            return Result.error("记录不存在");
+        }
+        BeanUtils.copyProperties(dto, entity);
+        boolean isOk = this.updateById(entity);
+        if (!isOk) {
+            return Result.error("修改失败");
+        }
+        return Result.ok();
+    }
+}