Compare commits

..

2 Commits

15 changed files with 255 additions and 52 deletions

View File

@ -1,10 +1,30 @@
package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.service.PermissionService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("/data/ed/permission")
public class PermissionController {
@Resource
private PermissionService permissionService;
@ApiOperation(value="查询当前用户在当前目录的功能权限",notes = "")
@GetMapping(value="/{fileId}")
public ElectromagneticResult<?> getUserPermission(@PathVariable("fileId") String fileId) {
String userId = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(permissionService.getUserPermission(userId, fileId));
}
}

View File

@ -1,6 +1,7 @@
package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.manage.pojo.req.*;
import com.electromagnetic.industry.software.manage.service.UserService;
import io.swagger.annotations.ApiOperation;
@ -68,4 +69,14 @@ public class UserController {
public ElectromagneticResult<?> logout(@RequestHeader("Authorization") String token) {
return userService.logout(token);
}
@ApiOperation(value="人员绑定", notes = "")
@RequestMapping(value = "/bindRoles", method = RequestMethod.POST)
public ElectromagneticResult<?> bindRoles(@RequestBody UserRoleRequest userRoleRequest) {
if (userService.bindRoles(userRoleRequest)) {
return ElectromagneticResultUtil.success(true);
} else {
return ElectromagneticResultUtil.fail("500","不可绑定空用户");
}
}
}

View File

@ -1,9 +0,0 @@
package com.electromagnetic.industry.software.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.electromagnetic.industry.software.manage.pojo.models.Permission;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface PermissionMapper extends BaseMapper<Permission> {
}

View File

