懒羊羊
2023-08-30 1ac2bc1590406d9babec036e154d8d08f34a6aa1
提交 | 用户 | 时间
1ac2bc 1 package cn.stylefeng.guns.sys.modular.rest.service;
2
3 import cn.hutool.core.bean.BeanUtil;
4 import cn.hutool.core.convert.Convert;
5 import cn.stylefeng.guns.base.pojo.node.ZTreeNode;
6 import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory;
7 import cn.stylefeng.guns.sys.core.constant.Const;
8 import cn.stylefeng.guns.sys.core.constant.factory.ConstantFactory;
9 import cn.stylefeng.guns.sys.core.exception.enums.BizExceptionEnum;
10 import cn.stylefeng.guns.sys.core.log.LogObjectHolder;
11 import cn.stylefeng.guns.sys.modular.rest.entity.RestRelation;
12 import cn.stylefeng.guns.sys.modular.rest.entity.RestRole;
13 import cn.stylefeng.guns.sys.modular.rest.mapper.RestRelationMapper;
14 import cn.stylefeng.guns.sys.modular.rest.mapper.RestRoleMapper;
15 import cn.stylefeng.guns.sys.modular.system.model.RoleDto;
16 import cn.stylefeng.roses.core.util.ToolUtil;
17 import cn.stylefeng.roses.kernel.model.exception.RequestEmptyException;
18 import cn.stylefeng.roses.kernel.model.exception.ServiceException;
19 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
20 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
21 import org.springframework.stereotype.Service;
22 import org.springframework.transaction.annotation.Transactional;
23
24 import javax.annotation.Resource;
25 import java.util.List;
26 import java.util.Map;
27
28 /**
29  * <p>
30  * 角色表 服务实现类
31  * </p>
32  *
33  * @author stylefeng
34  * @since 2018-12-07
35  */
36 @Service
37 public class RestRoleService extends ServiceImpl<RestRoleMapper, RestRole> {
38
39     @Resource
40     private RestRoleMapper restRoleMapper;
41
42     @Resource
43     private RestRelationMapper restRelationMapper;
44
45     @Resource
46     private RestUserService restUserService;
47
48     /**
49      * 添加角色
50      *
51      * @author fengshuonan
52      * @Date 2018/12/23 6:40 PM
53      */
54     @Transactional(rollbackFor = Exception.class)
55     public void addRole(RestRole role) {
56
57         if (ToolUtil.isOneEmpty(role, role.getName(), role.getPid(), role.getDescription())) {
58             throw new RequestEmptyException();
59         }
60
61         role.setRoleId(null);
62
63         this.save(role);
64     }
65
66     /**
67      * 编辑角色
68      *
69      * @author fengshuonan
70      * @Date 2018/12/23 6:40 PM
71      */
72     @Transactional(rollbackFor = Exception.class)
73     public void editRole(RoleDto roleDto) {
74
75         if (ToolUtil.isOneEmpty(roleDto, roleDto.getName(), roleDto.getPid(), roleDto.getDescription())) {
76             throw new RequestEmptyException();
77         }
78
79         RestRole old = this.getById(roleDto.getRoleId());
80         BeanUtil.copyProperties(roleDto, old);
81         this.updateById(old);
82     }
83
84     /**
85      * 设置某个角色的权限
86      *
87      * @param roleId 角色id
88      * @param ids    权限的id
89      * @date 2017年2月13日 下午8:26:53
90      */
91     @Transactional(rollbackFor = Exception.class)
92     public void setAuthority(Long roleId, String ids) {
93
94         // 删除该角色所有的权限
95         this.restRoleMapper.deleteRolesById(roleId);
96
97         // 添加新的权限
98         for (Long id : Convert.toLongArray(ids.split(","))) {
99             RestRelation relation = new RestRelation();
100             relation.setRoleId(roleId);
101             relation.setMenuId(id);
102             this.restRelationMapper.insert(relation);
103         }
104
105         // 刷新当前用户的权限
106         restUserService.refreshCurrentUser();
107     }
108
109     /**
110      * 删除角色
111      *
112      * @author stylefeng
113      * @Date 2017/5/5 22:24
114      */
115     @Transactional(rollbackFor = Exception.class)
116     public void delRoleById(Long roleId) {
117
118         if (ToolUtil.isEmpty(roleId)) {
119             throw new ServiceException(BizExceptionEnum.REQUEST_NULL);
120         }
121
122         //不能删除超级管理员角色
123         if (roleId.equals(Const.ADMIN_ROLE_ID)) {
124             throw new ServiceException(BizExceptionEnum.CANT_DELETE_ADMIN);
125         }
126
127         //缓存被删除的角色名称
128         LogObjectHolder.me().set(ConstantFactory.me().getSingleRoleName(roleId));
129
130         //删除角色
131         this.restRoleMapper.deleteById(roleId);
132
133         //删除该角色所有的权限
134         this.restRoleMapper.deleteRolesById(roleId);
135     }
136
137     /**
138      * 根据条件查询角色列表
139      *
140      * @return
141      * @date 2017年2月12日 下午9:14:34
142      */
143     public Page<Map<String, Object>> selectRoles(String condition) {
144         Page page = LayuiPageFactory.defaultPage();
145         return this.baseMapper.selectRoles(page, condition);
146     }
147
148     /**
149      * 删除某个角色的所有权限
150      *
151      * @param roleId 角色id
152      * @return
153      * @date 2017年2月13日 下午7:57:51
154      */
155     public int deleteRolesById(Long roleId) {
156         return this.baseMapper.deleteRolesById(roleId);
157     }
158
159     /**
160      * 获取角色列表树
161      *
162      * @return
163      * @date 2017年2月18日 上午10:32:04
164      */
165     public List<ZTreeNode> roleTreeList() {
166         return this.baseMapper.roleTreeList();
167     }
168
169     /**
170      * 获取角色列表树
171      *
172      * @return
173      * @date 2017年2月18日 上午10:32:04
174      */
175     public List<ZTreeNode> roleTreeListByRoleId(Long[] roleId) {
176         return this.baseMapper.roleTreeListByRoleId(roleId);
177     }
178
179 }