Jelajahi Sumber

feat: 增加客户营销团队相关接口

zhaojianyang 3 bulan lalu
induk
melakukan
814427509f

+ 24 - 1
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/controller/BlinkCustomerController.java

@@ -2,6 +2,7 @@ package com.wx.blink.backend.controller;
 
 import com.wx.blink.backend.domain.dto.*;
 import com.wx.blink.backend.domain.qry.BlinkBizFileQry;
+import com.wx.blink.backend.service.IBlinkCustomerMarketTeamService;
 import com.wx.blink.backend.service.IBlinkCustomerService;
 import com.wx.blink.backend.service.IBlinkCustomerTagService;
 import com.wx.blink.base.common.domain.PageResult;
@@ -34,6 +35,8 @@ public class BlinkCustomerController {
     private Configuration configuration;
     @Resource
     private IBlinkCustomerTagService customerTagService;
+    @Resource
+    private IBlinkCustomerMarketTeamService marketTeamService;
 
     @Operation(summary = "新增客户")
     @PostMapping("/supports/customer/create")
@@ -145,10 +148,30 @@ public class BlinkCustomerController {
     public ResponseDTO<List<BlinkCustomerTagVO>> customerTagGetList(@PathVariable String customerId) {
         return ResponseDTO.ok(customerTagService.getCustomerTagList(customerId));
     }
-    //---------------------------------相关tab页查询-----------------------------------//
+    //---------------------------------相关tab页内容-----------------------------------//
     @Operation(summary = "获取客户关联公司列表")
     @GetMapping(value = "/supports/customer/relatedCompany/{customerId}")
     public ResponseDTO<List<BlinkCustomerVO>> getRelatedCompanyById(@PathVariable String customerId) {
         return ResponseDTO.ok(customerService.getRelatedCompanyById(customerId));
     }
+
+    @Operation(summary = "客户营销团队新增/修改")
+    @PostMapping(value = "/supports/customer/marketTeam/addOrUpdate")
+    public ResponseDTO customerTagAddOrUpdate(@RequestBody BlinkCustomerMarketTeamVO vo) {
+        marketTeamService.addOrUpdate(vo);
+        return ResponseDTO.ok();
+    }
+
+    @Operation(summary = "客户营销团队移除")
+    @PostMapping(value = "/supports/customer/marketTeam/deleteById")
+    public ResponseDTO deleteById(@RequestBody BlinkCustomerMarketTeamVO vo) {
+        marketTeamService.deleteById(vo.getId());
+        return ResponseDTO.ok();
+    }
+
+    @Operation(summary = "查询客户营销团队")
+    @GetMapping(value = "/supports/customer/getMarketTeamListById/{customerId}")
+    public ResponseDTO<List<BlinkCustomerMarketTeamVO>> getMarketTeamListByCustomerId(@PathVariable String customerId) {
+        return ResponseDTO.ok(marketTeamService.getListByCustomerId(customerId));
+    }
 }

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

@@ -0,0 +1,35 @@
+package com.wx.blink.backend.domain.dataobject;
+
+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.wx.blink.base.common.domain.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+@TableName("blink_customer_market_team")
+public class BlinkCustomerMarketTeamDO extends BaseEntity {
+
+    @Schema(description = "id")
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    @Schema(description = "客户id")
+    @TableField("customer_id")
+    private String customerId;
+    @Schema(description = "归属区域")
+    @TableField("belong_region")
+    private String belongRegion;
+    @Schema(description = "营销人员")
+    @TableField("market_staff")
+    private String marketStaff;
+    @Schema(description = "权限")
+    @TableField("permission")
+    private String permission;
+    @Schema(description = "说明")
+    @TableField("description")
+    private String description;
+
+}

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

@@ -0,0 +1,32 @@
+package com.wx.blink.backend.domain.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.wx.blink.base.common.annoation.DataAdaptorMapping;
+import com.wx.blink.base.common.domain.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class BlinkCustomerMarketTeamVO extends BaseEntity {
+
+    @Schema(description = "id")
+    private String id;
+
+    @Schema(description = "客户id")
+    @TableField("customer_id")
+    private String customerId;
+    @Schema(description = "归属区域")
+    @TableField("belong_region")
+    private String belongRegion;
+    @Schema(description = "营销人员")
+    @TableField("market_staff")
+    private String marketStaff;
+    @Schema(description = "权限")
+    @DataAdaptorMapping(type = "dict", value = "BLINK_CUSTOMER_MARKET_PERM")
+    @TableField("permission")
+    private String permission;
+    @Schema(description = "说明")
+    @TableField("description")
+    private String description;
+
+}

+ 24 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/handler/CustomerRegisterProcessSubmitEventHandler.java

@@ -4,10 +4,12 @@ import com.alibaba.fastjson.JSONObject;
 import com.cloud.sa.flow.commom.domain.virentity.StInstanceEvent;
 import com.wx.blink.backend.domain.dataobject.BlinkCustomerDO;
 import com.wx.blink.backend.domain.dataobject.BlinkCustomerSeniorDO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerMarketTeamVO;
 import com.wx.blink.backend.domain.dto.MBlinkCustomerSeniorVO;
 import com.wx.blink.backend.domain.dto.lBlinkCustomerRegisterVO;
 import com.wx.blink.backend.objectmapper.BlinkCustomerMapper;
 import com.wx.blink.backend.objectmapper.BlinkCustomerSeniorMapper;
+import com.wx.blink.backend.service.IBlinkCustomerMarketTeamService;
 import com.wx.blink.backend.service.IBlinkCustomerSeniorService;
 import com.wx.blink.backend.service.IBlinkCustomerService;
 import com.wx.blink.base.common.domain.ResponseDTO;
@@ -26,12 +28,14 @@ public class CustomerRegisterProcessSubmitEventHandler implements CustomizeProce
     private IBlinkCustomerService customerService;
     private BlinkCustomerSeniorMapper customerSeniorMapper;
     private IBlinkCustomerSeniorService seniorService;
+    private IBlinkCustomerMarketTeamService marketTeamService;
 
     public CustomerRegisterProcessSubmitEventHandler() {
         this.customerMapper = BlinkSpringUtil.getBean(BlinkCustomerMapper.class);
         this.customerService = BlinkSpringUtil.getBean(IBlinkCustomerService.class);
         this.customerSeniorMapper = BlinkSpringUtil.getBean(BlinkCustomerSeniorMapper.class);
         this.seniorService = BlinkSpringUtil.getBean(IBlinkCustomerSeniorService.class);
+        this.marketTeamService = BlinkSpringUtil.getBean(IBlinkCustomerMarketTeamService.class);
     }
     /**
      * 状态
@@ -85,6 +89,7 @@ public class CustomerRegisterProcessSubmitEventHandler implements CustomizeProce
             //取消时,状态为失效
             customerDO.setAuditStatus("03");
         }
+
         if (registerVo.getIsProviderSend() != null && registerVo.getIsProviderSend() == 1) {
             //数据来源为服务商列表发起的流程时,会同步获取到客户id
             if (registerVo.getProviderSendCusid() == null) {
@@ -98,6 +103,10 @@ public class CustomerRegisterProcessSubmitEventHandler implements CustomizeProce
             //如果是从服务商列表发起的,只进行更新操作
             customerDO.setUpdateTime(registerVo.getUpDate());
             customerDO.setUpdateUserId(registerVo.getUpdateBy());
+            if(state==4){
+                //流程结束时,插入营销团队的负责人
+                addMarketTeam(registerVo,registerVo.getProviderSendCusid());
+            }
             return customerService.supportsCustomerUpdate(customerDO, seniorDOs,true);
         } else {
             //用flow_id查询对应的客户
@@ -113,6 +122,10 @@ public class CustomerRegisterProcessSubmitEventHandler implements CustomizeProce
                 customerDO.setId(validateCustomer.getId());
                 customerDO.setUpdateTime(registerVo.getUpDate());
                 customerDO.setUpdateUserId(registerVo.getUpdateBy());
+                if(state==4){
+                    //流程结束时,插入营销团队的负责人
+                    addMarketTeam(registerVo,validateCustomer.getId());
+                }
                 return customerService.supportsCustomerUpdate(customerDO, seniorDOs,true);
             }
         }
@@ -134,4 +147,15 @@ public class CustomerRegisterProcessSubmitEventHandler implements CustomizeProce
 
         return provinceCityDistrict;
     }
+    /*添加营销团队*/
+    public void addMarketTeam (lBlinkCustomerRegisterVO registerVo,String customerId){
+        BlinkCustomerMarketTeamVO mtVo = new BlinkCustomerMarketTeamVO();
+        mtVo.setCreateUserId(registerVo.getCreateBy());
+        mtVo.setCreateTime(registerVo.getUpDate());
+        mtVo.setCustomerId(customerId);
+        mtVo.setBelongRegion(registerVo.getBelongRegion());
+        mtVo.setMarketStaff(registerVo.getMarketStaff());
+        mtVo.setPermission("01");
+        marketTeamService.addOrUpdate(mtVo);
+    }
 }

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

