Browse Source

feat: 适配门户权限体系

master_tdsql
hxh 1 year ago
parent
commit
45aeafe1b3
  1. 479
      shuili-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java
  2. 56
      shuili-admin/src/main/java/com/kms/web/utils/WaterRequestUtil.java
  3. 5
      shuili-admin/src/main/java/com/kms/web/utils/scheduled/WaterScheduled.java
  4. 104
      shuili-framework/src/main/java/com/shuili/common/core/domain/entity/SysUser.java
  5. 125
      shuili-system/src/main/java/com/kms/framework/web/service/SysPermissionService.java
  6. 188
      shuili-system/src/main/java/com/kms/system/service/SysMenuService.java
  7. 26
      shuili-system/src/main/java/com/kms/system/service/SysUserService.java

479
shuili-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java

@ -6,9 +6,14 @@ import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.kms.system.domain.SysRoleMenu;
import com.kms.common.utils.UserUtils;
import com.kms.framework.manager.AsyncManager;
import com.kms.framework.manager.factory.AsyncFactory;
import com.kms.framework.web.service.SysPermissionService;
import com.kms.system.service.SysMenuService;
import com.kms.system.service.SysRoleMenuService;
import com.kms.system.service.SysRoleService;
import com.kms.system.service.SysUserService;
import com.kms.web.utils.WaterRequestUtil;
import com.kms.web.utils.WaterResult;
import com.kms.web.utils.singleDomain.SingleMenu;
@ -17,7 +22,6 @@ import com.shuili.common.constant.YesOrNo;
import com.shuili.common.core.controller.BaseController;
import com.shuili.common.core.domain.AjaxResult;
import com.shuili.common.core.domain.entity.SysMenu;
import com.shuili.common.core.domain.entity.SysRole;
import com.shuili.common.core.domain.entity.SysUser;
import com.shuili.common.core.domain.model.LoginBody;
import com.shuili.common.core.redis.RedisCache;
@ -27,12 +31,6 @@ import com.shuili.common.exception.CustomException;
import com.shuili.common.mybaitsplus.BeanToWrapper;
import com.shuili.common.utils.StringUtils;
import com.shuili.common.utils.password.PasswordUtil;
import com.kms.common.utils.UserUtils;
import com.kms.framework.manager.AsyncManager;
import com.kms.framework.manager.factory.AsyncFactory;
import com.kms.framework.web.service.SysPermissionService;
import com.kms.system.service.SysMenuService;
import com.kms.system.service.SysUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.log4j.Log4j2;
@ -64,33 +62,33 @@ import java.util.stream.Collectors;
@Api("用户登录")
public class SysLoginController extends BaseController {
@Autowired
private SysMenuService menuService;
@Autowired
private SysMenuService menuService;
@Autowired
private SysPermissionService permissionService;
@Autowired
private SysUserService userService;
@Autowired
private RedisCache redisCache;
@Autowired
WaterRequestUtil waterRequestUtil;
@Value("${water.redirect:}")
private String redirect;
@Autowired
private SysPermissionService permissionService;
@Autowired
private SysUserService userService;
@Autowired
private RedisCache redisCache;
@Autowired
WaterRequestUtil waterRequestUtil;
@Value("${water.redirect:}")
private String redirect;
@PostMapping("/login")
@ApiOperation("登录接口")
public AjaxResult login(@RequestBody LoginBody loginBody) {
@PostMapping("/login")
@ApiOperation("登录接口")
public AjaxResult login(@RequestBody LoginBody loginBody) {
if(StringUtils.isEmpty(loginBody.getUsername())){
log.info("登录用户:{} 不存在.", loginBody.getUsername());
AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "用户不存在"));
throw new BaseException("对不起,请输入您的账号!!");
}
AjaxResult ajax = AjaxResult.success();
if (StringUtils.isEmpty(loginBody.getUsername())) {
log.info("登录用户:{} 不存在.", loginBody.getUsername());
AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "用户不存在"));
throw new BaseException("对不起,请输入您的账号!!");
}
AjaxResult ajax = AjaxResult.success();
// 验证码校验
//TODO
// 验证码校验
//TODO
// String verifyKey = Constants.CAPTCHA_CODE_KEY + loginBody.getUuid();
// if(!loginBody.getCode().equals(redisCache.getCacheObject(verifyKey))) {
// redisCache.deleteObject(verifyKey);
@ -99,129 +97,131 @@ public class SysLoginController extends BaseController {
// }
SysUser user = new SysUser();
user.setUserName(loginBody.getUsername());
user.setIsPcUser(YesOrNo.NO);
List<SysUser> selectUserList = userService.list(BeanToWrapper.getWrapper(user));
if (StringUtils.isEmpty(selectUserList)) {
log.info("登录用户:{} 不存在.", loginBody.getUsername());
AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "用户不存在"));
throw new BaseException("对不起,您的账号:" + loginBody.getUsername() + " 不存在");
}
user = selectUserList.get(0);
if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) {
log.info("登录用户:{} 已被删除.", loginBody.getUsername());
AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "账户已删除"));
throw new BaseException("对不起,您的账号:" + loginBody.getUsername() + " 已被删除");
} else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) {
log.info("登录用户:{} 已被停用.", loginBody.getUsername());
AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "账户已停用"));
throw new BaseException("对不起,您的账号:" + loginBody.getUsername() + " 已停用");
}
SysUser user = new SysUser();
user.setUserName(loginBody.getUsername());
user.setIsPcUser(YesOrNo.NO);
List<SysUser> selectUserList = userService.list(BeanToWrapper.getWrapper(user));
if (StringUtils.isEmpty(selectUserList)) {
log.info("登录用户:{} 不存在.", loginBody.getUsername());
AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "用户不存在"));
throw new BaseException("对不起,您的账号:" + loginBody.getUsername() + " 不存在");
}
user = selectUserList.get(0);
if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) {
log.info("登录用户:{} 已被删除.", loginBody.getUsername());
AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "账户已删除"));
throw new BaseException("对不起,您的账号:" + loginBody.getUsername() + " 已被删除");
} else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) {
log.info("登录用户:{} 已被停用.", loginBody.getUsername());
AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "账户已停用"));
throw new BaseException("对不起,您的账号:" + loginBody.getUsername() + " 已停用");
}
// 判断密码校验
if(PasswordUtil.validatePassword(loginBody.getPassword(), user.getPassword())) {
AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_SUCCESS, "登录成功"));
StpUtil.login(user.getId());
StpUtil.getSession().set("shuili-user",user);
ajax.put("token",StpUtil.getTokenValue());
}else {
AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "账号或密码错误"));
throw new BaseException("对不起,您的账号或密码错误");
}
return ajax;
}
// 判断密码校验
if (PasswordUtil.validatePassword(loginBody.getPassword(), user.getPassword())) {
AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_SUCCESS, "登录成功"));
StpUtil.login(user.getId());
StpUtil.getSession().set("shuili-user", user);
ajax.put("token", StpUtil.getTokenValue());
} else {
AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "账号或密码错误"));
throw new BaseException("对不起,您的账号或密码错误");
}
return ajax;
}
/**
* 获取用户信息
*
* @return 用户信息
*/
@ApiOperation("获取挡路用户信息")
@GetMapping("getInfo")
public AjaxResult getInfo() {
SysUser user = UserUtils.getUser();
// 角色集合
Set<String> roles = permissionService.getRolePermission(user);
// 权限集合
Set<String> permissions = permissionService.getMenuPermission(user);
AjaxResult ajax = AjaxResult.success();
/**
* 获取用户信息
*
* @return 用户信息
*/
@ApiOperation("获取挡路用户信息")
@GetMapping("getInfo")
public AjaxResult getInfo() {
SysUser user = UserUtils.getUser();
// 角色集合
Set<String> roles = permissionService.getRolePermission(user);
// 权限集合
Set<String> permissions = permissionService.getMenuPermission(user);
AjaxResult ajax = AjaxResult.success();
ajax.put("user", user);
ajax.put("roles", roles);
ajax.put("permissions", permissions);
// 判断是否需要展示创建索引按钮
ajax.put("user", user);
ajax.put("roles", roles);
ajax.put("permissions", permissions);
// 判断是否需要展示创建索引按钮
return ajax;
}
return ajax;
}
/**
* 获取路由信息
*
* @return 路由信息
*/
@GetMapping("getRouters")
public AjaxResult getRouters() {
// 用户信息
SysUser user = UserUtils.getUser();
List<SysMenu> menus = menuService.selectMenuTreeByUserId(user.getId());
return AjaxResult.success(menuService.buildMenus(menus));
}
/**
* 获取路由信息
*
* @return 路由信息
*/
@GetMapping("getRouters")
public AjaxResult getRouters() {
// 用户信息
SysUser user = UserUtils.getUser();
List<SysMenu> menus = menuService.selectMenuTreeByUserId(user.getId());
menus.addAll(permissionService.getUserMenuFromPortal(user.getId()));
return AjaxResult.success(menuService.buildMenus(menus));
}
/**
* 门户单点认证登录
* @return
*/
@GetMapping("/signOnLogin")
public ModelAndView signOnLogin(HttpServletRequest request,
HttpServletResponse response,
@RequestParam(name = "page",required = false) String page,
@RequestParam(name = "token")String token) throws IOException {
WaterResult waterResult;
CountDownLatch countDownLatch = new CountDownLatch(1);
try {
waterResult = waterRequestUtil.authUser(token);
}catch (Exception e){
log.error(e.getMessage());
throw new CustomException("登录失败");
}
//异步执行菜单同步
executorService.submit(new RolePerms(token,waterResult,countDownLatch));
JSONObject jsonObject = JSONObject.parseObject(waterResult.getData());
String user = jsonObject.getString("user");
JSONObject userJsonObject = JSONObject.parseObject(user);
String uid = userJsonObject.getString("id");
QueryWrapper<SysUser> query = Wrappers.query();
query.eq("single_user_id",uid);
List<SysUser> list = userService.list(query);
if(CollectionUtil.isEmpty(list)){
throw new CustomException("数据异常,登录失败");
}
AjaxResult ajax = AjaxResult.success();
SysUser sysUser = list.get(0);
if (UserStatus.DELETED.getCode().equals(sysUser.getDelFlag())) {
log.info(" :{} 已被删除.", sysUser.getUserName());
AsyncManager.me().execute(AsyncFactory.recordLogininfor(sysUser.getUserName(), Constants.LOGIN_FAIL, "账户已删除"));
throw new BaseException("对不起,您的账号:" + sysUser.getUserName() + " 已被删除");
} else if (UserStatus.DISABLE.getCode().equals(sysUser.getStatus())) {
log.info("登录用户:{} 已被停用.", sysUser.getUserName());
AsyncManager.me().execute(AsyncFactory.recordLogininfor(sysUser.getUserName(), Constants.LOGIN_FAIL, "账户已停用"));
throw new BaseException("对不起,您的账号:" + sysUser.getUserName() + " 已停用");
}
AsyncManager.me().execute(AsyncFactory.recordLogininfor(sysUser.getUserName(), Constants.LOGIN_SUCCESS, "登录成功"));
StpUtil.login(sysUser.getId());
StpUtil.getSession().set("jianwei-user",sysUser);
String tokenValue = StpUtil.getTokenValue();
userService.updateWithReids(sysUser);
ajax.put("token",tokenValue);
ajax.put("authorization",token);
try {
countDownLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
/**
* 门户单点认证登录
*
* @return
*/
@GetMapping("/signOnLogin")
public ModelAndView signOnLogin(HttpServletRequest request,
HttpServletResponse response,
@RequestParam(name = "page", required = false) String page,
@RequestParam(name = "token") String token) throws IOException {
WaterResult waterResult;
CountDownLatch countDownLatch = new CountDownLatch(1);
try {
waterResult = waterRequestUtil.authUser(token);
} catch (Exception e) {
log.error(e.getMessage());
throw new CustomException("登录失败");
}
JSONObject jsonObject = JSONObject.parseObject(waterResult.getData());
String user = jsonObject.getString("user");
JSONObject userJsonObject = JSONObject.parseObject(user);
String uid = userJsonObject.getString("id");
QueryWrapper<SysUser> query = Wrappers.query();
query.eq("single_user_id", uid);
List<SysUser> list = userService.list(query);
if (CollectionUtil.isEmpty(list)) {
throw new CustomException("数据异常,登录失败");
}
AjaxResult ajax = AjaxResult.success();
SysUser sysUser = list.get(0);
if (UserStatus.DELETED.getCode().equals(sysUser.getDelFlag())) {
log.info(" :{} 已被删除.", sysUser.getUserName());
AsyncManager.me().execute(AsyncFactory.recordLogininfor(sysUser.getUserName(), Constants.LOGIN_FAIL, "账户已删除"));
throw new BaseException("对不起,您的账号:" + sysUser.getUserName() + " 已被删除");
} else if (UserStatus.DISABLE.getCode().equals(sysUser.getStatus())) {
log.info("登录用户:{} 已被停用.", sysUser.getUserName());
AsyncManager.me().execute(AsyncFactory.recordLogininfor(sysUser.getUserName(), Constants.LOGIN_FAIL, "账户已停用"));
throw new BaseException("对不起,您的账号:" + sysUser.getUserName() + " 已停用");
}
//异步执行菜单同步
executorService.submit(new RolePerms(token, waterResult, countDownLatch, sysUser.getId()));
AsyncManager.me().execute(AsyncFactory.recordLogininfor(sysUser.getUserName(), Constants.LOGIN_SUCCESS, "登录成功"));
StpUtil.login(sysUser.getId());
StpUtil.getSession().set("jianwei-user", sysUser);
String tokenValue = StpUtil.getTokenValue();
userService.updateWithReids(sysUser);
ajax.put("token", tokenValue);
ajax.put("authorization", token);
try {
countDownLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
// if(StringUtils.isEmpty(page)){
// List<SysMenu> menus = menuService.selectMenuTreeByUserId(sysUser.getId());
// List<RouterVo> routerVos = menuService.buildMenus(menus);
@ -240,25 +240,26 @@ public class SysLoginController extends BaseController {
// }
// }
// }
RedirectView redirectView = new RedirectView(redirect+"?token="+tokenValue+"&page="+page);
ModelAndView modelAndView = new ModelAndView(redirectView);
return modelAndView;
}
RedirectView redirectView = new RedirectView(redirect + "?token=" + tokenValue + "&page=" + page);
ModelAndView modelAndView = new ModelAndView(redirectView);
return modelAndView;
}
@Autowired
SysRoleService sysRoleService;
@Autowired
SysRoleMenuService sysRoleMenuService;
@Autowired
SysMenuService sysMenuService;
@Autowired
SysRoleService sysRoleService;
@Autowired
SysRoleMenuService sysRoleMenuService;
@Autowired
SysMenuService sysMenuService;
ExecutorService executorService = Executors.newFixedThreadPool(5);
ExecutorService executorService = Executors.newFixedThreadPool(5);
/**
* 根据用户token获取资源权限
* @param
* @return
*/
/**
* 根据用户token获取资源权限
*
* @param
* @return
*/
// @GetMapping("/getSingleRotes/{token}")
// public AjaxResult getSingleRotes(@PathVariable String token){
// WaterResult waterResult = waterRequestUtil.authUser(token);
@ -277,105 +278,69 @@ public class SysLoginController extends BaseController {
// return AjaxResult.success(menuService.buildMenus(menus));
// }
class RolePerms implements Runnable{
class RolePerms implements Runnable {
private final String token;
private final WaterResult waterResult;
private final CountDownLatch countDownLatch;
private final String userId;
public String token;
public WaterResult waterResult;
public CountDownLatch countDownLatch;
public RolePerms(String token, WaterResult waterResult, CountDownLatch countDownLatch, String userId) {
this.token = token;
this.waterResult = waterResult;
this.countDownLatch = countDownLatch;
this.userId = userId;
}
public RolePerms(String token,WaterResult waterResult,CountDownLatch countDownLatch){
this.token = token;
this.waterResult = waterResult;
this.countDownLatch = countDownLatch;
}
@Override
@Transactional
public void run() {
try {
WaterResult result = waterRequestUtil.getUserResource(token);
List<SingleMenu> singleMenus = JSONObject.parseArray(result.getData(), SingleMenu.class);
List<SingleMenu> singleAllMenus = new ArrayList<>();
setChildren(singleMenus, singleAllMenus);
String data = waterResult.getData();
JSONObject datajson = JSONObject.parseObject(data);
List<String> functionPerms = datajson.getJSONArray("functionPerms").toJavaList(String.class);
List<String> menuCode = singleMenus.stream().map(SingleMenu::getCode).distinct().collect(Collectors.toList());
permissionService.setUserPermissionFromPortal(userId, functionPerms);
permissionService.setUserMenuFromPortal(userId, menuCode);
@Override
@Transactional
public void run() {
try {
WaterResult result = waterRequestUtil.getUserResource(token);
List<SingleMenu> singleMenus = JSONObject.parseArray(result.getData(), SingleMenu.class);
List<SingleMenu> singleAllMenus = new ArrayList<>();
setChildren(singleMenus,singleAllMenus);
String data = waterResult.getData();
JSONObject datajson = JSONObject.parseObject(data);
List<String> functionPerms = datajson.getJSONArray("functionPerms").toJavaList(String.class);
List<String> collect = singleAllMenus.stream().map(singleMenu -> singleMenu.getPermissionCode()).collect(Collectors.toList());
collect.addAll(functionPerms);
QueryWrapper<SysMenu> menuQueryWrapper = Wrappers.query();
menuQueryWrapper.in("perms",collect);
List<SysMenu> menus = sysMenuService.list(menuQueryWrapper);
List<String> menuids = menus.stream().map(menu -> {
return menu.getId();
}).collect(Collectors.toList());
// WaterResult waterResult = waterRequestUtil.authUser(token);
List<String> roles = datajson.getJSONArray("roles").toJavaList(String.class);
log.info("获取的权限有:"+roles);
if(CollectionUtil.isNotEmpty(roles)) {
QueryWrapper<SysRole> sysRoleQueryWrapper = Wrappers.query();
sysRoleQueryWrapper.in("role_key", roles);
List<SysRole> roleList = sysRoleService.list(sysRoleQueryWrapper);
if (CollectionUtil.isNotEmpty(roleList)) {
List<String> rids = roleList.stream().map(role -> role.getId()).collect(Collectors.toList());
for (SysRole sysRole : roleList) {
QueryWrapper<SysRoleMenu> sysRoleMenuQueryWrapper = Wrappers.query();
if (CollectionUtil.isNotEmpty(rids)) {
sysRoleMenuQueryWrapper.eq("role_id", sysRole.getId());
List<SysRoleMenu> list = sysRoleMenuService.list(sysRoleMenuQueryWrapper);
List<String> menutwoids = list.stream().map(menu -> {
return menu.getMenuId();
}).collect(Collectors.toList());
List<String> disjunction = (List<String>) CollectionUtil.disjunction(menuids, menutwoids);
menuids.removeAll(menutwoids);
if(CollectionUtil.isNotEmpty(disjunction)) { //存在不存在的按钮 进行删除
sysRoleMenuQueryWrapper.in("menu_id", disjunction);
sysRoleMenuService.remove(sysRoleMenuQueryWrapper);
}
}
for (String menu : menuids) {
SysRoleMenu sysRoleMenu = new SysRoleMenu();
sysRoleMenu.preInsert();
sysRoleMenu.setRoleId(sysRole.getId());
sysRoleMenu.setMenuId(menu);
sysRoleMenuService.save(sysRoleMenu);
}
}
}
}
}catch (Exception e){
log.error("同步菜单权限失败:"+e.getMessage());
throw e;
}finally {
countDownLatch.countDown();
}
}
}
} catch (Exception e) {
log.error("同步菜单权限失败:" + e.getMessage());
throw e;
} finally {
countDownLatch.countDown();
}
}
}
public static void setChildren(List<SingleMenu> singleMenus,List<SingleMenu> singleAllMenus){
if(CollectionUtil.isNotEmpty(singleMenus)) {
for (SingleMenu singleMenu :
singleMenus) { //剔除掉不符合的
if(singleMenu.getVisible()!=null&&singleMenu.getStatus()!=null) {
if (singleMenu.getStatus().equals("1")) {
singleAllMenus.add(singleMenu);
}
}
if (CollectionUtil.isNotEmpty(singleMenu.getChildren())) {
List<SingleMenu> children = singleMenu.getChildren();
for (SingleMenu child : children) {
if(singleMenu.getVisible()!=null&&singleMenu.getStatus()!=null) {
if (singleMenu.getStatus().equals("1")) {
singleAllMenus.add(child);
}
}
if(CollectionUtil.isNotEmpty(child.getChildren())) {
setChildren(child.getChildren(),singleAllMenus);
}
}
}
}
}
}
public static void setChildren(List<SingleMenu> singleMenus, List<SingleMenu> singleAllMenus) {
if (CollectionUtil.isNotEmpty(singleMenus)) {
for (SingleMenu singleMenu :
singleMenus) { //剔除掉不符合的
if (singleMenu.getVisible() != null && singleMenu.getStatus() != null) {
if (singleMenu.getStatus().equals("1")) {
singleAllMenus.add(singleMenu);
}
}
if (CollectionUtil.isNotEmpty(singleMenu.getChildren())) {
List<SingleMenu> children = singleMenu.getChildren();
for (SingleMenu child : children) {
if (singleMenu.getVisible() != null && singleMenu.getStatus() != null) {
if (singleMenu.getStatus().equals("1")) {
singleAllMenus.add(child);
}
}
if (CollectionUtil.isNotEmpty(child.getChildren())) {
setChildren(child.getChildren(), singleAllMenus);
}
}
}
}
}
}
}

56
shuili-admin/src/main/java/com/kms/web/utils/WaterRequestUtil.java

@ -136,9 +136,11 @@ public class WaterRequestUtil {
HashMap<String, String> query = new HashMap<>();
query.put("code",systemCode);
query.put("name",systemName);
HttpResponse response = post.body(JSONObject.toJSONString(query))
.execute();
String body = response.body();
String body;
try (HttpResponse response = post.body(JSONObject.toJSONString(query))
.execute()) {
body = response.body();
}
WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class);
isSuccess(waterResult);
//{
@ -175,11 +177,13 @@ public class WaterRequestUtil {
*/
public WaterResult signOn(String userId){
HttpRequest get = createGet(userUrl,singOnServiceId,singOnAppsecret);
HttpResponse response = get.header("x-tsp-target", paasId)
String body;
try (HttpResponse response = get.header("x-tsp-target", paasId)
.header("x-tsp-uid-type", "id")
.header("x-tsp-uid", userId)
.execute();
String body = response.body();
.execute()) {
body = response.body();
}
return JSONObject.parseObject(body, WaterResult.class);
}
@ -191,9 +195,11 @@ public class WaterRequestUtil {
public WaterResult authUser(String authorization){
log.info("--------请求统一门户用户验证,请求地址为:"+userUrl);
HttpRequest get = createGet(userUrl,authUserServiceId,authUserAppsecret);
HttpResponse response = get.header("Authorization", authorization)
.execute();
String body = response.body();
String body;
try (HttpResponse response = get.header("Authorization", authorization)
.execute()) {
body = response.body();
}
WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class);
isSuccess(waterResult);
return waterResult;
@ -207,9 +213,11 @@ public class WaterRequestUtil {
hashMap.put("size",100);
hashMap.put("systemCode",systemCode);
HttpRequest get = createPost(orgUrl,orgServiceId,orgAppsecret);
HttpResponse response = get.body(JSONObject.toJSONString(hashMap))
.execute();
String body = response.body();
String body;
try (HttpResponse response = get.body(JSONObject.toJSONString(hashMap))
.execute()) {
body = response.body();
}
WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class);
isSuccess(waterResult);
//{
@ -234,9 +242,11 @@ public class WaterRequestUtil {
HttpRequest get = createPost(resourceUrl+"?systemCode="+systemCode,resourceServiceId,resourceAppsecret);
// HttpRequest get = createPost(resourceUrl,resourceServiceId,resourceAppsecret);
get.header("Authorization",authorization);
HttpResponse response = get
.execute();
String body = response.body();
String body;
try (HttpResponse response = get
.execute()) {
body = response.body();
}
WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class);
isSuccess(waterResult);
//{\"total\":1,\"size\":100,\"records\":[{\"area\":\"440000\",\"systemList\":[{\"area\":\"440000\",\"code\":\"sgc-jg\",\"name\":\"水工程应用-水利工程建设管理模块\",\"id\":\"1732648267643097090\"}],\"code\":\"YW00013\",\"level\":\"1d\",\"dataConfig\":\"none\",\"type\":\"BUSINESS\",\"posts\":[],\"users\":[{\"id\":\"20231225000006\"},{\"id\":\"20240119000002\"}],\"name\":\"水利工程应用-水利工程建设管理模块角色\",\"id\":\"20231213000001\",\"category\":\"BUSINESS\",\"businesses\":[{\"parent\":\"1762458920822599682\",\"businessCode\":\"YWSLGCJSGL0008\",\"parentName\":\"水利工程建设管理\",\"businessName\":\"水利工程建设管理\",\"description\":\"\",\"id\":\"1705128209926942721\",\"delFlag\":0}],\"status\":\"1\"}],\"page\":1}
@ -251,9 +261,11 @@ public class WaterRequestUtil {
hashMap.put("size",100);
hashMap.put("systemCode",systemCode);
HttpRequest get = createPost(roleUrl,roleServiceId,roleAppsecret);
HttpResponse response = get.body(JSONObject.toJSONString(hashMap))
.execute();
String body = response.body();
String body;
try (HttpResponse response = get.body(JSONObject.toJSONString(hashMap))
.execute()) {
body = response.body();
}
WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class);
isSuccess(waterResult);
//{\"total\":1,\"size\":100,\"records\":[{\"area\":\"440000\",\"systemList\":[{\"area\":\"440000\",\"code\":\"sgc-jg\",\"name\":\"水工程应用-水利工程建设管理模块\",\"id\":\"1732648267643097090\"}],\"code\":\"YW00013\",\"level\":\"1d\",\"dataConfig\":\"none\",\"type\":\"BUSINESS\",\"posts\":[],\"users\":[{\"id\":\"20231225000006\"},{\"id\":\"20240119000002\"}],\"name\":\"水利工程应用-水利工程建设管理模块角色\",\"id\":\"20231213000001\",\"category\":\"BUSINESS\",\"businesses\":[{\"parent\":\"1762458920822599682\",\"businessCode\":\"YWSLGCJSGL0008\",\"parentName\":\"水利工程建设管理\",\"businessName\":\"水利工程建设管理\",\"description\":\"\",\"id\":\"1705128209926942721\",\"delFlag\":0}],\"status\":\"1\"}],\"page\":1}
@ -268,9 +280,11 @@ public class WaterRequestUtil {
hashMap.put("size",100);
hashMap.put("systemCode",systemCode);
HttpRequest get = createPost(usersUrl,usersServiceId,usersAppsecret);
HttpResponse response = get.body(JSONObject.toJSONString(hashMap))
.execute();
String body = response.body();
String body;
try (HttpResponse response = get.body(JSONObject.toJSONString(hashMap))
.execute()) {
body = response.body();
}
WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class);
isSuccess(waterResult);
return waterResult;

5
shuili-admin/src/main/java/com/kms/web/utils/scheduled/WaterScheduled.java

@ -61,7 +61,7 @@ public class WaterScheduled {
QueryWrapper<SysUser> query = Wrappers.query();
query.eq("single_user_id",id);
SysUser user = userService.getOne(query,false);
Boolean flag = (user==null);
boolean flag = (user==null);
if(flag){
user = new SysUser();
user.preInsert();
@ -103,8 +103,7 @@ public class WaterScheduled {
}else {
user.setStatus("1");
}
List<String> collect = singleUser.getRoleList().stream().map(singleRole -> singleRole.getId()).collect(Collectors.toList());
user.setRoleIds(collect.toArray(new String[collect.size()]));
user.setRoleIds(singleUser.getRoleList().stream().map(SingleRole::getId).toArray(String[]::new));
if(flag){
userService.singleInsertUser(user);
}else {

104
shuili-framework/src/main/java/com/shuili/common/core/domain/entity/SysUser.java

@ -9,6 +9,8 @@ import com.shuili.common.annotation.Excel;
import com.shuili.common.annotation.Excel.Type;
import com.shuili.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
@ -21,6 +23,7 @@ import java.util.List;
*
* @author shuili
*/
@EqualsAndHashCode(callSuper = true)
@TableName("sys_user")
@Data
public class SysUser extends BaseEntity
@ -117,6 +120,7 @@ public class SysUser extends BaseEntity
private String oldPassword;
private String isFirst;//1首次登陆 0 非首次登陆
@Getter
@Excel(name = "邀请人")
private String invitee; //邀请人
@ -134,10 +138,7 @@ public class SysUser extends BaseEntity
private String md5;
public String getInvitee() {
return invitee;
}
public void setInvitee(String invitee) {
public void setInvitee(String invitee) {
this.invitee = invitee;
}
public String getRoleName() {
@ -274,101 +275,6 @@ public class SysUser extends BaseEntity
return password;
}
public void setPassword(String password)
{
this.password = password;
}
public String getSalt()
{
return salt;
}
public void setSalt(String salt)
{
this.salt = salt;
}
public String getStatus()
{
return status;
}
public void setStatus(String status)
{
this.status = status;
}
public String getDelFlag()
{
return delFlag;
}
public void setDelFlag(String delFlag)
{
this.delFlag = delFlag;
}
public String getLoginIp()
{
return loginIp;
}
public void setLoginIp(String loginIp)
{
this.loginIp = loginIp;
}
public Date getLoginDate()
{
return loginDate;
}
public void setLoginDate(Date loginDate)
{
this.loginDate = loginDate;
}
public SysDept getDept()
{
return dept;
}
public void setDept(SysDept dept)
{
this.dept = dept;
}
public List<SysRole> getRoles()
{
return roles;
}
public void setRoles(List<SysRole> roles)
{
this.roles = roles;
}
public String[] getRoleIds()
{
return roleIds;
}
public void setRoleIds(String[] roleIds)
{
this.roleIds = roleIds;
}
public String[] getPostIds()
{
return postIds;
}
public void setPostIds(String[] postIds)
{
this.postIds = postIds;
}
}

125
shuili-system/src/main/java/com/kms/framework/web/service/SysPermissionService.java

@ -1,12 +1,17 @@
package com.kms.framework.web.service;
import com.shuili.common.core.domain.entity.SysUser;
import com.kms.system.service.SysMenuService;
import com.kms.system.service.SysRoleService;
import com.shuili.common.core.domain.entity.SysMenu;
import com.shuili.common.core.domain.entity.SysUser;
import com.shuili.common.core.redis.RedisCache;
import com.shuili.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
@ -16,43 +21,83 @@ import java.util.Set;
*/
@Component
public class SysPermissionService {
@Autowired
private SysRoleService roleService;
@Autowired
private SysMenuService menuService;
/**
* 获取角色数据权限
*
* @param user 用户信息
* @return 角色权限信息
*/
public Set<String> getRolePermission(SysUser user) {
Set<String> roles = new HashSet<String>();
// 管理员拥有所有权限
if (user.isAdmin()) {
roles.add("admin");
} else {
roles.addAll(roleService.selectRolePermissionByUserId(user.getId()));
}
return roles;
}
/**
* 获取菜单数据权限
*
* @param user 用户信息
* @return 菜单权限信息
*/
public Set<String> getMenuPermission(SysUser user) {
Set<String> perms = new HashSet<String>();
// 管理员拥有所有权限
if (user.isAdmin()) {
perms.add("*:*:*");
} else {
perms.addAll(menuService.selectMenuPermsByUserId(user.getId()));
}
return perms;
}
@Autowired
private SysRoleService roleService;
@Autowired
private SysMenuService menuService;
@Autowired
private RedisCache redisCache;
/**
* 获取角色数据权限
*
* @param user 用户信息
* @return 角色权限信息
*/
public Set<String> getRolePermission(SysUser user) {
Set<String> roles = new HashSet<String>();
// 管理员拥有所有权限
if (user.isAdmin()) {
roles.add("admin");
} else {
roles.addAll(roleService.selectRolePermissionByUserId(user.getId()));
}
return roles;
}
/**
* 获取菜单数据权限
*
* @param user 用户信息
* @return 菜单权限信息
*/
public Set<String> getMenuPermission(SysUser user) {
Set<String> perms = new HashSet<String>();
// 管理员拥有所有权限
if (user.isAdmin()) {
perms.add("*:*:*");
} else {
perms.addAll(menuService.selectMenuPermsByUserId(user.getId()));
perms.addAll(getUserPermissionFromPortal(user.getId()));
}
return perms;
}
public List<String> getUserPermissionFromPortal(String userId) {
Object cache = redisCache.getCacheObject(permsKey(userId));
if (cache != null) {
return StringUtils.cast(cache);
} else {
return Collections.emptyList();
}
}
public List<SysMenu> getUserMenuFromPortal(String userId) {
Object cache = redisCache.getCacheObject(menusKey(userId));
if (cache != null) {
List<String> ids = StringUtils.cast(cache);
return menuService.selectMenuList(ids);
} else {
return Collections.emptyList();
}
}
public void setUserPermissionFromPortal(String userId, List<String> perms) {
redisCache.setCacheObject(permsKey(userId), perms);
}
public void setUserMenuFromPortal(String userId, List<String> menus) {
redisCache.setCacheObject(menusKey(userId), menus);
}
private String permsKey(String userId) {
return "user_perms:" + userId;
}
private String menusKey(String userId) {
return "user_menus:" + userId;
}
}

188
shuili-system/src/main/java/com/kms/system/service/SysMenuService.java

@ -1,16 +1,17 @@
package com.kms.system.service;
import com.kms.common.utils.BaseEntityUtils;
import com.kms.system.domain.vo.MetaVo;
import com.kms.system.domain.vo.RouterVo;
import com.kms.system.mapper.SysMenuMapper;
import com.kms.system.mapper.SysRoleMenuMapper;
import com.shuili.common.constant.UserConstants;
import com.shuili.common.core.domain.TreeSelect;
import com.shuili.common.core.domain.entity.SysMenu;
import com.shuili.common.core.domain.entity.SysUser;
import com.shuili.common.core.service.BaseService;
import com.shuili.common.utils.StringUtils;
import com.kms.common.utils.BaseEntityUtils;
import com.kms.system.domain.vo.MetaVo;
import com.kms.system.domain.vo.RouterVo;
import com.kms.system.mapper.SysMenuMapper;
import com.kms.system.mapper.SysRoleMenuMapper;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -23,8 +24,7 @@ import java.util.stream.Collectors;
* @author kms
*/
@Service
public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
{
public class SysMenuService extends BaseService<SysMenuMapper, SysMenu> {
public static final String PREMISSION_STRING = "perms[\"{0}\"]";
@Autowired
@ -39,8 +39,7 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param userId 用户ID
* @return 菜单列表
*/
public List<SysMenu> selectMenuList(String userId)
{
public List<SysMenu> selectMenuList(String userId) {
return selectMenuList(new SysMenu(), userId);
}
@ -50,36 +49,36 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param menu 菜单信息
* @return 菜单列表
*/
public List<SysMenu> selectMenuList(SysMenu menu, String userId)
{
public List<SysMenu> selectMenuList(SysMenu menu, String userId) {
List<SysMenu> menuList = null;
// 管理员显示所有菜单信息
if (SysUser.isAdmin(userId))
{
if (SysUser.isAdmin(userId)) {
menuList = menuMapper.selectMenuList(menu);
}
else
{
} else {
menu.getParams().put("userId", userId);
menuList = menuMapper.selectMenuListByUserId(menu);
}
return menuList;
}
public List<SysMenu> selectMenuList(List<String> ids) {
if (CollectionUtils.isEmpty(ids)) {
return Collections.emptyList();
}
return menuMapper.selectBatchIds(ids);
}
/**
* 根据用户ID查询权限
*
* @param userId 用户ID
* @return 权限列表
*/
public Set<String> selectMenuPermsByUserId(String userId)
{
public Set<String> selectMenuPermsByUserId(String userId) {
List<String> perms = menuMapper.selectMenuPermsByUserId(userId);
Set<String> permsSet = new HashSet<>();
for (String perm : perms)
{
if (StringUtils.isNotEmpty(perm))
{
for (String perm : perms) {
if (StringUtils.isNotEmpty(perm)) {
permsSet.addAll(Arrays.asList(perm.trim().split(",")));
}
}
@ -92,15 +91,11 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param userId 用户名称
* @return 菜单列表
*/
public List<SysMenu> selectMenuTreeByUserId(String userId)
{
public List<SysMenu> selectMenuTreeByUserId(String userId) {
List<SysMenu> menus = null;
if ("1".equals(userId))
{
if ("1".equals(userId)) {
menus = menuMapper.selectMenuTreeAll();
}
else
{
} else {
menus = menuMapper.selectMenuTreeByUserId(userId);
}
return getChildPerms(menus, "0");
@ -112,8 +107,7 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param roleId 角色ID
* @return 选中菜单列表
*/
public List<String> selectMenuListByRoleId(String roleId)
{
public List<String> selectMenuListByRoleId(String roleId) {
return menuMapper.selectMenuListByRoleId(roleId);
}
@ -123,11 +117,9 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param menus 菜单列表
* @return 路由列表
*/
public List<RouterVo> buildMenus(List<SysMenu> menus)
{
public List<RouterVo> buildMenus(List<SysMenu> menus) {
List<RouterVo> routers = new LinkedList<RouterVo>();
for (SysMenu menu : menus)
{
for (SysMenu menu : menus) {
RouterVo router = new RouterVo();
router.setHidden("1".equals(menu.getVisible()));
router.setName(getRouteName(menu));
@ -135,14 +127,11 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
router.setComponent(getComponent(menu));
router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon()));
List<SysMenu> cMenus = menu.getChildren();
if (!cMenus.isEmpty() && cMenus.size() > 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType()))
{
if (!cMenus.isEmpty() && cMenus.size() > 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType())) {
router.setAlwaysShow(true);
router.setRedirect("noRedirect");
router.setChildren(buildMenus(cMenus));
}
else if (isMeunFrame(menu))
{
} else if (isMeunFrame(menu)) {
List<RouterVo> childrenList = new ArrayList<RouterVo>();
RouterVo children = new RouterVo();
children.setPath(menu.getPath());
@ -163,30 +152,25 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param menus 菜单列表
* @return 树结构列表
*/
public List<SysMenu> buildMenuTree(List<SysMenu> menus)
{
List<SysMenu> returnList = new ArrayList<SysMenu>();
List<String> tempList = new ArrayList<String>();
for (SysMenu dept : menus)
{
tempList.add(dept.getId());
}
for (Iterator<SysMenu> iterator = menus.iterator(); iterator.hasNext();)
{
SysMenu menu = (SysMenu) iterator.next();
// 如果是顶级节点, 遍历该父节点的所有子节点
if (!tempList.contains(menu.getParentId()))
{
recursionFn(menus, menu);
returnList.add(menu);
public List<SysMenu> buildMenuTree(List<SysMenu> menus) {
List<SysMenu> returnList = new ArrayList<SysMenu>();
List<String> tempList = new ArrayList<String>();
for (SysMenu dept : menus) {
tempList.add(dept.getId());
}
for (Iterator<SysMenu> iterator = menus.iterator(); iterator.hasNext(); ) {
SysMenu menu = (SysMenu) iterator.next();
// 如果是顶级节点, 遍历该父节点的所有子节点
if (!tempList.contains(menu.getParentId())) {
recursionFn(menus, menu);
returnList.add(menu);
}
}
if (returnList.isEmpty()) {
returnList = menus;
}
return returnList;
}
if (returnList.isEmpty())
{
returnList = menus;
}
return returnList;
}
/**
* 构建前端所需要下拉树结构
@ -194,8 +178,7 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param menus 菜单列表
* @return 下拉树结构列表
*/
public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus)
{
public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus) {
List<SysMenu> menuTrees = buildMenuTree(menus);
return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
}
@ -206,8 +189,7 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param menuId 菜单ID
* @return 菜单信息
*/
public SysMenu selectMenuById(String menuId)
{
public SysMenu selectMenuById(String menuId) {
return menuMapper.selectMenuById(menuId);
}
@ -217,8 +199,7 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param menuId 菜单ID
* @return 结果
*/
public boolean hasChildByMenuId(String menuId)
{
public boolean hasChildByMenuId(String menuId) {
int result = menuMapper.hasChildByMenuId(menuId);
return result > 0 ? true : false;
}
@ -229,8 +210,7 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param menuId 菜单ID
* @return 结果
*/
public boolean checkMenuExistRole(String menuId)
{
public boolean checkMenuExistRole(String menuId) {
int result = roleMenuMapper.checkMenuExistRole(menuId);
return result > 0 ? true : false;
}
@ -241,8 +221,7 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param menu 菜单信息
* @return 结果
*/
public int insertMenu(SysMenu menu)
{
public int insertMenu(SysMenu menu) {
BaseEntityUtils.preInsert(menu);
return menuMapper.insertMenu(menu);
}
@ -253,8 +232,7 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param menu 菜单信息
* @return 结果
*/
public int updateMenu(SysMenu menu)
{
public int updateMenu(SysMenu menu) {
BaseEntityUtils.preUpdate(menu);
return menuMapper.updateMenu(menu);
}
@ -265,8 +243,7 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param menuId 菜单ID
* @return 结果
*/
public int deleteMenuById(String menuId)
{
public int deleteMenuById(String menuId) {
return menuMapper.deleteMenuById(menuId);
}
@ -276,8 +253,7 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param menu 菜单信息
* @return 结果
*/
public String checkMenuNameUnique(SysMenu menu)
{
public String checkMenuNameUnique(SysMenu menu) {
// Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId();
// SysMenu info = menuMapper.checkMenuNameUnique(menu.getMenuName(), menu.getParentId());
// if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue())
@ -293,12 +269,10 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param menu 菜单信息
* @return 路由名称
*/
public String getRouteName(SysMenu menu)
{
public String getRouteName(SysMenu menu) {
String routerName = StringUtils.capitalize(menu.getPath());
// 非外链并且是一级目录(类型为目录)
if (isMeunFrame(menu))
{
if (isMeunFrame(menu)) {
routerName = StringUtils.EMPTY;
}
return routerName;
@ -310,18 +284,15 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param menu 菜单信息
* @return 路由地址
*/
public String getRouterPath(SysMenu menu)
{
public String getRouterPath(SysMenu menu) {
String routerPath = menu.getPath();
// 非外链并且是一级目录(类型为目录)
if ("0".equals(menu.getParentId()) && UserConstants.TYPE_DIR.equals(menu.getMenuType())
&& UserConstants.NO_FRAME.equals(menu.getIsFrame()))
{
&& UserConstants.NO_FRAME.equals(menu.getIsFrame())) {
routerPath = "/" + menu.getPath();
}
// 非外链并且是一级目录(类型为菜单)
else if (isMeunFrame(menu))
{
else if (isMeunFrame(menu)) {
routerPath = "/";
}
return routerPath;
@ -333,11 +304,9 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param menu 菜单信息
* @return 组件信息
*/
public String getComponent(SysMenu menu)
{
public String getComponent(SysMenu menu) {
String component = UserConstants.LAYOUT;
if (StringUtils.isNotEmpty(menu.getComponent()) && !isMeunFrame(menu))
{
if (StringUtils.isNotEmpty(menu.getComponent()) && !isMeunFrame(menu)) {
component = menu.getComponent();
}
return component;
@ -349,8 +318,7 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param menu 菜单信息
* @return 结果
*/
public boolean isMeunFrame(SysMenu menu)
{
public boolean isMeunFrame(SysMenu menu) {
return "0".equals(menu.getParentId()) && UserConstants.TYPE_MENU.equals(menu.getMenuType())
&& menu.getIsFrame().equals(UserConstants.NO_FRAME);
}
@ -358,19 +326,16 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
/**
* 根据父节点的ID获取所有子节点
*
* @param list 分类表
* @param list 分类表
* @param parentId 传入的父节点ID
* @return String
*/
public List<SysMenu> getChildPerms(List<SysMenu> list, String parentId)
{
public List<SysMenu> getChildPerms(List<SysMenu> list, String parentId) {
List<SysMenu> returnList = new ArrayList<SysMenu>();
for (Iterator<SysMenu> iterator = list.iterator(); iterator.hasNext();)
{
for (Iterator<SysMenu> iterator = list.iterator(); iterator.hasNext(); ) {
SysMenu t = (SysMenu) iterator.next();
// 一、根据传入的某个父节点ID,遍历该父节点的所有子节点
if (t.getParentId().equals(parentId))
{
if (t.getParentId().equals(parentId)) {
recursionFn(list, t);
returnList.add(t);
}
@ -384,15 +349,12 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
* @param list
* @param t
*/
private void recursionFn(List<SysMenu> list, SysMenu t)
{
private void recursionFn(List<SysMenu> list, SysMenu t) {
// 得到子节点列表
List<SysMenu> childList = getChildList(list, t);
t.setChildren(childList);
for (SysMenu tChild : childList)
{
if (hasChild(list, tChild))
{
for (SysMenu tChild : childList) {
if (hasChild(list, tChild)) {
recursionFn(list, tChild);
}
}
@ -401,15 +363,12 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
/**
* 得到子节点列表
*/
private List<SysMenu> getChildList(List<SysMenu> list, SysMenu t)
{
private List<SysMenu> getChildList(List<SysMenu> list, SysMenu t) {
List<SysMenu> tlist = new ArrayList<SysMenu>();
Iterator<SysMenu> it = list.iterator();
while (it.hasNext())
{
while (it.hasNext()) {
SysMenu n = (SysMenu) it.next();
if (n.getParentId().equals(t.getId()))
{
if (n.getParentId().equals(t.getId())) {
tlist.add(n);
}
}
@ -419,8 +378,7 @@ public class SysMenuService extends BaseService<SysMenuMapper,SysMenu>
/**
* 判断是否有子节点
*/
private boolean hasChild(List<SysMenu> list, SysMenu t)
{
private boolean hasChild(List<SysMenu> list, SysMenu t) {
return getChildList(list, t).size() > 0 ? true : false;
}

26
shuili-system/src/main/java/com/kms/system/service/SysUserService.java

@ -92,7 +92,7 @@ public class SysUserService extends BaseService<SysUserMapper,SysUser> {
*/
public String selectUserRoleGroup(String userName) {
List<SysRole> list = roleMapper.selectRolesByUserName(userName);
StringBuffer idsStr = new StringBuffer();
StringBuilder idsStr = new StringBuilder();
for (SysRole role : list) {
idsStr.append(role.getRoleName()).append(",");
}
@ -122,7 +122,7 @@ public class SysUserService extends BaseService<SysUserMapper,SysUser> {
*/
public String selectUserPostGroup(String userName) {
List<SysPost> list = postMapper.selectPostsByUserName(userName);
StringBuffer idsStr = new StringBuffer();
StringBuilder idsStr = new StringBuilder();
for (SysPost post : list) {
idsStr.append(post.getPostName()).append(",");
}
@ -182,10 +182,9 @@ public class SysUserService extends BaseService<SysUserMapper,SysUser> {
public void checkUserAllowed(SysUser user) {
// 判断当前登录用户是否超级用户
SysUser user1 = UserUtils.getUser();
if (!user1.isAdmin() && StringUtils.isNotNull(user.getId()) && user.isAdmin())
{
throw new CustomException("不允许操作超级管理员用户");
}
if (user1 != null && !user1.isAdmin() && StringUtils.isNotNull(user.getId()) && user.isAdmin()) {
throw new CustomException("不允许操作超级管理员用户");
}
}
/**
@ -302,7 +301,7 @@ public class SysUserService extends BaseService<SysUserMapper,SysUser> {
ur.setRoleId(roleId);
list.add(ur);
}
if (list.size() > 0) {
if (!list.isEmpty()) {
userRoleService.saveBatch(list);
}
}
@ -325,7 +324,7 @@ public class SysUserService extends BaseService<SysUserMapper,SysUser> {
BaseEntityUtils.preUpdate(up);
list.add(up);
}
if (list.size() > 0) {
if (!list.isEmpty()) {
userPostService.saveBatch(list);
}
}
@ -373,7 +372,7 @@ public class SysUserService extends BaseService<SysUserMapper,SysUser> {
* @return 结果
*/
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName) {
if (StringUtils.isNull(userList) || userList.size() == 0) {
if (StringUtils.isNull(userList) || userList.isEmpty()) {
throw new CustomException("导入用户数据不能为空!");
}
int successNum = 0;
@ -439,15 +438,14 @@ public class SysUserService extends BaseService<SysUserMapper,SysUser> {
}
}
successNum++;
successMsg.append("<br/>" + successNum + "、账号 " + user.getUserName() + " 导入成功");
successMsg.append("<br/>").append(successNum).append("、账号 ").append(user.getUserName()).append(" 导入成功");
} else /* if (isUpdateSupport) */ {
// for (SysUser temp : findList) {
//
// }
failureNum++;
failureMsg.append("<br/>" + failureNum + "、账号 " +
user.getUserName() + " 已存在");
failureMsg.append("<br/>").append(failureNum).append("、账号 ").append(user.getUserName()).append(" 已存在");
// SysUser sysUser = findList.get(0);
// user.setId(sysUser.getId());
// sysUser.setUpdateBy(operName);
@ -461,13 +459,13 @@ public class SysUserService extends BaseService<SysUserMapper,SysUser> {
}else {
failureNum++;
failureMsg.append("<br/>" + failureNum + "、用户名、手机号、邮箱、身份证必须存在!");
failureMsg.append("<br/>").append(failureNum).append("、用户名、手机号、邮箱、身份证必须存在!");
}
} catch (Exception e) {
failureNum++;
String msg = "<br/>" + failureNum + "、账号 " + user.getUserName() + " 导入失败:";
failureMsg.append(msg + e.getMessage());
failureMsg.append(msg).append(e.getMessage());
log.error(msg, e);
}
}

Loading…
Cancel
Save