package com.ydtech.modules.admin.controller; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ydtech.config.MasterPasswordConfig; import com.ydtech.constants.sys.SysPasswordEnum; import com.ydtech.core.page.HttpResult; import com.ydtech.core.page.PageRequest; import com.ydtech.modules.admin.model.SysDept; import com.ydtech.modules.admin.model.SysPassword; import com.ydtech.modules.admin.model.SysUser; import com.ydtech.modules.admin.model.vo.*; import com.ydtech.modules.admin.service.SysDeptService; import com.ydtech.modules.admin.service.SysPasswordService; import com.ydtech.modules.admin.utils.KztGetDeptUtils; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.security.utils.PasswordUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.List; @Api(tags = "机构管理", value = "机构管理") @RestController @RequestMapping("/dept") @RequiredArgsConstructor @Slf4j public class SysDeptController extends BaseController { Logger logger = LoggerFactory.getLogger(getClass()); private final SysDeptService sysDeptService; private final SysPasswordService sysPasswordService; private final MasterPasswordConfig masterPasswordConfig; // @PreAuthorize("hasAuthority('sys:dept:add')") @PostMapping(value = "/add") @ApiOperation("增加机构") public HttpResult add(@RequestBody SysDeptVo sysDeptVo) { sysDeptService.addDept(sysDeptVo); return HttpResult.ok(); } @PostMapping(value = "/deleteDept") @ApiOperation("删除机构") public HttpResult delete(@RequestBody SysDeptRemoveVo sysDeptRemoveVo) { if (sysDeptRemoveVo.getPassword() == null) { return HttpResult.error("输入的密码不能为空"); } SysPassword sysPassword = sysPasswordService.getOne(new LambdaQueryWrapper().eq(SysPassword::getCode, SysPasswordEnum.DEPT.getCode())); // 判断机构删除密码是否为空 if (PasswordUtils.matches(sysPassword.getSalt(), sysDeptRemoveVo.getPassword(), sysPassword.getPassword())) { sysDeptService.deleteDept(sysDeptRemoveVo); return HttpResult.ok(); } return HttpResult.error("密码错误"); } //@PreAuthorize("hasAuthority('sys:dept:view')") @ApiOperation(value = "获取树结构") @GetMapping(value = "/findTree") public HttpResult> findTree(String deptId,String managementSource) { BaseController baseController = new BaseController(); // String deptId = baseController.getDeptId(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SysDept::getDelFlag, 0).eq(SysDept::getId, deptId); SysDept one = sysDeptService.getOne(queryWrapper); // String managementSource = one.getManagementSource(); return HttpResult.ok(sysDeptService.findTree(deptId,managementSource)); } @PostMapping("/queryTreeList") @ApiOperation(value = "查询机构树列表") public HttpResult> queryTreeList(@RequestBody SysDeptListVo sysDeptListVo) { List deptAll = new ArrayList<>(); if(!StringUtils.isBlank(sysDeptListVo.getId()) || !StringUtils.isBlank(sysDeptListVo.getName())) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SysDept::getDelFlag, 0) .eq(!StringUtils.isBlank(sysDeptListVo.getId()),SysDept::getId, sysDeptListVo.getId()) .like(!StringUtils.isBlank(sysDeptListVo.getName()),SysDept::getName, sysDeptListVo.getName()) .eq(!StringUtils.isBlank(sysDeptListVo.getName()),SysDept::getComlevel, "5"); List depts = sysDeptService.list(queryWrapper); for (SysDept dept : depts) { List list = sysDeptService.findTree(dept.getId(),null); deptAll.addAll(list); } }else{ List list = sysDeptService.findTree(null,null); deptAll.addAll(list); } // 递归组装前端需要的数据 for (SysDept sysDept : deptAll) { sysDept.setName(sysDept.getName() + "--" + sysDept.getId()); showEdit(sysDept); } return HttpResult.ok(deptAll); } public void showEdit(SysDept sysDept) { if (ObjectUtils.isNotEmpty(sysDept.getChildren())) { List childrenList = sysDept.getChildren(); if (CollUtil.isNotEmpty(childrenList)){ for (SysDept dept : childrenList) { dept.setName(dept.getName() + "--" + dept.getId()); showEdit(dept); } } } } // @PreAuthorize("hasAuthority('sys:dept:edit')") @PostMapping(value = "/edit") public HttpResult edit(@RequestBody SysDept record) { SysDept byId = sysDeptService.getById(record.getId()); if (record.getManagementSource() != null){ if (!record.getManagementSource().equals(byId.getManagementSource())) { return HttpResult.error("机构已被设置来源无法修改"); } } sysDeptService.updateDept(record); return HttpResult.ok(); } // @PreAuthorize("hasAuthority('sys:dept:delete')") @PostMapping(value = "/delete") public HttpResult delete(@RequestBody List records) { System.out.println("" + records); return HttpResult.ok(sysDeptService.removeByIds(records)); } //// @PreAuthorize("hasAuthority('sys:dept:view')") @PostMapping(value = "/findSubDept") public HttpResult findSubDept(@RequestBody PageRequest pageRequest) { return HttpResult.ok(sysDeptService.findSubDepts(pageRequest)); } //// @PreAuthorize("hasAuthority('sys:dept:view')") @GetMapping(value = "/findMaxDeptId") public HttpResult findMaxDeptId(String deptId) { int i = 100; Object maxDeptId = new Object(); maxDeptId = sysDeptService.findMaxDeptId(deptId); return HttpResult.ok(maxDeptId); } //// @PreAuthorize("hasAuthority('sys:dept:view')") @GetMapping(value = "/findMaxHouseId") public HttpResult findMaxHouseId(String deptId) { int i = 100; Object maxDeptId = new Object(); maxDeptId = sysDeptService.findMaxHouseId(deptId); return HttpResult.ok(maxDeptId); } // // @PreAuthorize("hasAuthority('sys:dept:view')") @GetMapping(value = "/getDeptById") public HttpResult getDeptById(String id) { SysDept sysDept = sysDeptService.getById(id); logger.info(sysDept.toString()); return HttpResult.ok(sysDept); } @ApiOperation(value = "获取机构树(不包含团队 dept_type=C)") @GetMapping(value = "/findCompanyTree") public HttpResult> findCompanyTree() { SysUser user = getUser(); String deptId = user.getDeptId(); return HttpResult.ok(sysDeptService.findCompanyTree(deptId)); } @ApiOperation(value = "根据传入机构,查询归属所有团队") @GetMapping(value = "/findTeamList") public HttpResult findTeamList(String deptId) { return HttpResult.ok(sysDeptService.findTeamList(deptId)); } /** * @version * @author: hxl * @Date: 2024/4/23 14:59 * @Description: 获取所有的树结构 */ @ApiOperation(value = "获取所有的树结构") @GetMapping(value = "/findAllTree") public HttpResult> findAllTree(String deptId) { if(deptId==null || "".equals(deptId)){ deptId="9"; }else{ //如果是平台下判断包含D的查询上级id if(deptId.contains("D")){ SysDept dept = sysDeptService.getById(deptId); deptId =dept==null?"":dept.getParentId(); } } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SysDept::getDelFlag, 0); return HttpResult.ok(sysDeptService.findTree(deptId,null)); } @ApiOperation(value = "省市区门店列表查询 省级parentId=99 市县传值上级id,level传值省市县门店1,2,3,4") @GetMapping(value = "/queryListByParentId/{level}/{parentId}") public HttpResult> queryListByParentId(@PathVariable("level") String level, @PathVariable("parentId") String parentId) { if(parentId==null || "".equals(parentId)) { return HttpResult.error("parentId父级id不能为空"); } if(level==null || "".equals(level)) { return HttpResult.error("level类型不能为空"); } List sysDeptList = sysDeptService.queryListByParentId(level,parentId); return HttpResult.ok(sysDeptList); } /** * 工作室管理机构树 * @return */ @ApiOperation(value = "工作室管理机构树") @GetMapping(value = "/getSysDeptTree") public HttpResult> getSysDeptTree() { return HttpResult.ok(sysDeptService.getSysDeptTree()); } /** * 合伙人管理机构树 * @return */ @ApiOperation(value = "合伙人管理机构树") @GetMapping(value = "/getPartnerDeptTree") public HttpResult> getPartnerDeptTree() { return HttpResult.ok(sysDeptService.getPartnerDeptTree()); } /** * 数据权限机构数 * @return */ @ApiOperation(value = "数据权限机构数") @GetMapping(value = "/getDataDeptTree") public HttpResult> getDataDeptTree(HttpServletRequest httpServerRequest) { List deptIds = new ArrayList<>(); KztGetDeptUtils kztGetDeptUtils = new KztGetDeptUtils(); KztGetDeptUtilsDto kztGetDeptUtilsDto = kztGetDeptUtils.KztGetDeptIds(httpServerRequest.getRequestURL().toString()); if(ObjectUtils.isNotEmpty(kztGetDeptUtilsDto)){ if("1".equals(kztGetDeptUtilsDto.getType())){ deptIds = kztGetDeptUtilsDto.getIds(); } } return HttpResult.ok(sysDeptService.getDataDeptTree(deptIds)); } /** * 控制台用户数机构数 * @return */ @ApiOperation(value = "控制台用户数机构数") @PostMapping(value = "/getUserDeptTree") public HttpResult getUserDeptTree(@RequestBody SysDeptVo sysDeptVo) { return HttpResult.ok(sysDeptService.getUserDeptTree(sysDeptVo)); } /** * @version * @author: hxl * @Date: 2024/9/26 18:08 * @Description: 查询机构下的负责人 */ @GetMapping(value = "/getLeadListDeptId") public HttpResult getLeadListDeptId(String deptId) { List userList= sysDeptService.getLeadListDeptId(deptId); return HttpResult.ok(userList); } /** * @version * @author: hxl * @Date: 2024/9/26 18:08 * @Description: 查询机构下的负责人 */ @PostMapping(value = "/saveLeadId") public HttpResult saveLeadId(@RequestBody DeptLeadVo deptLeadVo) { try{ sysDeptService.saveLeadId(deptLeadVo); }catch(Exception e){ return HttpResult.error("设置失败"); } return HttpResult.ok(); } }