Parcourir la source

feat: 线索管理新增、查询、查看详情

zhaomuran il y a 7 mois
Parent
commit
44fdb39e89
18 fichiers modifiés avec 1015 ajouts et 2 suppressions
  1. 61 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/controller/BlinkClueController.java
  2. 209 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkClueDO.java
  3. 39 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkClueTeamDO.java
  4. 227 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/BlinkClueDTO.java
  5. 34 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/BlinkClueTeamDTO.java
  6. 34 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/qry/BlinkClueQry.java
  7. 24 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/qry/BlinkClueTeamQry.java
  8. 79 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkClueServiceImpl.java
  9. 66 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkClueTeamServiceImpl.java
  10. 1 2
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkMarketActivityServiceImpl.java
  11. 29 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/objectmapper/BlinkClueMapper.java
  12. 21 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/objectmapper/BlinkClueTeamMapper.java
  13. 34 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkClueRepository.java
  14. 34 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkClueTeamRepository.java
  15. 33 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkClueService.java
  16. 23 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkClueTeamService.java
  17. 41 0
      bound-link-api/blink-backend/src/main/resources/mapper/BlinkClueRepositoryMapper.xml
  18. 26 0
      bound-link-api/blink-backend/src/main/resources/mapper/BlinkClueTeamRepositoryMapper.xml

+ 61 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/controller/BlinkClueController.java

@@ -0,0 +1,61 @@
+package com.wx.blink.backend.controller;
+
+import com.wx.blink.backend.domain.dto.BlinkClueDTO;
+import com.wx.blink.backend.domain.dto.BlinkClueTeamDTO;
+import com.wx.blink.backend.domain.qry.BlinkClueQry;
+import com.wx.blink.backend.service.IBlinkClueService;
+import com.wx.blink.backend.service.IBlinkClueTeamService;
+import com.wx.blink.base.common.annoation.NoNeedLogin;
+import com.wx.blink.base.common.domain.PageResult;
+import com.wx.blink.base.common.domain.ResponseDTO;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@RestController
+@Tag(name = "线索管理")
+public class BlinkClueController {
+
+    @Resource
+    private IBlinkClueService clueService;
+    @Resource
+    private IBlinkClueTeamService clueTeamService;
+
+    @Operation(summary = "新增线索")
+    @PostMapping("/supports/clue/create")
+    @NoNeedLogin
+    public ResponseDTO<String> supportsClueCreate(@RequestBody BlinkClueDTO dto) {
+        return clueService.supportsClueCreate(dto);
+    }
+
+    @Operation(summary = "查询线索列表")
+    @GetMapping("/supports/clue/queryPage")
+    @NoNeedLogin
+    public ResponseDTO<PageResult<BlinkClueDTO>> supportsClueQueryPage(BlinkClueQry qry) {
+        return clueService.supportsClueQueryPage(qry);
+    }
+
+    @Operation(summary = "新增团队协作成员")
+    @PostMapping("/supports/clue/team/create")
+    @NoNeedLogin
+    public ResponseDTO<String> supportsClueTeamCreate(@RequestBody BlinkClueTeamDTO dto) {
+        return clueTeamService.supportsClueTeamCreate(dto);
+    }
+
+    @Operation(summary = "移除团队协作成员")
+    @GetMapping("/supports/clue/team/detele/{id}")
+    @NoNeedLogin
+    public ResponseDTO<String> supportsClueTeamDeleteById(@PathVariable("id") Long id) {
+        return clueTeamService.supportsClueTeamDeleteById(id);
+    }
+
+    @Operation(summary = "查询线索信息")
+    @GetMapping("/supports/clue/query/{id}")
+    @NoNeedLogin
+    public ResponseDTO<BlinkClueDTO> supportsClueQuery(@PathVariable("id") Long id) {
+        return clueService.supportsClueQuery(id);
+    }
+
+}

+ 209 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkClueDO.java

