【7.2.5】【role】更新新增管理员

pull/37/head
fengshuonan 2022-09-30 13:52:16 +08:00
parent 57d5005ad3
commit f25872d6a5
9 changed files with 190 additions and 13 deletions

View File

@ -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<SysRoleDTO> getRoleSelectList(SysRoleRequest sysRoleRequest);
/**
*
*
* @author fengshuonan
* @date 2022/6/8 14:58
*/
void addAdminRole(SysRoleRequest sysRoleRequest);
/**
*
*
* @author fengshuonan
* @date 2022/9/29 10:46
*/
List<MenuAndButtonTreeResponse> grantButtonGrantAll(SysRoleRequest sysRoleRequest);
}

View File

@ -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.
*
* GunsAPACHE 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<Long> userIdList;
/**
* id
*/
@ChineseDescription("用户id")
@NotEmpty(message = "用户id不能为空", groups = delete.class)
private Long userId;
}

View File

@ -184,12 +184,4 @@ public interface SysRoleService extends IService<SysRole>, RoleServiceApi {
*/
List<MenuAndButtonTreeResponse> grantRoleMenusGrantAll(SysRoleRequest sysRoleRequest);
/**
*
*
* @author fengshuonan
* @date 2022/9/29 10:46
*/
List<MenuAndButtonTreeResponse> grantButtonGrantAll(SysRoleRequest sysRoleRequest);
}

View File

@ -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<SysRoleMapper, SysRole> 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);
}
/**
*
*

View File

@ -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<>();
}

View File

@ -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<SysUserRole> {
/**
*
*
* @author fengshuonan
* @date 2022/9/30 13:20
*/
List<SysUserRole> getAdminUserRoleList(@Param("userIdList") List<Long> userIdList);
}

View File

@ -2,4 +2,17 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.roses.kernel.system.modular.user.mapper.SysUserRoleMapper">
<select id="getAdminUserRoleList"
resultType="cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserRole">
select ur.user_id as userId,
ur.role_id as roleId,
r.admin_flag
from sys_user_role ur
left join sys_role r on ur.role_id = r.role_id
where r.admin_flag = "Y" and ur.user_id in
<foreach item="item" collection="userIdList" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</select>
</mapper>

View File

@ -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<SysUserAdminDTO> getAdminUserList();
/**
*
*
* @author fengshuonan
* @date 2022/9/30 13:12
*/
void addAdminUser(SysAdminRequest sysAdminRequest);
}

View File

@ -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<SysUserAdminDTO> getAdminUserList() {
@ -93,4 +100,49 @@ public class SysUserAdminServiceImpl implements SysUserAdminService {
return sysUserAdminDTOS;
}
@Override
public void addAdminUser(SysAdminRequest sysAdminRequest) {
// 获取用户有没有已经绑定管理员角色
List<SysUserRole> sysUserRoleList = sysUserRoleMapper.getAdminUserRoleList(sysAdminRequest.getUserIdList());
// 如果请求参数中已经有绑定的用户id集合
Set<Long> 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);
}
}