From b827b2710c1f9ac64fe8879f08e1008a8647966a Mon Sep 17 00:00:00 2001
From: puhanshu <a9236326>
Date: 星期四, 07 七月 2022 13:42:12 +0800
Subject: [PATCH] 大屏数据调整

---
 springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java |  225 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 210 insertions(+), 15 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
index f3de5d6..b710bb2 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -20,6 +20,7 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.panzhihua.common.model.dtos.community.microCommercialStreet.BindUserPhoneDTO;
+import com.panzhihua.common.model.vos.community.ComStreetVO;
 import com.panzhihua.common.model.vos.community.microCommercialStreet.McsLoginUserInfoVO;
 import com.panzhihua.service_user.dao.*;
 import com.panzhihua.service_user.entity.SysAppConfig;
@@ -305,8 +306,13 @@
                 new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, type).eq(SysUserDO::getOpenid, name));
         } else {
             LambdaQueryWrapper<SysUserDO> wrapper = new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, type);
-            wrapper.and(sysUserDOLambdaQueryWrapper -> sysUserDOLambdaQueryWrapper.eq(SysUserDO::getAccount, name).or()
-                .eq(SysUserDO::getPhone, name));
+            if (type == 11) {
+                //只允许通过account登录
+                wrapper.and(sysUserDOLambdaQueryWrapper -> sysUserDOLambdaQueryWrapper.eq(SysUserDO::getAccount, name));
+            } else {
+                wrapper.and(sysUserDOLambdaQueryWrapper -> sysUserDOLambdaQueryWrapper.eq(SysUserDO::getAccount, name).or()
+                        .eq(SysUserDO::getPhone, name));
+            }
             sysUserDO = userDao.selectOne(wrapper);
         }
         boolean empty = ObjectUtils.isEmpty(sysUserDO);
@@ -370,10 +376,15 @@
         loginUserInfoVO.setIsmemberrole(2);
         loginUserInfoVO.setIsFourMember(2);
         loginUserInfoVO.setIsCommunityWorker(2);
+        loginUserInfoVO.setIsDpcMember(2);
         loginUserInfoVO.setIsPropertyWorker(2);
+        loginUserInfoVO.setIsSocialWorker(2);
+        loginUserInfoVO.setIsFmsMember(2);
+        loginUserInfoVO.setIsOrgContactPeople(2);
         // 志愿者状态
         String phone = sysUserDO.getPhone();
         Long userCommunityId = sysUserDO.getCommunityId();
+        Long streetId = sysUserDO.getStreetId();
         if (userCommunityId != null) {
             ComActVO comActVO = userDao.selectCommunity(userCommunityId);
             if (comActVO != null) {
@@ -386,6 +397,11 @@
                     loginUserInfoVO.setAppSecret(sysAppConfig.getSecret());
                 }
             }
+        } else if (nonNull(streetId)){
+            ComStreetVO streetVO = userDao.selectStreetById(streetId);
+            if (nonNull(streetVO)) {
+                loginUserInfoVO.setAreaCode(streetVO.getAreaCode().toString());
+            }
         }
         if (!ObjectUtils.isEmpty(phone)) {
             ComMngVolunteerMngVO comMngVolunteerMngVO = userDao.selectVolunteerMngByPhone(phone);
@@ -396,7 +412,8 @@
                 loginUserInfoVO.setVolunteerStatus(state);
             }
             //是否四长四员
-            Integer countFourMember=comActFourMemberDao.selectCount(new QueryWrapper<ComActFourMember>().lambda().eq(ComActFourMember::getIdCard,sysUserDO.getIdCard()));
+            Integer countFourMember=comActFourMemberDao.selectCount(new QueryWrapper<ComActFourMember>().lambda()
+                    .eq(ComActFourMember::getIdCard,sysUserDO.getIdCard()).eq(ComActFourMember::getCommunityId, userCommunityId));
             if(countFourMember>0){
                 loginUserInfoVO.setIsFourMember(1);
             }