@@ -0,0 +1,70 @@
+package com.wx.blink.backend.manager;
+
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerMarketTeamDO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerMarketTeamVO;
+import com.wx.blink.backend.objectmapper.BlinkCustomerMarketTeamMapper;
+import com.wx.blink.backend.repository.BlinkCustomerMarketTeamRepository;
+import com.wx.blink.backend.service.IBlinkCustomerMarketTeamService;
+import com.wx.blink.base.common.util.BlinkEntityUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+
+@Service
+public class BlinkCustomerMarketTeamImpl extends ServiceImpl<BlinkCustomerMarketTeamRepository, BlinkCustomerMarketTeamDO> implements IBlinkCustomerMarketTeamService {
+
+    @Resource
+    private BlinkCustomerMarketTeamRepository customerMarketTeamRepository;
+    @Resource
+    private BlinkCustomerMarketTeamMapper customerMarketTeamMapper;
+
+    @Override
+    public void addOrUpdate(BlinkCustomerMarketTeamVO vo) {
+        BlinkCustomerMarketTeamDO marketTeamDO = customerMarketTeamMapper.customerMarketTeamVOtoDomain(vo);
+        if (marketTeamDO != null) {
+            //有id更新,没有则新增
+            if (marketTeamDO.getId() == null || marketTeamDO.getId() == "") {
+                //创建人赋值
+                BlinkEntityUtil.setCreateInfo(marketTeamDO);
+                this.save(marketTeamDO);
+            } else {
+                //更新人赋值
+                BlinkEntityUtil.setUpdatedInfo(marketTeamDO);
+                this.updateById(marketTeamDO);
+            }
+        }
+    }
+
+    @Override
+    public void deleteByCustomerIdAndStaff(String customerId, String marketStaff) {
+        UpdateWrapper<BlinkCustomerMarketTeamDO> updateWrapper = new UpdateWrapper<>();
+        updateWrapper
+                // 设置更新条件(根据多个字段)
+                .eq("customer_id", customerId)
+                .eq("market_staff", marketStaff)
+                // 设置要更新的字段和值
+                .set("deleted_flag", 1);
+        this.update(null, updateWrapper);
+    }
+
+    @Override
+    public void deleteById(String id) {
+        UpdateWrapper<BlinkCustomerMarketTeamDO> updateWrapper = new UpdateWrapper<>();
+        updateWrapper
+                .eq("id", id)
+                .set("deleted_flag", 1);
+        this.update(null, updateWrapper);
+    }
+
+    @Override
+    public List<BlinkCustomerMarketTeamVO> getListByCustomerId(String customerId) {
+        List<BlinkCustomerMarketTeamVO> list = customerMarketTeamRepository.getListByCustomerId(customerId);
+        return list;
+    }
+
+
+}

