package com.ydtech.modules.admin.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ydtech.modules.admin.dao.SysUserLinkAreaMapper; import com.ydtech.modules.admin.dao.SysUserMapper; import com.ydtech.modules.admin.model.SysArea; import com.ydtech.modules.admin.model.SysUser; import com.ydtech.modules.admin.model.dto.SysUserDto; import com.ydtech.modules.admin.model.dto.SysUserLinkAreaDto; import com.ydtech.modules.admin.model.dto.SysUserLinkAreaListDto; import com.ydtech.modules.admin.model.po.SysUserLinkArea; import com.ydtech.modules.admin.model.vo.SysAreaVo; import com.ydtech.modules.admin.model.vo.SysUserBaseVO; import com.ydtech.modules.admin.model.vo.SysUserLinkAreaAddVo; import com.ydtech.modules.admin.model.vo.SysUserLinkAreaVo; import com.ydtech.modules.admin.service.SysAreaService; import com.ydtech.modules.admin.service.SysUserLinkAreaService; import com.ydtech.modules.order.entity.BasePageResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; /** * @version * @author: hxl * @Date: 2024/4/26 14:52 * @Description: 用户关联协议表 */ @Service public class SysUserLinkAreaServiceImpl extends ServiceImpl implements SysUserLinkAreaService { @Autowired private SysUserLinkAreaMapper sysUserLinkAreaMapper; @Autowired private SysUserMapper sysUserMapper; @Autowired private SysAreaService sysAreaService; /** * @version * @author: hxl * @Date: 2024/4/26 15:13 * @Description: 分页 */ @Override public BasePageResult queryPage(SysUserLinkAreaVo sysUserLinkAreaVo) { Page page = new Page<>(sysUserLinkAreaVo.getPageNum(), sysUserLinkAreaVo.getPageSize()); Page sysUserLinkAreaDtoBasePageResult = sysUserLinkAreaMapper.queryPage(page, sysUserLinkAreaVo); return new BasePageResult<>(sysUserLinkAreaVo.getPageNum(), page.getSize(), sysUserLinkAreaDtoBasePageResult.getTotal(), page.getPages(), sysUserLinkAreaDtoBasePageResult.getRecords()); } /** * @version * @author: hxl * @Date: 2024/4/26 15:13 * @Description: 添加修改 */ @Override public void addOrUpdate(SysUserLinkAreaAddVo sysUserLinkAreaAddVo, SysUser user) { String userId = sysUserLinkAreaAddVo.getUserId(); List areaCodes = sysUserLinkAreaAddVo.getAreaCodes(); //删除数据重新添加 sysUserLinkAreaMapper.deleteByUserId(userId); List addList=new ArrayList(); //重新添加 if(areaCodes!=null && areaCodes.size()>0){ for (String areaCode : areaCodes) { SysUserLinkArea add=new SysUserLinkArea(userId,areaCode,user.getId(),user.getName(),new Date(),user.getId(),user.getName(),new Date()); addList.add(add); } } this.saveBatch(addList); } /** * @version * @author: hxl * @Date: 2024/4/26 17:53 * @Description: 通过id删除数据 */ @Override public void deleteByIds(List ids) { sysUserLinkAreaMapper.deleteBatchIds(ids); } /** * @version * @author: hxl * @Date: 2024/4/26 15:22 * @Description: 通过用户查询关联的区域ids回显使用 */ @Override public SysUserLinkAreaListDto findAreaListByUserId(String userId) { //查询用户绑定的区域 List list = sysUserLinkAreaMapper.findAreaListByUserId(userId); SysUser sysUser = sysUserMapper.selectById(userId); SysUserLinkAreaListDto SysUserLinkAreaListDto =new SysUserLinkAreaListDto(sysUser,list); return SysUserLinkAreaListDto; } /** * @version * @author: hxl * @Date: 2024/4/26 15:23 * @Description: 通过用户查询关联的区域树回显使用 */ @Override public List findAreaTreeByUserId(String userId) { //查询所有的区域树 List sysAreaVos = sysAreaService.querySysArea(); Map map=new HashMap(); //查询用户绑定的区域 List list = sysUserLinkAreaMapper.findAreaListByUserId(userId); if(list!=null && list.size()>0){ for (SysArea sysArea : list) { map.put(sysArea.getAreaCode(),sysArea); } } //递归赋值 if(sysAreaVos!=null && sysAreaVos.size()>0){ for (SysAreaVo sysAreaVo : sysAreaVos) { sysAreaVo= setFlagByTree(sysAreaVo,map); } } return sysAreaVos; } public SysAreaVo setFlagByTree(SysAreaVo sysArea, Map map) { sysArea.setFlag(false); if (map.get(sysArea.getAreaCode())!=null) { sysArea.setFlag(true); } if(sysArea.getChild()==null || sysArea.getChild().size()==0){ } for (SysAreaVo child : sysArea.getChild()) { setFlagByTree(child, map); } return sysArea; } /** * @version * @author: hxl * @Date: 2024/4/26 17:23 * @Description: 查询用户分页 */ @Override public BasePageResult findUserListByPage(SysUserDto sysUserDto) { Page page = new Page<>(sysUserDto.getPageNum(), sysUserDto.getPageSize()); Page userPageResult = sysUserMapper.findUserListByAreaPage(page, sysUserDto); return new BasePageResult<>(sysUserDto.getPageNum(), page.getSize(), userPageResult.getTotal(), page.getPages(), userPageResult.getRecords()); } /** * @version * @author: hxl * @Date: 2024/4/27 9:45 * @Description: 获取当前用户绑定区域的代理人ids */ @Override public List findUserIdsByLoginUserId(String userId) { List areaCodes = sysUserLinkAreaMapper.findAreaCodeByUserId(userId); if(areaCodes!=null && areaCodes.size()>0){ return sysUserLinkAreaMapper.findAreaIdsByAgentUserId(userId,areaCodes); } return null; } }