package com.consum.base.controller;
|
|
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.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.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.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
import java.io.IOException;
|
import java.lang.reflect.Field;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.HashMap;
|
import java.util.HashSet;
|
import java.util.List;
|
import java.util.Objects;
|
import java.util.Optional;
|
import java.util.Set;
|
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.GetMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestBody;
|
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;
|
|
/**
|
* @Description 系统用户
|
* @Author wh
|
* @Date 2023/7/17 14:16
|
*/
|
@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<FinSysTenantUser> select = finSysTenantUserService.select(user);
|
if (select.size() > 0) {
|
param.setTenantCode(new Long(select.get(0).getTenantCode()));
|
}
|
}
|
GenericPager<FinSysTenantUser> pager = this.finSysTenantUserService.queryAllPageUser(param);
|
|
List<FinSysTenantUserVO> resultList = Lists.newArrayList();
|
List<FinSysTenantUser> 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<S_role> 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);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return ResponseValue.success(pager);
|
}
|
|
|
/**
|
* @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 pwdPhone = "";
|
if (user.getUserPhone() != null) {
|
pwdPhone = AESUtils.encryptStrAES(user.getUserPhone(), key);
|
}
|
user.setUserPhone(pwdPhone);
|
//怎么获取左侧机构树数据
|
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(pwdPhone);
|
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<Long> 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<S_role> roles = this.roleService.select(new S_role());
|
ArrayList<FinSysTenantUser> finSysTenantUsers = new ArrayList<>();
|
|
EasyExcel.read(file.getInputStream(), ImportUserParam.class, new AnalysisEventListener<ImportUserParam>() {
|
@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<S_role> 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 pwdPhone = AESUtils.encryptStrAES(data.getUserPhone(), key);
|
user.setUserPhone(pwdPhone);
|
|
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<FinSysTenantUser> finSysTenantUsers) {
|
ArrayList<S_user_core> 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 pwdPhone = "";
|
if (user.getUserPhone() != null) {
|
pwdPhone = AESUtils.encryptStrAES(user.getUserPhone(), key);
|
}
|
user.setUserPhone(pwdPhone);
|
// 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<S_role> list = finSysTenantUserService.getByUserId(user.getSysUserId()); //已有的权限
|
List<Long> 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<FinSysTenantUser> 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<S_role> list = finSysTenantUserService.getByUserId(sysUserId);
|
HashMap<String, Object> 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<S_role> 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<FinSysTenant> 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<FinSysTenant> 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<S_role> list = finSysTenantUserService.getByUserId(user.getSysUserId()); //已有的权限
|
List<Long> 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<S_dept> 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 pwdPhone = "";
|
if (userPhone != null) {
|
pwdPhone = AESUtils.encryptStrAES(userPhone, key);
|
user.setUserPhone(pwdPhone);
|
}
|
|
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<Long> roleList = user.getRoleList(); //机构id 多个
|
Long sysUserId = user.getSysUserId(); //用户id
|
this.finSysTenantUserService.execInsertRoleUserList(roleList, sysUserId);
|
return ResponseValue.success(1);
|
}
|
|
private Set<String> picFormatArr = new HashSet<String>() {{
|
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 pwdPhone = "";
|
if (user.getUserPhone() != null) {
|
String key = PlatformRSAUtils.AES_KEY;
|
pwdPhone = AESUtils.encryptStrAES(user.getUserPhone(), key);
|
}
|
updUser.setUserPhone(pwdPhone);
|
// 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<FinSysTenantDepartment> tenantDepartmentList = finSysTenantDepartmentService.select(finSysTenantDepartment);
|
List<DepartmentVO> departmentVOList = Lists.newArrayList();
|
tenantDepartmentList.forEach(department -> {
|
DepartmentVO departmentVO = new DepartmentVO();
|
//用户
|
Long id = department.getId();
|
departmentVO.setId(id);
|
departmentVO.setName(department.getName());
|
departmentVO.setType("department");
|
FinSysTenantUser finSysTenantUser = new FinSysTenantUser();
|
finSysTenantUser.setSysDeptId(id);
|
List<FinSysTenantUser> tenantUserList = finSysTenantUserService.select(finSysTenantUser);
|
List<UserVO> userVOList = Lists.newArrayList();
|
tenantUserList.forEach(user -> {
|
UserVO userVO = new UserVO();
|
userVO.setId(user.getId());
|
userVO.setName(user.getUserName());
|
userVO.setType("user");
|
userVOList.add(userVO);
|
});
|
departmentVO.setChildren(userVOList);
|
departmentVOList.add(departmentVO);
|
});
|
finSysTenantVO.setChildren(departmentVOList);
|
|
return ResponseValue.success(finSysTenantVO);
|
}
|
|
|
}
|