doum
2025-09-25 c5675caab8392bfafd217d06529c2547edaa6aa8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package com.doumee.biz.system.impl;
 
import com.doumee.biz.system.SystemRoleBiz;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.system.dto.CreateRoleMenuDTO;
import com.doumee.dao.system.dto.CreateRolePermissionDTO;
import com.doumee.dao.system.model.SystemDataPermission;
import com.doumee.dao.system.model.SystemRole;
import com.doumee.dao.system.model.SystemRoleMenu;
import com.doumee.dao.system.model.SystemRolePermission;
import com.doumee.service.system.SystemDataPermissionService;
import com.doumee.service.system.SystemRoleMenuService;
import com.doumee.service.system.SystemRolePermissionService;
import com.doumee.service.system.SystemRoleService;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
 
import java.util.List;
 
@Service
public class SystemRoleBizImpl implements SystemRoleBiz {
 
    @Autowired
    private SystemRoleService systemRoleService;
 
    @Autowired
    private SystemRolePermissionService systemRolePermissionService;
 
    @Autowired
    private SystemRoleMenuService systemRoleMenuService;
    @Autowired
    private SystemDataPermissionService systemDataPermissionService;
 
    @Override
    public Integer create(SystemRole systemRole) {
        // 验证用户名
        SystemRole queryDto = new SystemRole();
        queryDto.setCode(systemRole.getCode());
        queryDto.setDeleted(Boolean.FALSE);
        SystemRole role = systemRoleService.findOne(queryDto);
        if (role != null) {
            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "角色编码已存在");
        }
        return systemRoleService.create(systemRole);
    }
 
    @Override
    public void updateById(SystemRole systemRole) {
        // 验证角色编码
        SystemRole queryDto = new SystemRole();
        queryDto.setCode(systemRole.getCode());
        queryDto.setDeleted(Boolean.FALSE);
        SystemRole role = systemRoleService.findOne(queryDto);
        if (role != null && !role.getId().equals(systemRole.getId())) {
            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "角色编号已存在");
        }
        systemRoleService.updateById(systemRole);
    }
 
    @Override
    public void deleteById(Integer id) {
        SystemRole role = systemRoleService.findById(id);
        if (role == null) {
            return;
        }
        if (role.getFixed()) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "请勿删除" + role.getName() + ",因为这是固定角色");
        }
        systemRoleService.deleteById(id);
    }
 
    @Override
    @Transactional
    public void deleteByIdInBatch(List<Integer> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        for (Integer id : ids) {
            this.deleteById(id);
        }
    }
 
    @Override
    @Transactional
    public void createRolePermission(CreateRolePermissionDTO dto) {
        // 删除关联权限
        SystemRolePermission deleteDto = new SystemRolePermission();
        deleteDto.setRoleId(dto.getRoleId());
        systemRolePermissionService.delete(deleteDto);
        // 新增新的权限
        for (Integer permissionId : dto.getPermissionIds()) {
            SystemRolePermission newRolePermission = new SystemRolePermission();
            newRolePermission.setRoleId(dto.getRoleId());
            newRolePermission.setPermissionId(permissionId);
            newRolePermission.setCreateUser(dto.getCreateUser());
            systemRolePermissionService.create(newRolePermission);
        }
    }
 
    @Override
    @Transactional
    public void createRoleMenu(CreateRoleMenuDTO dto) {
        // 删除关联权限
        SystemRoleMenu deleteDto = new SystemRoleMenu();
        deleteDto.setRoleId(dto.getRoleId());
        systemRoleMenuService.delete(deleteDto);
        // 新增新的权限
        for (Integer menuId : dto.getMenuIds()) {
            SystemRoleMenu newRoleMenu = new SystemRoleMenu();
            newRoleMenu.setRoleId(dto.getRoleId());
            newRoleMenu.setMenuId(menuId);
            newRoleMenu.setCreateUser(dto.getCreateUser());
            systemRoleMenuService.create(newRoleMenu);
        }
    }
 
    @Override
    @Transactional
    public void createRoleDataPermission(SystemDataPermission dto) {
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(user ==null){
            user = dto.getLoginUserInfo();
        }
        if(dto.getRoleId()==null || dto.getType()==null ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请求参数不正确!");
        }
        // 删除关联权限
        SystemDataPermission deleteDto = new SystemDataPermission();
        deleteDto.setRoleId(dto.getRoleId());
 
        systemDataPermissionService.delete(deleteDto);
        // 新增新的权限
        dto.setDeleted(Boolean.FALSE);
        dto.setBusinessCode("DEPARTMENT");
        dto.setCreateTime(DateUtil.getCurrentDate());
        dto.setCreateUser(user.getId());
        dto.setDisabled(Boolean.FALSE);
        systemDataPermissionService.create(dto);
    }
}