luofl
2025-03-19 1225d4cea1e230164b7dd9d410d129d13ac1be78
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
147
148
package com.panzhihua.sangeshenbian.service.impl;
 
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.redis.RedisUtils;
import com.panzhihua.sangeshenbian.model.entity.PartyMember;
import com.panzhihua.sangeshenbian.model.entity.SystemUser;
import com.panzhihua.sangeshenbian.service.IPartyMemberService;
import com.panzhihua.sangeshenbian.service.ISystemUserService;
import com.panzhihua.sangeshenbian.service.IdentityInformationService;
import com.panzhihua.sangeshenbian.warpper.IdentityInformation;
import com.panzhihua.sangeshenbian.warpper.PermissionsVO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
 
import java.util.ArrayList;
import java.util.List;
 
@RequiredArgsConstructor
@Service
public class IdentityInformationServiceImpl implements IdentityInformationService {
    private final ISystemUserService systemUserService;
    private final IPartyMemberService partyMemberService;
    private final RedisUtils redisUtils;
 
    @Override
    public IdentityInformation getIdentityInformation(LoginUserInfoVO loginUserInfo) {
        // 获取党员信息
        PartyMember partyMember = partyMemberService.getOne(new LambdaQueryWrapper<PartyMember>()
                .eq(PartyMember::getPhone, loginUserInfo.getPhone())
                .eq(PartyMember::getDelFlag, 0));
 
        // 获取管理员信息
        SystemUser systemUser = systemUserService.lambdaQuery()
                .eq(SystemUser::getPhone, loginUserInfo.getPhone())
                .eq(SystemUser::getIsAdmin, 1).last("LIMIT 1")
                .ne(SystemUser::getStatus, 3)
                .one();
        // 获取身份
        Integer identity = (Integer) redisUtils.get("identity:" + loginUserInfo.getPhone());
        // 权限列表
        List<PermissionsVO> permissions = new ArrayList<>();
 
        IdentityInformation identityInformationVO = new IdentityInformation();
        identityInformationVO.setPartyMember(partyMember);
        identityInformationVO.setSystemUser(systemUser);
 
        // 获取提示内容是否确认
        Integer isConfirm = (Integer) redisUtils.get("confirmContent:" + loginUserInfo.getPhone());
        identityInformationVO.setIsConfirmContent(isConfirm != null && isConfirm == 1);
 
 
        // 获取当前身份
        if (identity == null && systemUser != null) {
            identityInformationVO.setIdentity(2);
            redisUtils.set("identity:" + loginUserInfo.getPhone(), 2);
        } else if (identity == null && partyMember != null) {
            identityInformationVO.setIdentity(1);
            redisUtils.set("identity:" + loginUserInfo.getPhone(), 1);
        } else if(identity == null){
            identityInformationVO.setIdentity(null);
            redisUtils.remove("identity:" + loginUserInfo.getPhone());
        } else {
            identityInformationVO.setIdentity(identity);
        }
 
 
        // 获取是否冻结
        if (identityInformationVO.getIdentity() != null) {
            if (identityInformationVO.getIdentity() == 1) {
                identityInformationVO.setIsFrozen(partyMember != null && partyMember.getFreezeStatus() == 1);
            } else if (identityInformationVO.getIdentity() == 2) {
                identityInformationVO.setIsFrozen(systemUser != null && systemUser.getStatus() == 2);
            }
        } else {
            identityInformationVO.setIsFrozen(false);
        }
 
        // 是否认证党员
        identityInformationVO.setIsPartymember(partyMember != null && partyMember.getAuditStatus().equals(1));
        // 是否确认党员信息
        identityInformationVO.setIsConfirm(partyMember != null && partyMember.getIsConfirm() == 1);
        // 党员审核状态
        identityInformationVO.setAuditStatus(partyMember == null ? null : partyMember.getAuditStatus());
 
        // 封装管理员信息
        if (systemUser != null) {
            Integer accountLevel = systemUser.getAccountLevel();
            String districts = systemUser.getDistricts();
            String street = systemUser.getStreet();
            String community = systemUser.getCommunity();
            PermissionsVO adminPermissions = new PermissionsVO();
            adminPermissions.setIdentity(2);
            adminPermissions.setIsFrozen(systemUser.getStatus() == 2);
            if (accountLevel == 1) {
                adminPermissions.setName(String.format("%s%s", "攀枝花市", "管理员"));
            } else if (accountLevel == 2) {
                adminPermissions.setName(String.format("%s%s", districts, "管理员"));
            } else if (accountLevel == 3) {
                adminPermissions.setName(String.format("%s%s%s", districts, street, "管理员"));
            } else if (accountLevel == 4) {
                adminPermissions.setName(String.format("%s%s%s%s", districts, street, community, "管理员"));
            } else {
                adminPermissions.setName("未知");
            }
            permissions.add(adminPermissions);
        }
 
        // 封装党员信息
        if (partyMember != null) {
            PermissionsVO partyMemberPermissions = new PermissionsVO();
            partyMemberPermissions.setIdentity(1);
            partyMemberPermissions.setName(String.format("%s%s", partyMember.getCommunity(), "党员"));
            partyMemberPermissions.setIsFrozen(partyMember.getFreezeStatus() == 1);
            permissions.add(partyMemberPermissions);
        }
        identityInformationVO.setPermissions(permissions);
        return identityInformationVO;
    }
 
 
 
    @Override
    public IdentityInformation getCurrentIdentityInformation(LoginUserInfoVO loginUserInfo) {
        IdentityInformation identityInformation = getIdentityInformation(loginUserInfo);
        Boolean isFrozen = identityInformation.getIsFrozen();
        if (isFrozen) {
            throw new ServiceException("您的账号已被冻结,请联系管理员");
        }
        List<PermissionsVO> permissions = identityInformation.getPermissions();
        if (CollectionUtil.isEmpty(permissions)){
            throw new ServiceException("请先完成认证");
        }
 
        SystemUser systemUser = identityInformation.getSystemUser();
        if (systemUser == null && identityInformation.getIdentity() == 2) {
            throw new ServiceException("管理员信息不存在");
        }
 
        PartyMember partyMember = identityInformation.getPartyMember();
        if (partyMember == null && identityInformation.getIdentity() == 1) {
            throw new ServiceException("党员信息不存在");
        }
        return identityInformation;
    }
}