zhangf
2024-07-26 698995469a3fcdc3164fc486d18bdbe059b6c92e
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
package com.gkhy.fourierSpecialGasMonitor.domain.account.service.impl;
 
import cn.hutool.core.util.ObjectUtil;
import com.gkhy.fourierSpecialGasMonitor.commons.enums.ResultCode;
import com.gkhy.fourierSpecialGasMonitor.commons.exception.BusinessException;
import com.gkhy.fourierSpecialGasMonitor.domain.account.entity.SysUserIdentityBind;
import com.gkhy.fourierSpecialGasMonitor.domain.account.model.dto.UserIdentityDomainDTO;
import com.gkhy.fourierSpecialGasMonitor.domain.account.model.dto.UserInfoDomainDTO;
import com.gkhy.fourierSpecialGasMonitor.domain.account.repository.jpa.SysUserIdentityBindReposity;
import com.gkhy.fourierSpecialGasMonitor.domain.account.service.SysUserIdentityBindDomainService;
import com.gkhy.fourierSpecialGasMonitor.domain.account.service.UserDomainService;
import com.gkhy.fourierSpecialGasMonitor.domain.account.service.UserIdentityDomainService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
 
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
 
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/4/28
 * @time: 16:40
 */
@Service
public class SysUserIdentityBindDomainServiceImpl implements SysUserIdentityBindDomainService {
    @Autowired
    private UserIdentityDomainService userIdentityDomainService;
    @Autowired
    private UserDomainService userDomainService;
    
    @Autowired
    private SysUserIdentityBindReposity sysUserIdentityBindReposity;
 
    @Override
    public boolean insertBatchUserIndentityBind(List<Long> identityIds, Long userId) {
        if(CollectionUtils.isEmpty(identityIds) || userId == null){
            return false;
        }
        //验证用户
        UserInfoDomainDTO user = userDomainService.getUserInfoById(userId);
        if(ObjectUtil.isEmpty(user)){
            throw new BusinessException(this.getClass(), ResultCode.BUSINESS_ERROR_DATA_NOT_EXISIST.getCode(), "用户不存在");
        }
        //验证身份是否都存在
        List<UserIdentityDomainDTO> userIdentityDomainDTOList = userIdentityDomainService.getListByIds(identityIds);
        for(Long identityId : identityIds){
            List<UserIdentityDomainDTO> collect = userIdentityDomainDTOList.stream().filter(identity -> identity.getId().equals(identityId)).collect(Collectors.toList());
            if(collect.size() == 0){
                throw new BusinessException(this.getClass(), ResultCode.BUSINESS_ERROR_DATA_NOT_EXISIST.getCode(), "身份不存在");
            }
        }
        //绑定用户身份
        List<SysUserIdentityBind> sysUserIdentityBinds = new ArrayList<>();
        for(Long identityId : identityIds){
            SysUserIdentityBind userIdentityBind = new SysUserIdentityBind();
            userIdentityBind.setUserIdentityId(identityId);
            userIdentityBind.setUserId(userId);
            sysUserIdentityBinds.add(userIdentityBind);
        }
        List<SysUserIdentityBind> result = sysUserIdentityBindReposity.saveAll(sysUserIdentityBinds);
        if(CollectionUtils.isEmpty(result)){
            return false;
        }
        return true;
    }
 
    @Override
    public boolean updateBatchUserIndentityBind(List<Long> identityIds, Long userId) {
        if(CollectionUtils.isEmpty(identityIds) || userId == null){
            return false;
        }
        //获取原来的身份id
        List<Long> oldUserIdentityIds = sysUserIdentityBindReposity.getByUserId(userId);
        List<Long> deleteUserIdentityIdList = new ArrayList<>();
        List<Long> addUserIdentityIdList = identityIds;
        if (ObjectUtil.isNotEmpty(oldUserIdentityIds)) {
            //新增
            addUserIdentityIdList = identityIds.stream().filter(item -> !oldUserIdentityIds.contains(item)).collect(Collectors.toList());
            //删除
            deleteUserIdentityIdList = oldUserIdentityIds.stream().filter(item -> !identityIds.contains(item)).collect(Collectors.toList());
 
        }
        List<SysUserIdentityBind> saveList = new ArrayList<>();
        for(Long userIdentityId : addUserIdentityIdList){
            SysUserIdentityBind sysUserIdentityBind = new SysUserIdentityBind();
            sysUserIdentityBind.setUserIdentityId(userIdentityId);
            sysUserIdentityBind.setUserId(userId);
            saveList.add(sysUserIdentityBind);
        }
        //删除不需要角色
        if(deleteUserIdentityIdList.size()>0){
            sysUserIdentityBindReposity.deleteByUserIdAndUserIdentityIds(userId, deleteUserIdentityIdList);
        }
        //绑定新增角色
        if(saveList.size()>0){
            sysUserIdentityBindReposity.saveAll(saveList);
        }
 
        return true;
    }
 
    @Override
    public boolean deleteByUser(Long userId) {
        if(null == userId){
            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "参数缺失");
        }
        if(sysUserIdentityBindReposity.deleteByUserId(userId) > 0){
            return true;
        }
        return false;
    }
}