@@ -0,0 +1,209 @@
+package com.wx.blink.backend.domain.dataobject;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.wx.blink.base.common.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+@TableName("blink_clue")
+public class BlinkClueDO extends BaseEntity {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * 项目编码
+     */
+    private String projectId;
+
+    /**
+     * 项目类型
+     */
+    private String projectType;
+
+    /**
+     * 线索名称
+     */
+    private String clueName;
+
+    /**
+     * 线索来源
+     */
+    private String clueSource;
+
+    /**
+     * 服务商名称
+     */
+    private String providerName;
+
+    /**
+     * 工程属性
+     */
+    private String engineeringAttribute;
+
+    /**
+     * 国家或地区
+     */
+    private String countryRegion;
+
+    /**
+     * 省份
+     */
+    private String province;
+
+    /**
+     * 省份名称
+     */
+    private String provinceName;
+
+    /**
+     * 城市
+     */
+    private String city;
+
+    /**
+     * 城市名称
+     */
+    private String cityName;
+
+    /**
+     * 区县
+     */
+    private String district;
+
+    /**
+     * 区县名称
+     */
+    private String districtName;
+
+    /**
+     * 项目地址
+     */
+    private String projectAddress;
+
+    /**
+     * 项目来源
+     */
+    private String projectSource;
+
+    /**
+     * 甲方
+     */
+    private String lessor;
+
+    /**
+     * 业主单位
+     * */
+    private String ownersFlats;
+
+    /**
+     * 设计单位
+     */
+    private String designFlats;
+
+    /**
+     * 总承包单位
+     */
+    private String generalContractingFlats;
+
+    /**
+     * 招商代理单位
+     */
+    private String investmentAgentFlats;
+
+    /**
+     * 是否联合体
+     */
+    private String complex;
+
+    /**
+     * 联合体情况说明
+     */
+    private String complexDescription;
+
+    /**
+     * 项目所属行业
+     */
+    private String projectBelongIndustry;
+
+    /**
+     * 业务类型
+     */
+    private String businessType;
+
+    /**
+     * 招标平台
+     */
+    private String tenderPlatform;
+
+    /**
+     * 招标日期
+     */
+    private String tenderDate;
+
+    /**
+     * 项目预算(概算金额【万】)
+     */
+    private String projectBudget;
+
+    /**
+     * 项目资金来源
+     */
+    private String projectMoneySource;
+
+    /**
+     * 分厂/几期/机组
+     */
+    private String factory;
+
+    /**
+     * 项目背景
+     */
+    private String projectBackground;
+
+    /**
+     * 项目阶段
+     */
+    private String projectStage;
+
+    /**
+     * 归属营销人员
+     */
+    private String belongMarketer;
+
+    /**
+     * 归属营销部门
+     */
+    private String belongMarketingDepartment;
+
+    /**
+     * 产品类型
+     */
+    private String productType;
+
+    /**
+     * 附件集合
+     */
+    private String attachment;
+
+    /**
+     * 审核状态(0待审核、1审核中、3不通过、4通过)
+     */
+    private Integer status;
+
+    /**
+     * 项目状态
+     */
+    private String projectStatus;
+
+}

+ 39 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkClueTeamDO.java

@@ -0,0 +1,39 @@
+package com.wx.blink.backend.domain.dataobject;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.wx.blink.base.common.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+@TableName("blink_clue_team")
+public class BlinkClueTeamDO extends BaseEntity {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 营销经理
+     */
+    private String marketingManager;
+
+    /**
+     * 营销团队
+     */
+    private String marketingTeam;
+
+    /**
+     * 支持说明
+     */
+    private String supportDescription;
+
+    /**
+     * 线索ID
+     */
+    private Integer clueId;
+
+}

+ 227 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/BlinkClueDTO.java

