Explorar el Código

feat: 市场活动中留资转化服务成员,服务成员新增、查询、修改、删除

zhaomuran hace 7 meses
padre
commit
3bcb173f6e

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

@@ -0,0 +1,52 @@
+package com.wx.blink.backend.controller;
+
+import com.wx.blink.backend.domain.dto.BlinkActivityMemberDTO;
+import com.wx.blink.backend.domain.qry.BlinkActivityMemberQry;
+import com.wx.blink.backend.service.IBlinkActivityMemberService;
+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;
+import javax.validation.Valid;
+
+@RestController
+@Tag(name = "服务成员")
+public class BlinkActivityMemberController {
+
+    @Resource
+    private IBlinkActivityMemberService memberService;
+
+    @Operation(summary = "新增服务成员")
+    @PostMapping("/supports/activity/member/create")
+    public ResponseDTO<String> supportsActivityMemberCreate(@RequestBody @Valid BlinkActivityMemberDTO dto) {
+        return memberService.supportsActivityMemberCreate(dto);
+    }
+
+    @Operation(summary = "分页查询服务成员列表")
+    @GetMapping("/supports/activity/member/queryPage")
+    public ResponseDTO<PageResult<BlinkActivityMemberDTO>> supportsActivityMemberQueryPage(BlinkActivityMemberQry qry) {
+        return memberService.supportsActivityMemberQueryPage(qry);
+    }
+
+    @Operation(summary = "获取服务成员信息")
+    @GetMapping("/supports/activity/member/{id}")
+    public ResponseDTO<BlinkActivityMemberDTO> supportsActivityMemberQuery(@PathVariable("id") Long id) {
+        return memberService.supportsActivityMemberQuery(id);
+    }
+
+    @Operation(summary = "编辑更新服务成员")
+    @PostMapping("/supports/activity/member/update")
+    public ResponseDTO<String> supportsActivityMemberUpdate(@RequestBody @Valid BlinkActivityMemberDTO dto) {
+        return memberService.supportsActivityMemberUpdate(dto);
+    }
+
+    @Operation(summary = "移除服务成员")
+    @GetMapping("/supports/activity/member/delete/{id}")
+    public ResponseDTO<String> supportsActivityMemberDeleteById(@PathVariable("id") Long id) {
+        return memberService.supportsActivityMemberDeleteById(id);
+    }
+
+}

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

@@ -0,0 +1,43 @@
+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_activity_member")
+public class BlinkActivityMemberDO extends BaseEntity {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 营销人
+     */
+    private String marketer;
+
+    /**
+     * 营销团队
+     */
+    private String marketingTeam;
+
+    /**
+     * 权限
+     */
+    private String permissions;
+
+    /**
+     * 提成比例
+     */
+    private String commissionProportion;
+
+    /**
+     * 活动ID
+     */
+    private Long activityId;
+}

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

@@ -0,0 +1,38 @@
+package com.wx.blink.backend.domain.dto;
+
+import com.wx.blink.base.common.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+public class BlinkActivityMemberDTO extends BaseEntity {
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 营销人
+     */
+    private String marketer;
+
+    /**
+     * 营销团队
+     */
+    private String marketingTeam;
+
+    /**
+     * 权限
+     */
+    private String permissions;
+
+    /**
+     * 提成比例
+     */
+    private String commissionProportion;
+
+    /**
+     * 活动ID
+     */
+    private Long activityId;
+}

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

@@ -1,8 +1,11 @@
 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;
