package com.consum.base.controller; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.Set; import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import com.alibaba.excel.EasyExcelFactory; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.exception.ExcelDataConvertException; import com.consum.base.BaseController; import com.consum.base.core.type.StatesType; import com.consum.base.core.utils.CommonUtil; import com.consum.base.core.utils.MapperUtil; import com.consum.base.core.utils.PageUtil; import com.consum.base.pojo.FinSysTenantUserSearchParam; import com.consum.base.pojo.FinSysTenantUserUpdParam; import com.consum.base.pojo.ImportUserParam; import com.consum.base.pojo.RolePageParam; import com.consum.base.pojo.request.FinSysTenantUserParam; import com.consum.base.pojo.response.DepartmentVO; import com.consum.base.pojo.response.FinSysTenantUserVO; import com.consum.base.pojo.response.FinSysTenantVO; import com.consum.base.pojo.response.UserVO; import com.consum.base.service.BaseWarehouseManagerService; import com.consum.base.service.FinSysTenantDepartmentService; import com.consum.base.service.FinSysTenantService; import com.consum.base.service.FinSysTenantUserService; import com.consum.model.po.FinSysTenant; import com.consum.model.po.FinSysTenantDepartment; import com.consum.model.po.FinSysTenantUser; import com.iplatform.base.ArgumentsConstants; import com.iplatform.base.service.RoleServiceImpl; import com.iplatform.base.service.UserServiceImpl; import com.iplatform.base.util.PlatformRSAUtils; import com.iplatform.core.util.AESUtils; import com.iplatform.model.po.S_dept; import com.iplatform.model.po.S_role; import com.iplatform.model.po.S_user_core; import com.walker.db.page.GenericPager; import com.walker.infrastructure.utils.CollectionUtils; import com.walker.infrastructure.utils.DateUtils; import com.walker.infrastructure.utils.NumberGenerator; import com.walker.infrastructure.utils.PhoneNumberUtils; import com.walker.infrastructure.utils.StringUtils; import com.walker.web.ResponseValue; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; /** * @Description 系统用户 * @Author wh * @Date 2023/7/17 14:16 */ @Api(value = "机构用户信息", tags = "机构用户信息") @RestController @RequestMapping("/pc/fin/sys/tenant/user") public class FinSysTenantUserController extends BaseController { private String roleName; private FinSysTenantUserService finSysTenantUserService; private UserServiceImpl userService; private FinSysTenantService finSysTenantService; private RoleServiceImpl roleService; @Autowired private FinSysTenantDepartmentService finSysTenantDepartmentService; @Autowired private BaseWarehouseManagerService baseWarehouseManagerService; @Autowired public FinSysTenantUserController(FinSysTenantService finSysTenantService, FinSysTenantUserService finSysTenantUserService, RoleServiceImpl roleService, UserServiceImpl userService) { this.finSysTenantUserService = finSysTenantUserService; this.finSysTenantService = finSysTenantService; this.roleService = roleService; this.userService = userService; } /** * @Description 分页列表查询 * @Author wh * @Date 2023/7/11 13:59 */ @RequestMapping("/select/list") public ResponseValue allocatedList() { FinSysTenantUserSearchParam param = CommonUtil.getObjFromReq(FinSysTenantUserSearchParam.class); FinSysTenantUserSearchParam param2 = new FinSysTenantUserSearchParam(); CommonUtil.copyProperties(param, param2); param = param2; if (param.getTenantCode() == 0) { String tenantId = this.getSysInfo().getTenantId(); FinSysTenant finSysTenant = finSysTenantService.selectById(Long.valueOf(tenantId)); if (finSysTenant != null) { param.setTenantCode(Long.valueOf(finSysTenant.getCode())); } } PageUtil pager = this.finSysTenantUserService.queryAllPageUser(param); for (FinSysTenantUserVO finSysTenantUser : pager.getDatas()) { String tel = finSysTenantUser.getUserPhone() != null ? AESUtils.decryptStrAES(finSysTenantUser.getUserPhone(), PlatformRSAUtils.AES_KEY) : null; finSysTenantUser.setUserPhone(StringUtils.isNotEmpty(tel) ? PhoneNumberUtils.maskMobile(tel) : ""); } return ResponseValue.success(pager); } @ApiOperation(value = "根据机构id查询用户", notes = "根据机构id查询用户") @ApiImplicitParam(name = "tenantId", value = "机构id", required = true, dataType = "Long", paramType = "query") @GetMapping("/query/user") public ResponseValue queryUserByTenantId(Long tenantId) { FinSysTenantUser finSysTenantUser = new FinSysTenantUser(); finSysTenantUser.setTenantId(String.valueOf(tenantId)); List result = finSysTenantUserService.select(finSysTenantUser); return ResponseValue.success(result); } /** * @Description 新增 * @Author wh * @Date 2023/7/17 15:56 */ @PostMapping("/add") @Transactional(rollbackFor = Exception.class) public ResponseValue add() { FinSysTenantUser user = CommonUtil.getObjFromReqBody(FinSysTenantUser.class); FinSysTenantUser tenantUser = new FinSysTenantUser(); CommonUtil.copyProperties(user, tenantUser); if (tenantUser == null) { return ResponseValue.error("参数为空"); } // 根据员工编号查询,如果存在则提示 FinSysTenantUser userCode = finSysTenantUserService.getByUserCode(tenantUser.getUserCode()); if (userCode != null) { return ResponseValue.error("员工编号重复"); } if (StringUtils.isEmpty(tenantUser.getTenantId()) || "0".equals(tenantUser.getTenantId())) { return ResponseValue.error("添加时请选择区县"); } // 插入系统用户 buildTenantUser(tenantUser, null); this.finSysTenantUserService.insert(tenantUser); // 插入平台用户 S_user_core userCore = getsUserCore(tenantUser); this.userService.insert(userCore); // 插入平台机构 // 少角色id // 机构id 多个 List roleList = user.getRoleList(); if (!CollectionUtils.isEmpty(roleList)) { // 用户id Long sysUserId = tenantUser.getSysUserId(); this.finSysTenantUserService.execInsertRoleUserList(roleList, sysUserId); } // this.getFinCustomerCache().remove(); return ResponseValue.success(1); } private void buildTenantUser(FinSysTenantUser tenantUser, FinSysTenantUser sysInfo) { tenantUser.setId(NumberGenerator.getLongSequenceNumber()); tenantUser.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis())); tenantUser.setCreateBy(this.getCurrentUser().getUser_name()); tenantUser.setUpdateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis())); tenantUser.setUpdateBy(this.getCurrentUser().getUser_name()); // 是否删除 0是 1否 tenantUser.setIsDelete(0); tenantUser.setSysUserId(NumberGenerator.getLongSequenceNumber()); setUserPhone(tenantUser, tenantUser.getUserPhone()); String tenantId = tenantUser.getTenantId(); FinSysTenant finSysTenant = finSysTenantService.selectById(Long.valueOf(tenantId)); tenantUser.setTenantCode(finSysTenant.getCode()); // 处理方法addSupplier if (sysInfo != null) { tenantUser.setIsDelete(1); tenantUser.setLv(sysInfo.getLv()); tenantUser.setTenantCode(sysInfo.getTenantCode()); tenantUser.setTenantId(sysInfo.getTenantId()); // 运维管理 tenantUser.setSysDeptId(2L); } } private void setUserPhone(FinSysTenantUser tenantUser, String userPhone) { // 加密手机号 String key = PlatformRSAUtils.AES_KEY; String encPhone = ""; if (StringUtils.isNotEmpty(userPhone)) { encPhone = AESUtils.encryptStrAES(userPhone, key); } tenantUser.setUserPhone(encPhone); } private S_user_core getsUserCore(FinSysTenantUser tenantUser) { S_user_core userCore = new S_user_core(); userCore.setId(tenantUser.getSysUserId()); // 部门id 部门信息未同步,只填充数据 userCore.setDept_id(tenantUser.getSysDeptId()); // 机构id userCore.setOrg_id(tenantUser.getSysDeptId()); userCore.setOrg_id(1L); // 用户账号 userCore.setUser_name(tenantUser.getUserCode()); userCore.setNick_name(tenantUser.getUserName()); // 用户类型 先默认设置为2 userCore.setUser_type(2); userCore.setPhonenumber(tenantUser.getUserPhone()); userCore.setSex(tenantUser.getSex().toString()); // 初始化密码 123456 String pws = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue(); userCore.setPassword(pws); // 平台用户表和系统用户 表状态相反 if (tenantUser.getStatus() == 0) { userCore.setStatus(1); } else { userCore.setStatus(0); } userCore.setDel_flag(0); userCore.setCreate_by(this.getCurrentUser().getUser_name()); userCore.setCreate_time(DateUtils.getDateTimeNumber(System.currentTimeMillis())); userCore.setRemark(tenantUser.getRemark()); userCore.setType(1); userCore.setBind_client_id("0"); userCore.setBind_wechat(0); userCore.setModify_pwd(0); userCore.setBind_mobile(0); userCore.setBind_mail(0); userCore.setProfile_id(0L); userCore.setIs_wechat_public(0); userCore.setIs_wechat_routine(0); userCore.setIs_wechat_ios(0); userCore.setIs_wechat_android(0); userCore.setIs_logoff(0); userCore.setLogoff_time(0L); userCore.setIs_sms(0); // 管理员类型:1= 平台超管, 2=商户超管, 3=系统管理员,4=商户管理员 userCore.setType(1); // 商户id,0-平台 userCore.setMer_id(0L); return userCore; } /** * @Description 批量导入用户 * @Author jlq * @Date 2023/10/12 15:56 */ @PostMapping("/import") public ResponseValue importUser(@RequestParam String tenantId, @RequestParam String tenantCode, MultipartFile file) throws IOException { String originalFilename = file.getOriginalFilename(); if (!originalFilename.endsWith("xls")) { return ResponseValue.error("文件格式有误!"); } S_user_core currentUser = this.getCurrentUser(); if (currentUser == null) { return ResponseValue.error("当前登录用户为空"); } if (StringUtils.isEmpty(tenantId) || StringUtils.isEmpty(tenantCode)) { return ResponseValue.error("添加时请选择区县"); } List roles = this.roleService.select(new S_role()); ArrayList finSysTenantUsers = new ArrayList<>(); EasyExcelFactory .read(file.getInputStream(), ImportUserParam.class, new AnalysisEventListener() { @Override public void invoke(ImportUserParam data, AnalysisContext context) { if (StringUtils.isEmpty(data.getUserName()) || StringUtils.isEmpty(data.getUserCode()) || StringUtils.isEmpty(data.getUserPhone()) || null == data.getSex() || StringUtils.isEmpty(data.getEmail()) || null == data.getSeq() || StringUtils.isEmpty(data.getRoleName())) { throw new ImportUserParamVerifyException("单元格不能为空!"); } // 根据员工编号查询,如果存在则提示 if (finSysTenantUserService.getByUserCode(data.getUserCode()) != null) { throw new ImportUserParamVerifyException("员工编号为空或已存在!"); } if (data.getSex() < 1 && data.getSex() > 0) { throw new ImportUserParamVerifyException("性别码只能为 0 或 1"); } FinSysTenantUser user = new FinSysTenantUser(); user.setUserName(data.getUserName()); user.setUserCode(data.getUserCode()); user.setUserPhone(data.getUserPhone()); user.setSex(data.getSex()); user.setEmail(data.getEmail()); user.setSeq(data.getSeq()); user.setTenantId(tenantId); user.setTenantCode(tenantCode); // 设置角色 Optional sRole = roles.stream().filter(role -> role.getRole_name().equals(data.getRoleName())).findFirst(); user.setRoleList(Arrays.asList(sRole.orElse(new S_role()).getRole_id())); user.setId(NumberGenerator.getLongSequenceNumber()); user.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis())); user.setCreateBy(currentUser.getUser_name()); user.setUpdateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis())); user.setUpdateBy(currentUser.getUser_name()); user.setStatus(1);// 0禁用 1启用 user.setIsDelete(0);// 是否删除 0是 1否 user.setSysUserId(NumberGenerator.getLongSequenceNumber()); user.setRemark("批量导入"); // 加密手机号 setUserPhone(user, data.getUserPhone()); user.setIsDelete(1); // 怎么获取左侧机构树数据 user.setSysDeptId(3L); // 对应平台机构id 默认为平台管理 finSysTenantUsers.add(user); } @Override public void doAfterAllAnalysed(AnalysisContext context) { } @Override public void onException(Exception exception, AnalysisContext context) throws Exception { if (exception != null) { // 如果是某一个单元格的转换异常 能获取到具体行号 封装时异常 if (exception instanceof ExcelDataConvertException) { ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception; logger.error("第{}行,第{}列解析异常,数据为:{}", excelDataConvertException.getRowIndex(), excelDataConvertException.getColumnIndex() + 1, excelDataConvertException.getCellData().getStringValue()); throw new IllegalStateException("第" + (excelDataConvertException.getRowIndex() + 1) + "行,第" + (excelDataConvertException.getColumnIndex() + 1) + "列解析异常,异常数据为:[ " + excelDataConvertException.getCellData().getStringValue() + " ]"); } if (exception instanceof ImportUserParamVerifyException) { throw new IllegalStateException("第" + context.readSheetHolder().getRowIndex() + "行, 解析错误:[ " + exception.getMessage() + " ]"); } throw exception; } } }).sheet().doRead(); insertUserAndUserCoreBatch(finSysTenantUsers); return ResponseValue.success(); } /** * 批量插入用户表和平台用户表 */ @Transactional(rollbackFor = Exception.class) public void insertUserAndUserCoreBatch(List finSysTenantUsers) { ArrayList sUserCores = new ArrayList<>(); for (FinSysTenantUser user : finSysTenantUsers) { // 插入平台用户 S_user_core userCore = getsUserCore(user); sUserCores.add(userCore); } // 保存用户信息 this.finSysTenantUserService.insertBatch(finSysTenantUsers); // 保存平台用户信息 this.userService.insertBatch(sUserCores); // 保存角色权限信息 this.finSysTenantUserService.execInsertRoleUserList(finSysTenantUsers); } public static class ImportUserParamVerifyException extends RuntimeException { public ImportUserParamVerifyException() { super(); } public ImportUserParamVerifyException(String message) { super(message); } } /** * @Description 编辑 * @Author wh * @Date 2023/7/17 14:33 */ @PostMapping("/update") @Transactional(rollbackFor = Exception.class) public ResponseValue update() { FinSysTenantUser user = CommonUtil.getObjFromReqBody(FinSysTenantUser.class); FinSysTenantUser tenantUser = new FinSysTenantUser(); CommonUtil.copyProperties(user, tenantUser); if (tenantUser == null) { return ResponseValue.error("参数为空"); } setUserPhone(tenantUser, tenantUser.getUserPhone()); // 1.更新系统用户 FIN_SYS_TENANT_USER finSysTenantUserService.update(tenantUser); // 2.更新平台用户 S_USER_CORE S_user_core userCore = buildUpdateUserCore(user); this.userService.update(userCore); // 3. 更新角色配置 S_ROLE_USER // 1. 根据 user.getSysUserId() 查询 // 已有的权限 Long sysUserId = user.getSysUserId(); List list = finSysTenantUserService.getRoleBySysUserId(sysUserId); // 选择的权限 List roleList = user.getRoleList(); // 先删除再添加 if (!CollectionUtils.isEmpty(list)) { finSysTenantUserService.execDelRoleUserList(sysUserId); // 删除库管员信息记录 list.stream().filter(item -> "仓库管理员".equals(item.getRole_name())).findFirst() .ifPresent(item -> baseWarehouseManagerService.deleteMangerBySysUserId(sysUserId)); } if (!CollectionUtils.isEmpty(roleList)) { // 因为不知道该用户需要管理那个仓库 故不新增仓库管理员信息,只添加角色 finSysTenantUserService.execInsertRoleUserList(roleList, sysUserId); } this.getFinSysTenantUserCache().remove(sysUserId.toString()); return ResponseValue.success(1); } private S_user_core buildUpdateUserCore(FinSysTenantUser user) { S_user_core userCore = new S_user_core(); userCore.setId(user.getSysUserId()); userCore.setUpdate_by(this.getCurrentUser().getUser_name()); userCore.setUpdate_time(DateUtils.getDateTimeNumber(System.currentTimeMillis())); // 平台用户表和系统用户 表状态相反 if (user.getStatus() == 0) { userCore.setStatus(1); } else { userCore.setStatus(0); } if (user.getSex() != null) { userCore.setSex(user.getSex().toString()); } userCore.setRemark(user.getRemark()); userCore.setNick_name(user.getUserName()); // 加密手机号 userCore.setPhonenumber(user.getUserPhone()); return userCore; } /** * @Description 状态修改/逻辑删除 * @Author wh * @Date 2023/7/17 14:35 */ @PostMapping("/updateStatus") @Transactional(rollbackFor = Exception.class) public ResponseValue updateStatus() { FinSysTenantUserParam user = CommonUtil.getObjFromReqBody(FinSysTenantUserParam.class); FinSysTenantUser tenantUser = new FinSysTenantUser(); CommonUtil.copyProperties(user, tenantUser); if (tenantUser == null) { return ResponseValue.error("参数为空"); } // 1.更新系统用户 FIN_SYS_TENANT_USER 应该是查询 然后只改状态 FinSysTenantUser finSysTenantUser = finSysTenantUserService.queryOneById(tenantUser.getId().toString()); if (finSysTenantUser == null) { return ResponseValue.error("用户不存在"); } finSysTenantUser.setStatus(user.getStatus()); finSysTenantUserService.update(finSysTenantUser); // 2.更新平台用户 S_USER_CORE S_user_core userCore = buildUpdateUserCore(finSysTenantUser); this.userService.update(userCore); return ResponseValue.success(1); } /** * @Description 密码初始化 * @Author wh * @Date 2023/7/17 14:36 */ @PostMapping("/defaultPassword") public ResponseValue defaultPassword() { FinSysTenantUserParam user = CommonUtil.getObjFromReqBody(FinSysTenantUserParam.class); FinSysTenantUserParam tenantUser = new FinSysTenantUserParam(); CommonUtil.copyProperties(user, tenantUser); user = tenantUser; if (Objects.isNull(user)) { return ResponseValue.error("用户信息不存在"); } // 初始化密码 123456 // 密文 String password = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue(); // 1. 修改用户表 // 用户表id Long sysUserId = user.getSysUserId(); S_user_core userCore = new S_user_core(); userCore.setId(sysUserId); userCore.setPassword(password); userCore.setModify_pwd(0); userService.update(userCore); // 2. 修改平台用户(不用修改) return ResponseValue.success(1); } /** * @Description 根据id获取用户信息 * @Author wh * @Date 2023/7/17 14:38 */ @GetMapping("/detail") public ResponseValue detail(Long id) { if (id == null || id.longValue() <= 0) { return ResponseValue.error("用户信息不存在"); } FinSysTenantUser finSysTenantUser = this.finSysTenantUserService.get(new FinSysTenantUser(id)); if (finSysTenantUser == null) { return ResponseValue.error("用户信息不存在"); } String phone = AESUtils.decryptStrAES(finSysTenantUser.getUserPhone(), PlatformRSAUtils.AES_KEY); finSysTenantUser.setUserPhone(phone); Long sysUserId = finSysTenantUser.getSysUserId(); List roleList = finSysTenantUserService.getRoleBySysUserId(sysUserId); // 过滤仓库管理员的显示 roleList.removeIf(role -> "仓库管理员".equals(role.getRole_name())); HashMap map = new HashMap<>(); map.put("list", roleList); map.put("data", finSysTenantUser); return ResponseValue.success(map); } /** * 得到 当前登录用户的信息 增加 父类机构的code * * @param * @return */ @GetMapping("/getCurInfo") public ResponseValue getCurInfo() { FinSysTenantUser sysInfo = getSysInfo(); if (sysInfo != null || sysInfo.getLv() > 0) { // 解密手机号 String key = PlatformRSAUtils.AES_KEY; String userPhone = sysInfo.getUserPhone(); if (userPhone != null) { sysInfo.setUserPhone(AESUtils.decryptStrAES(userPhone, key)); } // 查询 用户角色 // 已有的权限 List list = finSysTenantUserService.getRoleBySysUserId(sysInfo.getSysUserId()); for (S_role s_role : list) { // TODO 临时解决 将来放配置文件中 if (s_role.getRole_id() != null && s_role.getRole_id().equals(1690961420053L)) { sysInfo.setKfStatus(1); } } // 查询父类的orgcode 需要将自己的org先查出来 再根据parentid 查父类 String tenantId = sysInfo.getTenantId(); if (StringUtils.isNotEmpty(tenantId)) { FinSysTenant finSysTenant = finSysTenantService.get(new FinSysTenant(Long.valueOf(tenantId))); if (finSysTenant != null && finSysTenant.getParentId() != null) { FinSysTenant parentTenant = finSysTenantService.get(new FinSysTenant(finSysTenant.getParentId())); if (ObjectUtils.isNotEmpty(parentTenant)) { sysInfo.setParentCode(parentTenant.getCode()); } } } } return ResponseValue.success(sysInfo); } /** * 更新角色权限 * * @return */ @PostMapping("/updRole") public ResponseValue updRole() { FinSysTenantUser user = CommonUtil.getObjFromReqBody(FinSysTenantUser.class); FinSysTenantUser tenantUser = new FinSysTenantUser(); CommonUtil.copyProperties(user, tenantUser); user = tenantUser; if (user == null) { return ResponseValue.error("参数为空"); } // 1. 根据 user.getSysUserId() 查询 // 已有的权限 List list = finSysTenantUserService.getRoleBySysUserId(user.getSysUserId()); // 选择的权限 List roleList = user.getRoleList(); // 先删除再添加 if (!CollectionUtils.isEmpty(list)) { Long sysUserId = user.getSysUserId(); finSysTenantUserService.execDelRoleUserList(sysUserId); // 删除库管员信息记录 list.stream().filter(item -> "仓库管理员".equals(item.getRole_name())).findFirst() .ifPresent(item -> baseWarehouseManagerService.deleteMangerBySysUserId(sysUserId)); } if (!CollectionUtils.isEmpty(roleList)) { finSysTenantUserService.execInsertRoleUserList(roleList, user.getSysUserId()); } return ResponseValue.success(1); } /** * @Description 新增 * @Author llb * @Date 2023/7/17 15:56 */ @PostMapping("/addSupplier") @Transactional(rollbackFor = Exception.class) public ResponseValue addSupplier() { FinSysTenantUserParam userParam = CommonUtil.getObjFromReqBody(FinSysTenantUserParam.class); FinSysTenantUser user = new FinSysTenantUser(); CommonUtil.copyProperties(userParam, user); if (user == null) { return ResponseValue.error("参数为空"); } // 获取运维管理 List depts = this.finSysTenantUserService.selectDept(roleName); if (CollectionUtils.isEmpty(depts)) { return ResponseValue.error(roleName + "的角色不存在"); } // 根据员工编号查询,如果存在则提示 if (finSysTenantUserService.getByUserCode(user.getUserCode()) != null) { return ResponseValue.error("员工编号重复"); } FinSysTenantUser sysInfo = this.getSysInfo(); // 插入系统用户 buildTenantUser(user, sysInfo); this.finSysTenantUserService.insert(user); // 插入平台用户 S_user_core userCore = buildUpdateUserCore(user); // 部门 userCore.setDept_id(depts.get(0).getId()); userCore.setType(2); this.userService.insert(userCore); // 插入平台机构 // 少角色id List roleList = user.getRoleList(); // 机构id 多个 Long sysUserId = user.getSysUserId(); // 用户id this.finSysTenantUserService.execInsertRoleUserList(roleList, sysUserId); return ResponseValue.success(1); } private final Set picFormatArr = new HashSet() { { add(".pjp"); add(".svgz"); add(".jxl"); add(".jpeg"); add(".ico"); add(".avif"); add(".tif"); add(".gif"); add(".jfif"); add(".jpg"); add(".svg"); add(".png"); add(".xbm"); add(".pjpeg"); add(".bmp"); add(".webp"); } }; @PostMapping("/updatePerson") @Transactional(rollbackFor = Exception.class) public ResponseValue updatePerson() { FinSysTenantUserParam userParam = CommonUtil.getObjFromReqBody(FinSysTenantUserParam.class); FinSysTenantUserParam tenantUser = new FinSysTenantUserParam(); CommonUtil.copyProperties(userParam, tenantUser); userParam = tenantUser; if (userParam == null) { return ResponseValue.error("参数为空"); } FinSysTenantUser sysInfo = getSysInfo(); if (sysInfo == null) { return ResponseValue.error("用户信息不存在"); } String avatar = userParam.getAvatar(); if (StringUtils.isNotEmpty(avatar) && !picFormatArr.contains(avatar.substring(avatar.lastIndexOf(".")))) { return ResponseValue.error("头像格式不允许"); } FinSysTenantUser updUser = new FinSysTenantUser(); updUser.setId(sysInfo.getId()); updUser.setAvatar(avatar); updUser.setEmail(userParam.getEmail()); updUser.setUserName(userParam.getUserName()); updUser.setSex(userParam.getSex()); setUserPhone(updUser, userParam.getUserPhone()); // 1.更新系统用户 FIN_SYS_TENANT_USER finSysTenantUserService.update(updUser); // 2.更新平台用户 S_USER_CORE S_user_core userCore = new S_user_core(); userCore.setId(sysInfo.getSysUserId()); userCore.setUpdate_by(this.getCurrentUser().getUser_name()); userCore.setUpdate_time(DateUtils.getDateTimeNumber(System.currentTimeMillis())); userCore.setNick_name(updUser.getUserName()); userCore.setEmail(updUser.getEmail()); // 加密手机号 userCore.setPhonenumber(updUser.getUserPhone()); this.userService.update(userCore); this.getFinSysTenantUserCache().remove(String.valueOf(sysInfo.getSysUserId())); this.getUserCacheProvider().removeUser(sysInfo.getSysUserId()); return ResponseValue.success(1); } /** * @Description 修改密码 */ @PostMapping("/updatePassword") public ResponseValue updatePassword() { FinSysTenantUserUpdParam param = CommonUtil.getObjFromReqBody(FinSysTenantUserUpdParam.class); FinSysTenantUserUpdParam finSysTenantParam = new FinSysTenantUserUpdParam(); CommonUtil.copyProperties(param, finSysTenantParam); param = finSysTenantParam; String oldMixPd = param.getOldMixPd(); String newMixPd = param.getNewMixPd(); String btnMixPd = param.getBtnMixPd(); // 校验参数 if (StringUtils.isEmpty(oldMixPd) || StringUtils.isEmpty(newMixPd) || StringUtils.isEmpty(btnMixPd)) { return ResponseValue.error("信息不能为空!"); } FinSysTenantUser sysInfo = getSysInfo(); if (sysInfo == null) { return ResponseValue.error("用户信息不存在"); } // 校验俩次输入的密码 btnMixPd = PlatformRSAUtils.getRsaDecryptValue(btnMixPd, PlatformRSAUtils.PRIK); newMixPd = PlatformRSAUtils.getRsaDecryptValue(newMixPd, PlatformRSAUtils.PRIK); if (!newMixPd.equals(btnMixPd)) { return ResponseValue.error("新密码与确认密码不一致!"); } // 数字+字母+特殊符合,最少8位 if (StringUtils.isEmpty(btnMixPd) || btnMixPd.length() < 8 || btnMixPd.length() > 12) { return ResponseValue.error("密码级别过低,请输入:8-12个字符"); } String validatePasswordRule = this.validatePasswordRule(btnMixPd); if (validatePasswordRule != null) { return ResponseValue.error(validatePasswordRule); } // 用户表id Long sysUserId = sysInfo.getSysUserId(); S_user_core queryU = new S_user_core(); queryU.setId(sysUserId); S_user_core queryUserInfo = userService.get(queryU); if (queryUserInfo == null) { return ResponseValue.error("用户信息不存在"); } oldMixPd = PlatformRSAUtils.getRsaDecryptValue(oldMixPd, PlatformRSAUtils.PRIK); // 校验老密码 if (!this.matchesPassword(oldMixPd, queryUserInfo.getPassword())) { return ResponseValue.error("旧密码输入有误!"); } if (oldMixPd.equalsIgnoreCase(btnMixPd)) { return ResponseValue.error("新密码不能与旧密码相同!"); } // 更新数据库 // 1. 修改用户表 queryU.setPassword(this.encryptPassword(btnMixPd)); queryU.setModify_pwd(1); userService.update(queryU); // 2. 修改平台用户(不用修改) return ResponseValue.success(1); } @ApiOperation(value = "根据机构id查询部门中的用户", notes = "根据机构id查询部门中的用户") @ApiImplicitParams({ @ApiImplicitParam(name = "agencyId", value = "机构id", required = true, dataType = "Long", paramType = "query")}) @GetMapping("/select/department") public ResponseValue selectDepartment(Long agencyId) { FinSysTenantVO finSysTenantVO = new FinSysTenantVO(); FinSysTenant finSysTenant = new FinSysTenant(); finSysTenant.setId(agencyId); FinSysTenant sysTenant = finSysTenantService.select(finSysTenant).get(0); finSysTenantVO.setId(sysTenant.getId()); finSysTenantVO.setName(sysTenant.getName()); finSysTenantVO.setType("tenant"); // 部门 FinSysTenantDepartment finSysTenantDepartment = new FinSysTenantDepartment(); finSysTenantDepartment.setTenantId(agencyId); finSysTenantDepartment.setStatus(StatesType.NORMAL.getValue()); finSysTenantDepartment.setIsDelete(0); List tenantDepartmentList = finSysTenantDepartmentService.select(finSysTenantDepartment); List departmentVOList = Lists.newArrayList(); tenantDepartmentList.forEach(department -> { DepartmentVO departmentVO = new DepartmentVO(); // 用户 Long id = department.getId(); departmentVO.setId(id); departmentVO.setName(department.getName()); departmentVO.setType("department"); String sql = "SELECT SYS_USER_ID,USER_NAME FROM fin_sys_tenant_user " + "WHERE STATUS =1 and SYS_DEPT_ID =:deptId AND SYS_USER_ID NOT IN(SELECT MANAGER_ID FROM base_warehouse_manager)"; Map param = new HashMap<>(); param.put("deptId", id); List> select = finSysTenantUserService.select(sql, param, new MapperUtil()); List userVOList = Lists.newArrayList(); select.forEach(user -> { UserVO userVO = new UserVO(); userVO.setId((Long)user.get("sysUserId")); userVO.setName(user.get("userName").toString()); userVO.setType("user"); userVOList.add(userVO); }); departmentVO.setChildren(userVOList); departmentVOList.add(departmentVO); }); finSysTenantVO.setChildren(departmentVOList); return ResponseValue.success(finSysTenantVO); } @GetMapping("/query/role") public ResponseValue pageList() { RolePageParam roleParam = CommonUtil.getObjFromReq(RolePageParam.class); RolePageParam param2 = new RolePageParam(); CommonUtil.copyProperties(roleParam, param2); roleParam = param2; if (roleParam != null && roleParam.getOrgId() > 0L) { long orgId = 0L; if (!this.isSupervisor()) { orgId = this.getCurrentUser().getOrg_id(); } else { orgId = roleParam.getOrgId(); } FinSysTenantUser finSysTenantUser = this.getSysInfo(); Integer dataScope = finSysTenantUser.getLv(); GenericPager pager = finSysTenantUserService.queryPageRoleList(orgId, roleParam.getStatus(), roleParam.getRoleName(), dataScope,roleParam.getPageNum(), roleParam.getPageSize()); return ResponseValue.success(pager); } else { return ResponseValue.error("参数不能为空"); } } }