@@ -0,0 +1,227 @@
+package com.wx.blink.backend.domain.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.wx.blink.base.common.domain.BaseEntity;
+import com.wx.blink.base.common.json.deserializer.DictValueVoDeserializer;
+import com.wx.blink.base.common.json.deserializer.FileKeyVoDeserializer;
+import com.wx.blink.base.common.json.serializer.FileKeyVoSerializer;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class BlinkClueDTO extends BaseEntity {
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * 项目ID
+     */
+    private String projectId;
+
+    /**
+     * 项目类型(BLINK_MARKET_PROJECT_TYPE)
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    private String projectType;
+
+    /**
+     * 线索名称
+     */
+    private String clueName;
+
+    /**
+     * 线索来源
+     */
+    private String clueSource;
+
+    /**
+     * 服务商名称
+     */
+    private String providerName;
+
+    /**
+     * 工程属性(BLINK_MARKET_PROJECT_ENGINEERING_TYPE)
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    private String engineeringAttribute;
+
+    /**
+     * 国家或地区
+     */
+    private String countryRegion;
+
+    /**
+     * 省份
+     */
+    private String province;
+
+    /**
+     * 省份名称
+     */
+    private String provinceName;
+
+    /**
+     * 城市
+     */
+    private String city;
+
+    /**
+     * 城市名称
+     */
+    private String cityName;
+
+    /**
+     * 区县
+     */
+    private String district;
+
+    /**
+     * 区县名称
+     */
+    private String districtName;
+
+    /**
+     * 项目地址
+     */
+    private String projectAddress;
+
+    /**
+     * 项目来源
+     */
+    private String projectSource;
+
+    /**
+     * 甲方
+     */
+    private String lessor;
+
+    /**
+     * 业主单位
+     * */
+    private String ownersFlats;
+
+    /**
+     * 设计单位
+     */
+    private String designFlats;
+
+    /**
+     * 总承包单位
+     */
+    private String generalContractingFlats;
+
+    /**
+     * 招商代理单位
+     */
+    private String investmentAgentFlats;
+
+    /**
+     * 是否联合体
+     */
+    private String complex;
+
+    /**
+     * 联合体情况说明
+     */
+    private String complexDescription;
+
+    /**
+     * 项目所属行业
+     */
+    private String projectBelongIndustry;
+
+    /**
+     * 业务类型(BLINK_MARKET_PROJECT_BIZ_TYPE)
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    private String businessType;
+
+    /**
+     * 招标平台
+     */
+    private String tenderPlatform;
+
+    /**
+     * 招标日期
+     */
+    private String tenderDate;
+
+    /**
+     * 项目预算(概算金额【万】)
+     */
+    private BigDecimal projectBudgets;
+
+    /**
+     * 项目预算(概算金额【万】)
+     */
+    private String projectBudget;
+
+    /**
+     * 项目资金来源
+     */
+    private String projectMoneySource;
+
+    /**
+     * 分厂/几期/机组
+     */
+    private String factory;
+
+    /**
+     * 项目背景
+     */
+    private String projectBackground;
+
+    /**
+     * 项目阶段
+     */
+    private String projectStage;
+
+    /**
+     * 归属营销人员
+     */
+    private String belongMarketer;
+
+    /**
+     * 归属营销部门
+     */
+    private String belongMarketingDepartment;
+
+    /**
+     * 产品类型
+     */
+    private String productType;
+
+    /**
+     * 附件集合
+     */
+    @JsonDeserialize(using = FileKeyVoDeserializer.class)
+    @JsonSerialize(using = FileKeyVoSerializer.class)
+    private String attachment;
+
+    /**
+     * 审核状态(0待审核、1审核中、3不通过、4通过)
+     */
+    private Integer status;
+
+    /**
+     * 项目状态
+     */
+    private String projectStatus;
+
+    /**
+     * 协作团队成员
+     */
+    private List<BlinkClueTeamDTO> teamDTOList;
+
+}

+ 34 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/BlinkClueTeamDTO.java

@@ -0,0 +1,34 @@
+package com.wx.blink.backend.domain.dto;
+
+import com.wx.blink.base.common.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+public class BlinkClueTeamDTO extends BaseEntity {
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 营销经理
+     */
+    private String marketingManager;
+
+    /**
+     * 营销团队
+     */
+    private String marketingTeam;
+
+    /**
+     * 支持说明
+     */
+    private String supportDescription;
+
+    /**
+     * 线索ID
+     */
+    private Integer clueId;
+
+}

+ 34 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/qry/BlinkClueQry.java