@@ -404,6 +421,16 @@
             int countPropertyWorker = userDao.countPropertyWorker(Long.parseLong(userId), userCommunityId);
             if (countPropertyWorker > 0) {
                 loginUserInfoVO.setIsPropertyWorker(1);
+            }
+            //是否微团队成员
+            int countFmsMember = userDao.countFmsMember(phone, userCommunityId);
+            if (countFmsMember > 0) {
+                loginUserInfoVO.setIsFmsMember(1);
+            }
+            //是否社会组织联系人
+            int countOrgNum = userDao.countOrgNum(phone);
+            if (countOrgNum > 0) {
+                loginUserInfoVO.setIsOrgContactPeople(1);
             }
             // 是否是"管理员"或者 本社区 "社区团队"、"党委成员"
             Integer countTeam = userDao.selectCountTeam(phone, userCommunityId);
@@ -416,6 +443,30 @@
                 loginUserInfoVO.setIsmemberrole(1);
             } else if (isSysUser != null && isSysUser > 0) {
                 loginUserInfoVO.setIsmemberrole(1);
+            }
+            Integer isDpcMember = userDao.selectCountDpc(phone, userCommunityId);
+            if (isDpcMember > 0) {
+                loginUserInfoVO.setIsDpcMember(1);
+            }
+            Integer countSocialWorker = userDao.countSocialWorker(phone,userCommunityId);
+            if(countSocialWorker>0){
+                loginUserInfoVO.setIsSocialWorker(1);
+            }
+            //判断账号类型
+            Long orgId = userDao.countSocialOrg(Long.parseLong(userId));
+            if (nonNull(orgId)) {
+                loginUserInfoVO.setUserType(3);
+            } else {
+                if (loginUserInfoVO.getStreetId() != null) {
+                    loginUserInfoVO.setUserType(1);
+                } else {
+                    int count = userDao.countSocialOrgMember(Long.parseLong(userId));
+                    if (count > 0) {
+                        loginUserInfoVO.setUserType(4);
+                    } else {
+                        loginUserInfoVO.setUserType(2);
+                    }
+                }
             }
         }
         loginUserInfoVO.setIsRealNamed(sysUserDO.getIdCard() != null);
@@ -635,7 +686,7 @@
      * @return 人员详情
      */
     @Override
-    public R detailUser(Long userId) {
+    public R<LoginUserInfoVO> detailUser(Long userId) {
         LoginUserInfoVO loginUserInfoVO = new LoginUserInfoVO();
         if (userId < 100000000l) {
             SysUserDO sysUserDO = userDao.selectById(userId);
@@ -694,6 +745,7 @@
         }
         ComActVO comActVO = userDao.selectCommunity(loginUserInfoVO.getCommunityId());
         if (!ObjectUtils.isEmpty(comActVO)) {
+            loginUserInfoVO.setComActVO(comActVO);
             loginUserInfoVO.setCommunityName(comActVO.getName());
             loginUserInfoVO.setAreaCode(comActVO.getAreaCode());
         }
@@ -702,9 +754,37 @@
         }
         //是否是社区物业人员
         int countPropertyWorker = userDao.countPropertyWorker(userId, loginUserInfoVO.getCommunityId());
-        loginUserInfoVO.setIsPropertyWorker(countPropertyWorker > 0 ? 1 : 0);
+        loginUserInfoVO.setIsPropertyWorker(countPropertyWorker > 0 ? 1 : 2);
+        //是否微团队成员
+        int countFmsMember = userDao.countFmsMember(loginUserInfoVO.getPhone(), loginUserInfoVO.getCommunityId());
+        loginUserInfoVO.setIsFmsMember(countFmsMember > 0 ? 1 : 2);
+        //是否人大代表成员
+        Integer isDpcMember = userDao.selectCountDpc(loginUserInfoVO.getPhone(), loginUserInfoVO.getCommunityId());
+        loginUserInfoVO.setIsDpcMember(isDpcMember > 0 ? 1 : 2);
+        //是否社会组织联系人
+        int countOrgNum = userDao.countOrgNum(loginUserInfoVO.getPhone());
+        loginUserInfoVO.setIsOrgContactPeople(countOrgNum > 0 ? 1 : 2);
         loginUserInfoVO.setIdCard(SensitiveUtil.desensitizedIdNumber(loginUserInfoVO.getIdCard()));
         loginUserInfoVO.setPhone(SensitiveUtil.desensitizedPhoneNumber(loginUserInfoVO.getPhone()));
+        //判断账号类型
+        Long orgId = userDao.countSocialOrg(userId);
+        if(nonNull(orgId)){
+            loginUserInfoVO.setUserType(3);
+            loginUserInfoVO.setOrgId(orgId);
+        }
+        else {
+            if(loginUserInfoVO.getStreetId()!=null){
+                loginUserInfoVO.setUserType(1);
+            }
+            else {
+                int count = userDao.countSocialOrgMember(userId);
+                if (count > 0) {
+                    loginUserInfoVO.setUserType(4);
+                } else {
+                    loginUserInfoVO.setUserType(2);
+                }
+            }
+        }
         return R.ok(loginUserInfoVO);
     }
 
