diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/PermissionController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/PermissionController.java index 66883f3..b2d6eb1 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/PermissionController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/PermissionController.java @@ -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)); + } + } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/UserController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/UserController.java index f75b07d..a7bc132 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/UserController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/UserController.java @@ -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","不可绑定空用户"); + } + } } \ No newline at end of file diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/PermissionMapper.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/PermissionMapper.java deleted file mode 100644 index 66b5c24..0000000 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/PermissionMapper.java +++ /dev/null @@ -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 { -} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/RolePermissionMapper.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/RolePermissionMapper.java index 78575b2..9f3ae50 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/RolePermissionMapper.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/RolePermissionMapper.java @@ -2,7 +2,7 @@ package com.electromagnetic.industry.software.manage.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.electromagnetic.industry.software.manage.pojo.models.RolePermission; -import org.mapstruct.Mapper; +import org.apache.ibatis.annotations.Mapper; @Mapper public interface RolePermissionMapper extends BaseMapper { diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/UserMapper.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/UserMapper.java index cbb196a..ba89135 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/UserMapper.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/UserMapper.java @@ -70,7 +70,7 @@ public interface UserMapper { /** * 通过用户ID删除用户 * - * @param userId + * @param userDeleteKeyWords * @return */ int deleteUser(UserDeleteKeyWords userDeleteKeyWords); diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/UserRoleMapper.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/UserRoleMapper.java index 84e69c7..a8c2e58 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/UserRoleMapper.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/UserRoleMapper.java @@ -2,7 +2,8 @@ package com.electromagnetic.industry.software.manage.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.electromagnetic.industry.software.manage.pojo.models.UserRole; -import org.mapstruct.Mapper; +import org.apache.ibatis.annotations.Mapper; + @Mapper public interface UserRoleMapper extends BaseMapper { diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/Permission.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/Permission.java deleted file mode 100644 index c798a13..0000000 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/Permission.java +++ /dev/null @@ -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; - -} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/Role.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/Role.java index e3b83e6..fcf3c88 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/Role.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/Role.java @@ -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; } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/RolePermission.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/RolePermission.java index e1cd056..1f128bf 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/RolePermission.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/RolePermission.java @@ -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; } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/UserRole.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/UserRole.java index 162576a..d6a28ea 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/UserRole.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/UserRole.java @@ -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; } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/UserRoleRequest.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/UserRoleRequest.java new file mode 100644 index 0000000..7f81120 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/UserRoleRequest.java @@ -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 roleIds; +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/PermissionService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/PermissionService.java index d61ac56..bd4c806 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/PermissionService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/PermissionService.java @@ -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 { +public interface PermissionService { + + /** + * 查询当前用户在当前目录的功能权限 + * @param userId + * @param fileId + * @return + */ + Map getUserPermission(String userId, String fileId); + + /** + * 获取当前用户有权限访问的目录id + * + * @return + */ + List getAccessibleTree(); } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/UserService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/UserService.java index 2eaae30..49f4527 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/UserService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/UserService.java @@ -78,4 +78,8 @@ public interface UserService { */ ElectromagneticResult logout(String token); + /** + * 人员绑定 + */ + Boolean bindRoles(UserRoleRequest userRoleRequest); } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/PermissionServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/PermissionServiceImpl.java index 5b2de11..0e2a9db 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/PermissionServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/PermissionServiceImpl.java @@ -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 { +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 getUserPermission (String userId, String fileId){ + Map result = new HashMap<>(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("role_id").eq("user_id", userId); + List roleIds = userRoleMapper.selectObjs(queryWrapper); + + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.select("permission_code") + .eq("file_id", fileId) + .in("role_id", roleIds); + List permissionCodes = rolePermissionMapper.selectObjs(queryWrapper1); + + List 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 getAccessibleTree() { + String userId = UserThreadLocal.getUserId(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("role_id").eq("user_id", userId); + List roleIds = userRoleMapper.selectObjs(queryWrapper); + + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.select("file_id") + .in("role_id",roleIds) + .eq("permission_code",FilePermission.VIEW); + List fileIds = rolePermissionMapper.selectObjs(queryWrapper1); + + return fileIds.stream() + .map(Object::toString) // 将 Object 转为 String + .collect(Collectors.toList()); + } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java index 1ab48dd..a62b5a6 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java @@ -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 roleIds = userRolesRequest.getRoleIds(); + if (userId == null ) { + return Boolean.FALSE; + } + // 删除当前用户原绑定角色 + QueryWrapper 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; + } } diff --git a/electrmangnetic/src/main/resources/sqlmapper/UserMapper.xml b/electrmangnetic/src/main/resources/sqlmapper/UserMapper.xml index 13e9b62..a0473b3 100644 --- a/electrmangnetic/src/main/resources/sqlmapper/UserMapper.xml +++ b/electrmangnetic/src/main/resources/sqlmapper/UserMapper.xml @@ -227,4 +227,5 @@ where user_id = #{userId} + \ No newline at end of file diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/FilePermission.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/FilePermission.java new file mode 100644 index 0000000..238f8fd --- /dev/null +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/FilePermission.java @@ -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 getAllCodes() { + List codes = new ArrayList<>(); + for (FilePermission permission : FilePermission.values()) { + codes.add(permission.getCode()); // 获取每个枚举实例的 code + } + return codes; + } +} +