From b3a6181fd2e7d098e9ce227aa291c683217c5421 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 19 五月 2025 13:12:02 +0800
Subject: [PATCH] update
---
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/IdentityInformationServiceImpl.java | 159 ++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 121 insertions(+), 38 deletions(-)
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/IdentityInformationServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/IdentityInformationServiceImpl.java
index 0626c6c..8dc42d5 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/IdentityInformationServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/IdentityInformationServiceImpl.java
@@ -5,9 +5,12 @@
import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.redis.RedisUtils;
+import com.panzhihua.sangeshenbian.model.dto.UserIdentityDTO;
import com.panzhihua.sangeshenbian.model.entity.PartyMember;
import com.panzhihua.sangeshenbian.model.entity.SystemUser;
+import com.panzhihua.sangeshenbian.model.entity.SystemUserLevel;
import com.panzhihua.sangeshenbian.service.IPartyMemberService;
+import com.panzhihua.sangeshenbian.service.ISystemUserLevelService;
import com.panzhihua.sangeshenbian.service.ISystemUserService;
import com.panzhihua.sangeshenbian.service.IdentityInformationService;
import com.panzhihua.sangeshenbian.warpper.IdentityInformation;
@@ -17,6 +20,8 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
@RequiredArgsConstructor
@Service
@@ -24,21 +29,24 @@
private final ISystemUserService systemUserService;
private final IPartyMemberService partyMemberService;
private final RedisUtils redisUtils;
+ private final ISystemUserLevelService systemUserLevelService;
@Override
public IdentityInformation getIdentityInformation(LoginUserInfoVO loginUserInfo) {
+ String phone = loginUserInfo.getPhone();
// 获取党员信息
PartyMember partyMember = partyMemberService.getOne(new LambdaQueryWrapper<PartyMember>()
- .eq(PartyMember::getPhone, loginUserInfo.getPhone())
+ .eq(PartyMember::getPhone, phone)
.eq(PartyMember::getDelFlag, 0));
// 获取管理员信息
SystemUser systemUser = systemUserService.lambdaQuery()
- .eq(SystemUser::getPhone, loginUserInfo.getPhone())
- .eq(SystemUser::getIsAdmin, 1).last("LIMIT 1")
+ .eq(SystemUser::getPhone, phone)
+ .last("LIMIT 1")
+ .ne(SystemUser::getStatus, 3)
.one();
// 获取身份
- Integer identity = (Integer) redisUtils.get("identity:" + loginUserInfo.getPhone());
+ UserIdentityDTO userIdentityDTO = (UserIdentityDTO) redisUtils.get("identity:" + phone);
// 权限列表
List<PermissionsVO> permissions = new ArrayList<>();
@@ -47,21 +55,36 @@
identityInformationVO.setSystemUser(systemUser);
// 获取提示内容是否确认
- Integer isConfirm = (Integer) redisUtils.get("confirmContent:" + loginUserInfo.getPhone());
+ Integer isConfirm = (Integer) redisUtils.get("confirmContent:" + phone);
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 {
- identityInformationVO.setIdentity(null);
- redisUtils.remove("identity:" + loginUserInfo.getPhone());
+ if (userIdentityDTO == null){
+ handleSystemUserLevelId(phone, systemUser, 2, identityInformationVO, partyMember);
+ }else {
+ Integer identity = userIdentityDTO.getIdentity();
+ identityInformationVO.setIdentity(identity);
+ if (identity == 1 && (partyMember == null || partyMember.getAuditStatus() != 1)){
+ identityInformationVO.setIdentity(null);
+ redisUtils.remove("identity:" + phone);
+ }else if (identity == 2 && systemUser == null){
+ identityInformationVO.setIdentity(null);
+ redisUtils.remove("identity:" + phone);
+ }else if (identity == 2){
+ Integer levelId = userIdentityDTO.getLevelId();
+ //验证账号所属层级
+ SystemUserLevel userLevel = systemUserLevelService.getById(levelId);
+ if (Objects.isNull(userLevel)) {
+ handleSystemUserLevelId(phone, systemUser, identity, identityInformationVO,partyMember);
+ } else {
+ identityInformationVO.setLevelId(levelId);
+ identityInformationVO.setSuperviseFlag(userLevel.getSuperviseFlag());
+ identityInformationVO.setIdentity(identity);
+ identityInformationVO.setSystemUserLevel(userLevel);
+ }
+ }
}
+
// 获取是否冻结
@@ -84,29 +107,33 @@
// 封装管理员信息
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("未知");
+ List<SystemUserLevel> userLevels = systemUserLevelService.getListBySystemUserId(systemUser.getId());
+ for (SystemUserLevel userLevel : userLevels) {
+ Integer accountLevel = userLevel.getLevel();
+ String districts = userLevel.getDistricts();
+ String street = userLevel.getStreet();
+ String community = userLevel.getCommunity();
+ PermissionsVO adminPermissions = new PermissionsVO();
+ adminPermissions.setIdentity(2);
+ adminPermissions.setIsFrozen(systemUser.getStatus() == 2);
+ adminPermissions.setLevelId(userLevel.getId());
+ 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);
}
- permissions.add(adminPermissions);
}
// 封装党员信息
- if (partyMember != null) {
+ if (partyMember != null && partyMember.getAuditStatus().equals(1)) {
PermissionsVO partyMemberPermissions = new PermissionsVO();
partyMemberPermissions.setIdentity(1);
partyMemberPermissions.setName(String.format("%s%s", partyMember.getCommunity(), "党员"));
@@ -117,6 +144,59 @@
return identityInformationVO;
}
+ /**
+ * 处理管理员所属层级
+ * @param phone
+ * @param systemUser
+ * @param identity
+ * @param identityInformationVO
+ */
+ private void handleSystemUserLevelId(String phone, SystemUser systemUser, Integer identity,
+ IdentityInformation identityInformationVO, PartyMember partyMember) {
+ // 情况1:系统用户存在
+ if (Objects.nonNull(systemUser)) {
+ Optional<SystemUserLevel> levelOptional = systemUserLevelService.getByLevelByUserId(systemUser.getId());
+ if (levelOptional.isPresent()) {
+ // 系统用户有关联的用户级别
+ SystemUserLevel userLevel = levelOptional.get();
+
+ // 设置用户身份信息为系统用户身份
+ identityInformationVO.setIdentity(identity);
+ identityInformationVO.setLevelId(userLevel.getId());
+ identityInformationVO.setSuperviseFlag(userLevel.getSuperviseFlag());
+ identityInformationVO.setSystemUserLevel(userLevel);
+
+ // 存储到Redis
+ UserIdentityDTO build = UserIdentityDTO.builder()
+ .identity(identity)
+ .levelId(userLevel.getId())
+ .build();
+ redisUtils.set("identity:" + phone, build);
+ } else if (partyMember != null && partyMember.getAuditStatus() == 1) {
+ // 系统用户无关联级别,但是有党员身份且审核通过
+ identityInformationVO.setIdentity(1);
+
+ UserIdentityDTO build = UserIdentityDTO.builder()
+ .identity(1)
+ .build();
+ redisUtils.set("identity:" + phone, build);
+ } else {
+ // 系统用户无关联级别,也没有党员身份,清除身份信息
+ redisUtils.remove("identity:" + phone);
+ }
+ } else if (partyMember != null && partyMember.getAuditStatus() == 1) {
+ // 情况2:不是系统用户,但是党员身份且审核通过
+ identityInformationVO.setIdentity(1);
+
+ UserIdentityDTO build = UserIdentityDTO.builder()
+ .identity(1)
+ .build();
+ redisUtils.set("identity:" + phone, build);
+ } else {
+ // 情况3:既不是系统用户也不是审核通过的党员,清除身份信息
+ redisUtils.remove("identity:" + phone);
+ }
+ }
@Override
@@ -127,17 +207,20 @@
throw new ServiceException("您的账号已被冻结,请联系管理员");
}
List<PermissionsVO> permissions = identityInformation.getPermissions();
- if (CollectionUtil.isEmpty(permissions)){
+ if (CollectionUtil.isEmpty(permissions) || Objects.isNull(identityInformation.getIdentity())){
throw new ServiceException("请先完成认证");
}
SystemUser systemUser = identityInformation.getSystemUser();
- if (systemUser == null && identityInformation.getIdentity() == 2) {
+ if (identityInformation.getIdentity() == 2 && Objects.isNull(systemUser)) {
throw new ServiceException("管理员信息不存在");
}
-
+ SystemUserLevel systemUserLevel = identityInformation.getSystemUserLevel();
+ if (identityInformation.getIdentity() == 2&&Objects.isNull(systemUserLevel)) {
+ throw new ServiceException("管理员所属层级不存在");
+ }
PartyMember partyMember = identityInformation.getPartyMember();
- if (partyMember == null && identityInformation.getIdentity() == 1) {
+ if (identityInformation.getIdentity() == 1 && Objects.isNull(partyMember)) {
throw new ServiceException("党员信息不存在");
}
return identityInformation;
--
Gitblit v1.7.1