@ -70,7 +70,7 @@ public interface UserMapper {
/**
* 通过用户ID删除用户
*
* @param userId
* @param userDeleteKeyWords
* @return
*/
int deleteUser(UserDeleteKeyWords userDeleteKeyWords);

View File

@ -1,30 +0,0 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("ed_permission")
public class Permission {
@TableId(type = IdType.AUTO)
private Long id;
/**
* 权限标识
*/
private String code;
/**
* 权限名称
*/
private String name;
/**
* 权限描述
*/
private String description;
}

View File

@ -8,27 +8,30 @@ import java.time.LocalDateTime;
@TableName("ed_role") // 指定表名
public class Role {
@TableId(type = IdType.AUTO)
private Long id;
/**
* 角色编码
*/
@TableField(value = "role_id")
private String roleId;
/**
* 角色名称
*/
@TableField(value = "role_name")
private String roleName;
/**
* 角色描述
*/
@TableField(value = "role_desc")
private String roleDesc;
/**
* 角色状态
*/
@TableField(value = "role_status")
private String roleStatus;
/**
@ -39,6 +42,7 @@ public class Role {
/**
* 创建者姓名
*/
@TableField(value = "creator_name")
private String creatorName;
/**
@ -55,17 +59,19 @@ public class Role {
/**
* 编辑者姓名
*/
@TableField(value = "modifier_name")
private String modifierName;
/**
* 编辑时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(value = "gmt_modified", fill = FieldFill.INSERT_UPDATE)
private LocalDateTime gmtModified;
/**
* 是否有效:0-无效 1-有效
*/
@TableField(value="effect_flag")
private Integer effectFlag;
}

View File

@ -1,5 +1,6 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@ -10,15 +11,18 @@ public class RolePermission {
/**
* 角色编码
*/
@TableField(value="role_id")
private String roleId;
/**
* 文件编码
*/
@TableField(value = "file_id")
private String fileId;
/**
* 权限编码
* 权限标识
*/
private String permissionId;
@TableField(value = "permission_code")
private String permissionCode;
}

View File

@ -1,5 +1,6 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@ -10,10 +11,12 @@ public class UserRole {
/**
* 用户编码
*/
@TableField(value = "user_id")
private String userId;
/**
* 角色编码
*/
@TableField(value="role_id")
private String roleId;
}

View File

@ -0,0 +1,19 @@
package com.electromagnetic.industry.software.manage.pojo.req;
import lombok.Data;
import java.util.List;
@Data
public class UserRoleRequest {
/**
* 用户编号
*/
String userId;
/**
* 角色编号列表
*/
List<String> roleIds;
}

View File

@ -1,7 +1,22 @@
package com.electromagnetic.industry.software.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.electromagnetic.industry.software.manage.pojo.models.Permission;
import java.util.List;
import java.util.Map;
public interface PermissionService extends IService<Permission> {
public interface PermissionService {
/**
* 查询当前用户在当前目录的功能权限
* @param userId
* @param fileId
* @return
*/
Map<String,Boolean> getUserPermission(String userId, String fileId);
/**
* 获取当前用户有权限访问的目录id
*
* @return
*/
List<String> getAccessibleTree();
}

View File

@ -78,4 +78,8 @@ public interface UserService {
*/
ElectromagneticResult<?> logout(String token);
/**
* 人员绑定
*/
Boolean bindRoles(UserRoleRequest userRoleRequest);
}

View File

@ -1,11 +1,81 @@
package com.electromagnetic.industry.software.manage.service.serviceimpl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.electromagnetic.industry.software.manage.mapper.PermissionMapper;
import com.electromagnetic.industry.software.manage.pojo.models.Permission;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.electromagnetic.industry.software.common.enums.FilePermission;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.mapper.RolePermissionMapper;
import com.electromagnetic.industry.software.manage.mapper.UserRoleMapper;
import com.electromagnetic.industry.software.manage.pojo.models.RolePermission;
import com.electromagnetic.industry.software.manage.pojo.models.UserRole;
import com.electromagnetic.industry.software.manage.service.PermissionService;
import org.springframework.stereotype.Service;
@Service
public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permission> {
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class PermissionServiceImpl implements PermissionService {
@Resource
UserRoleMapper userRoleMapper;
@Resource
RolePermissionMapper rolePermissionMapper;
/**
* 查询当前用户在当前目录的功能权限
* @param userId
* @param fileId
* @return
*/
@Override
public Map<String,Boolean> getUserPermission (String userId, String fileId){
Map<String,Boolean> result = new HashMap<>();
QueryWrapper<UserRole> queryWrapper = new QueryWrapper<>();
queryWrapper.select("role_id").eq("user_id", userId);
List<Object> roleIds = userRoleMapper.selectObjs(queryWrapper);
QueryWrapper<RolePermission> queryWrapper1 = new QueryWrapper<>();
queryWrapper1.select("permission_code")
.eq("file_id", fileId)
.in("role_id", roleIds);
List<Object> permissionCodes = rolePermissionMapper.selectObjs(queryWrapper1);
List<String> allCodes = FilePermission.getAllCodes();
for (String code : allCodes) {
if (permissionCodes.contains(code)) {
result.put(code, true);
} else {
result.put(code, false);
}
}
return result;
}
/**
* 获取当前用户有权限访问的目录id
*
* @return
*/
@Override
public List<String> getAccessibleTree() {
String userId = UserThreadLocal.getUserId();
QueryWrapper<UserRole> queryWrapper = new QueryWrapper<>();
queryWrapper.select("role_id").eq("user_id", userId);
List<Object> roleIds = userRoleMapper.selectObjs(queryWrapper);
QueryWrapper<RolePermission> queryWrapper1 = new QueryWrapper<>();
queryWrapper1.select("file_id")
.in("role_id",roleIds)
.eq("permission_code",FilePermission.VIEW);
List<Object> fileIds = rolePermissionMapper.selectObjs(queryWrapper1);
return fileIds.stream()
.map(Object::toString) // Object 转为 String
.collect(Collectors.toList());
}
}

View File

@ -2,6 +2,7 @@ package com.electromagnetic.industry.software.manage.service.serviceimpl;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.SystemClock;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.electromagnetic.industry.software.common.cons.UserConstants;
import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
import com.electromagnetic.industry.software.common.enums.ElectromagneticErrorEnum;
@ -12,8 +13,10 @@ import com.electromagnetic.industry.software.common.util.*;
import com.electromagnetic.industry.software.manage.mapper.TokenMapper;
import com.electromagnetic.industry.software.manage.mapper.UserMapper;
import com.electromagnetic.industry.software.manage.mapper.UserMappers;
import com.electromagnetic.industry.software.manage.mapper.UserRoleMapper;
import com.electromagnetic.industry.software.manage.pojo.models.Token;
import com.electromagnetic.industry.software.manage.pojo.models.User;
import com.electromagnetic.industry.software.manage.pojo.models.UserRole;
import com.electromagnetic.industry.software.manage.pojo.other.PublishParam;
import com.electromagnetic.industry.software.manage.pojo.other.SearchKeyWords;
import com.electromagnetic.industry.software.manage.pojo.other.SingleUserResponse;
@ -31,6 +34,7 @@ import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import static cn.hutool.core.date.DateTime.now;
@ -41,6 +45,8 @@ public class UserServiceImpl implements UserService {
private UserMapper userMapper;
@Resource
private TokenMapper tokenMapper;
@Resource
private UserRoleMapper userRoleMapper;
/**
* 用户登录
@ -236,4 +242,30 @@ public class UserServiceImpl implements UserService {
token = token.substring(7);
return ElectromagneticResultUtil.success(tokenMapper.deleteToken(token));
}
/**
* 人员绑定
*/
@Override
public Boolean bindRoles(UserRoleRequest userRolesRequest) {
String userId = userRolesRequest.getUserId();
List<String> roleIds = userRolesRequest.getRoleIds();
if (userId == null ) {
return Boolean.FALSE;
}
// 删除当前用户原绑定角色
QueryWrapper<UserRole> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_id", userId);
userRoleMapper.delete(queryWrapper);
if (roleIds != null) {
for (String roleId : roleIds) {
UserRole userRole = new UserRole();
userRole.setUserId(userId);
userRole.setRoleId(roleId);
userRoleMapper.insert(userRole);
}
}
return Boolean.TRUE;
}
}

View File

@ -227,4 +227,5 @@
</set>
where user_id = #{userId}
</update>
</mapper>

View File

@ -0,0 +1,57 @@
package com.electromagnetic.industry.software.common.enums;
import java.util.ArrayList;
import java.util.List;
public enum FilePermission {
// 权限枚举值
VIEW("view", "查看文件"),
MOVE("move", "移动/复制文件"),
EDIT("edit", "编辑文件"),
DELETE("delete", "删除文件"),
UPLOAD("upload", "上传文件"),
DOWNLOAD("download", "下载文件"),
IMPORT("import", "导入文件"),
EXPORT("export", "导出文件");
// 枚举属性
private final String code; // 权限代码
private final String description; // 权限描述
// 构造方法
FilePermission(String code, String description) {
this.code = code;
this.description = description;
}
// 获取权限代码
public String getCode() {
return code;
}
// 获取权限描述
public String getDescription() {
return description;
}
// 根据 code 查找对应的枚举
public static FilePermission fromCode(String code) {
for (FilePermission permission : FilePermission.values()) {
if (permission.getCode().equals(code)) {
return permission;
}
}
throw new IllegalArgumentException("未找到对应的权限: " + code);
}
// 获取所有的code
public static List<String> getAllCodes() {
List<String> codes = new ArrayList<>();
for (FilePermission permission : FilePermission.values()) {
codes.add(permission.getCode()); // 获取每个枚举实例的 code
}
return codes;
}
}