@@ -0,0 +1,34 @@
+package com.wx.blink.backend.domain.qry;
+
+import com.wx.blink.base.common.domain.PageParam;
+import lombok.Data;
+
+@Data
+public class BlinkClueQry extends PageParam {
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * 项目ID
+     */
+    private String projectId;
+
+    /**
+     * 项目地址
+     */
+    private String projectAddress;
+
+    /**
+     * 审核状态(0待审核、1审核中、3不通过、4通过)
+     */
+    private Integer status;
+
+}

+ 24 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/qry/BlinkClueTeamQry.java

@@ -0,0 +1,24 @@
+package com.wx.blink.backend.domain.qry;
+
+import com.wx.blink.base.common.domain.PageParam;
+import lombok.Data;
+
+@Data
+public class BlinkClueTeamQry extends PageParam {
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 营销经理
+     */
+    private String marketingManager;
+
+    /**
+     * 线索ID
+     */
+    private Integer clueId;
+
+}

+ 79 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkClueServiceImpl.java

@@ -0,0 +1,79 @@
+package com.wx.blink.backend.manager;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wx.blink.backend.domain.dataobject.BlinkClueDO;
+import com.wx.blink.backend.domain.dto.BlinkClueDTO;
+import com.wx.blink.backend.domain.dto.BlinkClueTeamDTO;
+import com.wx.blink.backend.domain.qry.BlinkClueQry;
+import com.wx.blink.backend.objectmapper.BlinkClueMapper;
+import com.wx.blink.backend.repository.BlinkClueRepository;
+import com.wx.blink.backend.repository.BlinkClueTeamRepository;
+import com.wx.blink.backend.service.IBlinkClueService;
+import com.wx.blink.base.common.domain.PageResult;
+import com.wx.blink.base.common.domain.ResponseDTO;
+import com.wx.blink.base.common.util.BlinkEntityUtil;
+import com.wx.blink.base.common.util.BlinkPageUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.text.DecimalFormat;
+import java.util.List;
+import java.util.Objects;
+
+@Service
+public class BlinkClueServiceImpl extends ServiceImpl<BlinkClueRepository, BlinkClueDO> implements IBlinkClueService {
+
+    @Resource
+    private BlinkClueRepository repository;
+    @Resource
+    private BlinkClueMapper mapper;
+    @Resource
+    private BlinkClueTeamRepository teamRepository;
+
+    /**
+     * 新增线索
+     *
+     * @param dto
+     * @return
+     */
+    @Override
+    public ResponseDTO<String> supportsClueCreate(BlinkClueDTO dto) {
+        // 验证客户名称是否重复
+        BlinkClueDO clueDO = repository.queryByClueName(dto.getClueName(), null, Boolean.FALSE);
+        if (Objects.nonNull(clueDO)) {
+            return ResponseDTO.dataErrorParam("线索名称重复!请检查");
+        }
+        BlinkClueDO blinkClueDO = new BlinkClueDO();
+        mapper.toBlinkClueDO(dto, blinkClueDO);
+        // 设置活动预算
+        DecimalFormat df = new DecimalFormat("#,##0.00");
+        blinkClueDO.setProjectBudget(df.format(dto.getProjectBudgets()));
+        // 创建人赋值
+        BlinkEntityUtil.setCreateInfo(blinkClueDO);
+        // 执行新增
+        this.save(blinkClueDO);
+        return ResponseDTO.ok();
+    }
+
+    @Override
+    public ResponseDTO<PageResult<BlinkClueDTO>> supportsClueQueryPage(BlinkClueQry qry) {
+        Page<?> page = BlinkPageUtil.convert2PageQuery(qry);
+        List<BlinkClueDTO> clueDTOS = repository.supportsClueQueryPage(page, qry);
+        PageResult<BlinkClueDTO> pageResult = BlinkPageUtil.convert2PageResult(page, clueDTOS);
+        return ResponseDTO.ok(pageResult);
+    }
+
+    @Override
+    public ResponseDTO<BlinkClueDTO> supportsClueQuery(Long id) {
+        BlinkClueDO blinkClueDO = repository.queryByClueName(null, id, Boolean.FALSE);
+        if (!Objects.nonNull(blinkClueDO)) {
+            return ResponseDTO.dataErrorParam("线索不存在!请检查");
+        }
+        List<BlinkClueTeamDTO> blinkClueTeamDTOS = teamRepository.supportsClueQueryByClueId(blinkClueDO.getId());
+        BlinkClueDTO blinkClueDTO = new BlinkClueDTO();
+        mapper.toBlinkClueDTO(blinkClueDO, blinkClueDTO);
+        blinkClueDTO.setTeamDTOList(blinkClueTeamDTOS);
+        return ResponseDTO.ok(blinkClueDTO);
+    }
+}

