fix: 优化逻辑
This commit is contained in:
parent
e29aea6b25
commit
e49bdd2992
@ -63,6 +63,7 @@ public class SecurityConfig {
|
|||||||
.requestMatchers("/data/fishDraft/previewFile").permitAll()
|
.requestMatchers("/data/fishDraft/previewFile").permitAll()
|
||||||
.requestMatchers("/tempFile/**").permitAll()
|
.requestMatchers("/tempFile/**").permitAll()
|
||||||
.requestMatchers("/system/user/auditUser").permitAll()
|
.requestMatchers("/system/user/auditUser").permitAll()
|
||||||
|
.requestMatchers("/register/accessToken").permitAll()
|
||||||
.requestMatchers("/api/oauth2/oauth/token").permitAll()
|
.requestMatchers("/api/oauth2/oauth/token").permitAll()
|
||||||
.requestMatchers("/dict/cache/**").permitAll()
|
.requestMatchers("/dict/cache/**").permitAll()
|
||||||
.requestMatchers("/sys/psbmodulelbb/**").permitAll()
|
.requestMatchers("/sys/psbmodulelbb/**").permitAll()
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package com.yfd.platform.system.controller;
|
|||||||
|
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import cn.hutool.jwt.JWTUtil;
|
import cn.hutool.jwt.JWTUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.yfd.platform.config.ResponseResult;
|
import com.yfd.platform.config.ResponseResult;
|
||||||
import com.yfd.platform.config.WebConfig;
|
import com.yfd.platform.config.WebConfig;
|
||||||
import com.yfd.platform.qgc_data.domain.SysUserDataScope;
|
import com.yfd.platform.qgc_data.domain.SysUserDataScope;
|
||||||
@ -11,6 +12,8 @@ import com.yfd.platform.qgc_base.service.ISdEngInfoBHService;
|
|||||||
import com.yfd.platform.qgc_base.service.ISdHbrvDicService;
|
import com.yfd.platform.qgc_base.service.ISdHbrvDicService;
|
||||||
import com.yfd.platform.system.domain.*;
|
import com.yfd.platform.system.domain.*;
|
||||||
import com.yfd.platform.system.mapper.SysMenuMapper;
|
import com.yfd.platform.system.mapper.SysMenuMapper;
|
||||||
|
import com.yfd.platform.system.mapper.SysOrganizationMapper;
|
||||||
|
import com.yfd.platform.system.mapper.SysRoleMapper;
|
||||||
import com.yfd.platform.system.mapper.SysUserTenantMapper;
|
import com.yfd.platform.system.mapper.SysUserTenantMapper;
|
||||||
import com.yfd.platform.system.service.ISmsVerifyCodeService;
|
import com.yfd.platform.system.service.ISmsVerifyCodeService;
|
||||||
import com.yfd.platform.system.service.ISysLogService;
|
import com.yfd.platform.system.service.ISysLogService;
|
||||||
@ -61,6 +64,12 @@ public class SmsVerifyCodeController {
|
|||||||
@Resource
|
@Resource
|
||||||
private SysMenuMapper sysMenuMapper;
|
private SysMenuMapper sysMenuMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysOrganizationMapper organizationMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysRoleMapper roleMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private ISysUserDataScopeService sysUserDataScopeService;
|
private ISysUserDataScopeService sysUserDataScopeService;
|
||||||
|
|
||||||
@ -77,14 +86,14 @@ public class SmsVerifyCodeController {
|
|||||||
|
|
||||||
@Value("${rsa.private_key}")
|
@Value("${rsa.private_key}")
|
||||||
private String privateKey;
|
private String privateKey;
|
||||||
private static final String URGE_CONTENT ="根据生态环境部要求,请贵电站尽快完成过鱼数据的报送工作,感谢支持。";
|
private static final String URGE_CONTENT = "根据生态环境部要求,请贵电站尽快完成过鱼数据的报送工作,感谢支持。";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发送验证码
|
* 发送验证码
|
||||||
*/
|
*/
|
||||||
@PostMapping("/sendCode")
|
@PostMapping("/sendCode")
|
||||||
@Operation(summary = "发送验证码")
|
@Operation(summary = "发送验证码")
|
||||||
public ResponseResult sendVerifyCode(@RequestHeader(value = "Tenant_id", required = false) String tenantId,@RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) {
|
public ResponseResult sendVerifyCode(@RequestHeader(value = "Tenant_id", required = false) String tenantId, @RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) {
|
||||||
String phone = smsVerifyCodeRequest.getPhone();
|
String phone = smsVerifyCodeRequest.getPhone();
|
||||||
Integer type = smsVerifyCodeRequest.getType();
|
Integer type = smsVerifyCodeRequest.getType();
|
||||||
|
|
||||||
@ -97,21 +106,21 @@ public class SmsVerifyCodeController {
|
|||||||
|
|
||||||
// 1. 注册验证码校验
|
// 1. 注册验证码校验
|
||||||
if (type.equals(SmsVerifyCode.TYPE_REGISTER)) {
|
if (type.equals(SmsVerifyCode.TYPE_REGISTER)) {
|
||||||
SysUser existUser = userService.getUserByPhone(phone,tenantId);
|
SysUser existUser = userService.getUserByPhone(phone, tenantId);
|
||||||
if (existUser != null) {
|
if (existUser != null) {
|
||||||
return ResponseResult.error("该手机号已注册");
|
return ResponseResult.error("该手机号已注册");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 2. 找回密码验证码校验
|
// 2. 找回密码验证码校验
|
||||||
else if (type.equals(SmsVerifyCode.TYPE_FIND_PASSWORD)) {
|
else if (type.equals(SmsVerifyCode.TYPE_FIND_PASSWORD)) {
|
||||||
SysUser existUser = userService.getUserByPhone(phone,tenantId);
|
SysUser existUser = userService.getUserByPhone(phone, tenantId);
|
||||||
if (existUser == null) {
|
if (existUser == null) {
|
||||||
return ResponseResult.error("该手机号未注册");
|
return ResponseResult.error("该手机号未注册");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 3. 登录验证码校验(新增)
|
// 3. 登录验证码校验(新增)
|
||||||
else if (type.equals(SmsVerifyCode.TYPE_LOGIN)) {
|
else if (type.equals(SmsVerifyCode.TYPE_LOGIN)) {
|
||||||
SysUser existUser = userService.getUserByPhone(phone,tenantId);
|
SysUser existUser = userService.getUserByPhone(phone, tenantId);
|
||||||
if (existUser == null) {
|
if (existUser == null) {
|
||||||
return ResponseResult.error("该手机号未注册,请先注册");
|
return ResponseResult.error("该手机号未注册,请先注册");
|
||||||
}
|
}
|
||||||
@ -119,12 +128,11 @@ public class SmsVerifyCodeController {
|
|||||||
// if (existUser.getStatus() == 0) {
|
// if (existUser.getStatus() == 0) {
|
||||||
// return ResponseResult.error("账号已被禁用");
|
// return ResponseResult.error("账号已被禁用");
|
||||||
// }
|
// }
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return ResponseResult.error("类型错误:1-注册 2-找回密码 3-登录");
|
return ResponseResult.error("类型错误:1-注册 2-找回密码 3-登录");
|
||||||
}
|
}
|
||||||
|
|
||||||
String code = smsVerifyCodeService.sendVerifyCode(phone, type,tenantId);
|
String code = smsVerifyCodeService.sendVerifyCode(phone, type, tenantId);
|
||||||
if (code == null) {
|
if (code == null) {
|
||||||
return ResponseResult.error("验证码发送失败,请稍后重试");
|
return ResponseResult.error("验证码发送失败,请稍后重试");
|
||||||
}
|
}
|
||||||
@ -138,10 +146,10 @@ public class SmsVerifyCodeController {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/batchSendContent")
|
@PostMapping("/batchSendContent")
|
||||||
@Operation(summary = "批量发送短信")
|
@Operation(summary = "批量发送短信")
|
||||||
public ResponseResult batchSendContent(@RequestHeader(value = "Tenant_id", required = false) String tenantId,@RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) {
|
public ResponseResult batchSendContent(@RequestHeader(value = "Tenant_id", required = false) String tenantId, @RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) {
|
||||||
|
|
||||||
List<String> phoneList = smsVerifyCodeRequest.getPhoneList();
|
List<String> phoneList = smsVerifyCodeRequest.getPhoneList();
|
||||||
if(phoneList==null){
|
if (phoneList == null) {
|
||||||
return ResponseResult.error("手机号不能为空");
|
return ResponseResult.error("手机号不能为空");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -154,7 +162,7 @@ public class SmsVerifyCodeController {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/batchUrgeContent")
|
@PostMapping("/batchUrgeContent")
|
||||||
@Operation(summary = "催促")
|
@Operation(summary = "催促")
|
||||||
public ResponseResult batchUrgeContent(@RequestHeader(value = "Tenant_id", required = false) String tenantId,@RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) {
|
public ResponseResult batchUrgeContent(@RequestHeader(value = "Tenant_id", required = false) String tenantId, @RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) {
|
||||||
List<String> userIds = smsVerifyCodeRequest.getUserIds();
|
List<String> userIds = smsVerifyCodeRequest.getUserIds();
|
||||||
String content = smsVerifyCodeRequest.getContent();
|
String content = smsVerifyCodeRequest.getContent();
|
||||||
|
|
||||||
@ -167,7 +175,7 @@ public class SmsVerifyCodeController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
int successCount = smsVerifyCodeService.urgeByUserIds(tenantId,userIds, content);
|
int successCount = smsVerifyCodeService.urgeByUserIds(tenantId, userIds, content);
|
||||||
Map<String, Object> result = new HashMap<>();
|
Map<String, Object> result = new HashMap<>();
|
||||||
// result.put("successCount", successCount);
|
// result.put("successCount", successCount);
|
||||||
result.put("totalCount", userIds.size());
|
result.put("totalCount", userIds.size());
|
||||||
@ -179,14 +187,13 @@ public class SmsVerifyCodeController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 注册用户
|
* 注册用户
|
||||||
*/
|
*/
|
||||||
@PostMapping("/register")
|
@PostMapping("/register")
|
||||||
@Operation(summary = "注册用户")
|
@Operation(summary = "注册用户")
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ResponseResult register(@RequestHeader(value = "Tenant_id", required = false) String tenantId,@RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) {
|
public ResponseResult register(@RequestHeader(value = "Tenant_id", required = false) String tenantId, @RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) {
|
||||||
String code = smsVerifyCodeRequest.getCode();
|
String code = smsVerifyCodeRequest.getCode();
|
||||||
if (smsVerifyCodeRequest.getPhone() == null || smsVerifyCodeRequest.getPhone().isEmpty()) {
|
if (smsVerifyCodeRequest.getPhone() == null || smsVerifyCodeRequest.getPhone().isEmpty()) {
|
||||||
return ResponseResult.error("手机号不能为空");
|
return ResponseResult.error("手机号不能为空");
|
||||||
@ -201,12 +208,12 @@ public class SmsVerifyCodeController {
|
|||||||
return ResponseResult.error("验证码不能为空");
|
return ResponseResult.error("验证码不能为空");
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean verified = smsVerifyCodeService.verifyCode(smsVerifyCodeRequest.getPhone(), code, SmsVerifyCode.TYPE_REGISTER,tenantId);
|
boolean verified = smsVerifyCodeService.verifyCode(smsVerifyCodeRequest.getPhone(), code, SmsVerifyCode.TYPE_REGISTER, tenantId);
|
||||||
if (!verified) {
|
if (!verified) {
|
||||||
return ResponseResult.error("验证码错误或已过期");
|
return ResponseResult.error("验证码错误或已过期");
|
||||||
}
|
}
|
||||||
|
|
||||||
SysUser existUser = userService.getUserByPhone(smsVerifyCodeRequest.getPhone(),tenantId);
|
SysUser existUser = userService.getUserByPhone(smsVerifyCodeRequest.getPhone(), tenantId);
|
||||||
if (existUser != null) {
|
if (existUser != null) {
|
||||||
return ResponseResult.error("该手机号已注册");
|
return ResponseResult.error("该手机号已注册");
|
||||||
}
|
}
|
||||||
@ -218,13 +225,15 @@ public class SmsVerifyCodeController {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return ResponseResult.error("密码解密失败");
|
return ResponseResult.error("密码解密失败");
|
||||||
}
|
}
|
||||||
|
SysOrganization aDefault = organizationMapper.selectOne(new LambdaQueryWrapper<SysOrganization>().eq(SysOrganization::getCustom1, "default"));
|
||||||
|
String orgid = aDefault == null ? null : aDefault.getId();
|
||||||
user.setRegStatus("PENDING");
|
user.setRegStatus("PENDING");
|
||||||
user.setPhone(smsVerifyCodeRequest.getPhone());
|
user.setPhone(smsVerifyCodeRequest.getPhone());
|
||||||
user.setBelongingUnit(smsVerifyCodeRequest.getBelongingUnit());
|
user.setBelongingUnit(smsVerifyCodeRequest.getBelongingUnit());
|
||||||
user.setRegTime(new Date());
|
user.setRegTime(new Date());
|
||||||
user.setNickname(smsVerifyCodeRequest.getRealName());
|
user.setNickname(smsVerifyCodeRequest.getRealName());
|
||||||
user.setStatus(0);
|
user.setStatus(0);
|
||||||
user.setOrgid("e90063ced25e3d469860e88d920c082f");
|
user.setOrgid(orgid);
|
||||||
user.setUsertype(1);
|
user.setUsertype(1);
|
||||||
user.setTenantId(tenantId);
|
user.setTenantId(tenantId);
|
||||||
user.setUsername(smsVerifyCodeRequest.getUsername());
|
user.setUsername(smsVerifyCodeRequest.getUsername());
|
||||||
@ -232,7 +241,7 @@ public class SmsVerifyCodeController {
|
|||||||
user.setCompanyCode(smsVerifyCodeRequest.getCompanyCode());
|
user.setCompanyCode(smsVerifyCodeRequest.getCompanyCode());
|
||||||
boolean success = userService.save(user);
|
boolean success = userService.save(user);
|
||||||
// 给注册用户加上默认权限
|
// 给注册用户加上默认权限
|
||||||
SysUser savedUser = userService.getUserByPhone(smsVerifyCodeRequest.getPhone(),tenantId);
|
SysUser savedUser = userService.getUserByPhone(smsVerifyCodeRequest.getPhone(), tenantId);
|
||||||
if (savedUser != null) {
|
if (savedUser != null) {
|
||||||
SysUserTenant sysUserTenant = new SysUserTenant();
|
SysUserTenant sysUserTenant = new SysUserTenant();
|
||||||
sysUserTenant.setTenantId(tenantId);
|
sysUserTenant.setTenantId(tenantId);
|
||||||
@ -340,8 +349,10 @@ public class SmsVerifyCodeController {
|
|||||||
// sysUserDataScopeService.addDataScope(scope);
|
// sysUserDataScopeService.addDataScope(scope);
|
||||||
// }
|
// }
|
||||||
SysUser user = new SysUser();
|
SysUser user = new SysUser();
|
||||||
|
SysRole aDefault = roleMapper.selectOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getCustom1, "default"));
|
||||||
|
String roleids = aDefault == null ? null : aDefault.getId();
|
||||||
user.setId(userId);
|
user.setId(userId);
|
||||||
userService.updateUserRoles( user,"c13481a486c9ee559cf305284df4d207");
|
userService.updateUserRoles(user, roleids);
|
||||||
// 加上角色权限
|
// 加上角色权限
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -351,7 +362,7 @@ public class SmsVerifyCodeController {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/resetPassword")
|
@PostMapping("/resetPassword")
|
||||||
@Operation(summary = "找回密码")
|
@Operation(summary = "找回密码")
|
||||||
public ResponseResult resetPassword(@RequestHeader(value = "Tenant_id", required = false) String tenantId,@RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) {
|
public ResponseResult resetPassword(@RequestHeader(value = "Tenant_id", required = false) String tenantId, @RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) {
|
||||||
String password = smsVerifyCodeRequest.getPassword();
|
String password = smsVerifyCodeRequest.getPassword();
|
||||||
String phone = smsVerifyCodeRequest.getPhone();
|
String phone = smsVerifyCodeRequest.getPhone();
|
||||||
String code = smsVerifyCodeRequest.getCode();
|
String code = smsVerifyCodeRequest.getCode();
|
||||||
@ -365,12 +376,12 @@ public class SmsVerifyCodeController {
|
|||||||
return ResponseResult.error("新密码不能为空");
|
return ResponseResult.error("新密码不能为空");
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean verified = smsVerifyCodeService.verifyCode(phone, code, SmsVerifyCode.TYPE_FIND_PASSWORD,tenantId);
|
boolean verified = smsVerifyCodeService.verifyCode(phone, code, SmsVerifyCode.TYPE_FIND_PASSWORD, tenantId);
|
||||||
if (!verified) {
|
if (!verified) {
|
||||||
return ResponseResult.error("验证码错误或已过期");
|
return ResponseResult.error("验证码错误或已过期");
|
||||||
}
|
}
|
||||||
|
|
||||||
SysUser existUser = userService.getUserByPhone(phone,tenantId);
|
SysUser existUser = userService.getUserByPhone(phone, tenantId);
|
||||||
if (existUser == null) {
|
if (existUser == null) {
|
||||||
return ResponseResult.error("该手机号未注册");
|
return ResponseResult.error("该手机号未注册");
|
||||||
}
|
}
|
||||||
@ -395,11 +406,11 @@ public class SmsVerifyCodeController {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/verifyCode")
|
@PostMapping("/verifyCode")
|
||||||
@Operation(summary = "验证验证码")
|
@Operation(summary = "验证验证码")
|
||||||
public ResponseResult verifyCode(@RequestHeader(value = "Tenant_id", required = false) String tenantId,@RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) {
|
public ResponseResult verifyCode(@RequestHeader(value = "Tenant_id", required = false) String tenantId, @RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) {
|
||||||
String phone = smsVerifyCodeRequest.getPhone();
|
String phone = smsVerifyCodeRequest.getPhone();
|
||||||
String code = smsVerifyCodeRequest.getCode();
|
String code = smsVerifyCodeRequest.getCode();
|
||||||
Integer type = smsVerifyCodeRequest.getType();
|
Integer type = smsVerifyCodeRequest.getType();
|
||||||
boolean valid = smsVerifyCodeService.verifyCode(phone, code, type,tenantId);
|
boolean valid = smsVerifyCodeService.verifyCode(phone, code, type, tenantId);
|
||||||
if (valid) {
|
if (valid) {
|
||||||
return ResponseResult.success();
|
return ResponseResult.success();
|
||||||
} else {
|
} else {
|
||||||
@ -412,7 +423,7 @@ public class SmsVerifyCodeController {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/login")
|
@PostMapping("/login")
|
||||||
@Operation(summary = "短信验证码登录")
|
@Operation(summary = "短信验证码登录")
|
||||||
public ResponseResult smsLogin(@RequestHeader(value = "Tenant_id", required = false) String tenantId,@RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) {
|
public ResponseResult smsLogin(@RequestHeader(value = "Tenant_id", required = false) String tenantId, @RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) {
|
||||||
String phone = smsVerifyCodeRequest.getPhone();
|
String phone = smsVerifyCodeRequest.getPhone();
|
||||||
String code = smsVerifyCodeRequest.getCode();
|
String code = smsVerifyCodeRequest.getCode();
|
||||||
if (phone == null || phone.isEmpty()) {
|
if (phone == null || phone.isEmpty()) {
|
||||||
@ -422,12 +433,12 @@ public class SmsVerifyCodeController {
|
|||||||
return ResponseResult.error("验证码不能为空");
|
return ResponseResult.error("验证码不能为空");
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean verified = smsVerifyCodeService.verifyCode(phone, code, SmsVerifyCode.TYPE_LOGIN,tenantId);
|
boolean verified = smsVerifyCodeService.verifyCode(phone, code, SmsVerifyCode.TYPE_LOGIN, tenantId);
|
||||||
if (!verified) {
|
if (!verified) {
|
||||||
return ResponseResult.error("验证码错误或已过期");
|
return ResponseResult.error("验证码错误或已过期");
|
||||||
}
|
}
|
||||||
|
|
||||||
SysUser user = userService.getUserByPhone(phone,tenantId);
|
SysUser user = userService.getUserByPhone(phone, tenantId);
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
return ResponseResult.error("该手机号未注册");
|
return ResponseResult.error("该手机号未注册");
|
||||||
}
|
}
|
||||||
@ -461,7 +472,7 @@ public class SmsVerifyCodeController {
|
|||||||
} else {
|
} else {
|
||||||
permissions = sysMenuMapper.selectPermsByUserId(user.getId(), tenantId);
|
permissions = sysMenuMapper.selectPermsByUserId(user.getId(), tenantId);
|
||||||
}
|
}
|
||||||
loginUser.setPermissions( permissions);
|
loginUser.setPermissions(permissions);
|
||||||
HttpServletRequest request = RequestHolder.getHttpServletRequest();
|
HttpServletRequest request = RequestHolder.getHttpServletRequest();
|
||||||
SysLog sysLog = new SysLog();
|
SysLog sysLog = new SysLog();
|
||||||
sysLog.setUsercode(user.getUsername());
|
sysLog.setUsercode(user.getUsername());
|
||||||
|
|||||||
@ -58,6 +58,21 @@ public class SysRoleController {
|
|||||||
return roleService.selectRoleList(rolename, tenantId);
|
return roleService.selectRoleList(rolename, tenantId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************
|
||||||
|
* 用途说明:按门户分组查询角色(门户 → 角色两层结构)
|
||||||
|
* 参数说明
|
||||||
|
* rolename 角色名称(可选,模糊搜索)
|
||||||
|
* 返回值说明: [{"tenantId":"...","tenantName":"水利门户","roles":[...]}, ...]
|
||||||
|
* 门户中文名通过字典 PLATFORM_TENANT 获取
|
||||||
|
***********************************/
|
||||||
|
@PostMapping("/listGroupedByTenant")
|
||||||
|
@Operation(summary = "按门户分组查询角色(含门户中文名)")
|
||||||
|
@ResponseBody
|
||||||
|
public List<Map<String, Object>> listGroupedByTenant(@RequestParam(required = false) String rolename,
|
||||||
|
@RequestParam(required = false) String tenantId) {
|
||||||
|
return roleService.selectRoleListGroupedByTenant(tenantId,rolename);
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************
|
/***********************************
|
||||||
* 用途说明:根据Id获取当个角色
|
* 用途说明:根据Id获取当个角色
|
||||||
* 参数说明
|
* 参数说明
|
||||||
|
|||||||
@ -67,4 +67,13 @@ public interface ISysRoleService extends IService<SysRole> {
|
|||||||
List<SysRole> selectRoleList(String rolename, String tenantId);
|
List<SysRole> selectRoleList(String rolename, String tenantId);
|
||||||
|
|
||||||
List<SysRole> queryRolesList(String roleName, String tenantId);
|
List<SysRole> queryRolesList(String roleName, String tenantId);
|
||||||
|
|
||||||
|
/***********************************
|
||||||
|
* 用途说明:按门户分组查询角色(门户 → 角色两层结构)
|
||||||
|
* 参数说明
|
||||||
|
* rolename 角色名称(可选,模糊搜索)
|
||||||
|
* 返回值说明: [{"tenantId":"...","tenantName":"水利门户","roles":[...]}, ...]
|
||||||
|
* 门户中文名通过字典 PLATFORM_TENANT 获取
|
||||||
|
***********************************/
|
||||||
|
List<Map<String, Object>> selectRoleListGroupedByTenant(String tenantId,String rolename);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,8 +6,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.yfd.platform.config.ResponseResult;
|
import com.yfd.platform.config.ResponseResult;
|
||||||
|
import com.yfd.platform.system.domain.SysDictionary;
|
||||||
|
import com.yfd.platform.system.domain.SysDictionaryItems;
|
||||||
import com.yfd.platform.system.domain.SysRole;
|
import com.yfd.platform.system.domain.SysRole;
|
||||||
import com.yfd.platform.system.mapper.SysRoleMapper;
|
import com.yfd.platform.system.mapper.SysRoleMapper;
|
||||||
|
import com.yfd.platform.system.service.ISysDictionaryItemsService;
|
||||||
|
import com.yfd.platform.system.service.ISysDictionaryService;
|
||||||
import com.yfd.platform.system.service.ISysRoleService;
|
import com.yfd.platform.system.service.ISysRoleService;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -16,8 +20,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@ -37,6 +40,12 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
|||||||
@Resource
|
@Resource
|
||||||
private UserServiceImpl currentuser;
|
private UserServiceImpl currentuser;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ISysDictionaryService sysDictionaryService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ISysDictionaryItemsService sysDictionaryItemsService;
|
||||||
|
|
||||||
/***********************************
|
/***********************************
|
||||||
* 用途说明:新增角色
|
* 用途说明:新增角色
|
||||||
* 参数说明
|
* 参数说明
|
||||||
@ -185,4 +194,57 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
|||||||
return sysRoleList;
|
return sysRoleList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************
|
||||||
|
* 用途说明:按门户分组查询角色(门户 → 角色两层结构)
|
||||||
|
* 参数说明
|
||||||
|
* rolename 角色名称(可选,模糊搜索)
|
||||||
|
* 返回值说明: [{"tenantId":"...","tenantName":"水利门户","roles":[...]}, ...]
|
||||||
|
* 门户中文名通过字典 PLATFORM_TENANT 获取
|
||||||
|
***********************************/
|
||||||
|
@Override
|
||||||
|
public List<Map<String, Object>> selectRoleListGroupedByTenant(String tenantId,String rolename) {
|
||||||
|
// 1. 查询所有角色(排除超级管理员级别,支持角色名称模糊搜索)
|
||||||
|
LambdaQueryWrapper<SysRole> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(StrUtil.isNotBlank(tenantId), SysRole::getTenantId, tenantId);
|
||||||
|
queryWrapper.like(StrUtil.isNotBlank(rolename), SysRole::getRolename, rolename);
|
||||||
|
// queryWrapper.ne(SysRole::getLevel, "1");
|
||||||
|
queryWrapper.orderByAsc(SysRole::getTenantId).orderByAsc(SysRole::getLevel);
|
||||||
|
List<SysRole> roleList = this.list(queryWrapper);
|
||||||
|
|
||||||
|
// 2. 查询 PLATFORM_TENANT 字典项,构建 tenantId → tenantName 映射
|
||||||
|
Map<String, String> tenantNameMap = new HashMap<>();
|
||||||
|
SysDictionary tenantDict = sysDictionaryService.getByDictCode("PLATFORM_TENANT");
|
||||||
|
if (tenantDict != null) {
|
||||||
|
List<SysDictionaryItems> items = sysDictionaryItemsService.list(new LambdaQueryWrapper<SysDictionaryItems>().eq(SysDictionaryItems::getDictId, tenantDict.getId()).eq(StrUtil.isNotBlank(tenantId),SysDictionaryItems::getItemCode, tenantId).select(SysDictionaryItems::getItemCode, SysDictionaryItems::getDictName));
|
||||||
|
if (items != null) {
|
||||||
|
for (SysDictionaryItems item : items) {
|
||||||
|
if (StrUtil.isNotBlank(item.getItemCode())) {
|
||||||
|
tenantNameMap.put(item.getItemCode(), item.getDictName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 按 tenantId 分组(跳过无门户的角色)
|
||||||
|
Map<String, List<SysRole>> grouped = new LinkedHashMap<>();
|
||||||
|
for (SysRole role : roleList) {
|
||||||
|
String code = role.getTenantId();
|
||||||
|
if (StrUtil.isBlank(code)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
grouped.computeIfAbsent(code, k -> new ArrayList<>()).add(role);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. 组装两层结构:门户 → 角色
|
||||||
|
List<Map<String, Object>> result = new ArrayList<>();
|
||||||
|
for (Map.Entry<String, List<SysRole>> entry : grouped.entrySet()) {
|
||||||
|
Map<String, Object> group = new HashMap<>();
|
||||||
|
group.put("tenantId", entry.getKey());
|
||||||
|
group.put("tenantName", tenantNameMap.getOrDefault(entry.getKey(), entry.getKey()));
|
||||||
|
group.put("roles", entry.getValue());
|
||||||
|
result.add(group);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -371,12 +371,21 @@ public class UserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impleme
|
|||||||
|
|
||||||
// 解析新角色列表
|
// 解析新角色列表
|
||||||
String[] newRoles = roleIds.split(",");
|
String[] newRoles = roleIds.split(",");
|
||||||
|
String operator;
|
||||||
|
try {
|
||||||
|
operator = SecurityUtils.getUserId();
|
||||||
|
} catch (Exception e) {
|
||||||
|
// 记录日志,方便排查
|
||||||
|
log.error("获取当前用户ID失败", e);
|
||||||
|
// 根据业务需求处理:可返回默认值、抛出业务异常或置空
|
||||||
|
operator = null; // 或 "anonymous" 等默认值
|
||||||
|
}
|
||||||
// 需要新增的角色(新角色 - 当前角色)
|
// 需要新增的角色(新角色 - 当前角色)
|
||||||
for (String roleId : newRoles) {
|
for (String roleId : newRoles) {
|
||||||
if (!currentRoleSet.contains(roleId)) {
|
if (!currentRoleSet.contains(roleId)) {
|
||||||
String id = IdUtil.fastSimpleUUID();
|
String id = IdUtil.fastSimpleUUID();
|
||||||
sysUserMapper.addUserRoles(SecurityUtils.getUserId(),id, roleId, userId);
|
|
||||||
|
sysUserMapper.addUserRoles(operator,id, roleId, userId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -88,7 +88,7 @@
|
|||||||
<if test="tenantId != null and tenantId != ''">
|
<if test="tenantId != null and tenantId != ''">
|
||||||
and (ut.TENANT_ID = #{tenantId} OR u.tenant_id = #{tenantId})
|
and (ut.TENANT_ID = #{tenantId} OR u.tenant_id = #{tenantId})
|
||||||
</if>
|
</if>
|
||||||
ORDER BY u.lastmodifydate DESC
|
ORDER BY u.username
|
||||||
</select>
|
</select>
|
||||||
<select id="getOrganizationByid" resultType="java.util.Map">
|
<select id="getOrganizationByid" resultType="java.util.Map">
|
||||||
SELECT DISTINCT
|
SELECT DISTINCT
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user