liuleilei
2023-08-14 51e824c7890802b0dd4143dddb487ef26aec134a
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
package doumeemes.biz.system.impl;
 
import doumeemes.biz.system.SystemDataPermissionBiz;
import doumeemes.core.constants.DataPermissionConstants;
import doumeemes.core.constants.ResponseStatus;
import doumeemes.core.exception.BusinessException;
import doumeemes.core.model.LoginUserInfo;
import doumeemes.core.utils.Constants;
import doumeemes.dao.system.model.SystemDataPermission;
import doumeemes.dao.system.model.SystemRole;
import doumeemes.service.system.SystemDataPermissionService;
import doumeemes.service.system.SystemRoleService;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
@Service
public class SystemDataPermissionBizImpl implements SystemDataPermissionBiz {
 
    @Autowired
    private SystemDataPermissionService systemDataPermissionService;
    @Autowired
    private SystemRoleService systemRoleService;
 
    @Override
    public Integer create(SystemDataPermission systemDataPermission) {
        //验证角色是否正确
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        SystemRole role = new SystemRole();
        role.setDeleted(Boolean.FALSE);
        role.setType(Constants.ROLETYPE.plat);
        if(Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
            role.setType(Constants.ROLETYPE.com);
            role.setCompanyId(user.getCompany().getId());
        }
        if(systemRoleService.findOne(role) == null){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,权限信息不存在!");
        }
        // 验证是否已存在配置
        this.check(systemDataPermission, "该业务模块与角色存在有效的数据权限,请勿重复配置");
        // 清空自定义数据
        if (
            DataPermissionConstants.Type.DEPARTMENT_CUSTOM.getCode() != systemDataPermission.getType() &&
            DataPermissionConstants.Type.POSITION_CUSTOM.getCode() != systemDataPermission.getType()
        ) {
            systemDataPermission.setCustomData("");
        }
        return systemDataPermissionService.create(systemDataPermission);
    }
 
    @Override
    public void update(SystemDataPermission systemDataPermission) {
        //验证角色是否正确
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        SystemRole role = new SystemRole();
        role.setDeleted(Boolean.FALSE);
        role.setType(Constants.ROLETYPE.plat);
        if(Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
            role.setType(Constants.ROLETYPE.com);
            role.setCompanyId(user.getCompany().getId());
        }
        if(systemRoleService.findOne(role) == null){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,权限信息不存在!");
        }
        // 清空自定义数据
        if (
            DataPermissionConstants.Type.DEPARTMENT_CUSTOM.getCode() != systemDataPermission.getType() &&
            DataPermissionConstants.Type.POSITION_CUSTOM.getCode() != systemDataPermission.getType()
        ) {
            systemDataPermission.setCustomData("");
        }
        systemDataPermissionService.updateById(systemDataPermission);
    }
 
    @Override
    public void updateStatus(SystemDataPermission systemDataPermission) {
        if (!systemDataPermission.getDisabled()) {
            SystemDataPermission dbPermission = systemDataPermissionService.findById(systemDataPermission.getId());
            if (dbPermission == null) {
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), ResponseStatus.DATA_EMPTY.getMessage());
            }
            // 验证是否已存在配置
            this.check(dbPermission, "该业务模块与角色存在有效的数据权限,请先禁用后再尝试启动此数据权限");
        }
        systemDataPermissionService.updateById(systemDataPermission);
    }
 
    private void check (SystemDataPermission systemDataPermission, String message) {
        // 验证是否已存在配置
        SystemDataPermission queryDto = new SystemDataPermission();
        queryDto.setRoleId(systemDataPermission.getRoleId());
        queryDto.setBusinessCode(systemDataPermission.getBusinessCode());
        queryDto.setDisabled(Boolean.FALSE);
        queryDto.setDeleted(Boolean.FALSE);
        if (systemDataPermissionService.count(queryDto) > 0) {
            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), message);
        }
    }
}