+ 22 - 6
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkCustomerServiceImpl.java

@@ -1,25 +1,25 @@
 package com.wx.blink.backend.manager;
 
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.wx.blink.backend.domain.dataobject.BlinkBizFileDO;
 import com.wx.blink.backend.domain.dataobject.BlinkCustomerDO;
 import com.wx.blink.backend.domain.dataobject.BlinkCustomerSeniorDO;
 import com.wx.blink.backend.domain.dataobject.BlinkProviderDO;
-import com.wx.blink.backend.domain.dto.BlinkCustomerHeaderVO;
-import com.wx.blink.backend.domain.dto.BlinkCustomerReleaseVO;
-import com.wx.blink.backend.domain.dto.BlinkCustomerTransferVO;
-import com.wx.blink.backend.domain.dto.BlinkCustomerUsedNameVO;
+import com.wx.blink.backend.domain.dto.*;
 import com.wx.blink.backend.domain.qry.BlinkBizFileQry;
 import com.wx.blink.backend.objectmapper.BlinkCustomerMapper;
 import com.wx.blink.backend.repository.BlinkCustomerRepository;
 import com.wx.blink.backend.repository.BlinkProviderRepository;
 import com.wx.blink.backend.service.*;
 import com.wx.blink.base.common.domain.PageResult;