+ 66 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkClueTeamServiceImpl.java

@@ -0,0 +1,66 @@
+package com.wx.blink.backend.manager;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wx.blink.backend.domain.dataobject.BlinkActivityMemberDO;
+import com.wx.blink.backend.domain.dataobject.BlinkClueTeamDO;
+import com.wx.blink.backend.domain.dto.BlinkClueTeamDTO;
+import com.wx.blink.backend.objectmapper.BlinkClueTeamMapper;
+import com.wx.blink.backend.repository.BlinkClueTeamRepository;
+import com.wx.blink.backend.service.IBlinkClueTeamService;
+import com.wx.blink.base.common.domain.ResponseDTO;
+import com.wx.blink.base.common.util.BlinkEntityUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Objects;
+
+@Service
+public class BlinkClueTeamServiceImpl extends ServiceImpl<BlinkClueTeamRepository, BlinkClueTeamDO> implements IBlinkClueTeamService {
+
+    @Resource
+    private BlinkClueTeamRepository repository;
+    @Resource
+    private BlinkClueTeamMapper mapper;
+
+    /**
+     * 新增线索
+     *
+     * @param dto
+     * @return
+     */
+    @Override
+    public ResponseDTO<String> supportsClueTeamCreate(BlinkClueTeamDTO dto) {
+        // 验证协作团队成员是否重复
+        BlinkClueTeamDO clueTeamDO = repository.queryByMarketingManager(dto.getMarketingManager(), null, Boolean.FALSE);
+        if (Objects.nonNull(clueTeamDO)) {
+            return ResponseDTO.dataErrorParam("团队成员重复!请检查");
+        }
+        BlinkClueTeamDO blinkClueTeamDO = new BlinkClueTeamDO();
+        mapper.toBlinkClueTeamDO(dto, blinkClueTeamDO);
+        // 创建人赋值
+        BlinkEntityUtil.setCreateInfo(blinkClueTeamDO);
+        // 执行新增
+        this.save(blinkClueTeamDO);
+        return ResponseDTO.ok();
+    }
+
+    /**
+     * 移除协作团队成员
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    public ResponseDTO<String> supportsClueTeamDeleteById(Long id) {
+        BlinkClueTeamDO blinkClueTeamDO = this.getById(id);
+        if (!Objects.nonNull(blinkClueTeamDO)){
+            return ResponseDTO.dataErrorParam("协作团队成员不存在!请检查");
+        }
+        // 执行假删除
+        blinkClueTeamDO.setDeletedFlag(1);
+        // 修改人赋值
+        BlinkEntityUtil.setUpdatedInfo(blinkClueTeamDO);
+        this.updateById(blinkClueTeamDO);
+        return ResponseDTO.ok();
+    }
+}

+ 1 - 2
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkMarketActivityServiceImpl.java

@@ -18,7 +18,6 @@ import com.wx.blink.base.module.support.serialnumber.service.SerialNumberService
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.math.BigDecimal;
 import java.text.DecimalFormat;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
@@ -58,7 +57,7 @@ public class BlinkMarketActivityServiceImpl extends ServiceImpl<BlinkMarketActiv
         marketActivityDO.setActivityCode(serialNumberService.generate(serialNumberIdEnum));
         // 设置活动预算
         DecimalFormat df = new DecimalFormat("#,##0.00");
-        marketActivityDO.setActivityBudget(df.format(dto.getActivityBudget()));
+        marketActivityDO.setActivityBudget(df.format(dto.getActivityBudgets()));
         // 获取活动周期
         List<String> activityDate = dto.getActivityDateList();
         String starTime = activityDate.get(0);

+ 29 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/objectmapper/BlinkClueMapper.java

@@ -0,0 +1,29 @@
+package com.wx.blink.backend.objectmapper;
+
+import com.wx.blink.backend.domain.dataobject.BlinkClueDO;
+import com.wx.blink.backend.domain.dto.BlinkClueDTO;
+import com.wx.blink.base.common.util.BlinkStringUtil;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingTarget;
+
+@Mapper(componentModel = "spring", imports = {BlinkStringUtil.class})
+public interface BlinkClueMapper {
+
+    /**
+     * 线索主数据dto转do
+     *
+     * @param dto
+     * @return
+     */
+    void toBlinkClueDO(BlinkClueDTO dto, @MappingTarget BlinkClueDO activityDO);
+
+    /**
+     * 线索主数据do转dto
+     *
+     * @param dto
+     * @return
+     */
+    void toBlinkClueDTO(BlinkClueDO clueDO, @MappingTarget BlinkClueDTO dto);
+
+
+}

