package cn.huge.module.ctuser.controller.web; import cn.huge.base.common.dto.SelectTermDTO; import cn.huge.base.common.utils.ObjectUtils; import cn.huge.base.common.utils.ReturnFailUtils; import cn.huge.base.common.utils.ReturnSucUtils; import cn.huge.base.common.utils.SelectTermUtils; import cn.huge.base.config.CurrentUser; import cn.huge.module.ctrole.domain.po.CtRole; import cn.huge.module.ctrole.service.CtRoleService; import cn.huge.module.ctuser.domain.po.*; import cn.huge.module.ctuser.service.*; import cn.huge.module.cust.constant.RoleBaseEnum; import cn.huge.module.cust.constant.UserBaseConsts; import cn.huge.module.cust.dto.CtUserDTO; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; /** * @title: 客户用户表接口api * @description: 客户用户表接口api * @company: hugeinfo * @author: liyj * @time: 2024-08-19 20:04:19 * @version: 1.0.0 */ @Slf4j @RestController @RequestMapping("/api/web/ctUser") public class CtUserWebController { @Autowired(required = false) private HttpServletRequest request; @Autowired private CtUserService service; @Autowired private CtUnitService ctUnitService; @Autowired private CtRoleService ctRoleService; @Autowired private CtDeptService ctDeptService; @Autowired private CtUseroleService ctUseroleService; @Autowired private CtAccountService ctAccountService; @Autowired private CtUsepostService ctUsepostService; /** * 获取请求URL参数 * @return Map */ private Map getParameter(){ Map terms = Maps.newHashMap(); // 客户用户编号 String id = request.getParameter("id"); if (StringUtils.isNotBlank(id)){ terms.put("id", id); } // 姓名 String trueName = request.getParameter("trueName"); if (StringUtils.isNotBlank(trueName)){ terms.put("trueName", trueName); } // 性别 String sex = request.getParameter("sex"); if (StringUtils.isNotBlank(sex)){ terms.put("sex", sex); } // 性别名称 String sexName = request.getParameter("sexName"); if (StringUtils.isNotBlank(sexName)){ terms.put("sexName", sexName); } // 手机号码 String mobile = request.getParameter("mobile"); if (StringUtils.isNotBlank(mobile)){ terms.put("mobile", mobile); } // 身份证号 String idcard = request.getParameter("idcard"); if (StringUtils.isNotBlank(idcard)){ terms.put("idcard", idcard); } // 电子邮箱 String email = request.getParameter("email"); if (StringUtils.isNotBlank(email)){ terms.put("email", email); } // 微信号 String wechat = request.getParameter("wechat"); if (StringUtils.isNotBlank(wechat)){ terms.put("wechat", wechat); } // QQ号 String qq = request.getParameter("qq"); if (StringUtils.isNotBlank(qq)){ terms.put("qq", qq); } // 现居地省 String prov = request.getParameter("prov"); if (StringUtils.isNotBlank(prov)){ terms.put("prov", prov); } // 现居地省名称 String provName = request.getParameter("provName"); if (StringUtils.isNotBlank(provName)){ terms.put("provName", provName); } // 现居地市 String city = request.getParameter("city"); if (StringUtils.isNotBlank(city)){ terms.put("city", city); } // 现居地市名称 String cityName = request.getParameter("cityName"); if (StringUtils.isNotBlank(cityName)){ terms.put("cityName", cityName); } // 现居地区 String area = request.getParameter("area"); if (StringUtils.isNotBlank(area)){ terms.put("area", area); } // 现居地区名称 String areaName = request.getParameter("areaName"); if (StringUtils.isNotBlank(areaName)){ terms.put("areaName", areaName); } // 现居地街道 String road = request.getParameter("road"); if (StringUtils.isNotBlank(road)){ terms.put("road", road); } // 现居地街道名称 String roadName = request.getParameter("roadName"); if (StringUtils.isNotBlank(roadName)){ terms.put("roadName", roadName); } // 现居地社区 String village = request.getParameter("village"); if (StringUtils.isNotBlank(village)){ terms.put("village", village); } // 现居地社区名称 String villageName = request.getParameter("villageName"); if (StringUtils.isNotBlank(villageName)){ terms.put("villageName", villageName); } // 现居地详细地址 String addr = request.getParameter("addr"); if (StringUtils.isNotBlank(addr)){ terms.put("addr", addr); } // 头像 String avatar = request.getParameter("avatar"); if (StringUtils.isNotBlank(avatar)){ terms.put("avatar", avatar); } // 组织编号 String unitId = request.getParameter("unitId"); if (StringUtils.isNotBlank(unitId)){ terms.put("unitId", unitId); } // 组织名称 String unitName = request.getParameter("unitName"); if (StringUtils.isNotBlank(unitName)){ terms.put("unitName", unitName); } // 部门编号 String deptId = request.getParameter("deptId"); if (StringUtils.isNotBlank(deptId)){ terms.put("deptId", deptId); } // 部门名称 String deptName = request.getParameter("deptName"); if (StringUtils.isNotBlank(deptName)){ terms.put("deptName", deptName); } // 加入方式,1:系统创建(默认),2:自主申请 String joinWay = request.getParameter("joinWay"); if (StringUtils.isNotBlank(joinWay)){ terms.put("joinWay", joinWay); } // 实名认证状态,0:未认证,1:已认证 String realStatus = request.getParameter("realStatus"); if (StringUtils.isNotBlank(realStatus)){ terms.put("realStatus", realStatus); } // 用户状态,1:有效(默认),2:停用,99:离职 String status = request.getParameter("status"); if (StringUtils.isNotBlank(status)){ terms.put("status", status); } // 调解专长,多个用,隔开 String goodField = request.getParameter("goodField"); if (StringUtils.isNotBlank(goodField)){ terms.put("goodField", goodField); } // 调解专长名称,多个用,隔开 String goodFieldName = request.getParameter("goodFieldName"); if (StringUtils.isNotBlank(goodFieldName)){ terms.put("goodFieldName", goodFieldName); } // 调解范围,多个用,隔开 String canField = request.getParameter("canField"); if (StringUtils.isNotBlank(canField)){ terms.put("canField", canField); } // 调解范围名称,多个用,隔开 String canFieldName = request.getParameter("canFieldName"); if (StringUtils.isNotBlank(canFieldName)){ terms.put("canFieldName", canFieldName); } // 是否可以找他调(小程序),0:否,1:是 String findStatus = request.getParameter("findStatus"); if (StringUtils.isNotBlank(findStatus)){ terms.put("findStatus", findStatus); } // 是否参与自动调度,0:否,1:是 String dispStatus = request.getParameter("dispStatus"); if (StringUtils.isNotBlank(dispStatus)){ terms.put("dispStatus", dispStatus); } // 删除状态,0:已删除(默认),1:未删除 String deleteStatus = request.getParameter("deleteStatus"); if (StringUtils.isNotBlank(deleteStatus)){ terms.put("deleteStatus", deleteStatus); } // 所属客户编号 String custId = request.getParameter("custId"); if (StringUtils.isNotBlank(custId)){ terms.put("custId", custId); } // 创建时间区间 String createStart = request.getParameter("createStart"); String createEnd = request.getParameter("createEnd"); if(StringUtils.isNotBlank(createStart) && StringUtils.isNotBlank(createEnd)) { terms.put("createStart", createStart); terms.put("createEnd", createEnd); } // 更新时间区间 String updateStart = request.getParameter("updateStart"); String updateEnd = request.getParameter("updateEnd"); if(StringUtils.isNotBlank(updateStart) && StringUtils.isNotBlank(updateEnd)) { terms.put("updateStart", updateStart); terms.put("updateEnd", updateEnd); } return terms; } /** * web端-人员信息管理-新增/新用户信息 * @url {ctx}/api/v1/ctUser/saveCtUser * @param userId * @return Object * @throws Exception */ @PostMapping("/saveCtUser") public Object saveCtUser(@RequestBody CtUser ctUser, @CurrentUser String userId) { try { // 保存更新用户信息 service.webSaveCtUser(ctUser, userId); return ReturnSucUtils.getRepInfo(); } catch (Exception e) { return ReturnFailUtils.getRepInfo(); } } /** * 获取人员信息列表查询条件 * @url {ctx}/api/v1/ctUser/listSelectTerm * @return userId 登录用户标识称 * @return Object * @throws Exception */ @GetMapping("/listSelectTerm") public Object listSelectTerm(@CurrentUser String userId) { try { Map result = Maps.newHashMap(); // 获取当前登录用户 CtUser loginUser = service.getById(userId); // 组织条件 QueryWrapper ctUnitQueryWrapper = new QueryWrapper<>(); ctUnitQueryWrapper.eq("cust_id", loginUser.getCustId()); List ctUnits = ctUnitService.list(ctUnitQueryWrapper); List unitSelectTerms = new ArrayList<>(); for (CtUnit ctUnit: ctUnits) { SelectTermDTO unitSelectTerm = new SelectTermDTO(); unitSelectTerm.setValue(ctUnit.getId()); unitSelectTerm.setLabel(ctUnit.getUnitName()); unitSelectTerm.setParentId(ctUnit.getParentId()); unitSelectTerms.add(unitSelectTerm); // 部门条件 QueryWrapper ctDeptQueryWrapper = new QueryWrapper<>(); ctDeptQueryWrapper.eq("unit_id", ctUnit.getId()); List ctDepts = ctDeptService.list(ctDeptQueryWrapper); if (CollectionUtils.isNotEmpty(ctDepts)) { List deptSelectTerms = new ArrayList<>(); for (CtDept ctDept : ctDepts) { SelectTermDTO deptSelectTerm = new SelectTermDTO(); deptSelectTerm.setValue(ctDept.getId()); deptSelectTerm.setLabel(ctDept.getName()); deptSelectTerm.setParentId(ctDept.getParentId()); deptSelectTerms.add(deptSelectTerm); } List depts = SelectTermUtils.createTreeByRoot(deptSelectTerms); unitSelectTerm.setChainList(depts); } } result.put("units", SelectTermUtils.createTreeByFirst(unitSelectTerms, loginUser.getUnitId())); // 角色条件 QueryWrapper ctRoleQueryWrapper = new QueryWrapper<>(); ctRoleQueryWrapper.eq("unit_id", loginUser.getUnitId()); //判断是否为村居(村居不应该有调委会管理员角色) QueryWrapper ctUnitQueryWrapper1 = new QueryWrapper<>(); ctUnitQueryWrapper1.eq("id", loginUser.getUnitId()).eq("cust_id", loginUser.getCustId()) .select("unit_type"); CtUnit ctUnit = ctUnitService.getOne(ctUnitQueryWrapper1); if(UserBaseConsts.UNIT_TYPE_4.equals(ctUnit.getUnitType())){ ctRoleQueryWrapper.ne("role_code", RoleBaseEnum.ROLE_9.getIndex()); } List ctRoleList = ctRoleService.list(ctRoleQueryWrapper); List roleSelectTerms = new ArrayList<>(); for (CtRole ctRole: ctRoleList){ SelectTermDTO selectTerm = new SelectTermDTO(); selectTerm.setValue(ctRole.getRoleCode()); selectTerm.setLabel(ctRole.getName()); roleSelectTerms.add(selectTerm); } result.put("roles", roleSelectTerms); return ReturnSucUtils.getRepInfo( "查询成功", result); } catch (Exception e) { log.error("Controller接口[CtUserController.listSelectTerm]请求异常:"+e, e); return ReturnFailUtils.getRepInfo("查询失败", null); } } /** * 条件分页查询人员信息 * @url {ctx}/api/v1/ctUser/pageQuery * @param page 页码 * @param size 每页数量 * @return Object */ @GetMapping("/pageQuery") public Object pageQuery(@RequestParam(value = "page") int page, @RequestParam(value = "size") int size, @CurrentUser String userId) { try { // 获取当前登录用户 CtUserDTO loginUser = service.clientGetUserAll(userId); Map result = Maps.newHashMap(); Map terms = getParameter(); if (RoleBaseEnum.checkAdminPower(loginUser)){ terms.put("custId", loginUser.getCustId()); }else if (RoleBaseEnum.checkCourtOrUnitPower(loginUser.getRoleCodes())){ terms.put("custId", loginUser.getCustId()); String unitId = (String) terms.get("unitId"); if (StringUtils.isEmpty(unitId)){ terms.put("unitId", loginUser.getUnitId()); } }else { terms.put("custId", loginUser.getCustId()); terms.put("id", loginUser.getId()); } Sort sort = Sort.by(Sort.Direction.DESC, "t1.create_time"); PageRequest pageRequest = PageRequest.of(page-1, size, sort); Page ctUserPage = service.pageUserAndRole(pageRequest, terms); QueryWrapper accountQueryWrapper = new QueryWrapper<>(); QueryWrapper ctUseroleQueryWrapper = new QueryWrapper<>(); QueryWrapper ctUsepostQueryWrapper = new QueryWrapper<>(); for (CtUser ctUser: ctUserPage){ accountQueryWrapper.clear(); // 密码 accountQueryWrapper.eq("acc_type", UserBaseConsts.ACC_TYPE_1); accountQueryWrapper.eq("user_id", ctUser.getId()); CtAccount ctAccount = ctAccountService.getOne(accountQueryWrapper); if (ObjectUtils.isNotEmpty(ctAccount)){ ctUser.setAcc(ctAccount.getAcc()); ctUser.setCipher(ctAccount.getCipherOpen()); } // 角色 ctUseroleQueryWrapper.clear(); ctUseroleQueryWrapper.eq("user_id", ctUser.getId()); List ctUseroleList = ctUseroleService.list(ctUseroleQueryWrapper); if (ObjectUtils.isNotEmpty(ctUseroleList)){ for (CtUserole ctUserole: ctUseroleList){ ctUserole.setRoleId(ctUserole.getRoleCode()); } ctUser.setCtUseroleList(ctUseroleList); } // 岗位 ctUsepostQueryWrapper.clear(); ctUsepostQueryWrapper.eq("user_id", ctUser.getId()); List ctUsepostList = ctUsepostService.list(ctUsepostQueryWrapper); if (ObjectUtils.isNotEmpty(ctUsepostList)) { ctUser.setCtUsepostList(ctUsepostList); } } result.put("ctUserPage", ctUserPage); terms = Maps.newHashMap(); // 生效名额 terms.put("status", UserBaseConsts.USER_STATUS_1); terms.put("custId", loginUser.getCustId()); if (RoleBaseEnum.checkAdminPower(loginUser)){ terms.put("custId", loginUser.getCustId()); }else if (RoleBaseEnum.checkCourtOrUnitPower(loginUser.getRoleCodes())){ terms.put("custId", loginUser.getCustId()); String unitId = (String) terms.get("unitId"); if (StringUtils.isEmpty(unitId)){ terms.put("unitId", loginUser.getUnitId()); } }else { terms.put("custId", loginUser.getCustId()); terms.put("id", loginUser.getId()); } long countZzStatus = service.countTerms(terms); result.put("countZzStatus", countZzStatus); return ReturnSucUtils.getRepInfo( "处理成功", result); } catch (Exception e) { log.error("Controller接口[CtUserController.pageQuery]请求异常:"+e, e); return ReturnFailUtils.getRepInfo(e.getMessage(), null); } } }