+import com.wx.blink.base.common.domain.RequestUser;
 import com.wx.blink.base.common.domain.ResponseDTO;
 import com.wx.blink.base.common.util.BlinkEntityUtil;
 import com.wx.blink.base.common.util.BlinkEnumUtil;
 import com.wx.blink.base.common.util.BlinkPageUtil;
+import com.wx.blink.base.common.util.BlinkRequestUtil;
 import com.wx.blink.base.module.support.datatracer.constant.DataTracerConst;
 import com.wx.blink.base.module.support.datatracer.constant.DataTracerTypeEnum;
 import com.wx.blink.base.module.support.datatracer.domain.form.DataTracerForm;
@@ -61,6 +61,8 @@ public class BlinkCustomerServiceImpl extends ServiceImpl<BlinkCustomerRepositor
     private IBlinkCustomerTransferService transferService;
     @Resource
     private IBlinkCustomerReleaseService releaseService;
+    @Resource
+    private IBlinkCustomerMarketTeamService marketTeamService;
 
     @Override
     public ResponseDTO<String> supportsCustomerCreate(BlinkCustomerCreateVO dto) {
@@ -289,8 +291,20 @@ public class BlinkCustomerServiceImpl extends ServiceImpl<BlinkCustomerRepositor
 
     @Override
     public ResponseDTO<String> customerTransfer(BlinkCustomerTransferVO vo) {
-        customerRepository.customerTransfer(vo);
-        transferService.addOrUpdate(vo);
+        customerRepository.customerTransfer(vo);//客户转移
+        transferService.addOrUpdate(vo);//数据保存
+        //删除营销团队中的归属营销人员
+        marketTeamService.deleteByCustomerIdAndStaff(vo.getCusid(),vo.getMarketStaff());
+        //新增新的营销负责人
+        BlinkCustomerMarketTeamVO mtVo = new BlinkCustomerMarketTeamVO();
+        RequestUser employee = BlinkRequestUtil.getRequestUser();
+        mtVo.setCreateUserId(employee.getUserCode());
+        mtVo.setCreateTime(DateUtil.date());
+        mtVo.setCustomerId(vo.getCusid());
+        mtVo.setBelongRegion(vo.getBelongRegion());
+        mtVo.setMarketStaff(vo.getMarketStaff());
+        mtVo.setPermission("01");
+        marketTeamService.addOrUpdate(mtVo);
         return ResponseDTO.ok();
     }
 
@@ -303,6 +317,8 @@ public class BlinkCustomerServiceImpl extends ServiceImpl<BlinkCustomerRepositor
         if(vo.getReason()!=null) reason = reason+vo.getReason();
         DataTracerForm form = DataTracerForm.builder().dataId(vo.getCusid()).type(DataTracerTypeEnum.CUSTOMER).content(reason).build();
         dataTracerService.addTrace(form);
+        //删除营销团队中的归属营销人员
+        marketTeamService.deleteByCustomerIdAndStaff(vo.getCusid(),vo.getMarketStaff());
         return ResponseDTO.ok();
     }
 

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