+ 21 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/objectmapper/BlinkClueTeamMapper.java

@@ -0,0 +1,21 @@
+package com.wx.blink.backend.objectmapper;
+
+import com.wx.blink.backend.domain.dataobject.BlinkClueTeamDO;
+import com.wx.blink.backend.domain.dto.BlinkClueTeamDTO;
+import com.wx.blink.base.common.util.BlinkStringUtil;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingTarget;
+
+@Mapper(componentModel = "spring", imports = {BlinkStringUtil.class})
+public interface BlinkClueTeamMapper {
+
+    /**
+     * 协作团队成员主数据dto转do
+     *
+     * @param dto
+     * @return
+     */
+    void toBlinkClueTeamDO(BlinkClueTeamDTO dto, @MappingTarget BlinkClueTeamDO activityDO);
+
+
+}

+ 34 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkClueRepository.java

@@ -0,0 +1,34 @@
+package com.wx.blink.backend.repository;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.wx.blink.backend.domain.dataobject.BlinkClueDO;
+import com.wx.blink.backend.domain.dto.BlinkClueDTO;
+import com.wx.blink.backend.domain.qry.BlinkClueQry;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface BlinkClueRepository extends BaseMapper<BlinkClueDO> {
+
+    /**
+     * 验证线索是否重复
+     *
+     * @param clueName
+     * @param deletedFlag
+     * @param id
+     * @return
+     */
+    BlinkClueDO queryByClueName(@Param("clueName") String clueName, @Param("id") Long id, @Param("deletedFlag") Boolean deletedFlag);
+
+    /**
+     * 分页查询线索列表
+     *
+     * @param qry
+     * @return
+     */
+    List<BlinkClueDTO> supportsClueQueryPage(Page<?> page, @Param("query") BlinkClueQry qry);
+
+}

+ 34 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkClueTeamRepository.java

@@ -0,0 +1,34 @@
+package com.wx.blink.backend.repository;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.wx.blink.backend.domain.dataobject.BlinkClueTeamDO;
+import com.wx.blink.backend.domain.dto.BlinkClueTeamDTO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface BlinkClueTeamRepository extends BaseMapper<BlinkClueTeamDO> {
+
+    /**
+     * 验证协作团队成员是否重复
+     *
+     * @param marketingManager
+     * @param deletedFlag
+     * @param id
+     * @return
+     */
+    BlinkClueTeamDO queryByMarketingManager(@Param("marketingManager") String marketingManager, @Param("id") Long id, @Param("deletedFlag") Boolean deletedFlag);
+
+    /**
+     * 查询协作团队成员列表
+     *
+     * @param clueId
+     * @return
+     */
+    List<BlinkClueTeamDTO> supportsClueQueryByClueId(@Param("clueId") Long clueId);
+
+
+
+}

+ 33 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkClueService.java