@@ -860,8 +940,8 @@
             sysUserDO.setPhone(loginUserInfoVO.getPhone());
         }
         sysUserDO.setFaceState(null);
-        SysUserDO sysUserDO1 =
-            userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getIdCard, idCard));
+        SysUserDO sysUserDO1 = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getIdCard, idCard)
+                        .eq(SysUserDO::getCommunityId,loginUserInfoVO.getCommunityId()));
         if (!ObjectUtils.isEmpty(sysUserDO1)) {
             return R.fail("身份证已经存在");
         }
@@ -1104,6 +1184,46 @@
                 this.putMenuRole(menuRoleVO);
             }
         }
+        if(roleId.intValue()==777777777){
+            SysRoleDO sysRoleDO = new SysRoleDO();
+            sysRoleDO.setRoleName("超级管理员");
+            sysRoleDO.setRoleKey(Constants.STREET_ROLE_KEY + administratorsUserVO.getStreetId());
+            sysRoleDO.setRoleSort(0);
+            sysRoleDO.setCreateBy(administratorsUserVO.getUserId());
+            int insert = roleDAO.insert(sysRoleDO);
+            if (insert > 0) {
+                SysRoleDO sysRoleDO1 = roleDAO.selectOne(
+                        new QueryWrapper<SysRoleDO>().lambda().eq(SysRoleDO::getRoleKey, sysRoleDO.getRoleKey()));
+                roleId = sysRoleDO1.getRoleId();
+                // 新街道管理员角色设置固定三社权限
+                MenuRoleVO menuRoleVO = new MenuRoleVO();
+                List<Long> menu=new ArrayList<>();
+                if(administratorsUserVO.getSocialType()==1){
+                    menu.add(233L);
+                    menu.add(234L);
+                    menu.add(235L);
+                    menu.add(236L);
+                    menu.add(237L);
+                }
+                else if(administratorsUserVO.getSocialType()==2){
+                    menu.add(233L);
+                    menu.add(234L);
+                    menu.add(236L);
+                    menu.add(237L);
+                    menu.add(238L);
+                }
+                else if(administratorsUserVO.getSocialType()==3){
+                    menu.add(233L);
+                    menu.add(237L);
+                }
+                else {
+                    menuRoleVO.setIsAll(1);
+                }
+                menuRoleVO.setMenuIds(menu);
+                menuRoleVO.setRoleId(roleId);
+                this.putMenuRole(menuRoleVO);
+            }
+        }
         SysRoleDO roleDO = roleDAO.selectById(roleId);
         if (ObjectUtils.isEmpty(roleDO)) {
             return R.fail("角色不存在");
@@ -1127,7 +1247,7 @@
 
         }
 
