diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/SysUserAdminDTO.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/SysUserAdminDTO.java new file mode 100644 index 000000000..2f82055e5 --- /dev/null +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/SysUserAdminDTO.java @@ -0,0 +1,57 @@ +/* + * 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; + +import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; +import lombok.Data; + +/** + * 管理员用户的响应 + * + * @author fengshuonan + * @date 2022/9/30 11:25 + */ +@Data +public class SysUserAdminDTO { + + /** + * 主键 + */ + @ChineseDescription("主键") + private Long userId; + + /** + * 角色id + */ + @ChineseDescription("角色id") + private Long roleId; + + /** + * 姓名 + */ + @ChineseDescription("姓名") + private String realName; + +} 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 new file mode 100644 index 000000000..5bb53447e --- /dev/null +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserAdminController.java @@ -0,0 +1,93 @@ +/* + * 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.modular.user.controller; + +import cn.stylefeng.roses.kernel.rule.enums.ResBizTypeEnum; +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.modular.user.service.SysUserAdminService; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 管理员相关接口 + *

+ * 管理员角色只能维护后台相关菜单 + * + * @author fengshuonan + * @date 2022/9/30 10:44 + */ +@RestController +@ApiResource(name = "管理员相关接口", resBizType = ResBizTypeEnum.SYSTEM) +public class SysUserAdminController { + + @Resource + private SysUserAdminService sysUserAdminService; + + /** + * 获取后台管理员列表 + * + * @author fengshuonan + * @date 2022/9/30 10:44 + */ + @GetResource(name = "获取后台管理员列表", path = "/sysUser/backAuth/getAdminList") + public ResponseData> getAdminList() { + List adminUserList = sysUserAdminService.getAdminUserList(); + return new SuccessResponseData<>(adminUserList); + } + + /** + * 添加后台管理员 + * + * @author fengshuonan + * @date 2022/9/28 20:28 + */ + @PostResource(name = "添加后台管理员", path = "/sysUser/backAuth/addAdmin") + public ResponseData addAdmin(@RequestBody SysUserRequest sysUserRequest) { + + return new SuccessResponseData<>(); + } + + /** + * 删除后台管理员 + * + * @author fengshuonan + * @date 2022/9/28 20:28 + */ + @PostResource(name = "删除后台管理员", path = "/sysUser/backAuth/delAdmin") + public ResponseData delAdmin(@RequestBody SysUserRequest sysUserRequest) { + + return new SuccessResponseData<>(); + } + +} 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 new file mode 100644 index 000000000..3368e10d7 --- /dev/null +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserAdminService.java @@ -0,0 +1,48 @@ +/* + * 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.modular.user.service; + +import cn.stylefeng.roses.kernel.system.api.pojo.user.SysUserAdminDTO; + +import java.util.List; + +/** + * 管理员用户业务 + * + * @author fengshuonan + * @date 2022/9/30 11:05 + */ +public interface SysUserAdminService { + + /** + * 获取管理员列表 + * + * @return 返回的包装类中,id是角色id + * @author fengshuonan + * @date 2022/9/30 11:06 + */ + List getAdminUserList(); + +} diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserRoleService.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserRoleService.java index 4812ec3cf..9e5488b35 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserRoleService.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserRoleService.java @@ -24,9 +24,9 @@ */ package cn.stylefeng.roses.kernel.system.modular.user.service; -import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserRole; import cn.stylefeng.roses.kernel.system.api.pojo.user.request.SysUserRequest; import cn.stylefeng.roses.kernel.system.api.pojo.user.request.UserRoleRequest; +import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserRole; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -39,7 +39,6 @@ import java.util.List; */ public interface SysUserRoleService extends IService { - /** * 新增 * @@ -98,7 +97,6 @@ public interface SysUserRoleService extends IService { * 根据userId查询列表 * * @param userId 用户id - * @return * @author chenjinlong * @date 2021/2/3 15:06 */ @@ -118,7 +116,6 @@ public interface SysUserRoleService extends IService { * 角色分配 * * @param sysUserRequest 请求参数 - * @return * @author chenjinlong * @date 2021/2/3 15:16 */ 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 new file mode 100644 index 000000000..58dab86f6 --- /dev/null +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserAdminServiceImpl.java @@ -0,0 +1,96 @@ +package cn.stylefeng.roses.kernel.system.modular.user.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum; +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.modular.user.entity.SysUser; +import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserRole; +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 org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 管理员相关的业务 + * + * @author fengshuonan + * @date 2022/9/30 11:07 + */ +@Service +public class SysUserAdminServiceImpl implements SysUserAdminService { + + @Resource + private RoleServiceApi roleServiceApi; + + @Resource + private SysUserRoleService sysUserRoleService; + + @Resource + private SysUserService sysUserService; + + @Override + public List getAdminUserList() { + + // 获取所有管理员角色 + SysRoleRequest sysRoleRequest = new SysRoleRequest(); + sysRoleRequest.setAdminFlag(YesOrNotEnum.Y.getCode()); + List roleSelectList = roleServiceApi.getRoleSelectList(sysRoleRequest); + List adminRoleIds = roleSelectList.stream().map(SysRoleDTO::getRoleId).collect(Collectors.toList()); + + // 如果没有管理员,则返回空 + if (ObjectUtil.isEmpty(adminRoleIds)) { + return new ArrayList<>(); + } + + // 获取管理员角色,对应的用户集合 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(SysUserRole::getRoleId, adminRoleIds); + List sysUserRoleList = sysUserRoleService.list(queryWrapper); + List userIdList = sysUserRoleList.stream().map(SysUserRole::getUserId).collect(Collectors.toList()); + + // 没有相关的人员绑定管理员角色,则返回空 + if (ObjectUtil.isEmpty(userIdList)) { + return new ArrayList<>(); + } + + // 查询对应的人员信息 + LambdaQueryWrapper sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); + sysUserLambdaQueryWrapper.select(SysUser::getUserId, SysUser::getRealName); + sysUserLambdaQueryWrapper.in(SysUser::getUserId); + sysUserLambdaQueryWrapper.ne(SysUser::getDelFlag, YesOrNotEnum.Y.getCode()); + List userList = sysUserService.list(sysUserLambdaQueryWrapper); + if (ObjectUtil.isEmpty(userList)) { + return new ArrayList<>(); + } + + // 转化实体 + ArrayList sysUserAdminDTOS = new ArrayList<>(); + Map> userIdRoles = sysUserRoleList.stream().collect(Collectors.groupingBy(SysUserRole::getUserId)); + for (SysUser sysUser : userList) { + SysUserAdminDTO sysUserAdminDTO = new SysUserAdminDTO(); + sysUserAdminDTO.setUserId(sysUser.getUserId()); + + // 设置角色id + List userRoles = userIdRoles.get(sysUser.getUserId()); + if (userRoles != null && userRoles.size() > 0) { + sysUserAdminDTO.setRoleId(userRoles.get(0).getRoleId()); + } + + // 设置用户名称 + sysUserAdminDTO.setRealName(sysUser.getNickName()); + } + + return sysUserAdminDTOS; + } + +}