diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/RoleServiceApi.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/RoleServiceApi.java index 11c1df6a8..7ed757a98 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/RoleServiceApi.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/RoleServiceApi.java @@ -24,6 +24,7 @@ */ package cn.stylefeng.roses.kernel.system.api; +import cn.stylefeng.roses.kernel.system.api.pojo.menu.MenuAndButtonTreeResponse; import cn.stylefeng.roses.kernel.system.api.pojo.role.dto.SysRoleDTO; import cn.stylefeng.roses.kernel.system.api.pojo.role.dto.SysRoleMenuButtonDTO; import cn.stylefeng.roses.kernel.system.api.pojo.role.dto.SysRoleMenuDTO; @@ -126,4 +127,21 @@ public interface RoleServiceApi { * @date 2022/6/8 14:58 */ List getRoleSelectList(SysRoleRequest sysRoleRequest); + + /** + * 添加管理员角色 + * + * @author fengshuonan + * @date 2022/6/8 14:58 + */ + void addAdminRole(SysRoleRequest sysRoleRequest); + + /** + * 角色权限界面,绑定角色的操作权限,全选操作 + * + * @author fengshuonan + * @date 2022/9/29 10:46 + */ + List grantButtonGrantAll(SysRoleRequest sysRoleRequest); + } diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysAdminRequest.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysAdminRequest.java new file mode 100644 index 000000000..981422eb9 --- /dev/null +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysAdminRequest.java @@ -0,0 +1,61 @@ +/* + * Copyright [2020-2030] [https://www.stylefeng.cn] + * + * 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. + * + * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Guns源码头部的版权声明。 + * 3.请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns + * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns + * 6.若您的项目无法满足以上几点,可申请商业授权 + */ +package cn.stylefeng.roses.kernel.system.api.pojo.user.request; + +import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; +import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 用户管理员相关的请求 + * + * @author fengshuonan + * @date 2022/9/30 11:44 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SysAdminRequest extends BaseRequest { + + /** + * 用户id集合 + */ + @ChineseDescription("用户id集合") + @NotEmpty(message = "用户id集合不能为空", groups = add.class) + private List userIdList; + + /** + * 单个用户id + */ + @ChineseDescription("用户id") + @NotEmpty(message = "用户id不能为空", groups = delete.class) + private Long userId; + +} + + diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleService.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleService.java index 9409d49ca..89aa86227 100644 --- a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleService.java +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleService.java @@ -184,12 +184,4 @@ public interface SysRoleService extends IService, RoleServiceApi { */ List grantRoleMenusGrantAll(SysRoleRequest sysRoleRequest); - /** - * 角色权限界面,绑定角色的操作权限,全选操作 - * - * @author fengshuonan - * @date 2022/9/29 10:46 - */ - List grantButtonGrantAll(SysRoleRequest sysRoleRequest); - } diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java index c71f6873a..0084ef4b6 100644 --- a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java @@ -68,6 +68,7 @@ import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -717,6 +718,24 @@ public class SysRoleServiceImpl extends ServiceImpl impl return sysRoleDTOS; } + @Override + public void addAdminRole(SysRoleRequest sysRoleRequest) { + SysRole sysRole = new SysRole(); + + sysRole.setRoleId(sysRoleRequest.getRoleId()); + sysRole.setRoleName(sysRoleRequest.getRoleName()); + sysRole.setRoleCode(sysRoleRequest.getRoleCode()); + + sysRole.setRoleSort(new BigDecimal(9999)); + sysRole.setDataScopeType(DataScopeTypeEnum.ALL.getCode()); + sysRole.setStatusFlag(StatusEnum.ENABLE.getCode()); + sysRole.setAdminFlag(YesOrNotEnum.Y.getCode()); + sysRole.setRoleSystemFlag(YesOrNotEnum.Y.getCode()); + sysRole.setDelFlag(YesOrNotEnum.N.getCode()); + + this.save(sysRole); + } + /** * 获取系统角色 * diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserAdminController.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserAdminController.java index 5bb53447e..dd94afe68 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserAdminController.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserAdminController.java @@ -25,14 +25,16 @@ package cn.stylefeng.roses.kernel.system.modular.user.controller; import cn.stylefeng.roses.kernel.rule.enums.ResBizTypeEnum; +import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData; import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData; import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource; import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource; import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource; import cn.stylefeng.roses.kernel.system.api.pojo.user.SysUserAdminDTO; -import cn.stylefeng.roses.kernel.system.api.pojo.user.request.SysUserRequest; +import cn.stylefeng.roses.kernel.system.api.pojo.user.request.SysAdminRequest; import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserAdminService; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @@ -73,8 +75,8 @@ public class SysUserAdminController { * @date 2022/9/28 20:28 */ @PostResource(name = "添加后台管理员", path = "/sysUser/backAuth/addAdmin") - public ResponseData addAdmin(@RequestBody SysUserRequest sysUserRequest) { - + public ResponseData addAdmin(@RequestBody @Validated(BaseRequest.add.class) SysAdminRequest sysAdminRequest) { + this.sysUserAdminService.addAdminUser(sysAdminRequest); return new SuccessResponseData<>(); } @@ -85,7 +87,7 @@ public class SysUserAdminController { * @date 2022/9/28 20:28 */ @PostResource(name = "删除后台管理员", path = "/sysUser/backAuth/delAdmin") - public ResponseData delAdmin(@RequestBody SysUserRequest sysUserRequest) { + public ResponseData delAdmin(@RequestBody SysAdminRequest sysAdminRequest) { return new SuccessResponseData<>(); } diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserRoleMapper.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserRoleMapper.java index 23d5b2278..494afdc4b 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserRoleMapper.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserRoleMapper.java @@ -24,8 +24,11 @@ */ package cn.stylefeng.roses.kernel.system.modular.user.mapper; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserRole; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 系统用户角色mapper接口 @@ -35,5 +38,13 @@ import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserRole; */ public interface SysUserRoleMapper extends BaseMapper { + /** + * 获取用户的管理员角色列表 + * + * @author fengshuonan + * @date 2022/9/30 13:20 + */ + List getAdminUserRoleList(@Param("userIdList") List userIdList); + } diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserRoleMapper.xml b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserRoleMapper.xml index 1256c0f5b..13ef51746 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserRoleMapper.xml +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserRoleMapper.xml @@ -2,4 +2,17 @@ + + diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserAdminService.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserAdminService.java index 3368e10d7..3e852883b 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserAdminService.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserAdminService.java @@ -25,6 +25,7 @@ package cn.stylefeng.roses.kernel.system.modular.user.service; import cn.stylefeng.roses.kernel.system.api.pojo.user.SysUserAdminDTO; +import cn.stylefeng.roses.kernel.system.api.pojo.user.request.SysAdminRequest; import java.util.List; @@ -45,4 +46,12 @@ public interface SysUserAdminService { */ List getAdminUserList(); + /** + * 添加管理员 + * + * @author fengshuonan + * @date 2022/9/30 13:12 + */ + void addAdminUser(SysAdminRequest sysAdminRequest); + } diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserAdminServiceImpl.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserAdminServiceImpl.java index 58dab86f6..7f830c482 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserAdminServiceImpl.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserAdminServiceImpl.java @@ -6,18 +6,22 @@ import cn.stylefeng.roses.kernel.system.api.RoleServiceApi; import cn.stylefeng.roses.kernel.system.api.pojo.role.dto.SysRoleDTO; import cn.stylefeng.roses.kernel.system.api.pojo.role.request.SysRoleRequest; import cn.stylefeng.roses.kernel.system.api.pojo.user.SysUserAdminDTO; +import cn.stylefeng.roses.kernel.system.api.pojo.user.request.SysAdminRequest; import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUser; import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserRole; +import cn.stylefeng.roses.kernel.system.modular.user.mapper.SysUserRoleMapper; import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserAdminService; import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserRoleService; import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; /** @@ -38,6 +42,9 @@ public class SysUserAdminServiceImpl implements SysUserAdminService { @Resource private SysUserService sysUserService; + @Resource + private SysUserRoleMapper sysUserRoleMapper; + @Override public List getAdminUserList() { @@ -93,4 +100,49 @@ public class SysUserAdminServiceImpl implements SysUserAdminService { return sysUserAdminDTOS; } + @Override + public void addAdminUser(SysAdminRequest sysAdminRequest) { + + // 获取用户有没有已经绑定管理员角色 + List sysUserRoleList = sysUserRoleMapper.getAdminUserRoleList(sysAdminRequest.getUserIdList()); + + // 如果请求参数中已经有绑定的用户id集合 + Set haveAlreadyBindUserIds = sysUserRoleList.stream().map(SysUserRole::getUserId).collect(Collectors.toSet()); + + // 给用户绑定管理员 + for (Long userId : sysAdminRequest.getUserIdList()) { + if (!haveAlreadyBindUserIds.contains(userId)) { + this.addSingleAdminUser(userId); + } + } + } + + /** + * 单个添加管理员用户 + * + * @author fengshuonan + * @date 2022/9/30 13:29 + */ + private void addSingleAdminUser(Long userId) { + + // 创建用户对应的角色 + SysRoleRequest sysRoleRequest = new SysRoleRequest(); + sysRoleRequest.setRoleId(IdWorker.getId()); + sysRoleRequest.setRoleName("管理员权限-" + userId); + sysRoleRequest.setRoleCode("admin-" + userId); + this.roleServiceApi.addAdminRole(sysRoleRequest); + + // 创建用户和角色关联 + SysUserRole sysUserRole = new SysUserRole(); + sysUserRole.setUserId(userId); + sysUserRole.setRoleId(sysRoleRequest.getRoleId()); + this.sysUserRoleService.save(sysUserRole); + + // 赋予默认的操作后台所有操作权限 + SysRoleRequest temp = new SysRoleRequest(); + temp.setRoleId(sysRoleRequest.getRoleId()); + temp.setTotalSelectFlag(true); + this.roleServiceApi.grantButtonGrantAll(temp); + } + }