This commit is contained in:
caozehui
2024-11-20 11:06:56 +08:00
parent 332c8909ff
commit e4fa161e5a
11 changed files with 108 additions and 77 deletions

View File

@@ -41,28 +41,28 @@ public class AuthController extends BaseController {
private final ISysUserService sysUserService; private final ISysUserService sysUserService;
@RequestMapping("/login") // @RequestMapping("/login")
public HttpResult<Token> login() { // public HttpResult<Token> login() {
Token token = new Token(); // Token token = new Token();
token.setAccessToken("bqddxxwqmfncffacvbpkuxvwvqrhln"); // token.setAccessToken("bqddxxwqmfncffacvbpkuxvwvqrhln");
HttpResult<Token> result = new HttpResult<>(); // HttpResult<Token> result = new HttpResult<>();
result.setMessage("成功"); // result.setMessage("成功");
result.setCode("A0000"); // result.setCode("A0000");
result.setData(token); // result.setData(token);
return result; // return result;
} // }
//
@RequestMapping("/logout") // @RequestMapping("/logout")
public HttpResult<String> logout() { // public HttpResult<String> logout() {
HttpResult<String> result = new HttpResult<>(); // HttpResult<String> result = new HttpResult<>();
result.setMessage("成功"); // result.setMessage("成功");
result.setCode("A0000"); // result.setCode("A0000");
result.setData("退出成功"); // result.setData("退出成功");
return result; // return result;
} // }
@OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.AUTHENTICATE) @OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.AUTHENTICATE)
@PostMapping("/login1") @PostMapping("/login")
@ApiOperation("登录") @ApiOperation("登录")
public HttpResult<Object> login(@RequestBody SysUserParam.LoginParam param) { public HttpResult<Object> login(@RequestBody SysUserParam.LoginParam param) {
String methodDescribe = getMethodDescribe("login"); String methodDescribe = getMethodDescribe("login");
@@ -83,7 +83,7 @@ public class AuthController extends BaseController {
@OperateInfo(info = LogEnum.SYSTEM_SERIOUS, operateType = OperateType.LOGOUT) @OperateInfo(info = LogEnum.SYSTEM_SERIOUS, operateType = OperateType.LOGOUT)
@ApiOperation("注销登录") @ApiOperation("注销登录")
@PostMapping("/logout1") @PostMapping("/logout")
public HttpResult<Object> logout(HttpServletRequest request) { public HttpResult<Object> logout(HttpServletRequest request) {
String methodDescribe = getMethodDescribe("logout"); String methodDescribe = getMethodDescribe("logout");
LogUtil.njcnDebug(log, "{},注销登录", methodDescribe); LogUtil.njcnDebug(log, "{},注销登录", methodDescribe);

View File

@@ -38,12 +38,6 @@ public interface UserValidMessage {
String SORT_NOT_NULL = "排序不能为空请检查sort参数"; String SORT_NOT_NULL = "排序不能为空请检查sort参数";
String PATH_NOT_BLANK = "路径不能为空请检查path参数";
String COMPONENT_NOT_BLANK = "组件地址不能为空请检查component参数";
String PATH_FORMAT_ERROR = "路径格式错误请检查path参数";
String TYPE_NOT_BLANK = "类型不能为空请检查type参数"; String TYPE_NOT_BLANK = "类型不能为空请检查type参数";
String PARAM_FORMAT_ERROR = "参数值非法"; String PARAM_FORMAT_ERROR = "参数值非法";

View File

@@ -17,7 +17,10 @@ public enum UserResponseEnum {
EXISTS_CHILDREN_NOT_UPDATE("A010008", "该菜单下存在子节点,无法将菜单修改为按钮"), EXISTS_CHILDREN_NOT_UPDATE("A010008", "该菜单下存在子节点,无法将菜单修改为按钮"),
EXISTS_CHILDREN_NOT_DELETE("A010007", "该节点下存在子节点,无法删除"), EXISTS_CHILDREN_NOT_DELETE("A010007", "该节点下存在子节点,无法删除"),
SUPER_ADMINSTRATOR_ROLE_CANNOT_UPDATE("A010009", "禁止修改超级管理员角色"), SUPER_ADMINSTRATOR_ROLE_CANNOT_UPDATE("A010009", "禁止修改超级管理员角色"),
SUPER_ADMINSTRATOR_ROLE_CANNOT_DELETE("A010009", "禁止删除超级管理员角色"),; SUPER_ADMINSTRATOR_ROLE_CANNOT_DELETE("A010009", "禁止删除超级管理员角色"),
SUPER_ADMIN_CANNOT_DELETE("A010010", "禁止删除超级管理员用户"),
COMPONENT_NOT_BLANK("A010011", "组件地址不能为空"),
FUNCTION_PATH_FORMAT_ERROR("A010012", "路由地址格式错误");
private String code; private String code;
private String message; private String message;

View File

@@ -12,7 +12,6 @@ import com.njcn.common.utils.LogUtil;
import com.njcn.gather.user.user.pojo.param.SysFunctionParam; import com.njcn.gather.user.user.pojo.param.SysFunctionParam;
import com.njcn.gather.user.user.pojo.param.SysRoleParam; import com.njcn.gather.user.user.pojo.param.SysRoleParam;
import com.njcn.gather.user.user.pojo.po.SysFunction; import com.njcn.gather.user.user.pojo.po.SysFunction;
import com.njcn.gather.user.user.pojo.vo.ButtonVO;
import com.njcn.gather.user.user.service.ISysFunctionService; import com.njcn.gather.user.user.service.ISysFunctionService;
import com.njcn.gather.user.user.service.ISysRoleFunctionService; import com.njcn.gather.user.user.service.ISysRoleFunctionService;
import com.njcn.web.controller.BaseController; import com.njcn.web.controller.BaseController;
@@ -28,6 +27,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
@@ -149,15 +149,15 @@ public class SysFunctionController extends BaseController {
@OperateInfo(info = LogEnum.SYSTEM_COMMON) @OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getButton") @GetMapping("/getButton")
@ApiOperation("获取按钮") @ApiOperation("获取按钮")
public HttpResult<ButtonVO> getButton(HttpServletRequest request) { public HttpResult<Map<String, List<String>>> getButton(HttpServletRequest request) {
String methodDescribe = getMethodDescribe("getButton"); String methodDescribe = getMethodDescribe("getButton");
// String tokenStr = request.getHeader(SecurityConstants.AUTHORIZATION_KEY); String tokenStr = request.getHeader(SecurityConstants.AUTHORIZATION_KEY);
// if (StrUtil.isNotBlank(tokenStr)) { if (StrUtil.isNotBlank(tokenStr)) {
// tokenStr.replace(SecurityConstants.AUTHORIZATION_PREFIX, Strings.EMPTY); tokenStr.replace(SecurityConstants.AUTHORIZATION_PREFIX, Strings.EMPTY);
// String userId = (String) JwtUtil.parseToken(tokenStr).get("userId"); String userId = (String) JwtUtil.parseToken(tokenStr).get("userId");
// ButtonVO buttonVO = sysFunctionService.getButtonByUserId(userId); Map<String, List<String>> map = sysFunctionService.getButtonByUserId(userId);
// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, buttonVO, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, map, methodDescribe);
// } }
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
} }
@OperateInfo(info = LogEnum.SYSTEM_COMMON) @OperateInfo(info = LogEnum.SYSTEM_COMMON)

View File

@@ -18,5 +18,12 @@ public interface SysFunctionMapper extends MPJBaseMapper<SysFunction> {
* @return 菜单列表 * @return 菜单列表
*/ */
List<MenuVO> getMenuByUserId(String userId); List<MenuVO> getMenuByUserId(String userId);
/*
* 根据用户id获取按钮列表
* @param userId 用户id
* @return 按钮列表
*/
List<SysFunction> getButtonByUserId(String userId);
} }

View File

@@ -4,7 +4,7 @@
<select id="getMenuByUserId" resultType="com.njcn.gather.user.user.pojo.vo.MenuVO"> <select id="getMenuByUserId" resultType="com.njcn.gather.user.user.pojo.vo.MenuVO">
SELECT a.id as id, SELECT distinct a.id as id,
a.path as path, a.path as path,
a.name as name, a.name as name,
if(a.pId!= '0', a.component, '') as component, if(a.pId!= '0', a.component, '') as component,
@@ -16,7 +16,16 @@
inner join sys_role_function b on a.id = b.Function_Id inner join sys_role_function b on a.id = b.Function_Id
inner join sys_user_role c on b.Role_Id = c.Role_Id inner join sys_user_role c on b.Role_Id = c.Role_Id
WHERE c.User_Id = #{userId} WHERE c.User_Id = #{userId}
AND a.type in (0, 1) AND a.type in (0)
</select>
<select id="getButtonByUserId" resultType="com.njcn.gather.user.user.pojo.po.SysFunction">
select distinct a.*
from sys_function a
inner join sys_role_function b on a.id = b.Function_Id
inner join sys_user_role c on b.Role_Id = c.Role_Id
where c.User_Id = #{userId}
and a.type in (1)
</select> </select>
</mapper> </mapper>

View File

@@ -10,6 +10,7 @@ import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import javax.validation.constraints.Pattern; import javax.validation.constraints.Pattern;
/** /**
@@ -32,12 +33,12 @@ public class SysFunctionParam {
private String code; private String code;
@ApiModelProperty("路径") @ApiModelProperty("路径")
@NotBlank(message = UserValidMessage.PATH_NOT_BLANK) // @NotBlank(message = UserValidMessage.PATH_NOT_BLANK)
@Pattern(regexp = PatternRegex.FUNCTION_URL, message = UserValidMessage.PATH_FORMAT_ERROR) // @Pattern(regexp = PatternRegex.FUNCTION_URL, message = UserValidMessage.PATH_FORMAT_ERROR)
private String path; private String path;
@ApiModelProperty("组件地址") @ApiModelProperty("组件地址")
@NotBlank(message = UserValidMessage.COMPONENT_NOT_BLANK) // @NotBlank(message = UserValidMessage.COMPONENT_NOT_BLANK)
private String component; private String component;
@ApiModelProperty("图标") @ApiModelProperty("图标")

View File

@@ -3,9 +3,9 @@ package com.njcn.gather.user.user.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.gather.user.user.pojo.param.SysFunctionParam; import com.njcn.gather.user.user.pojo.param.SysFunctionParam;
import com.njcn.gather.user.user.pojo.po.SysFunction; import com.njcn.gather.user.user.pojo.po.SysFunction;
import com.njcn.gather.user.user.pojo.vo.ButtonVO;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author caozehui * @author caozehui
@@ -75,6 +75,11 @@ public interface ISysFunctionService extends IService<SysFunction> {
*/ */
List<SysFunction> getMenuByUserId(String userId); List<SysFunction> getMenuByUserId(String userId);
//ButtonVO getButtonByUserId(String userId); /**
* 根据用户id获取按钮
* @param userId 用户id
* @return 按钮
*/
Map<String, List<String>> getButtonByUserId(String userId);
} }

View File

@@ -50,11 +50,4 @@ public interface ISysRoleService extends IService<SysRole> {
* @return 角色列表 * @return 角色列表
*/ */
List<SysRole> simpleList(); List<SysRole> simpleList();
/**
* 判断角色id是否有相关联的资源和组件
*
* @param ids 角色id
*/
// boolean selectRelevance(List<String> ids);
} }

View File

@@ -1,9 +1,11 @@
package com.njcn.gather.user.user.service.impl; package com.njcn.gather.user.user.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.constant.PatternRegex;
import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.gather.user.pojo.constant.FunctionConst; import com.njcn.gather.user.pojo.constant.FunctionConst;
@@ -15,15 +17,14 @@ import com.njcn.gather.user.user.pojo.vo.MenuVO;
import com.njcn.gather.user.user.pojo.vo.MetaVO; import com.njcn.gather.user.user.pojo.vo.MetaVO;
import com.njcn.gather.user.user.service.ISysFunctionService; import com.njcn.gather.user.user.service.ISysFunctionService;
import com.njcn.gather.user.user.service.ISysRoleFunctionService; import com.njcn.gather.user.user.service.ISysRoleFunctionService;
import com.njcn.gather.user.user.service.ISysUserRoleService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.Collections; import java.util.*;
import java.util.Comparator; import java.util.regex.Pattern;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -36,6 +37,7 @@ import java.util.stream.Collectors;
public class SysFunctionServiceImpl extends ServiceImpl<SysFunctionMapper, SysFunction> implements ISysFunctionService { public class SysFunctionServiceImpl extends ServiceImpl<SysFunctionMapper, SysFunction> implements ISysFunctionService {
private final ISysRoleFunctionService sysRoleFunctionService; private final ISysRoleFunctionService sysRoleFunctionService;
private final ISysUserRoleService sysUserRoleService;
@Override @Override
public List<SysFunction> getFunctionTreeByKeyword(String keyword) { public List<SysFunction> getFunctionTreeByKeyword(String keyword) {
@@ -116,21 +118,6 @@ public class SysFunctionServiceImpl extends ServiceImpl<SysFunctionMapper, SysFu
return allFunctions.stream().filter(fun -> Objects.equals(FunctionConst.FATHER_PID, fun.getPid())).peek(funS -> funS.setChildren(getChildrenList(funS, allFunctions))).sorted(Comparator.comparingInt(SysFunction::getSort)).collect(Collectors.toList()); return allFunctions.stream().filter(fun -> Objects.equals(FunctionConst.FATHER_PID, fun.getPid())).peek(funS -> funS.setChildren(getChildrenList(funS, allFunctions))).sorted(Comparator.comparingInt(SysFunction::getSort)).collect(Collectors.toList());
} }
// @Override
// public SysFunction getFunctionById(String id) {
// return this.lambdaQuery().eq(SysFunction::getId, id).one();
// }
// @Override
// public List<SysFunction> getButtonsById(String id) {
// List<Integer> typeList = Arrays.asList(FunctionConst.TYPE_MENU, FunctionConst.TYPE_BUTTON);
// return this.lambdaQuery()
// .eq(SysFunction::getPid, id)
// .in(SysFunction::getType, typeList)
// .eq(SysFunction::getState, DataStateEnum.ENABLE.getCode())
// .orderByAsc(SysFunction::getSort).list();
// }
@Override @Override
public List<SysFunction> getMenuByUserId(String userId) { public List<SysFunction> getMenuByUserId(String userId) {
List<MenuVO> menu = this.baseMapper.getMenuByUserId(userId); List<MenuVO> menu = this.baseMapper.getMenuByUserId(userId);
@@ -148,6 +135,20 @@ public class SysFunctionServiceImpl extends ServiceImpl<SysFunctionMapper, SysFu
return menu.stream().filter(fun -> Objects.equals(FunctionConst.FATHER_PID, fun.getPid())).peek(funS -> funS.setChildren(getChildrenList(funS, menu))).sorted(Comparator.comparingInt(SysFunction::getSort)).collect(Collectors.toList()); return menu.stream().filter(fun -> Objects.equals(FunctionConst.FATHER_PID, fun.getPid())).peek(funS -> funS.setChildren(getChildrenList(funS, menu))).sorted(Comparator.comparingInt(SysFunction::getSort)).collect(Collectors.toList());
} }
@Override
public Map<String, List<String>> getButtonByUserId(String userId) {
List<SysFunction> sysFunctions = this.baseMapper.getButtonByUserId(userId);
Map<String, List<String>> buttonMap = new HashMap<>();
sysFunctions.stream().collect(Collectors.groupingBy(SysFunction::getPid)).forEach((k, v) -> {
SysFunction fatherFunction = this.getById(k);
if (ObjectUtil.isNotNull(fatherFunction)) {
buttonMap.put(fatherFunction.getCode(), v.stream().map(SysFunction::getCode).collect(Collectors.toList()));
}
});
return buttonMap;
}
/** /**
* 根据当前分类找出子类,递归找出子类的子类 * 根据当前分类找出子类,递归找出子类的子类
@@ -162,6 +163,14 @@ public class SysFunctionServiceImpl extends ServiceImpl<SysFunctionMapper, SysFu
* 名称 && 路径做唯一判断 * 名称 && 路径做唯一判断
*/ */
private void checkFunctionParam(SysFunctionParam functionParam, boolean isExcludeSelf) { private void checkFunctionParam(SysFunctionParam functionParam, boolean isExcludeSelf) {
if (functionParam.getType().equals(FunctionConst.TYPE_MENU)) {
if (StrUtil.isBlank(functionParam.getComponent())) {
throw new BusinessException(UserResponseEnum.COMPONENT_NOT_BLANK);
}
if (StrUtil.isBlank(functionParam.getPath()) || !Pattern.matches(PatternRegex.FUNCTION_URL, functionParam.getPath())) {
throw new BusinessException(UserResponseEnum.FUNCTION_PATH_FORMAT_ERROR);
}
}
LambdaQueryWrapper<SysFunction> functionLambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysFunction> functionLambdaQueryWrapper = new LambdaQueryWrapper<>();
// 同一个pid下名称、编码、路径、组件地址不能重复 // 同一个pid下名称、编码、路径、组件地址不能重复
functionLambdaQueryWrapper.eq(SysFunction::getName, functionParam.getName()).eq(SysFunction::getCode, functionParam.getCode()).eq(SysFunction::getPath, functionParam.getPath()).eq(SysFunction::getComponent, functionParam.getComponent()).eq(SysFunction::getPid, functionParam.getPid()).eq(SysFunction::getState, DataStateEnum.ENABLE.getCode()); functionLambdaQueryWrapper.eq(SysFunction::getName, functionParam.getName()).eq(SysFunction::getCode, functionParam.getCode()).eq(SysFunction::getPath, functionParam.getPath()).eq(SysFunction::getComponent, functionParam.getComponent()).eq(SysFunction::getPid, functionParam.getPid()).eq(SysFunction::getState, DataStateEnum.ENABLE.getCode());

View File

@@ -17,6 +17,7 @@ import com.njcn.gather.user.user.mapper.SysUserMapper;
import com.njcn.gather.user.user.pojo.param.SysUserParam; import com.njcn.gather.user.user.pojo.param.SysUserParam;
import com.njcn.gather.user.user.pojo.po.SysRole; import com.njcn.gather.user.user.pojo.po.SysRole;
import com.njcn.gather.user.user.pojo.po.SysUser; import com.njcn.gather.user.user.pojo.po.SysUser;
import com.njcn.gather.user.user.service.ISysRoleService;
import com.njcn.gather.user.user.service.ISysUserRoleService; import com.njcn.gather.user.user.service.ISysUserRoleService;
import com.njcn.gather.user.user.service.ISysUserService; import com.njcn.gather.user.user.service.ISysUserService;
import com.njcn.web.factory.PageFactory; import com.njcn.web.factory.PageFactory;
@@ -41,6 +42,7 @@ import java.util.stream.Collectors;
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService { public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
private final ISysUserRoleService sysUserRoleService; private final ISysUserRoleService sysUserRoleService;
private final ISysRoleService sysRoleService;
@Override @Override
public Page<SysUser> listUser(SysUserParam.SysUserQueryParam queryParam) { public Page<SysUser> listUser(SysUserParam.SysUserQueryParam queryParam) {
@@ -166,6 +168,14 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
@Override @Override
public boolean deleteUser(List<String> ids) { public boolean deleteUser(List<String> ids) {
for (String id : ids) {
List<SysRole> sysRoles = sysUserRoleService.listRoleByUserId(id);
for (SysRole sysRole : sysRoles) {
if (sysRole.getType().equals(RoleConst.TYPE_SUPER_ADMINISTRATOR)) {
throw new BusinessException(UserResponseEnum.SUPER_ADMIN_CANNOT_DELETE); // 超级管理员角色不能删除
}
}
}
// 删除用户角色关联数据 // 删除用户角色关联数据
sysUserRoleService.deleteUserRoleByUserIds(ids); sysUserRoleService.deleteUserRoleByUserIds(ids);
return this.lambdaUpdate() return this.lambdaUpdate()