@@ -125,6 +128,8 @@ public class BlinkMarketActivityDTO extends BaseEntity {
     /**
      * 附件
      */
+    @JsonDeserialize(using = FileKeyVoDeserializer.class)
+    @JsonSerialize(using = FileKeyVoSerializer.class)
     private String attachment;
 
 

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

@@ -0,0 +1,19 @@
+package com.wx.blink.backend.domain.qry;
+
+import com.wx.blink.base.common.domain.PageParam;
+import lombok.Data;
+
+@Data
+public class BlinkActivityMemberQry extends PageParam {
+
+    /**
+     * 营销人
+     */
+    private String marketer;
+
+    /**
+     * 活动ID
+     */
+    private Long activityId;
+
+}

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

@@ -0,0 +1,125 @@
+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.BlinkActivityMemberDO;
+import com.wx.blink.backend.domain.dto.BlinkActivityMemberDTO;
+import com.wx.blink.backend.domain.qry.BlinkActivityMemberQry;
+import com.wx.blink.backend.objectmapper.BlinkActivityMemberMapper;
+import com.wx.blink.backend.repository.BlinkActivityMemberRepository;
+import com.wx.blink.backend.service.IBlinkActivityMemberService;
+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.util.List;
+import java.util.Objects;
+
+@Service
+public class BlinkActivityMemberServiceImpl extends ServiceImpl<BlinkActivityMemberRepository, BlinkActivityMemberDO> implements IBlinkActivityMemberService {
+
+    @Resource
+    private BlinkActivityMemberRepository repository;
+    @Resource
+    private BlinkActivityMemberMapper mapper;
+
+    /**
+     * 新增成员
+     *
+     * @param dto
+     * @return
+     */
+    @Override
+    public ResponseDTO<String> supportsActivityMemberCreate(BlinkActivityMemberDTO dto) {
+        // 验证留资客户是否重复
+        BlinkActivityMemberDO memberDO = repository.queryByMarketer(dto.getMarketer(), null, Boolean.FALSE);
+        if (Objects.nonNull(memberDO)) {
+            return ResponseDTO.dataErrorParam("成员名称重复!请检查");
+        }
+        // 生成DO
+        BlinkActivityMemberDO activityMemberDO = new BlinkActivityMemberDO();
+        mapper.toBlinkActivityMemberDO(dto, activityMemberDO);
+        // 创建人赋值
+        BlinkEntityUtil.setCreateInfo(activityMemberDO);
+        // 执行新增
+        this.save(activityMemberDO);
+        return ResponseDTO.ok();
+    }
+
+    /**
+     * 获取查询服务成员信息
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    public ResponseDTO<BlinkActivityMemberDTO> supportsActivityMemberQuery(Long id) {
+        BlinkActivityMemberDO activityMemberDO = this.getById(id);
+        if (!Objects.nonNull(activityMemberDO)) {
+            return ResponseDTO.dataErrorParam("成员信息不存在!请检查");
+        }
+        BlinkActivityMemberDTO dto = new BlinkActivityMemberDTO();
+        mapper.toBlinkActivityMemberDTO(activityMemberDO, dto);
+        return ResponseDTO.ok(dto);
+    }
+
+    /**
+     * 编辑更新服务成员
+     *
+     * @param dto
+     * @return
+     */
+    @Override
+    public ResponseDTO<String> supportsActivityMemberUpdate(BlinkActivityMemberDTO dto) {
+        // 验证留资客户是否重复
+        BlinkActivityMemberDO memberDO = repository.queryByMarketer(null, dto.getId(), Boolean.FALSE);
+        if (!Objects.nonNull(memberDO)) {
+            return ResponseDTO.dataErrorParam("成员信息不存在!请检查");
+        }
+        // 生成DO
+        BlinkActivityMemberDO activityMemberDO = new BlinkActivityMemberDO();
+        mapper.toBlinkActivityMemberDO(dto, activityMemberDO);
+        // 创建人赋值
+        BlinkEntityUtil.setUpdatedInfo(activityMemberDO);
+        // 执行新增
+        this.updateById(activityMemberDO);
+        return ResponseDTO.ok();
+    }
+
+    /**
+     * 分页查询服务成员列表
+     *
+     * @param qry
+     * @return
+     */
+    @Override
+    public ResponseDTO<PageResult<BlinkActivityMemberDTO>> supportsActivityMemberQueryPage(BlinkActivityMemberQry qry) {
+        Page<?> page = BlinkPageUtil.convert2PageQuery(qry);
+        List<BlinkActivityMemberDTO> activityMemberDTOS = repository.supportsActivityMemberQueryPage(page, qry);
+        PageResult<BlinkActivityMemberDTO> pageResult = BlinkPageUtil.convert2PageResult(page, activityMemberDTOS);
+        return ResponseDTO.ok(pageResult);
+    }
+
+    /**
+     * 移除服务成员
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    public ResponseDTO<String> supportsActivityMemberDeleteById(Long id) {
+        BlinkActivityMemberDO activityMemberDO = this.getById(id);
+        if (!Objects.nonNull(activityMemberDO)){
+            return ResponseDTO.dataErrorParam("成员不存在!请检查");
+        }
+        // 执行假删除
+        repository.supportsActivityMemberDeleteById(id);
+        // 修改人赋值
+        BlinkEntityUtil.setUpdatedInfo(activityMemberDO);
+        this.updateById(activityMemberDO);
+        return ResponseDTO.ok();
+    }
+}

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

@@ -0,0 +1,28 @@
+package com.wx.blink.backend.objectmapper;
+
+import com.wx.blink.backend.domain.dataobject.BlinkActivityMemberDO;
+import com.wx.blink.backend.domain.dto.BlinkActivityMemberDTO;
+import com.wx.blink.base.common.util.BlinkStringUtil;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingTarget;
+
+@Mapper(componentModel = "spring", imports = {BlinkStringUtil.class})
+public interface BlinkActivityMemberMapper {
+
+    /**
+     * 服务成员主数据dto转do
+     *
+     * @param dto
+     * @return
+     */
+    void toBlinkActivityMemberDO(BlinkActivityMemberDTO dto, @MappingTarget BlinkActivityMemberDO activityMemberDO);
+
+    /**
+     * 服务成员主数据do转dto
+     *
+     * @param dto
+     * @return
+     */
+    void toBlinkActivityMemberDTO(BlinkActivityMemberDO activityMemberDO, @MappingTarget BlinkActivityMemberDTO dto);
+
+}

+ 1 - 1
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/objectmapper/BlinkRetentionCustomerMapper.java

@@ -10,7 +10,7 @@ import org.mapstruct.MappingTarget;
 public interface BlinkRetentionCustomerMapper {
 
     /**
-     * 活动主数据dto转do
+     * 留资客户主数据dto转do
      *
      * @param dto
      * @return

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

@@ -0,0 +1,43 @@
+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.BlinkActivityMemberDO;
+import com.wx.blink.backend.domain.dto.BlinkActivityMemberDTO;
+import com.wx.blink.backend.domain.qry.BlinkActivityMemberQry;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface BlinkActivityMemberRepository extends BaseMapper<BlinkActivityMemberDO> {
+
+    /**
+     * 验证服务成员是否重复
+     *
+     * @param marketer
+     * @param id
+     * @param deletedFlag
+     * @return
+     */
+    BlinkActivityMemberDO queryByMarketer(@Param("marketer") String marketer, @Param("id") Long id, @Param("deletedFlag") Boolean deletedFlag);
+
+
+    /**
+     * 分页查询服务成员列表
+     *
+     * @param qry
+     * @return
+     */
+    List<BlinkActivityMemberDTO> supportsActivityMemberQueryPage(Page<?> page, @Param("query") BlinkActivityMemberQry qry);
+
+    /**
+     * 移除服务成员
+     *
+     * @param id
+     * @return
+     */
+    void supportsActivityMemberDeleteById(@Param("id") Long id);
+
+}

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

@@ -0,0 +1,49 @@
+package com.wx.blink.backend.service;
+
+import com.wx.blink.backend.domain.dto.BlinkActivityMemberDTO;
+import com.wx.blink.backend.domain.qry.BlinkActivityMemberQry;
+import com.wx.blink.base.common.domain.PageResult;
+import com.wx.blink.base.common.domain.ResponseDTO;
+
+public interface IBlinkActivityMemberService {
+
+    /**
+     * 新增成员
+     *
+     * @param dto
+     * @return
+     */
+    ResponseDTO<String> supportsActivityMemberCreate(BlinkActivityMemberDTO dto);
+
+    /**
+     * 获取查询服务成员信息
+     *
+     * @param id
+     * @return
+     */
+    ResponseDTO<BlinkActivityMemberDTO> supportsActivityMemberQuery(Long id);
+
+    /**
+     * 编辑更新服务成员
+     *
+     * @param dto
+     * @return
+     */
+    ResponseDTO<String> supportsActivityMemberUpdate(BlinkActivityMemberDTO dto);
+
+    /**
+     * 分页查询服务成员列表
+     *
+     * @param qry
+     * @return
+     */
+    ResponseDTO<PageResult<BlinkActivityMemberDTO>> supportsActivityMemberQueryPage(BlinkActivityMemberQry qry);
+
+    /**
+     * 移除服务成员
+     *
+     * @param id
+     * @return
+     */
+    ResponseDTO<String> supportsActivityMemberDeleteById(Long id);
+}

+ 2 - 2
bound-link-api/blink-backend/src/main/resources/mapper/BlinklRetentioncustomerRepositoryMapper.xml

@@ -4,7 +4,7 @@
     <!--    查询单个留资客户-->
     <select id="queryByCompanyName" resultType="com.wx.blink.backend.domain.dataobject.BlinkRetentionCustomerDO">
         select *
-        from blink_retention_customer
+        from blink_activity_retention_customer
         where deleted_flag = #{deletedFlag}
         <if test="companyName != null and companyName != ''">
             AND company_name = #{companyName}
@@ -17,7 +17,7 @@
     <!--    分页查询留资客户列表-->
     <select id="supportsRetentionCustomerQueryPage" resultType="com.wx.blink.backend.domain.dto.BlinkRetentionCustomerDTO">
         select *
-        from blink_retention_customer
+        from blink_activity_retention_customer
         where deleted_flag = '0'
         <if test="query.companyName != null and query.companyName !=''">
             AND company_name = #{query.companyName}