diff --git a/fys-system/src/main/java/com/fuyuanshen/modules/security/config/LoginProperties.java b/fys-system/src/main/java/com/fuyuanshen/modules/security/config/LoginProperties.java index 3430176..dcc3b56 100644 --- a/fys-system/src/main/java/com/fuyuanshen/modules/security/config/LoginProperties.java +++ b/fys-system/src/main/java/com/fuyuanshen/modules/security/config/LoginProperties.java @@ -31,7 +31,7 @@ import org.springframework.context.annotation.Configuration; public class LoginProperties { /** - * 账号单用户 登录 + * 账号单用户 */ private boolean singleLogin = false; diff --git a/fys-system/src/main/java/com/fuyuanshen/modules/system/domain/app/APPRole.java b/fys-system/src/main/java/com/fuyuanshen/modules/system/domain/app/APPRole.java index 4c40308..8f80f4c 100644 --- a/fys-system/src/main/java/com/fuyuanshen/modules/system/domain/app/APPRole.java +++ b/fys-system/src/main/java/com/fuyuanshen/modules/system/domain/app/APPRole.java @@ -16,14 +16,19 @@ package com.fuyuanshen.modules.system.domain.app; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.fuyuanshen.modules.system.domain.Role; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; - +import com.fuyuanshen.base.BaseEntity; +import com.fuyuanshen.utils.enums.DataScopeEnum; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Objects; +import java.util.Set; /** * 角色 @@ -32,12 +37,49 @@ import javax.validation.constraints.NotNull; */ @Getter @Setter -@TableName("app_sys_role") -public class APPRole extends Role { +@TableName("sys_role") +public class APPRole extends BaseEntity implements Serializable { @NotNull(groups = {Update.class}) - @TableId(value="app_role_id", type = IdType.AUTO) + @TableId(value="role_id", type = IdType.AUTO) @ApiModelProperty(value = "ID", hidden = true) private Long id; + @TableField(exist = false) + @ApiModelProperty(value = "用户", hidden = true) + private Set users; + + @TableField(exist = false) + @ApiModelProperty(value = "菜单", hidden = true) + private Set menus; + + @NotBlank + @ApiModelProperty(value = "名称", hidden = true) + private String name; + + @ApiModelProperty(value = "数据权限,全部 、 本级 、 自定义") + private String dataScope = DataScopeEnum.THIS_LEVEL.getValue(); + + @ApiModelProperty(value = "级别,数值越小,级别越大") + private Integer level = 3; + + @ApiModelProperty(value = "描述") + private String description; + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + APPRole role = (APPRole) o; + return Objects.equals(id, role.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } } diff --git a/fys-system/src/main/java/com/fuyuanshen/modules/system/domain/vo/APPUserVo.java b/fys-system/src/main/java/com/fuyuanshen/modules/system/domain/vo/APPUserVo.java index 32dba88..9033e7c 100644 --- a/fys-system/src/main/java/com/fuyuanshen/modules/system/domain/vo/APPUserVo.java +++ b/fys-system/src/main/java/com/fuyuanshen/modules/system/domain/vo/APPUserVo.java @@ -1,5 +1,6 @@ package com.fuyuanshen.modules.system.domain.vo; +import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -8,6 +9,7 @@ import lombok.Data; * @date: 2025-06-1211:34 */ @Data +@JsonInclude(JsonInclude.Include.ALWAYS) public class APPUserVo { @ApiModelProperty(value = "ID") diff --git a/fys-system/src/main/java/com/fuyuanshen/modules/system/mapper/APPRoleMapper.java b/fys-system/src/main/java/com/fuyuanshen/modules/system/mapper/APPRoleMapper.java new file mode 100644 index 0000000..d9f421a --- /dev/null +++ b/fys-system/src/main/java/com/fuyuanshen/modules/system/mapper/APPRoleMapper.java @@ -0,0 +1,40 @@ +/* + * Copyright 2019-2025 Zheng Jie + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.fuyuanshen.modules.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.fuyuanshen.modules.system.domain.Role; +import com.fuyuanshen.modules.system.domain.app.APPRole; +import com.fuyuanshen.modules.system.domain.dto.RoleQueryCriteria; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Set; + +/** + * @author Zheng Jie + * @date 2023-06-20 + */ +@Mapper +public interface APPRoleMapper extends BaseMapper { + + + List findByUserId(@Param("userId") Long userId); + + +} diff --git a/fys-system/src/main/java/com/fuyuanshen/modules/system/service/app/APPRoleService.java b/fys-system/src/main/java/com/fuyuanshen/modules/system/service/app/APPRoleService.java deleted file mode 100644 index e69de29..0000000 diff --git a/fys-system/src/main/java/com/fuyuanshen/modules/system/service/impl/RoleServiceImpl.java b/fys-system/src/main/java/com/fuyuanshen/modules/system/service/impl/RoleServiceImpl.java index 9d0eaf1..04093db 100644 --- a/fys-system/src/main/java/com/fuyuanshen/modules/system/service/impl/RoleServiceImpl.java +++ b/fys-system/src/main/java/com/fuyuanshen/modules/system/service/impl/RoleServiceImpl.java @@ -19,7 +19,10 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fuyuanshen.modules.system.domain.app.APPMenu; +import com.fuyuanshen.modules.system.domain.app.APPRole; import com.fuyuanshen.modules.system.domain.app.APPUser; +import com.fuyuanshen.modules.system.mapper.*; import lombok.RequiredArgsConstructor; import com.fuyuanshen.exception.BadRequestException; import com.fuyuanshen.modules.security.service.UserCacheManager; @@ -28,10 +31,6 @@ import com.fuyuanshen.modules.system.domain.Menu; import com.fuyuanshen.modules.system.domain.Role; import com.fuyuanshen.exception.EntityExistException; import com.fuyuanshen.modules.system.domain.User; -import com.fuyuanshen.modules.system.mapper.RoleDeptMapper; -import com.fuyuanshen.modules.system.mapper.RoleMapper; -import com.fuyuanshen.modules.system.mapper.RoleMenuMapper; -import com.fuyuanshen.modules.system.mapper.UserMapper; import com.fuyuanshen.modules.system.service.RoleService; import com.fuyuanshen.modules.system.domain.dto.RoleQueryCriteria; import com.fuyuanshen.utils.*; @@ -53,6 +52,7 @@ import java.util.stream.Collectors; public class RoleServiceImpl extends ServiceImpl implements RoleService { private final RoleMapper roleMapper; + private final APPRoleMapper appRoleMapper; private final RoleDeptMapper roleDeptMapper; private final RoleMenuMapper roleMenuMapper; private final RedisUtils redisUtils; @@ -206,8 +206,8 @@ public class RoleServiceImpl extends ServiceImpl implements Ro permissions.add("admin"); return permissions.stream().map(AuthorityDto::new).collect(Collectors.toList()); } - List roles = roleMapper.findByUserId(user.getId()); - permissions = roles.stream().flatMap(role -> role.getMenus().stream()).map(Menu::getPermission).filter(StringUtils::isNotBlank).collect(Collectors.toSet()); + List roles = appRoleMapper.findByUserId(user.getId()); + permissions = roles.stream().flatMap(role -> role.getMenus().stream()).map(APPMenu::getPermission).filter(StringUtils::isNotBlank).collect(Collectors.toSet()); authorityDtos = permissions.stream().map(AuthorityDto::new).collect(Collectors.toList()); redisUtils.set(key, authorityDtos, 1, TimeUnit.HOURS); } diff --git a/fys-system/src/main/resources/mapper/system/APPRoleMapper.xml b/fys-system/src/main/resources/mapper/system/APPRoleMapper.xml new file mode 100644 index 0000000..8b86ce9 --- /dev/null +++ b/fys-system/src/main/resources/mapper/system/APPRoleMapper.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + role.role_id as role_role_id, role.name as role_name, role.data_scope as role_data_scope, + role.level as role_level, role.description as role_description, role.create_by as role_create_by, + role.update_by as role_update_by, role.create_time as role_create_time, role.update_time as role_update_time + + + + menu.menu_id as menu_id, menu.title as menu_title, menu.permission as menu_permission + + + + dept.dept_id as dept_id, dept.name as dept_name + + + + + + and ( + role.name like concat('%', #{criteria.blurry}, '%') + or role.description like concat('%', #{criteria.blurry}, '%') + ) + + + and role.create_time between #{criteria.createTime[0]} and #{criteria.createTime[1]} + + + + + + + + \ No newline at end of file