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;
|
}
|
}
|