-        if (insert > 0 && sysUserDO.getType() == 3) {// 添加的用户是社区账号时
+        if (insert > 0 && sysUserDO.getType() == 3 &&sysUserDO.getStreetId()==null) {// 添加的用户是社区账号时
             // 添加网格综合治理管理后台用户
             SysUserDO sysUserDOWangGe = new SysUserDO();
             BeanUtils.copyProperties(sysUserDO, sysUserDOWangGe);
@@ -1171,6 +1291,47 @@
     public R addUserBackstageProperty(AdministratorsUserVO administratorsUserVO) {
         SysUserDO sysUserDO = new SysUserDO();
         Long roleId = administratorsUserVO.getRoleId();
+        if(roleId.intValue()==777777777){
+            SysRoleDO sysRoleDO = new SysRoleDO();
+            sysRoleDO.setRoleName("五社超级管理员");
+            List<Long> menu=new ArrayList<>();
+            if(administratorsUserVO.getSocialType()==1){
+                sysRoleDO.setRoleKey(Constants.STREET_ROLE_KEY + administratorsUserVO.getStreetId());
+                menu.add(300L);
+                menu.add(301L);
+                menu.add(302L);
+                menu.add(303L);
+                menu.add(304L);
+            }
+            else if(administratorsUserVO.getSocialType()==2){
+                sysRoleDO.setRoleKey("social_org" + administratorsUserVO.getStreetId());
+                menu.add(300L);
+                menu.add(301L);
+                menu.add(303L);
+            }
+            else if(administratorsUserVO.getSocialType()==3){
+                sysRoleDO.setRoleKey("social_org_member" + administratorsUserVO.getStreetId());
+                menu.add(300L);
+                menu.add(301L);
+                menu.add(303L);
+            }
+
+            sysRoleDO.setRoleSort(0);
+            sysRoleDO.setCreateBy(administratorsUserVO.getUserId());
+            SysRoleDO sysRoleDO1 = roleDAO.selectOne(
+                    new QueryWrapper<SysRoleDO>().lambda().eq(SysRoleDO::getRoleKey, sysRoleDO.getRoleKey()));
+            if(sysRoleDO1!=null){
+                sysRoleDO = sysRoleDO1;
+            }else{
+                roleDAO.insert(sysRoleDO);
+                // 新街道管理员角色设置固定三社权限
+                MenuRoleVO menuRoleVO = new MenuRoleVO();
+                menuRoleVO.setMenuIds(menu);
+                menuRoleVO.setRoleId(sysRoleDO.getRoleId());
+                this.putMenuRole(menuRoleVO);
+            }
+            roleId = sysRoleDO.getRoleId();
+        }
         SysRoleDO roleDO = roleDAO.selectById(roleId);
         if (ObjectUtils.isEmpty(roleDO)) {
             return R.fail("角色不存在");
@@ -1188,6 +1349,8 @@
                 throw new ServiceException("手机号已经存在");
             } else if (e.getMessage().contains("union_account_type")) {
                 throw new ServiceException("账户已经存在");
+            }else if(e.getMessage().contains("23000")){
+                throw new ServiceException("手机号已存在");
             }
 
         }
@@ -1265,7 +1428,12 @@
                         .anyMatch(sysRoleMenuDO -> sysRoleMenuDO.getMenuId().equals(menuId))).collect(Collectors.toList());
             }
             if (!menuIds.isEmpty()) {
-                sysRoleMenuDAO.batchInsertWithRoleId(menuIds, roleId);
+                if(menuRoleVO.getMenuIds()==null){
+                    sysRoleMenuDAO.batchInsertWithRoleId(menuIds, roleId);
+                }
+                else {
+                    sysRoleMenuDAO.batchInsertWithRoleId(menuRoleVO.getMenuIds(), roleId);
+                }
             }
 //            for (int i = 0; i < menuIds.size(); i++) {
 //                SysRoleMenuDO sysRoleMenuDO = sysRoleMenuDAO.selectOne(new QueryWrapper<SysRoleMenuDO>().lambda()
