Browse Source

子客户查询

master
zhangyuan 3 years ago
parent
commit
b4a74adeaa
  1. 91
      epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/dto/result/CustomerRelationTreeDTO.java
  2. 88
      epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/controller/CustomerRelationController.java
  3. 23
      epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/dao/CustomerRelationDao.java
  4. 13
      epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/CustomerRelationService.java
  5. 28
      epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerRelationServiceImpl.java
  6. 21
      epmet-module/oper-crm/oper-crm-server/src/main/resources/mapper/CustomerRelationDao.xml

91
epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/dto/result/CustomerRelationTreeDTO.java

@ -0,0 +1,91 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 客户关系表(01.14 add)
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-02-03
*/
@Data
public class CustomerRelationTreeDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户id
*/
private String customerId;
/**
* 父级客户id;如果是顶级客户此列=0
*/
private String parentCustomerId;
/**
* 当前客户的所有父级客户id,以英文冒号隔开如果是顶级客户此列=0
*/
private String pids;
/**
* 当前客户类型取值 external:外部客户internal:内部客户
*/
private String customerType;
/**
* 父级客户类型取值 external:外部客户internal:内部客户;如果是顶级客户此列=0
*/
private String parentCustomerType;
/**
* open,closed是否启用
*/
private String status;
/**
* 当前客户级别社区级community
街道:street,
区县级: district,
市级: city
省级:province
*/
private String level;
/**
* 当前客户的地区编码实际就是根组织的area_code
*/
private String areaCode;
/**
* 下一级
*/
private List<CustomerRelationTreeDTO> children;
}

88
epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/controller/CustomerRelationController.java

@ -0,0 +1,88 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.dto.CustomerRelationDTO;
import com.epmet.dto.result.CustomerRelationTreeDTO;
import com.epmet.service.CustomerRelationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 客户关系表(01.14 add)
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-07-06
*/
@RestController
@RequestMapping("customerRelation")
public class CustomerRelationController {
@Autowired
private CustomerRelationService customerRelationService;
@RequestMapping("page")
public Result<PageData<CustomerRelationDTO>> page(@RequestParam Map<String, Object> params) {
PageData<CustomerRelationDTO> page = customerRelationService.page(params);
return new Result<PageData<CustomerRelationDTO>>().ok(page);
}
@RequestMapping(value = "{id}", method = {RequestMethod.POST, RequestMethod.GET})
public Result<CustomerRelationDTO> get(@PathVariable("id") String id) {
CustomerRelationDTO data = customerRelationService.get(id);
return new Result<CustomerRelationDTO>().ok(data);
}
@NoRepeatSubmit
@PostMapping("save")
public Result save(@RequestBody CustomerRelationDTO dto) {
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
customerRelationService.save(dto);
return new Result();
}
@NoRepeatSubmit
@PostMapping("update")
public Result update(@RequestBody CustomerRelationDTO dto) {
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
customerRelationService.update(dto);
return new Result();
}
@RequestMapping(value = "delete", method = {RequestMethod.POST, RequestMethod.DELETE})
public Result delete(@RequestBody String[] ids) {
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
customerRelationService.delete(ids);
return new Result();
}
/**
* 客户树
*
* @param
* @return com.epmet.commons.tools.utils.Result<java.util.List < com.epmet.dto.result.CustomerRelationTreeDTO>>
* @author zhy
* @date 2022/7/6 13:24
*/
@PostMapping("customertree")
public Result<List<CustomerRelationTreeDTO>> customerTree(@LoginUser TokenDto tokenDto) {
return new Result<List<CustomerRelationTreeDTO>>().ok(customerRelationService.getCustomerTree(tokenDto));
}
}

23
epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/dao/CustomerRelationDao.java

