package com.consum.base.controller; import cn.hutool.core.util.ReflectUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.annotation.ExcelProperty; 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.utils.MapperUtil; import com.consum.base.pojo.FinSysTenantUserSearchParam; import com.consum.base.pojo.FinSysTenantUserUpdParam; 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.FinSysTenantDepartmentServiceImpl; import com.consum.base.service.FinSysTenantServiceImpl; import com.consum.base.service.FinSysTenantUserServiceImpl; 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.DeptServiceImpl; 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_config; 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.*; 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; import org.apache.commons.compress.utils.Lists; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.lang.reflect.Field; import java.util.*; /** * @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 FinSysTenantUserServiceImpl finSysTenantUserService; private UserServiceImpl userService; private DeptServiceImpl deptService; private FinSysTenantServiceImpl finSysTenantService; private RoleServiceImpl roleService; @Autowired private FinSysTenantDepartmentServiceImpl finSysTenantDepartmentService; @Autowired public void setUserService(UserServiceImpl userService) { this.userService = userService; } private S_config sConfig; @Autowired public FinSysTenantUserController(FinSysTenantServiceImpl finSysTenantService, FinSysTenantUserServiceImpl finSysTenantUserService, RoleServiceImpl roleService) { this.finSysTenantUserService = finSysTenantUserService; this.finSysTenantService = finSysTenantService; this.roleService = roleService; } /** * @Description 分页列表查询 * @Author wh * @Date 2023/7/11 13:59 */ @RequestMapping("/select/list") public ResponseValue allocatedList(FinSysTenantUserSearchParam param) { if (param.getTenantCode() == 0) { FinSysTenantUser user = new FinSysTenantUser(); Long id = this.getCurrentUser().getId(); user.setSysUserId(id); List select = finSysTenantUserService.select(user); if (select.size() > 0) { param.setTenantCode(new Long(select.get(0).getTenantCode())); } } GenericPager pager = this.finSysTenantUserService.queryAllPageUser(param); List resultList = Lists.newArrayList(); List datas = pager.getDatas(); if (datas.size() > 0) { for (FinSysTenantUser finSysTenantUser : datas) { FinSysTenantUserVO userVO = new FinSysTenantUserVO(); if (finSysTenantUser.getUserPhone() != null) { // 解密并脱敏 String tel = null; try { tel = AESUtils.decryptStrAES(finSysTenantUser.getUserPhone(), PlatformRSAUtils.AES_KEY); } catch (Exception e) { logger.error("解密手机号失败,原因:" + e); tel = null; } if (StringUtils.isNotEmpty(tel)) { finSysTenantUser.setUserPhone(PhoneNumberUtils.maskMobile(tel)); } else { finSysTenantUser.setUserPhone(""); } } else { finSysTenantUser.setUserPhone(""); } // 循环去查角色 Long sysUserId = finSysTenantUser.getSysUserId(); if (sysUserId != null) { List list = finSysTenantUserService.getByUserId(sysUserId); String roleStr = ""; for (S_role s_role : list) { roleStr = roleStr + s_role.getRole_name() + " "; } finSysTenantUser.setRoleStr(roleStr); } //循环查询运维商id if (finSysTenantUser.getSupplierId() != null) { finSysTenantUser.setIsSupplier("是"); } else { finSysTenantUser.setIsSupplier("否"); } BeanUtils.copyProperties(finSysTenantUser, userVO); Long sysDeptId = finSysTenantUser.getSysDeptId(); FinSysTenantDepartment department = finSysTenantDepartmentService.getById(sysDeptId); if (Objects.nonNull(department)) { userVO.setSysDeptName(department.getName()); } resultList.add(userVO); } } try { Field fieldDatas = GenericPager.class.getDeclaredField("datas"); // fieldDatas.setAccessible(true); // fieldDatas.set(pager, resultList); ReflectUtil.setFieldValue(pager, fieldDatas, resultList); } catch (Exception e) { e.printStackTrace(); } 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(@RequestBody FinSysTenantUser user) { if (user == null) { return ResponseValue.error("参数为空"); } //根据员工编号查询,如果存在则提示 if (finSysTenantUserService.getByUserCode(user.getUserCode()) != null && finSysTenantUserService.getByUserCode(user.getUserCode()) > 0) { return ResponseValue.error("员工编号重复"); } if (user.getTenantId() == null || "".equals(user.getTenantId()) || new Integer(user.getTenantId()) == 0) { return ResponseValue.error("添加时请选择区县"); } if (user.getTenantCode() == null || "".equals(user.getTenantCode()) || new Integer(user.getTenantCode()) == 0) { return ResponseValue.error("添加时请选择区县"); } //插入系统用户 user.setId(NumberGenerator.getLongSequenceNumber()); user.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis())); user.setCreateBy(this.getCurrentUser().getUser_name()); user.setUpdateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis())); user.setUpdateBy(this.getCurrentUser().getUser_name()); //user.setStatus(1);// 0禁用 1启用 user.setIsDelete(0); user.setSysUserId(NumberGenerator.getLongSequenceNumber()); // 加密手机号 String key = PlatformRSAUtils.AES_KEY; String encPhone = ""; if (user.getUserPhone() != null) { encPhone = AESUtils.encryptStrAES(user.getUserPhone(), key); } user.setUserPhone(encPhone); //怎么获取左侧机构树数据 user.setSysDeptId(3L); //对应平台机构id 默认为平台管理 this.finSysTenantUserService.insert(user); // 插入平台用户 S_user_core userCore = new S_user_core(); userCore.setId(user.getSysUserId()); userCore.setDept_id(3L); //部门id,目前写死 userCore.setOrg_id(user.getSysDeptId()); //机构id userCore.setOrg_id(1L); userCore.setUser_name(user.getUserCode()); //用户账号 userCore.setNick_name(user.getUserName()); //用户类型 先默认设置为2 userCore.setUser_type(2); userCore.setPhonenumber(encPhone); userCore.setSex(user.getSex().toString()); //初始化密码 123456 String pws = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue(); userCore.setPassword(pws); // 平台用户表和系统用户 表状态相反 if (user.getStatus() == 0) { user.setStatus(1); } else { user.setStatus(0); } userCore.setStatus(user.getStatus()); userCore.setDel_flag(0); userCore.setCreate_by(this.getCurrentUser().getUser_name()); userCore.setCreate_time(DateUtils.getDateTimeNumber(System.currentTimeMillis())); userCore.setRemark(user.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); this.userService.insert(userCore); // 插入平台机构 //少角色id List roleList = user.getRoleList(); //机构id 多个 if (!CollectionUtils.isEmpty(roleList)) { Long sysUserId = user.getSysUserId(); //用户id this.finSysTenantUserService.execInsertRoleUserList(roleList, sysUserId); } // this.getFinCustomerCache().remove(); return ResponseValue.success(1); } public static class ImportUserParam { @ExcelProperty("用户姓名") private String userName; @ExcelProperty("用户编号") private String userCode; @ExcelProperty("手机号") private String userPhone; @ExcelProperty("性别(1男,2女)") private Integer sex; @ExcelProperty("电子邮箱") private String email; @ExcelProperty("顺序号") private Long seq; @ExcelProperty("角色名称") private String roleName; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserCode() { return userCode; } public void setUserCode(String userCode) { this.userCode = userCode; } public String getUserPhone() { return userPhone; } public void setUserPhone(String userPhone) { this.userPhone = userPhone; } public Integer getSex() { return sex; } public void setSex(Integer sex) { this.sex = sex; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Long getSeq() { return seq; } public void setSeq(Long seq) { this.seq = seq; } public String getRoleName() { return roleName; } public void setRoleName(String roleName) { this.roleName = roleName; } } /** * @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 (!"xls".equals(originalFilename.substring(originalFilename.lastIndexOf(".") + 1))) { 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<>(); EasyExcel.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()) > 0) { 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("批量导入"); // 加密手机号 String key = PlatformRSAUtils.AES_KEY; String encPhone = AESUtils.encryptStrAES(data.getUserPhone(), key); user.setUserPhone(encPhone); 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 = new S_user_core(); userCore.setId(user.getSysUserId()); userCore.setDept_id(3L); //部门id,目前写死 userCore.setOrg_id(user.getSysDeptId()); //机构id userCore.setOrg_id(1L); userCore.setUser_name(user.getUserCode()); //用户账号 userCore.setNick_name(user.getUserName()); //用户类型 先默认设置为2 userCore.setUser_type(2); userCore.setPhonenumber(user.getUserPhone()); userCore.setSex(user.getSex().toString()); //初始化密码 123456 String pws = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue(); userCore.setPassword(pws); // 平台用户表和系统用户 表状态相反 if (user.getStatus() == 0) { user.setStatus(1); } else { user.setStatus(0); } userCore.setStatus(user.getStatus()); userCore.setDel_flag(0); userCore.setCreate_by(this.getCurrentUser().getUser_name()); userCore.setCreate_time(DateUtils.getDateTimeNumber(System.currentTimeMillis())); userCore.setRemark(user.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); 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(@RequestBody FinSysTenantUser user) { if (user == null) { return ResponseValue.error("参数为空"); } String key = PlatformRSAUtils.AES_KEY; String encPhone = ""; if (user.getUserPhone() != null) { encPhone = AESUtils.encryptStrAES(user.getUserPhone(), key); } user.setUserPhone(encPhone); // 1.更新系统用户 FIN_SYS_TENANT_USER finSysTenantUserService.update(user); // 2.更新平台用户 S_USER_CORE 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) { user.setStatus(1); } else { user.setStatus(0); } userCore.setStatus(user.getStatus()); if (user.getSex() != null) { userCore.setSex(user.getSex().toString()); } userCore.setRemark(user.getRemark()); userCore.setNick_name(user.getUserName()); // 加密手机号 userCore.setPhonenumber(user.getUserPhone()); this.userService.update(userCore); // 3. 更新角色配置 S_ROLE_USER // 1. 根据 user.getSysUserId() 查询 List list = finSysTenantUserService.getByUserId(user.getSysUserId()); //已有的权限 List roleList = user.getRoleList(); //选择的权限 //先删除再添加 if (list != null && list.size() > 0) { finSysTenantUserService.execDelRoleUserList(user.getSysUserId()); } if (roleList != null && roleList.size() > 0) { finSysTenantUserService.execInsertRoleUserList(roleList, user.getSysUserId()); } this.getFinSysTenantUserCache().remove(user.getSysUserId() + ""); return ResponseValue.success(1); } /** * @Description 状态修改/逻辑删除 * @Author wh * @Date 2023/7/17 14:35 */ @PostMapping("/updateStatus") @Transactional(rollbackFor = Exception.class) public ResponseValue updateStatus(@RequestBody FinSysTenantUser user) { if (user == null) { return ResponseValue.error("参数为空"); } // 1.更新系统用户 FIN_SYS_TENANT_USER 应该是查询 然后只改状态 List select = finSysTenantUserService.select(new FinSysTenantUser(user.getId())); if (select == null || select.size() == 0) { return ResponseValue.error("用户不存在"); } FinSysTenantUser finSysTenantUser = select.get(0); finSysTenantUser.setStatus(user.getStatus()); finSysTenantUserService.update(finSysTenantUser); // 2.更新平台用户 S_USER_CORE 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) { user.setStatus(1); } else { user.setStatus(0); } userCore.setStatus(user.getStatus()); this.userService.update(userCore); return ResponseValue.success(1); } /** * @Description 密码初始化 * @Author wh * @Date 2023/7/17 14:36 */ @PostMapping("/defaultPassword") public ResponseValue defaultPassword(@RequestBody FinSysTenantUser finSysTenantUser) { if (finSysTenantUser == null) { return ResponseValue.error("用户信息不存在"); } //初始化密码 123456 String stringValue = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue();// 密文 // 1. 修改用户表 //用户表id Long sysUserId = finSysTenantUser.getSysUserId(); S_user_core userCore = new S_user_core(); userCore.setId(sysUserId); userCore.setPassword(stringValue); 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 s = AESUtils.decryptStrAES(finSysTenantUser.getUserPhone(), PlatformRSAUtils.AES_KEY); finSysTenantUser.setUserPhone(s); Long sysUserId = finSysTenantUser.getSysUserId(); List list = finSysTenantUserService.getByUserId(sysUserId); HashMap map = new HashMap<>(); map.put("list", list); 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)); } // 查询 用户角色 TODO 临时解决 将来放配置文件中 List list = finSysTenantUserService.getByUserId(sysInfo.getSysUserId()); //已有的权限 for (S_role s_role : list) { if (s_role.getRole_id() != null && s_role.getRole_id().equals(1690961420053L)) { sysInfo.setKfStatus(1); } } // 查询父类的orgcode 需要将自己的org先查出来 再根据parentid 查父类 String tenantId = sysInfo.getTenantId(); if (tenantId != null && !tenantId.equals("")) { List select = finSysTenantService.select(new FinSysTenant(Long.valueOf(tenantId))); if (select != null && select.size() > 0) { FinSysTenant finSysTenant = select.get(0); if (finSysTenant != null && finSysTenant.getParentId() != null) { List parents = finSysTenantService.select(new FinSysTenant(finSysTenant.getParentId())); if (parents != null && parents.size() > 0) { sysInfo.setParentCode(parents.get(0).getCode()); } } } } } return ResponseValue.success(sysInfo); } /** * 更新角色权限 * * @param user * @return */ @PostMapping("/updRole") public ResponseValue updRole(@RequestBody FinSysTenantUser user) { if (user == null) { return ResponseValue.error("参数为空"); } // 1. 根据 user.getSysUserId() 查询 List list = finSysTenantUserService.getByUserId(user.getSysUserId()); //已有的权限 List roleList = user.getRoleList(); //选择的权限 //先删除再添加 if (list != null && list.size() > 0) { finSysTenantUserService.execDelRoleUserList(user.getSysUserId()); } if (roleList != null && roleList.size() > 0) { 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(@RequestBody FinSysTenantUser user) { if (user == null) { return ResponseValue.error("参数为空"); } // 获取运维管理 List depts = this.finSysTenantUserService.selectDept(roleName); if (depts == null || depts.size() == 0) { return ResponseValue.error(roleName + "的角色不存在"); } //根据员工编号查询,如果存在则提示 if (finSysTenantUserService.getByUserCode(user.getUserCode()) != null && finSysTenantUserService.getByUserCode(user.getUserCode()) > 0) { return ResponseValue.error("员工编号重复"); } FinSysTenantUser sysInfo = this.getSysInfo(); //插入系统用户 user.setId(NumberGenerator.getLongSequenceNumber()); user.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis())); user.setCreateBy(this.getCurrentUser().getUser_name()); user.setUpdateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis())); user.setUpdateBy(this.getCurrentUser().getUser_name()); user.setIsDelete(0);// 是否删除 0是 1否 user.setSysUserId(NumberGenerator.getLongSequenceNumber()); user.setIsDelete(1); user.setLv(sysInfo.getLv()); user.setTenantCode(sysInfo.getTenantCode()); user.setTenantId(sysInfo.getTenantId()); user.setSysDeptId(2l); //运维管理 // 加密手机号 String key = PlatformRSAUtils.AES_KEY; String userPhone = user.getUserPhone(); String encPhone = ""; if (userPhone != null) { encPhone = AESUtils.encryptStrAES(userPhone, key); user.setUserPhone(encPhone); } this.finSysTenantUserService.insert(user); // 插入平台用户 S_user_core userCore = new S_user_core(); userCore.setId(user.getSysUserId()); userCore.setDept_id(depts.get(0).getId()); //部门 userCore.setOrg_id(1L); //userCore.setUser_name(); //用户账号 userCore.setUser_name(user.getUserCode()); //用户账号 userCore.setNick_name(user.getUserName()); //用户类型 先默认设置为2 userCore.setUser_type(2); userCore.setPhonenumber(userPhone); //初始化密码 123456 String pws = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue(); userCore.setPassword(pws); if (user.getStatus() == 0) { userCore.setStatus(1); } else { userCore.setStatus(0); } userCore.setDel_flag(0); userCore.setCreate_by(this.getCurrentUser().getCreate_by()); userCore.setCreate_time(DateUtils.getDateTimeNumber()); userCore.setRemark(user.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(2); //商户id,0-平台 userCore.setMer_id(0L); 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 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(@RequestBody FinSysTenantUser user) { if (user == null) { return ResponseValue.error("参数为空"); } FinSysTenantUser sysInfo = getSysInfo(); if (sysInfo == null) { return ResponseValue.error("用户信息不存在"); } String avatar = user.getAvatar(); if (!picFormatArr.contains(avatar.substring(avatar.lastIndexOf(".")))) { return ResponseValue.error("头像格式不允许"); } FinSysTenantUser updUser = new FinSysTenantUser(); updUser.setId(sysInfo.getId()); updUser.setAvatar(user.getAvatar()); updUser.setEmail(user.getEmail()); updUser.setUserName(user.getUserName()); updUser.setSex(user.getSex()); String encPhone = ""; if (user.getUserPhone() != null) { String key = PlatformRSAUtils.AES_KEY; encPhone = AESUtils.encryptStrAES(user.getUserPhone(), key); } updUser.setUserPhone(encPhone); // 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(@RequestBody FinSysTenantUserUpdParam param) { 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); 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 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); } }