@@ -1290,10 +1458,15 @@
      */
     @Override
     public R putUserBackstage(AdministratorsUserVO administratorsUserVO) {
+        Long userId = administratorsUserVO.getUserId();
         SysUserDO sysUserDO = new SysUserDO();
         Long roleId = administratorsUserVO.getRoleId();
         SysRoleDO roleDO = null;
         if (null != roleId && 0 != roleId) {
+            if (roleId.equals(777777777L)) {
+                SysUserRoleDO sysUserRoleDO = sysUserRoleDAO.selectOne(new LambdaQueryWrapper<SysUserRoleDO>().eq(SysUserRoleDO::getUserId, userId));
+                roleId = sysUserRoleDO.getRoleId();
+            }
             roleDO = roleDAO.selectById(roleId);
             if (ObjectUtils.isEmpty(roleDO)) {
                 return R.fail("角色不存在");
@@ -1319,11 +1492,11 @@
             SysUserRoleDO sysUserRoleDO = new SysUserRoleDO();
             sysUserRoleDO.setRoleId(roleDO.getRoleId());
             int update1 = sysUserRoleDAO.update(sysUserRoleDO, new UpdateWrapper<SysUserRoleDO>().lambda()
-                .eq(SysUserRoleDO::getUserId, administratorsUserVO.getUserId()));
+                .eq(SysUserRoleDO::getUserId, userId));
             if (update1 > 0) {
                 return R.ok();
             } else {
-                sysUserRoleDO.setUserId(administratorsUserVO.getUserId());
+                sysUserRoleDO.setUserId(userId);
                 sysUserRoleDAO.insert(sysUserRoleDO);
             }
         }
@@ -1347,7 +1520,7 @@
         }
         Long communityId = sysUserDO.getCommunityId();
         Long communityId1 = administratorsUserVO.getCommunityId();
-        if (communityId1.intValue() != communityId.intValue()) {
+        if (communityId1!=null&&communityId1.intValue() != communityId.intValue()) {
             return R.fail("用户不属于当前平台");
         }
         // 删除用户
@@ -2018,7 +2191,7 @@
         SysUserDO sysUserDO = userDao
             .selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone, phone).eq(SysUserDO::getType, 1));
         if (ObjectUtils.isEmpty(sysUserDO)) {
-            return R.fail("用户不存在");
+            return R.fail("账号或密码错误");
         }
         SysUserVO sysUserVO = new SysUserVO();
         BeanUtils.copyProperties(sysUserDO, sysUserVO);
@@ -2053,7 +2226,7 @@
         query.eq(SysUserDO::getType, type);
         SysUserDO sysUserDO = userDao.selectOne(query);
         if (ObjectUtils.isEmpty(sysUserDO)) {
-            return R.fail("用户不存在");
+            return R.fail("账号或密码错误");
         }
         SysUserVO sysUserVO = new SysUserVO();
         BeanUtils.copyProperties(sysUserDO, sysUserVO);
@@ -2818,13 +2991,35 @@
     public R getUserInfoByUnionId(String unionId) {
         SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getUnionid, unionId));
         if (isNull(sysUserDO)) {
-            return R.fail("用户不存在");
+            return R.fail("账号或密码错误");
         }
         LoginUserInfoVO loginUserInfoVO = new LoginUserInfoVO();
         BeanUtils.copyProperties(sysUserDO, loginUserInfoVO);
         return R.ok(loginUserInfoVO);
     }
 
+    @Override
+    public R updateStreetId(AdministratorsUserVO administratorsUserVO) {
+        SysUserDO sysUserDO=new SysUserDO();
+        BeanUtils.copyProperties(administratorsUserVO,sysUserDO);
+        userDao.updateById(sysUserDO);
+        return R.ok();
+    }
+
+    /**
+     * 删除用户信息缓存
+     * @param phone
+     */
+    @Override
+    public R deleteUserCashByPhone(String phone) {
+        SysUserDO sysUserDO = this.userDao.selectOne(new LambdaQueryWrapper<SysUserDO>().eq(SysUserDO::getPhone, phone).eq(SysUserDO::getType, 1));
+        if (nonNull(sysUserDO)) {
+            String userKey = UserConstants.LOGIN_USER_INFO + sysUserDO.getUserId();
+            stringRedisTemplate.delete(userKey);
+        }
+        return R.ok();
+    }
+
     /**
      * 微商业街新增商家账号
      * @param mcsMerchantDTO

--
Gitblit v1.7.1