@ -19,8 +19,10 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.CustomerRelationDTO;
import com.epmet.dto.result.CustomerRelationTreeDTO;
import com.epmet.entity.CustomerRelationEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -48,4 +50,25 @@ public interface CustomerRelationDao extends BaseDao<CustomerRelationEntity> {
* @return java.util.List<java.lang.String>
*/
List<String> selectAllSubCustomerIds(String customerId);
/**
* 客户树根节点
*
* @param customerId
* @return java.util.List<com.epmet.dto.result.CustomerRelationTreeDTO>
* @author zhy
* @date 2022/7/6 13:32
*/
List<CustomerRelationTreeDTO> selectRootCustomerByCustomerId(@Param("customerId") String customerId);
/**
* 客户树子节点
*
* @param customerPid
* @return java.util.List<com.epmet.dto.result.CustomerRelationTreeDTO>
* @author zhy
* @date 2022/7/6 13:32
*/
List<CustomerRelationTreeDTO> selectSubCustomerByPid(@Param("customerPid") String customerPid);
}

13
epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/CustomerRelationService.java

@ -19,7 +19,9 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.CustomerRelationDTO;
import com.epmet.dto.result.CustomerRelationTreeDTO;
import com.epmet.entity.CustomerRelationEntity;
import java.util.List;
@ -121,4 +123,15 @@ public interface CustomerRelationService extends BaseService<CustomerRelationEnt
* @Date 2021/2/3 21:37
**/
List<String> getAllSubCustomerIds(String customerId);
/**
* 客户树
*
* @param tokenDto
* @return java.util.List<com.epmet.dto.result.CustomerRelationTreeDTO>
* @author zhy
* @date 2022/7/6 13:32
*/
List<CustomerRelationTreeDTO> getCustomerTree(TokenDto tokenDto);
}

28
epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerRelationServiceImpl.java

@ -25,10 +25,12 @@ import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.dao.CustomerRelationDao;
import com.epmet.dto.CustomerDTO;
import com.epmet.dto.CustomerRelationDTO;
import com.epmet.dto.result.CustomerRelationTreeDTO;
import com.epmet.entity.CustomerRelationEntity;
import com.epmet.redis.CustomerRedis;
import com.epmet.service.CustomerRelationService;
@ -170,4 +172,30 @@ public class CustomerRelationServiceImpl extends BaseServiceImpl<CustomerRelatio
return new ArrayList<>();
}
@Override
public List<CustomerRelationTreeDTO> getCustomerTree(TokenDto tokenDto) {
List<CustomerRelationTreeDTO> rootList = baseDao.selectRootCustomerByCustomerId(tokenDto.getCustomerId());
if (!rootList.isEmpty()) {
rootList.forEach(this::getSubCustomer);
}
return rootList;
}
/**
* 处理子客户
*
* @param customer
* @return com.epmet.dto.result.CustomerRelationTreeDTO
* @author zhy
* @date 2022/7/6 13:54
*/
private CustomerRelationTreeDTO getSubCustomer(CustomerRelationTreeDTO customer) {
List<CustomerRelationTreeDTO> children = baseDao.selectSubCustomerByPid(customer.getCustomerId());
customer.setChildren(children);
if (!children.isEmpty()) {
children.forEach(this::getSubCustomer);
}
return customer;
}
}

21
epmet-module/oper-crm/oper-crm-server/src/main/resources/mapper/CustomerRelationDao.xml

@ -23,4 +23,25 @@
cr.DEL_FLAG = '0'
AND cr.PIDS like CONCAT(#{customerId},'%')
</select>
<select id="selectRootCustomerByCustomerId" parameterType="java.lang.String" resultType="com.epmet.dto.result.CustomerRelationTreeDTO">
SELECT
cr.*
FROM
customer_relation cr
WHERE
cr.DEL_FLAG = '0'
AND cr.CUSTOMER_ID = #{customerId}
</select>
<select id="selectSubCustomerByPid" parameterType="java.lang.String" resultType="com.epmet.dto.result.CustomerRelationTreeDTO">
SELECT
cr.*
FROM
customer_relation cr
WHERE
cr.DEL_FLAG = '0'
AND cr.PARENT_CUSTOMER_ID = #{customerPid}
</select>
</mapper>
Loading…
Cancel
Save