@@ -0,0 +1,24 @@
+package com.wx.blink.backend.objectmapper;
+
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerMarketTeamDO;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerReleaseDO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerMarketTeamVO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerReleaseVO;
+import com.wx.blink.base.common.util.BlinkStringUtil;
+import org.mapstruct.Mapper;
+
+
+@Mapper(componentModel = "spring", imports = {BlinkStringUtil.class})
+public interface BlinkCustomerMarketTeamMapper {
+
+    /**
+     * 客户转移数据VO转do
+     *
+     * @param vo
+     * @return
+     */
+    BlinkCustomerMarketTeamDO customerMarketTeamVOtoDomain(BlinkCustomerMarketTeamVO vo);
+
+
+
+}

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

@@ -0,0 +1,21 @@
+package com.wx.blink.backend.repository;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerMarketTeamDO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerMarketTeamVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface BlinkCustomerMarketTeamRepository extends BaseMapper<BlinkCustomerMarketTeamDO> {
+
+    /**
+     * 客户标签查询
+     *
+     * @param customerId
+     * @return
+     */
+    List<BlinkCustomerMarketTeamVO> getListByCustomerId(@Param("customerId") String customerId);
+}

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

@@ -0,0 +1,39 @@
+package com.wx.blink.backend.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerMarketTeamDO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerMarketTeamVO;
+
+import java.util.List;
+
+
+public interface IBlinkCustomerMarketTeamService extends IService<BlinkCustomerMarketTeamDO> {
+    /**
+     * 客户标签新增、更新
+     *
+     * @param vo
+     * @return
+     */
+    void addOrUpdate(BlinkCustomerMarketTeamVO vo);
+    /**
+     * 客户标签删除
+     *
+     * @param vo
+     * @return
+     */
+    void deleteByCustomerIdAndStaff(String customerId, String marketStaff);/**
+     * 客户标签删除
+     *
+     * @param vo
+     * @return
+     */
+    void deleteById(String id);
+
+    /**
+     * 客户标签查询
+     *
+     * @param customerId
+     * @return
+     */
+    List<BlinkCustomerMarketTeamVO> getListByCustomerId(String customerId);
+}

+ 10 - 0
bound-link-api/blink-backend/src/main/resources/mapper/BlinkCustomerMarketTeamRepositoryMapper.xml

@@ -0,0 +1,10 @@
+<?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.BlinkCustomerMarketTeamRepository">
+    <select id="getListByCustomerId" resultType="com.wx.blink.backend.domain.dto.BlinkCustomerMarketTeamVO">
+        select mt.*
+        from blink_customer_market_team mt
+        where mt.deleted_flag = '0' and mt.customer_id = #{customerId}
+        order by mt.permission asc,mt.create_time asc
+    </select>
+</mapper>

+ 3 - 0
bound-link-api/blink-backend/src/main/resources/mapper/BlinkProjectRepositoryMapper.xml

@@ -18,6 +18,9 @@
         <if test="query.projectName != null and query.projectName !=''">
             AND project_name like concat('%', #{query.projectName}, '%')
         </if>
+        <if test="query.partAUnit != null and query.partAUnit !=''">
+            AND part_a_unit like concat('%', #{query.partAUnit}, '%')
+        </if>
         AND grade_code = 0
         AND create_user_id = #{query.createUserId}
         order by create_time desc

+ 5 - 0
bound-link-api/blink-common-dto/src/main/java/com/wx/blink/common/qry/BlinkProjectQry.java

@@ -28,4 +28,9 @@ public class BlinkProjectQry extends PageParam {
      */
     private String createUserId;
 
+    /**
+     * 甲方单位
+     */
+    private String partAUnit;
+
 }