Commit 8a825e4f by zhangxingmin

push

parent 5cc763ef
......@@ -5,9 +5,12 @@ import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiCsfClientUserService;
import com.yd.csf.feign.client.csfclientuser.ApiCsfClientUserFeignClient;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserAddRequest;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserEditRequest;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserPageRequest;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserTreeListRequest;
import com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserDetailResponse;
import com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserPageResponse;
import com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserTreeListResponse;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -29,6 +32,16 @@ public class ApiCsfClientUserController implements ApiCsfClientUserFeignClient {
private ApiCsfClientUserService apiCsfClientUserService;
/**
* 查询-左边人员信息树列表(组织架构管理树形列表)
* @param request
* @return
*/
@Override
public Result<ApiCsfClientUserTreeListResponse> treeList(ApiCsfClientUserTreeListRequest request) {
return apiCsfClientUserService.treeList(request);
}
/**
* 分页查询-人员信息
* @param request
* @return
......@@ -58,5 +71,15 @@ public class ApiCsfClientUserController implements ApiCsfClientUserFeignClient {
return apiCsfClientUserService.add(request);
}
/**
* 编辑-人员信息
* @param request
* @return
*/
@Override
public Result edit(ApiCsfClientUserEditRequest request) {
return apiCsfClientUserService.edit(request);
}
}
package com.yd.csf.api.service;
import com.yd.csf.feign.dto.agentmanagerelation.ApiAgentManageUserDTO;
import java.util.List;
public interface ApiAgentManageRelationService {
List<ApiAgentManageUserDTO> queryApiAgentManageUserDTO(String name);
}
......@@ -3,14 +3,21 @@ package com.yd.csf.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserAddRequest;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserEditRequest;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserPageRequest;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserTreeListRequest;
import com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserDetailResponse;
import com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserPageResponse;
import com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserTreeListResponse;
public interface ApiCsfClientUserService {
Result<ApiCsfClientUserTreeListResponse> treeList(ApiCsfClientUserTreeListRequest request);
Result<IPage<ApiCsfClientUserPageResponse>> page(ApiCsfClientUserPageRequest request);
Result<ApiCsfClientUserDetailResponse> detail(String csfClientUserBizId);
Result edit(ApiCsfClientUserEditRequest request);
Result add(ApiCsfClientUserAddRequest request);
}
package com.yd.csf.api.service.impl;
import com.yd.csf.api.service.ApiAgentManageRelationService;
import com.yd.csf.feign.dto.agentmanagerelation.ApiAgentManageUserDTO;
import com.yd.csf.service.service.IAgentManageRelationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
@Slf4j
public class ApiAgentManageRelationServiceImpl implements ApiAgentManageRelationService {
@Resource
private IAgentManageRelationService iAgentManageRelationService;
/**
* 查询用户和管理关系数据
* @param name 姓名
* @return
*/
@Override
public List<ApiAgentManageUserDTO> queryApiAgentManageUserDTO(String name) {
return iAgentManageRelationService.queryApiAgentManageUserList(name);
}
}
......@@ -8,21 +8,29 @@ import com.yd.common.enums.TenantEnum;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.common.utils.TreeUtils;
import com.yd.csf.api.service.*;
import com.yd.csf.feign.dto.agentmanagerelation.ApiAgentManageUserDTO;
import com.yd.csf.feign.dto.clientrole.ApiClientRoleDTO;
import com.yd.csf.feign.dto.csfclientuser.ApiCsfClientUserDTO;
import com.yd.csf.feign.dto.firstlevel.ApiFirstLevelDTO;
import com.yd.csf.feign.dto.org.ApiCsfClientUserOrgDTO;
import com.yd.csf.feign.dto.referrer.ApiReferrerDTO;
import com.yd.csf.feign.dto.rule.ApiRuleDTO;
import com.yd.csf.feign.dto.second.ApiSecondLevelDTO;
import com.yd.csf.feign.dto.tutor.ApiTutorDTO;
import com.yd.csf.feign.dto.userbank.ApiCsfClientUserBankDTO;
import com.yd.csf.feign.enums.ClientRoleEnum;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserAddRequest;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserEditRequest;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserPageRequest;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserTreeListRequest;
import com.yd.csf.feign.request.fyc.ApiInitAgentAccumulatedFycRequest;
import com.yd.csf.feign.request.rulebind.ApiCommissionRuleBindingRequest;
import com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserDetailResponse;
import com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserPageResponse;
import com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserTreeListResponse;
import com.yd.csf.feign.response.csfclientuser.ApiManageTreeResponse;
import com.yd.csf.service.dto.query.QueryCsfClientUserDTO;
import com.yd.csf.service.model.*;
import com.yd.csf.service.service.*;
......@@ -35,6 +43,7 @@ import com.yd.user.feign.request.clientuser.ApiClientUserConditionListRequest;
import com.yd.user.feign.request.clientuser.ApiClientUserSaveRequest;
import com.yd.user.feign.response.clientuser.ApiClientUserDetailResponse;
import com.yd.user.feign.response.clientuser.ApiClientUserSaveResponse;
import com.yd.user.feign.response.sysmenu.ApiSysMenuTreeListResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -71,6 +80,9 @@ public class ApiCsfClientUserServiceImpl implements ApiCsfClientUserService {
private ApiAgentReferralRelationService apiAgentReferralRelationService;
@Resource
private ApiAgentManageRelationService apiAgentManageRelationService;
@Resource
private IClientRoleService iClientRoleService;
@Resource
......@@ -86,6 +98,12 @@ public class ApiCsfClientUserServiceImpl implements ApiCsfClientUserService {
private IAgentReferralRelationService iAgentReferralRelationService;
@Resource
private IAgentManageRelationService iAgentManageRelationService;
@Resource
private ITeamService iTeamService;
@Resource
private ApiClientUserFeignClient apiClientUserFeignClient;
@Resource
......@@ -95,6 +113,68 @@ public class ApiCsfClientUserServiceImpl implements ApiCsfClientUserService {
private ApiUserSignExpandFeignClient apiUserSignExpandFeignClient;
/**
* 查询-左边人员信息树列表(组织架构管理树形列表)
* @param request
* @return
*/
@Override
public Result<ApiCsfClientUserTreeListResponse> treeList(ApiCsfClientUserTreeListRequest request) {
//姓名模糊搜索管理和人员关系数据列表
List<ApiAgentManageUserDTO> userDTOList = apiAgentManageRelationService.queryApiAgentManageUserDTO(request.getName());
if (CollectionUtils.isEmpty(userDTOList)) {
return Result.success();
}
//userDTOList转化成List<ApiManageTreeResponse> apiManageTreeResponseList
List<ApiManageTreeResponse> apiManageTreeResponseList = userDTOList
.stream()
.map(dto -> {
ApiManageTreeResponse response = new ApiManageTreeResponse();
BeanUtils.copyProperties(dto,response);
return response;
}).collect(Collectors.toList());
//构建树列表
List<ApiManageTreeResponse> treeList = TreeUtils.buildTree(
apiManageTreeResponseList,
ApiManageTreeResponse::getAgentId, // 获取节点ID
ApiManageTreeResponse::getPid, // 获取父节点ID
(parent, children) -> parent.setChildren(children), // 设置子节点
"0" // 根节点的父ID值
);
// 填充每个节点的 childrenAgentIdList(所有后代ID)
fillChildrenAgentIds(treeList);
ApiCsfClientUserTreeListResponse response = new ApiCsfClientUserTreeListResponse();
response.setApiManageTreeResponseList(treeList);
return Result.success(response);
}
/**
* 递归收集子级人员ID
* @param treeList
*/
private void fillChildrenAgentIds(List<ApiManageTreeResponse> treeList) {
for (ApiManageTreeResponse node : treeList) {
List<String> allChildIds = new ArrayList<>();
collectAllChildrenIds(node, allChildIds);
node.setChildrenAgentIdList(allChildIds);
// 递归处理子节点
if (node.getChildren() != null && !node.getChildren().isEmpty()) {
fillChildrenAgentIds(node.getChildren());
}
}
}
private void collectAllChildrenIds(ApiManageTreeResponse node, List<String> ids) {
if (node.getChildren() != null) {
for (ApiManageTreeResponse child : node.getChildren()) {
ids.add(child.getAgentId());
collectAllChildrenIds(child, ids); // 继续收集孙节点
}
}
}
/**
* 分页查询-人员信息
* @param request
* @return
......@@ -287,6 +367,89 @@ public class ApiCsfClientUserServiceImpl implements ApiCsfClientUserService {
}
/**
* 编辑-人员信息
* @param request
* @return
*/
@Override
public Result edit(ApiCsfClientUserEditRequest request) {
ApiCsfClientUserDTO userDTO = request.getUserDTO();
if (userDTO == null) {
throw new BusinessException("人员基本信息入参对象不能为空");
}
//查询人员信息是否存在
CsfClientUser csfClientUser = csfClientUserService.lambdaQuery()
.eq(CsfClientUser::getCsfClientUserBizId,request.getCsfClientUserBizId())
.last(" limit 1 ")
.one();
if (csfClientUser == null) {
throw new BusinessException("人员信息不存在");
}
BeanUtils.copyProperties(userDTO,csfClientUser);
//校验入参的所属团队和一级管理人所属团队是否匹配
checkTeam(request.getOrgDTO(),csfClientUser.getTeamBizId());
//更新绑定的角色ID列表
//绑定的客户端角色表表唯一业务ID列表(多个分号分隔)
List<String> roleBizIdList = userDTO.getRoleDTOList().stream()
.filter(d -> StringUtils.isNotBlank(d.getRoleBizId()))
.map(ApiClientRoleDTO::getRoleBizId)
.collect(Collectors.toList());
csfClientUser.setRoleBizIds(CollectionUtils.isNotEmpty(roleBizIdList) ? String.join(";",roleBizIdList) : "");
//更新绑定的基本法ID列表
//绑定的基本法配置表唯一业务ID列表(多个分号分隔)
List<String> ruleBizIdList = userDTO.getRuleDTOList().stream()
.filter(d -> StringUtils.isNotBlank(d.getRuleBizId()))
.map(ApiRuleDTO::getRuleBizId)
.collect(Collectors.toList());
csfClientUser.setRuleBizIds(CollectionUtils.isNotEmpty(ruleBizIdList) ? String.join(";",ruleBizIdList) : "");
csfClientUserService.saveOrUpdate(csfClientUser);
//根据绑定的基本法配置,新增基本法绑定表记录
ApiCommissionRuleBindingRequest bindingRequest = new ApiCommissionRuleBindingRequest();
bindingRequest.setTargetId(csfClientUser.getClientUserBizId());
bindingRequest.setTargetName(csfClientUser.getName());
bindingRequest.setTargetType("AGENT");
bindingRequest.setStatus(1);
bindingRequest.setRuleBizIdList(roleBizIdList);
apiCommissionRuleBindingService.saveCommissionRuleBinding(bindingRequest);
//根据选择的角色,对应更新相关的表(转介人表、签单员表、合伙人表等)
if (roleBizIdList != null && roleBizIdList.contains(ClientRoleEnum.ZJR.getItemValue())) {
// 处理转介人逻辑 => 更新或新增转介人信息 => 远程调用保险基础数据服务保存转介人表信息
ApiUserSaleExpandSaveRequest saleExpandSaveRequest = new ApiUserSaleExpandSaveRequest();
BeanUtils.copyProperties(csfClientUser,saleExpandSaveRequest);
saleExpandSaveRequest.setRealName(csfClientUser.getName());
saleExpandSaveRequest.setClientUserBizId(csfClientUser.getClientUserBizId());
try {
apiUserSaleExpandFeignClient.save(saleExpandSaveRequest);
}catch (Exception e){
log.info("处理转介人逻辑 => 更新或新增转介人信息 => 远程调用保险基础数据服务保存转介人表信息失败:{}",e.getMessage());
throw new BusinessException(e.getMessage());
}
}
if (roleBizIdList != null && roleBizIdList.contains(ClientRoleEnum.QDY.getItemValue())) {
// 处理签单员逻辑 => 更新或新增签单员信息 => 远程调用保险基础数据服务保存签单员表信息
ApiUserSignExpandSaveRequest signExpandSaveRequest = new ApiUserSignExpandSaveRequest();
BeanUtils.copyProperties(csfClientUser,signExpandSaveRequest);
signExpandSaveRequest.setRealName(csfClientUser.getName());
signExpandSaveRequest.setClientUserBizId(csfClientUser.getClientUserBizId());
try {
apiUserSignExpandFeignClient.save(signExpandSaveRequest);
}catch (Exception e){
log.info("处理转介人逻辑 => 更新或新增转介人信息 => 远程调用保险基础数据服务保存签单员表信息失败:{}",e.getMessage());
throw new BusinessException(e.getMessage());
}
}
if (roleBizIdList != null && roleBizIdList.contains(ClientRoleEnum.HHR.getItemValue())) {
// 处理合伙人逻辑 TODO
}
return Result.success();
}
/**
* 新增-人员信息
* @param request
* @return
......@@ -297,6 +460,9 @@ public class ApiCsfClientUserServiceImpl implements ApiCsfClientUserService {
if (request.getUserDTO() == null) {
throw new BusinessException("人员基本信息不能为空");
}
if (request.getOrgDTO() == null) {
request.setOrgDTO(new ApiCsfClientUserOrgDTO());
}
ApiCsfClientUserDTO userDTO = request.getUserDTO();
//校验手机号的唯一性
List<CsfClientUser> csfClientUserList = csfClientUserService.queryList(QueryCsfClientUserDTO.builder()
......@@ -325,6 +491,10 @@ public class ApiCsfClientUserServiceImpl implements ApiCsfClientUserService {
//新增人员信息入库
CsfClientUser csfClientUser = new CsfClientUser();
BeanUtils.copyProperties(userDTO,csfClientUser);
//校验入参的所属团队和一级管理人所属团队是否匹配
checkTeam(request.getOrgDTO(),csfClientUser.getTeamBizId());
if (response != null) {
//中心用户记录不为空,获取中心用户ID保存
csfClientUser.setClientUserBizId(response.getClientUserBizId());
......@@ -368,6 +538,34 @@ public class ApiCsfClientUserServiceImpl implements ApiCsfClientUserService {
.map(ApiRuleDTO::getRuleBizId)
.collect(Collectors.toList());
csfClientUser.setRuleBizIds(CollectionUtils.isNotEmpty(ruleBizIdList) ? String.join(";",ruleBizIdList) : "");
//当一级和二级都没有选择,说明是顶级根节点。那么所属团队不是选择,而是录入的团队名称。此时该人员是团队负责人,团队名称就是录入的名称。并且同步一份数据到团队表中
List<ApiFirstLevelDTO> firstLevelDTOList = request.getOrgDTO().getFirstLevelDTOList();
List<ApiSecondLevelDTO> secondLevelDTOList = request.getOrgDTO().getSecondLevelDTOList();
if (CollectionUtils.isEmpty(firstLevelDTOList) && CollectionUtils.isEmpty(secondLevelDTOList)) {
//保存团队信息
Team team = iTeamService.lambdaQuery()
.eq(Team::getTeamLeaderId,csfClientUser.getClientUserBizId())
.last(" limit 1 ").one();
if (team != null) {
//更新团队名称即可
team.setTeamName(userDTO.getTeamName());
iTeamService.saveOrUpdate(team);
}else {
//新增团队信息
Team team1 = new Team();
team1.setTeamName(userDTO.getTeamName());
team1.setPid("0");
team1.setTeamBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_TEAM.getCode()));
//TODO 团队编码
// team1.setTeamCode();
//团队长
team1.setTeamLeaderId(csfClientUser.getClientUserBizId());
team1.setTeamLevel(1);
iTeamService.saveOrUpdate(team1);
csfClientUser.setTeamBizId(team1.getTeamBizId());
}
}
csfClientUserService.saveOrUpdate(csfClientUser);
//根据初始化职级,fyc表(业务员累计积分表 - 存储业务员的累计FYC积分和当前等级信息)新增初始化记录
......@@ -438,8 +636,119 @@ public class ApiCsfClientUserServiceImpl implements ApiCsfClientUserService {
//处理推荐关系
apiAgentReferralRelationService.saveAgentReferralRelationList(orgDTO.getReferrerDTOList(),csfClientUser);
//处理一级和二级关系 TODO
//处理一级和二级关系
//判断一级列表和二级列表是否都为空,如果都为空,说明当前人员作为根节点(顶级)。
if (CollectionUtils.isEmpty(orgDTO.getFirstLevelDTOList())
&& CollectionUtils.isEmpty(orgDTO.getSecondLevelDTOList())) {
//根节点
AgentManageRelation agentManageRelation = new AgentManageRelation();
agentManageRelation.setManageBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_AGENT_MANAGE_RELATION.getCode()));
agentManageRelation.setAgentId(csfClientUser.getClientUserBizId());
agentManageRelation.setIsActive(1);
//一级管理人ID和二级管理人ID、父级人员ID为空
//新增人员管理关系数据
iAgentManageRelationService.saveOrUpdate(agentManageRelation);
}else if (CollectionUtils.isNotEmpty(orgDTO.getFirstLevelDTOList())
&& CollectionUtils.isEmpty(orgDTO.getSecondLevelDTOList())) {
//一级不为空并且二级为空
//校验一级管理人是否有上级,如果有,则提示校验:必须传入一级管理人的上级(二级管理人)
List<ApiFirstLevelDTO> firstLevelDTOList = orgDTO.getFirstLevelDTOList();
ApiFirstLevelDTO firstLevelDTO = firstLevelDTOList.get(0);
//查询一级管理关系信息
AgentManageRelation agentManageRelation = iAgentManageRelationService.lambdaQuery()
.eq(AgentManageRelation::getAgentId,firstLevelDTO.getClientUserBizId())
.last(" limit 1 ")
.one();
if (agentManageRelation == null) {
throw new BusinessException("一级管理关系信息不存在");
}
if (StringUtils.isNotBlank(agentManageRelation.getPid())) {
throw new BusinessException("一级管理人存在上级管理人,所以二级管理人必须传值");
}
//校验一级人员是否离职
if (firstLevelDTO.getEmploymentStatus().equals("1")) {
throw new BusinessException("一级管理人已离职,请重新选择一级管理人");
}
//一级管理没有上级=>当前二级管理人就是当前一级管理人
//新增当前人员关系数据
AgentManageRelation manageRelation = new AgentManageRelation();
manageRelation.setManageBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_AGENT_MANAGE_RELATION.getCode()));
manageRelation.setAgentId(csfClientUser.getClientUserBizId());
manageRelation.setManageId(agentManageRelation.getAgentId());
//二级管理人ID => 根据需求,如果一级管理人没有上级,那么二级就是默认是一级管理人作为二级
manageRelation.setSManageId(agentManageRelation.getSManageId());
manageRelation.setPid(agentManageRelation.getAgentId());
manageRelation.setIsActive(1);
iAgentManageRelationService.saveOrUpdate(manageRelation);
}else if (CollectionUtils.isNotEmpty(orgDTO.getFirstLevelDTOList())
&& CollectionUtils.isNotEmpty(orgDTO.getSecondLevelDTOList())) {
//一二级都不为空
List<ApiFirstLevelDTO> firstLevelDTOList = orgDTO.getFirstLevelDTOList();
ApiFirstLevelDTO firstLevelDTO = firstLevelDTOList.get(0);
//查询一级管理关系信息
AgentManageRelation agentManageRelation = iAgentManageRelationService.lambdaQuery()
.eq(AgentManageRelation::getAgentId,firstLevelDTO.getClientUserBizId())
.last(" limit 1 ")
.one();
if (agentManageRelation == null) {
throw new BusinessException("一级管理关系信息不存在");
}
List<ApiSecondLevelDTO> secondLevelDTOList = orgDTO.getSecondLevelDTOList();
ApiSecondLevelDTO secondLevelDTO = secondLevelDTOList.get(0);
//查询二级管理关系信息
AgentManageRelation sAgentManageRelation = iAgentManageRelationService.lambdaQuery()
.eq(AgentManageRelation::getAgentId,secondLevelDTO.getClientUserBizId())
.last(" limit 1 ")
.one();
if (sAgentManageRelation == null) {
throw new BusinessException("二级管理关系信息不存在");
}
//校验入参的二级管理人必须和一级管理人的上级是同一个人
if (!secondLevelDTO.getClientUserBizId().equals(agentManageRelation.getPid())) {
//不是同一个人
throw new BusinessException("入参的二级管理人必须和一级管理人的上级是同一个人");
}
//校验一级管理人是否离职
if (firstLevelDTO.getEmploymentStatus().equals("1")) {
throw new BusinessException("一级管理人已离职,请重新选择一级管理人");
}
//校验二级管理人是否离职
if (secondLevelDTO.getEmploymentStatus().equals("1")) {
throw new BusinessException("二级管理人已离职,请重新选择一级管理人或者一级管理人做组织迁移");
}
//新增当前人员关系数据
AgentManageRelation manageRelation = new AgentManageRelation();
manageRelation.setManageBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_AGENT_MANAGE_RELATION.getCode()));
manageRelation.setAgentId(csfClientUser.getClientUserBizId());
//一级管理人ID
manageRelation.setManageId(firstLevelDTO.getClientUserBizId());
//二级管理人ID
manageRelation.setSManageId(secondLevelDTO.getClientUserBizId());
//父级ID = 一级管理人ID
manageRelation.setPid(firstLevelDTO.getClientUserBizId());
manageRelation.setIsActive(1);
iAgentManageRelationService.saveOrUpdate(manageRelation);
}
return Result.success();
}
/**
* 校验入参的所属团队和一级管理人所属团队是否匹配
* @param orgDTO
* @param teamBizId
*/
public void checkTeam(ApiCsfClientUserOrgDTO orgDTO,String teamBizId) {
//必须是选择了一级管理,才作为校验基础
List<ApiFirstLevelDTO> firstLevelDTOList = orgDTO.getFirstLevelDTOList();
if (CollectionUtils.isEmpty(firstLevelDTOList)) {
return;
}
ApiFirstLevelDTO apiFirstLevelDTO = firstLevelDTOList.get(0);
if (!apiFirstLevelDTO.getTeamBizId().equals(teamBizId)) {
//入参的所属团队和一级管理人所属团队不匹配,提示。
throw new BusinessException("所属团队和一级管理人所属团队必须一致,请重新选择");
}
}
}
......@@ -3,9 +3,12 @@ package com.yd.csf.feign.client.csfclientuser;
import com.yd.common.result.Result;
import com.yd.csf.feign.fallback.csfclientuser.ApiCsfClientUserFeignFallbackFactory;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserAddRequest;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserEditRequest;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserPageRequest;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserTreeListRequest;
import com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserDetailResponse;
import com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserPageResponse;
import com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserTreeListResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -22,6 +25,14 @@ import javax.validation.constraints.NotBlank;
public interface ApiCsfClientUserFeignClient {
/**
* 查询-左边人员信息树列表(组织架构管理树形列表)
* @param request
* @return
*/
@PostMapping("/tree/list")
Result<ApiCsfClientUserTreeListResponse> treeList(@Validated @RequestBody ApiCsfClientUserTreeListRequest request);
/**
* 分页查询-人员信息
* @param request
* @return
......@@ -44,4 +55,12 @@ public interface ApiCsfClientUserFeignClient {
*/
@PostMapping("/add")
Result add(@Validated @RequestBody ApiCsfClientUserAddRequest request);
/**
* 编辑-人员信息
* @param request
* @return
*/
@PostMapping("/edit")
Result edit(@Validated @RequestBody ApiCsfClientUserEditRequest request);
}
package com.yd.csf.feign.dto.agentmanagerelation;
import lombok.Data;
@Data
public class ApiAgentManageUserDTO {
/**
* 被管理人姓名
*/
private String name;
/**
* 被管理人ID(中台客户端中心用户表唯一业务ID)
*/
private String agentId;
/**
* 父级管理人ID(中台客户端中心用户表唯一业务ID)
*/
private String pid;
}
......@@ -60,6 +60,7 @@ public class ApiCsfClientUserDTO {
/**
* 所属团队名称
*/
@NotBlank(message = "所属团队名称不能为空")
private String teamName;
/**
......
package com.yd.csf.feign.dto.firstlevel;
import lombok.Data;
@Data
public class ApiFirstLevelDTO {
/**
* 中台客户端用户表唯一业务ID(客户端用户中心表)
*/
private String clientUserBizId;
/**
* 姓名
*/
private String name;
/**
* 性别(0:未知 1:男 2:女)
*/
private String gender;
/**
* 等级编码
*/
private String gradeCode;
/**
* 等级名称
*/
private String gradeName;
/**
* 手机号
*/
private String phone;
/**
* 邮箱
*/
private String email;
/**
* 内部编号
*/
private String internalNumber;
/**
* 团队表唯一业务ID
*/
private String teamBizId;
/**
* 所属团队名称
*/
private String teamName;
/**
* 所属公司名称(中台部门名称)
*/
private String deptName;
/**
* 在职状态: 0-在职, 1-离职
*/
private String employmentStatus;
}
package com.yd.csf.feign.dto.org;
import com.yd.csf.feign.dto.firstlevel.ApiFirstLevelDTO;
import com.yd.csf.feign.dto.referrer.ApiReferrerDTO;
import com.yd.csf.feign.dto.second.ApiSecondLevelDTO;
import com.yd.csf.feign.dto.tutor.ApiTutorDTO;
import lombok.Data;
import java.util.List;
......@@ -8,7 +10,15 @@ import java.util.List;
@Data
public class ApiCsfClientUserOrgDTO {
//TODO 一级和二级关系待定
/**
* 一级管理用户列表
*/
private List<ApiFirstLevelDTO> firstLevelDTOList;
/**
* 二级管理用户列表
*/
private List<ApiSecondLevelDTO> secondLevelDTOList;
/**
* 辅导人的客户端用户列表
......
package com.yd.csf.feign.dto.second;
import lombok.Data;
@Data
public class ApiSecondLevelDTO {
/**
* 中台客户端用户表唯一业务ID(客户端用户中心表)
*/
private String clientUserBizId;
/**
* 姓名
*/
private String name;
/**
* 性别(0:未知 1:男 2:女)
*/
private String gender;
/**
* 等级编码
*/
private String gradeCode;
/**
* 等级名称
*/
private String gradeName;
/**
* 手机号
*/
private String phone;
/**
* 邮箱
*/
private String email;
/**
* 内部编号
*/
private String internalNumber;
/**
* 团队表唯一业务ID
*/
private String teamBizId;
/**
* 所属团队名称
*/
private String teamName;
/**
* 所属公司名称(中台部门名称)
*/
private String deptName;
/**
* 在职状态: 0-在职, 1-离职
*/
private String employmentStatus;
}
......@@ -3,11 +3,17 @@ package com.yd.csf.feign.fallback.csfclientuser;
import com.yd.common.result.Result;
import com.yd.csf.feign.client.csfclientuser.ApiCsfClientUserFeignClient;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserAddRequest;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserEditRequest;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserPageRequest;
import com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserTreeListRequest;
import com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserDetailResponse;
import com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserTreeListResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import javax.validation.constraints.NotBlank;
/**
* 香港保险服务-CSF客户端用户信息Feign降级处理
*/
......@@ -18,14 +24,29 @@ public class ApiCsfClientUserFeignFallbackFactory implements FallbackFactory<Api
public ApiCsfClientUserFeignClient create(Throwable cause) {
return new ApiCsfClientUserFeignClient() {
@Override
public Result<ApiCsfClientUserTreeListResponse> treeList(ApiCsfClientUserTreeListRequest request) {
return null;
}
@Override
public Result page(ApiCsfClientUserPageRequest request) {
return null;
}
@Override
public Result<ApiCsfClientUserDetailResponse> detail(String csfClientUserBizId) {
return null;
}
@Override
public Result add(ApiCsfClientUserAddRequest request) {
return null;
}
@Override
public Result edit(ApiCsfClientUserEditRequest request) {
return null;
}
};
}
}
package com.yd.csf.feign.request.csfclientuser;
import com.yd.csf.feign.dto.csfclientuser.ApiCsfClientUserDTO;
import com.yd.csf.feign.dto.org.ApiCsfClientUserOrgDTO;
import com.yd.csf.feign.dto.userbank.ApiCsfClientUserBankDTO;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.util.List;
@Data
public class ApiCsfClientUserEditRequest {
/**
* CSF客户端用户表唯一业务ID
*/
@NotBlank(message = "CSF客户端用户表唯一业务ID不能为空")
private String csfClientUserBizId;
/**
* 人员基本信息
*/
@Valid
private ApiCsfClientUserDTO userDTO;
/**
* 人员银行信息列表
*/
private List<ApiCsfClientUserBankDTO> bankDTOList;
/**
* 组织信息
*/
private ApiCsfClientUserOrgDTO orgDTO;
}
......@@ -2,6 +2,8 @@ package com.yd.csf.feign.request.csfclientuser;
import com.yd.common.dto.PageDto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.List;
@Data
......@@ -51,4 +53,9 @@ public class ApiCsfClientUserPageRequest extends PageDto {
* 基本法配置表唯一业务ID列表(可多选搜索筛选)
*/
private List<String> ruleBizIdList;
/**
* 当前用户ID和子级用户ID列表(对应agentId)
*/
private List<String> thisAndChildrenAgentIdList;
}
package com.yd.csf.feign.request.csfclientuser;
import lombok.Data;
@Data
public class ApiCsfClientUserTreeListRequest {
/**
* 姓名
*/
private String name;
}
......@@ -7,6 +7,16 @@ import java.util.List;
public class ApiCsfClientUserPageResponse {
/**
* CSF客户端用户表唯一业务ID
*/
private String csfClientUserBizId;
/**
* 中台客户端用户表唯一业务ID(客户端用户中心表)
*/
private String clientUserBizId;
/**
* 姓名
*/
private String name;
......
package com.yd.csf.feign.response.csfclientuser;
import lombok.Data;
import java.util.List;
@Data
public class ApiCsfClientUserTreeListResponse {
/**
* 人员树列表(管理树)
*/
private List<ApiManageTreeResponse> apiManageTreeResponseList;
}
package com.yd.csf.feign.response.csfclientuser;
import lombok.Data;
import java.util.List;
/**
* 组织管理架构对象
*/
@Data
public class ApiManageTreeResponse {
/**
* 被管理人姓名
*/
private String name;
/**
* 被管理人ID(中台客户端中心用户表唯一业务ID)
*/
private String agentId;
/**
* 父级管理人ID(中台客户端中心用户表唯一业务ID)
*/
private String pid;
/**
* 当前所有子级人员ID列表
*/
private List<String> childrenAgentIdList;
/**
* 子级管理人员列表
*/
private List<ApiManageTreeResponse> children;
}
package com.yd.csf.service.dao;
import com.yd.csf.feign.dto.agentmanagerelation.ApiAgentManageUserDTO;
import com.yd.csf.service.model.AgentManageRelation;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
......@@ -13,4 +17,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface AgentManageRelationMapper extends BaseMapper<AgentManageRelation> {
List<ApiAgentManageUserDTO> queryApiAgentManageUserList(@Param("name") String name);
}
......@@ -35,18 +35,30 @@ public class AgentManageRelation implements Serializable {
private String manageBizId;
/**
* 被管理人ID(客户端用户表唯一业务ID)
* 父级管理人ID
*/
@TableField("pid")
private String pid;
/**
* 被管理人ID(中台客户端中心用户唯一业务ID)
*/
@TableField("agent_id")
private String agentId;
/**
* 管理人ID(客户端用户表唯一业务ID,是被管理人的一级管理人
* 一级管理人ID(中台客户端中心用户唯一业务ID
*/
@TableField("manage_id")
private String manageId;
/**
* 二级管理人ID(中台客户端中心用户唯一业务ID)
*/
@TableField("s_manage_id")
private String sManageId;
/**
* 管理路径(用于快速查询关系链)
*/
@TableField("manage_path")
......
package com.yd.csf.service.service;
import com.yd.csf.feign.dto.agentmanagerelation.ApiAgentManageUserDTO;
import com.yd.csf.service.model.AgentManageRelation;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 管理关系表((团队的形成来自这张表,谁在最高级就是团长)) 服务类
......@@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IAgentManageRelationService extends IService<AgentManageRelation> {
List<ApiAgentManageUserDTO> queryApiAgentManageUserList(String name);
}
package com.yd.csf.service.service.impl;
import com.yd.csf.feign.dto.agentmanagerelation.ApiAgentManageUserDTO;
import com.yd.csf.service.model.AgentManageRelation;
import com.yd.csf.service.dao.AgentManageRelationMapper;
import com.yd.csf.service.service.IAgentManageRelationService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 管理关系表((团队的形成来自这张表,谁在最高级就是团长)) 服务实现类
......@@ -17,4 +20,8 @@ import org.springframework.stereotype.Service;
@Service
public class AgentManageRelationServiceImpl extends ServiceImpl<AgentManageRelationMapper, AgentManageRelation> implements IAgentManageRelationService {
@Override
public List<ApiAgentManageUserDTO> queryApiAgentManageUserList(String name) {
return this.baseMapper.queryApiAgentManageUserList(name);
}
}
......@@ -2,4 +2,19 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.csf.service.dao.AgentManageRelationMapper">
<select id="queryApiAgentManageUserList"
resultType="com.yd.csf.feign.dto.agentmanagerelation.ApiAgentManageUserDTO">
select
ccu.name,
amr.agent_id,
amr.pid
from agent_manage_relation amr
left join csf_client_user ccu on amr.agent_id = ccu.client_user_biz_id and ccu.is_deleted = 0
<where>
<if test="name != null and name != ''">
and ccu.name like concat('%', #{name}, '%')
</if>
and amr.is_deleted = 0
</where>
</select>
</mapper>
......@@ -4,6 +4,8 @@
<select id="page" resultType="com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserPageResponse">
SELECT
u.csf_client_user_biz_id,
u.client_user_biz_id,
u.name,
u.gender,
u.current_grade_code AS currentGradeCode,
......@@ -72,6 +74,12 @@
</foreach>
)
</if>
<if test="request.thisAndChildrenAgentIdList != null and request.thisAndChildrenAgentIdList.size > 0">
AND u.client_user_biz_id IN
<foreach collection="request.thisAndChildrenAgentIdList" item="agentId" open="(" separator="," close=")">
#{agentId}
</foreach>
</if>
ORDER BY u.id DESC
</select>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment