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.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.EasyExcel;
|
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.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.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.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<FinSysTenantUserVO> 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) : "");
|
|
// 列表不需要查询角色,只显示列表所需要的信息
|
/*List<S_role> list = finSysTenantUserService.getByUserId(finSysTenantUser.getSysUserId());
|
StringBuilder roleStr = new StringBuilder();
|
list.forEach(s_role -> roleStr.append(s_role.getRole_name()).append(" "));
|
finSysTenantUser.setRoleStr(roleStr.toString());
|
finSysTenantUser.setIsSupplier(finSysTenantUser.getSupplierId() != null ? "是" : "否");*/
|
|
}
|
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<FinSysTenantUser> 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<Long> 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<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()) != 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<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("批量导入");
|
// 加密手机号
|
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<FinSysTenantUser> finSysTenantUsers) {
|
ArrayList<S_user_core> 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<S_role> list = finSysTenantUserService.getRoleBySysUserId(sysUserId);
|
// 选择的权限
|
List<Long> 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(tenantUser);
|
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<S_role> roleList = finSysTenantUserService.getRoleBySysUserId(sysUserId);
|
HashMap<String, Object> 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<S_role> 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)) {
|
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);
|
}
|
|
/**
|
* 更新角色权限
|
*
|
* @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<S_role> list = finSysTenantUserService.getRoleBySysUserId(user.getSysUserId());
|
// 选择的权限
|
List<Long> roleList = user.getRoleList();
|
// 先删除再添加
|
if (list != null && list.size() > 0) {
|
Long sysUserId = user.getSysUserId();
|
finSysTenantUserService.execDelRoleUserList(sysUserId);
|
// 删除库管员信息记录
|
list.stream().filter(item -> "仓库管理员".equals(item.getRole_name())).findFirst()
|
.ifPresent(item -> baseWarehouseManagerService.deleteMangerBySysUserId(sysUserId));
|
}
|
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() {
|
FinSysTenantUserParam userParam = CommonUtil.getObjFromReqBody(FinSysTenantUserParam.class);
|
FinSysTenantUser user = new FinSysTenantUser();
|
CommonUtil.copyProperties(userParam, 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) {
|
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<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() {
|
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);
|
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");
|
|
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<String, Object> param = new HashMap<>();
|
param.put("deptId", id);
|
List<Map<String, Object>> select = finSysTenantUserService.select(sql, param, new MapperUtil());
|
List<UserVO> 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);
|
}
|
|
}
|