@@ -0,0 +1,33 @@
+package com.wx.blink.backend.service;
+
+import com.wx.blink.backend.domain.dto.BlinkClueDTO;
+import com.wx.blink.backend.domain.qry.BlinkClueQry;
+import com.wx.blink.base.common.domain.PageResult;
+import com.wx.blink.base.common.domain.ResponseDTO;
+
+public interface IBlinkClueService {
+
+    /**
+     * 新增线索
+     *
+     * @param dto
+     * @return
+     */
+    ResponseDTO<String> supportsClueCreate(BlinkClueDTO dto);
+
+    /**
+     * 分页查询线索列表
+     *
+     * @param qry
+     * @return
+     */
+    ResponseDTO<PageResult<BlinkClueDTO>> supportsClueQueryPage(BlinkClueQry qry);
+
+    /**
+     * 查询线索信息
+     *
+     * @param id
+     * @return
+     */
+    ResponseDTO<BlinkClueDTO> supportsClueQuery(Long id);
+}

+ 23 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkClueTeamService.java

@@ -0,0 +1,23 @@
+package com.wx.blink.backend.service;
+
+import com.wx.blink.backend.domain.dto.BlinkClueTeamDTO;
+import com.wx.blink.base.common.domain.ResponseDTO;
+
+public interface IBlinkClueTeamService {
+
+    /**
+     * 新增协作团队成员
+     *
+     * @param dto
+     * @return
+     */
+    ResponseDTO<String> supportsClueTeamCreate(BlinkClueTeamDTO dto);
+
+    /**
+     * 移除协作团队成员
+     *
+     * @param id
+     * @return
+     */
+    ResponseDTO<String> supportsClueTeamDeleteById(Long id);
+}

+ 41 - 0
bound-link-api/blink-backend/src/main/resources/mapper/BlinkClueRepositoryMapper.xml

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.wx.blink.backend.repository.BlinkClueRepository">
+    <!--    通过线索名称查询单个线索-->
+    <select id="queryByClueName" resultType="com.wx.blink.backend.domain.dataobject.BlinkClueDO">
+        select *
+        from blink_clue
+        where deleted_flag = #{deletedFlag}
+        <if test="clueName != null and clueName != ''">
+            AND clue_name = #{clueName}
+        </if>
+        <if test="id != null">
+            AND id = #{id}
+        </if>
+    </select>
+    <!--    查询线索列表-->
+    <select id="supportsClueQueryPage" resultType="com.wx.blink.backend.domain.dto.BlinkClueDTO">
+        select *
+        from blink_clue
+        where deleted_flag = '0'
+        <if test="query.projectName != null and query.projectName !=''">
+            AND project_name = #{query.projectName}
+        </if>
+        <if test="query.projectId != null and query.projectId !=''">
+            AND project_id = #{query.projectId}
+        </if>
+        <if test="query.id != null">
+            AND id = #{query.id}
+        </if>
+        <choose>
+            <when test="query.status != null">
+                AND status = #{query.status}
+            </when>
+            <otherwise>
+                AND status NOT IN (3,4)
+            </otherwise>
+        </choose>
+        order by create_time desc
+    </select>
+
+</mapper>

+ 26 - 0
bound-link-api/blink-backend/src/main/resources/mapper/BlinkClueTeamRepositoryMapper.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.wx.blink.backend.repository.BlinkClueTeamRepository">
+    <!--    查询单个协作团队成员-->
+    <select id="queryByMarketingManager" resultType="com.wx.blink.backend.domain.dataobject.BlinkClueTeamDO">
+        select *
+        from blink_clue_team
+        where deleted_flag = #{deletedFlag}
+        <if test="marketingManager != null and marketingManager != ''">
+            AND marketing_manager = #{marketingManager}
+        </if>
+        <if test="id != null">
+            AND id = #{id}
+        </if>
+    </select>
+
+    <!--    查询协作团队成员列表-->
+    <select id="supportsClueQueryByClueId" resultType="com.wx.blink.backend.domain.dto.BlinkClueTeamDTO">
+        select *
+        from blink_clue_team
+        where deleted_flag = '0'
+        AND clue_id = #{clueId}
+        order by create_time desc
+    </select>
+
+</mapper>