lyh
2025-02-20 757bfa4a2865b3066e82a7e80bea1efd8bdcd72c
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
package org.jeecg.modules.dnc.service.impl;
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.dnc.entity.*;
import org.jeecg.modules.dnc.exception.ExceptionCast;
import org.jeecg.modules.dnc.mapper.ProductPermissionMapper;
import org.jeecg.modules.dnc.response.CommonCode;
import org.jeecg.modules.dnc.service.*;
import org.jeecg.modules.dnc.ucenter.UserDepartExt;
import org.jeecg.modules.dnc.utils.ValidateUtil;
import org.jeecg.modules.system.entity.DncDevicePermission;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
 
@Service
public class ProductPermissionServiceImpl extends ServiceImpl<ProductPermissionMapper, ProductPermission> implements IProductPermissionService {
    @Autowired
    private IComponentPermissionService componentPermissionService;
    @Autowired
    private IPartsPermissionService partsPermissionService;
    @Autowired
    private IProcessStreamPermissionService processStreamPermissionService;
    @Autowired
    private IWorkStepPermissionService workStepPermissionService;
    @Autowired
    private ISysUserService sysUserService;
    @Override
    public ProductPermission getByProductIdAndUserId(String productId, String userId) {
        if(!ValidateUtil.validateString(productId) || !ValidateUtil.validateString(userId))
            return null;
        List<ProductPermission> permissions = super.lambdaQuery().eq(ProductPermission::getProductId, productId).eq(ProductPermission::getUserId, userId).list();
        if(permissions == null || permissions.isEmpty())
            return null;
        return permissions.get(0);
    }
 
    @Override
    @Transactional(rollbackFor = {Exception.class})
    public boolean deleteByProductId(String productId) {
        if(!ValidateUtil.validateString(productId))
            return false;
        LambdaQueryWrapper<ProductPermission> lambdaQueryWrapper = Wrappers.lambdaQuery();
        lambdaQueryWrapper.eq(ProductPermission::getProductId, productId);
        return super.remove(lambdaQueryWrapper);
    }
 
    @Override
    public List<UserDepartExt> getUserPermsByProductId(String productId) {
        return super.getBaseMapper().getUserPermsByProductId(productId);
    }
 
    @Override
    public List<SysUser> getUserNonPermsByProductId(String productId) {
        return super.getBaseMapper().getUserNonPermsByProductId(productId);
    }
 
    @Override
    public boolean removeByCollection(List<ProductPermission> permissionList) {
        if(permissionList == null || permissionList.isEmpty())
            return false;
        if(permissionList.size() == 1) {
            return super.removeById(permissionList.get(0).getId());
        }
        List<String> ids = new ArrayList<>();
        permissionList.forEach(item -> {
            ids.add(item.getId());
        });
        return super.removeByIds(ids);
    }
 
    @Override
    public List<ProductPermission> getByProductId(String productId) {
        List<ProductPermission> list = super.lambdaQuery().eq(ProductPermission::getProductId, productId).list();
        if(list == null)
            list = Collections.emptyList();
        return list;
    }
 
    /**
     * 新增权限数据
     * @param id
     * @param userId
     * @param type
     * @return
     */
    @Override
    public boolean add(String id, String userId, String type) {
        // 验证参数有效性
        if (!ValidateUtil.validateString(userId) || !ValidateUtil.validateString(id) || !ValidateUtil.validateString(type)) {
            return false;
        }
        // 获取管理员用户
        SysUser adminUser = sysUserService.getUserByName("admin");
        try {
            boolean isAdmin = userId.equals(adminUser.getId());
            savePermission(id, userId, type);
            if (!isAdmin) {
                savePermission(id, adminUser.getId(), type);
            }
            return true;
        } catch (Exception e) {
            ExceptionCast.cast(CommonCode.INVALID_PARAM);
            return false;
        }
    }
 
    private void savePermission(String id, String userId, String type) {
        switch (type) {
            case "1":
                // 组件权限
                super.save(new ProductPermission(id, userId));
                break;
            case "2":
                // 部件权限
                componentPermissionService.save(new ComponentPermission(id, userId));
                break;
            case "3":
                // 零件权限
                partsPermissionService.save(new PartsPermission(id, userId));
                break;
            case "5":
                // 工序权限
                processStreamPermissionService.save(new ProcessionPermission(id, userId));
                break;
            case "6":
                // 工序步骤权限
                workStepPermissionService.save(new WorkStepPermission(id, userId));
                break;
            default:
                // 处理未知类型
                throw new IllegalArgumentException("Unknown permission type: " + type);
        }
    }
 
}