package com.ydtech.modules.admin.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ydtech.exception.SystemException; import com.ydtech.modules.admin.dao.SysDeptInternalAgentMapper; import com.ydtech.modules.admin.dao.SysUserLinkAreaMapper; import com.ydtech.modules.admin.dao.SysUserLinkDeptInternalAgentMapper; import com.ydtech.modules.admin.model.dto.SysUserDto; import com.ydtech.modules.admin.model.dto.SysUserLinkDeptInternalAgentDto; import com.ydtech.modules.admin.model.dto.SysUserLinkPtlAgreementDto; import com.ydtech.modules.admin.model.po.SysDeptInternalAgent; import com.ydtech.modules.admin.model.po.SysUserLinkDeptInternalAgent; import com.ydtech.modules.admin.model.vo.SysUserBaseVO; import com.ydtech.modules.admin.model.vo.SysUserLinkDeptInternalAgentAddVo; import com.ydtech.modules.admin.model.vo.SysUserLinkDeptInternalAgentQueryVo; import com.ydtech.modules.admin.service.SysUserLinkDeptInternalAgentService; import com.ydtech.modules.admin.service.SysUserService; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.order.entity.BasePageResult; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * @author Administrator * @description 针对表【sys_user_link_dept_internal_agent(后线人员配置内部机构表)】的数据库操作Service实现 * @createDate 2024-06-26 17:28:11 */ @Service public class SysUserLinkDeptInternalAgentServiceImpl extends ServiceImpl implements SysUserLinkDeptInternalAgentService { @Autowired private SysUserLinkDeptInternalAgentMapper sysUserLinkDeptInternalAgentMapper; @Autowired private SysDeptInternalAgentMapper sysDeptInternalAgentMapper; @Autowired private SysUserService sysUserService; @Autowired private SysUserLinkAreaMapper sysUserLinkAreaMapper; /** * @version * @author: hxl * @Date: 2024/6/26 18:54 * @Description: 查询内部机构树 */ @Override public List queryOrgTree() { List sysDeptAll =sysDeptInternalAgentMapper.queryDeptList(null,null); List resultList =new ArrayList(); List sysDeptTop = sysDeptAll.stream().filter(item ->"0".equals(item.getComlevel())).collect(Collectors.toList()); for (SysDeptInternalAgent dept : sysDeptTop) { resultList.add(buildDeptTree(dept,sysDeptAll)); } return resultList; } /** * @version * @author: hxl * @Date: 2024/6/27 8:42 * @Description: 获取顶级机构的数据 */ private SysDeptInternalAgent buildDeptTree(SysDeptInternalAgent dept, List deptList){ for (SysDeptInternalAgent d : deptList) { if (dept.getId().equals(d.getParentId())) { if (null == dept.getChildren()) { dept.setChildren(new ArrayList()); } //递归调用 dept.getChildren().add(buildDeptTree(d, deptList)); } } return dept; } /** * @version * @author: hxl * @Date: 2024/6/26 18:54 * @Description: 添加或修改 */ @Override public void addOrUpdate(SysUserLinkDeptInternalAgentAddVo sysUserLinkDeptInternalAgentAddVo) { String deptId = sysUserLinkDeptInternalAgentAddVo.getDeptId(); List userIds = sysUserLinkDeptInternalAgentAddVo.getUserIds(); //删除数据重新添加 sysUserLinkDeptInternalAgentMapper.deleteByDeptId(deptId); List addList= new ArrayList<>(); //重新添加 if(userIds!=null && userIds.size()>0){ for (String userId : userIds) { SysUserLinkDeptInternalAgent add=new SysUserLinkDeptInternalAgent(userId,deptId,new Date(), new BaseController().getUser().getId(),new Date(),new BaseController().getUser().getId()); addList.add(add); } } this.saveBatch(addList); } /** * @version * @author: hxl * @Date: 2024/6/26 18:54 * @Description: 批量删除 */ @Override public void deleteByIds(List ids) { sysUserLinkDeptInternalAgentMapper.deleteBatchIds(ids); } /** * @version * @author: hxl * @Date: 2024/6/26 18:55 * @Description: 分页 */ @Override public BasePageResult queryPage(SysUserLinkDeptInternalAgentQueryVo sysUserLinkDeptInternalAgentQueryVo) { Page page = new Page<>(sysUserLinkDeptInternalAgentQueryVo.getPageNum(), sysUserLinkDeptInternalAgentQueryVo.getPageSize()); Page pageResult = sysUserLinkDeptInternalAgentMapper.queryPage(page, sysUserLinkDeptInternalAgentQueryVo); return new BasePageResult<>(sysUserLinkDeptInternalAgentQueryVo.getPageNum(), page.getSize(), pageResult.getTotal(), page.getPages(), pageResult.getRecords()); } /** * 根据userid获取对象 * @param userId * @return */ @Override public SysUserLinkDeptInternalAgent getByUserId(String userId) { LambdaQueryWrapper sysUserLinkDeptInternalAgentLambdaQueryWrapper = new LambdaQueryWrapper<>(); sysUserLinkDeptInternalAgentLambdaQueryWrapper.eq(SysUserLinkDeptInternalAgent::getUserId,userId); SysUserLinkDeptInternalAgent sysUserLinkDeptInternalAgent = sysUserLinkDeptInternalAgentMapper.selectOne(sysUserLinkDeptInternalAgentLambdaQueryWrapper); return sysUserLinkDeptInternalAgent; } @Override public BasePageResult findUserListByPage(SysUserDto sysUserDto) { if(StringUtils.isBlank(sysUserDto.getDeptNBId())){ throw new SystemException("deptNBId内部机构不能为空"); } Page page = new Page<>(sysUserDto.getPageNum(), sysUserDto.getPageSize()); Page userPageResult = sysUserLinkDeptInternalAgentMapper.findUserListByDeptPage(page, sysUserDto); return new BasePageResult<>(sysUserDto.getPageNum(), page.getSize(), userPageResult.getTotal(), page.getPages(), userPageResult.getRecords()); } /** * @version * @author: hxl * @Date: 2024/7/3 9:25 * @Description: 根据内部机构id查询管理的用户 */ public List getUserIdListByDeptId(String deptId) { SysDeptInternalAgent sysDeptInternalAgent = sysDeptInternalAgentMapper.selectById(deptId); if(sysDeptInternalAgent==null){ return new ArrayList(); } List hxUserIds = sysUserLinkDeptInternalAgentMapper.getUserIdListByDeptPrentIds(sysDeptInternalAgent.getParentIds()); List returnUserIds=new ArrayList<>(); //查询后线人员管理的代理人和渠道 if(hxUserIds!=null && hxUserIds.size()>0){ for(String userId : hxUserIds){ //通过用户id查询管理的渠道集合 List qdUserIds = sysUserService.getUserIdsByLeaderId(userId); returnUserIds.addAll(qdUserIds); //通过用户id查询管理的代理人 //查询绑定的区域的代理人信息 List areaCodes = sysUserLinkAreaMapper.findAreaCodeByUserId(userId); if (areaCodes != null && !areaCodes.isEmpty()) { List dlUserIds = sysUserLinkAreaMapper.findAreaIdsByAgentUserId(userId, areaCodes); returnUserIds.addAll(dlUserIds); } } returnUserIds = returnUserIds.stream().distinct().collect(Collectors.toList()); } return returnUserIds; } }