From 08fed15a5cf6f3972443311645dd8ee4ebb0ad69 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 14 五月 2024 17:07:06 +0800
Subject: [PATCH] 最新版本

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java |  231 +++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 199 insertions(+), 32 deletions(-)

diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index cba4c22..d6d06ff 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -128,18 +128,21 @@
         //鑴辨晱鎿嶄綔
         Member insert = initAddMemberModel(member,loginUserInfo);
         //娴峰悍浜哄憳鏂板涓氬姟
-        if(dealHkUserBiz(insert)){
-            try {
+        try {
+             if(dealHkUserBiz(insert)){
                 memberMapper.insert(insert);
                 //鍒涘缓绯荤粺鐧婚檰璐﹀彿锛堥粯璁ゆ棤浠讳綍瑙掕壊锛�
-                createSystemUser(insert);
-            }catch (Exception e){
-                //濡傛灉鍙戠敓寮傚父锛屽垹闄ゅ凡缁忓垱寤虹殑浜哄憳淇℃伅
-                deleteHkUserBiz(insert.getHkId());
-                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鏂板缓澶辫触锛岃绋嶅悗閲嶈瘯锛�");
+                if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){
+                    //濡傛灉鏄唴閮ㄧ粍缁囦汉鍛橈紝鏂板绯荤粺鐧婚檰璐﹀彿
+                    createSystemUser(insert);
+                }
+            }else{
+                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃绋嶅悗閲嶈瘯锛�");
             }
-        }else{
-            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃绋嶅悗閲嶈瘯锛�");
+        }catch (Exception e){
+            //濡傛灉鍙戠敓寮傚父锛屽垹闄ゅ凡缁忓垱寤虹殑浜哄憳淇℃伅
+            deleteHkUserBiz(insert.getHkId());
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鏂板缓澶辫触锛岃绋嶅悗閲嶈瘯锛�");
         }
         return insert;
     }
@@ -150,7 +153,6 @@
         // 鐢熸垚瀵嗙爜
         user.setPassword(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(), salt));
         user.setSalt(salt);
-
         // 鍒涘缓鐢ㄦ埛璁板綍
         user.setType(insert.getType());
         user.setUsername(insert.getPhone());
@@ -175,6 +177,7 @@
         insert.setCreateDate(new Date());
         insert.setEditor(loginUserInfo.getId());
         insert.setEditDate(new Date());
+        insert.setHkOrgId(member.getHkOrgId());
         insert.setIsdeleted(Constants.ZERO);
         insert.setCompanyId(member.getCompanyId());
         insert.setFaceImg(member.getFaceImg());
@@ -201,6 +204,9 @@
      * @param hkId
      */
     private void deleteHkUserBiz(String hkId) {
+        if(StringUtils.isBlank(hkId)){
+            return;
+        }
         UserDelRequest request = new UserDelRequest();
         request.setPersonIds(new String[]{hkId});
         BaseResponse<List<UserDelResponse>> result =  HKService.delBatchUser(request);
@@ -214,14 +220,6 @@
     private boolean dealHkUserBiz(Member insert) {
         String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
                 +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
-        Company company = companyMapper.selectById(insert.getCompanyId());
-        if(company == null || Constants.equalsInteger(company.getIsdeleted(),Constants.ONE)){
-            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ョ粍缁囦俊鎭凡琚垹闄わ紝璇峰埛鏂伴〉闈㈤噸璇曪紒");
-        }
-        if(StringUtils.isBlank(company.getHkId())){
-            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ョ粍缁囦俊鎭湭鍚屾瀹夐槻骞冲彴锛岃鍏堝墠寰�銆愮粍缁囩鐞嗐�戣彍鍗曡繘琛岀淮鎶わ紒");
-        }
-        insert.setHkOrgId(company.getHkId());
         UserAddRequest hkAddRequest = HkSyncOrgUserToHKServiceImpl.getUserAddModel(insert,path,Constants.ZERO);
         if(hkAddRequest == null){
             throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝浜鸿劯鐓х墖鏈夎锛岃灏濊瘯閲嶆柊涓婁紶锛�");
@@ -305,6 +303,9 @@
     }
 
     private void isMemberParamValid(Member member) {
+        if(member.getCompanyId() == null){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
         if (StringUtils.isBlank(member.getPhone())||!PhoneUtil.isPhone(member.getPhone())){
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐢佃瘽鍙风爜鏍煎紡鏈夎");
         }
@@ -317,22 +318,32 @@
             }
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"韬唤璇佸彿鏍煎紡鏈夎");
         }
-
-        SystemUser queryUserDto = new SystemUser();
-        queryUserDto.setUsername(member.getPhone());
-        queryUserDto.setDeleted(Boolean.FALSE);
-        SystemUser user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1"));
-        if (user != null) {
-            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "鎵嬫満鍙枫��"+queryUserDto.getUsername()+"銆戝凡琚娇鐢紝涓嶈兘閲嶅");
+        Company company = companyMapper.selectById(member.getCompanyId());
+        if(company == null || Constants.equalsInteger(company.getIsdeleted(),Constants.ONE)){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ョ粍缁囦俊鎭凡琚垹闄わ紝璇峰埛鏂伴〉闈㈤噸璇曪紒");
         }
-        // 楠岃瘉宸ュ彿
-        if (StringUtils.isNotBlank(member.getCode())) {
-            queryUserDto = new SystemUser();
+        if(StringUtils.isBlank(company.getHkId())){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ョ粍缁囦俊鎭湭鍚屾瀹夐槻骞冲彴锛岃鍏堝墠寰�銆愮粍缁囩鐞嗐�戣彍鍗曡繘琛岀淮鎶わ紒");
+        }
+        member.setHkOrgId(company.getHkId());
+        member.setCompanyType(company.getType());
+        if(Constants.equalsInteger(company.getType(),Constants.ONE)){
+            SystemUser queryUserDto = new SystemUser();
+            queryUserDto.setUsername(member.getPhone());
             queryUserDto.setDeleted(Boolean.FALSE);
-            queryUserDto.setEmpNo(member.getCode());
-            user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1"));
+            SystemUser user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1"));
             if (user != null) {
-                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "宸ュ彿銆�"+member.getCode()+"銆戝凡瀛樺湪");
+                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "鎵嬫満鍙枫��"+queryUserDto.getUsername()+"銆戝凡琚娇鐢紝涓嶈兘閲嶅");
+            }
+            // 楠岃瘉宸ュ彿
+            if (StringUtils.isNotBlank(member.getCode())) {
+                queryUserDto = new SystemUser();
+                queryUserDto.setDeleted(Boolean.FALSE);
+                queryUserDto.setEmpNo(member.getCode());
+                user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1"));
+                if (user != null) {
+                    throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "宸ュ彿銆�"+member.getCode()+"銆戝凡瀛樺湪");
+                }
             }
         }
     }
@@ -487,7 +498,7 @@
 
 
     @Override
-    public void roleAuthById(Integer id) {
+    public void roleAuthById(Integer id,LoginUserInfo user) {
         Member member = memberMapper.selectById(id);
         if(member==null || member.getIsdeleted().equals(Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鍛樺伐淇℃伅宸插垹闄�");
@@ -495,6 +506,157 @@
 //        List<MemberCard> cards = HkSyncOrgUserToHKServiceImpl.getNormalCardList(member,memberCardMapper);
         HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(null,member,deviceRoleMapper,empowerMapper,deviceMapper);
     }
+    @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public void batchRoleAuth(Member memberRole) {
+        if(memberRole.getIds() ==null
+                || memberRole.getIds().size() ==0 ){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        if(memberRole.getRoleIds() ==null || memberRole.getRoleIds().length ==0){
+            //濡傛灉鏄竻绌烘潈闄�
+        }else{
+            if( ! (Constants.equalsObject(memberRole.getTimeType(),Constants.ZERO)
+                    || (Constants.equalsObject(memberRole.getTimeType(),Constants.ONE)
+                    && memberRole.getStartTime() !=null && memberRole.getEndTime() != null ))){
+                throw  new BusinessException(ResponseStatus.BAD_REQUEST);
+            }
+            if(Constants.equalsObject(memberRole.getTimeType(),Constants.ONE) && memberRole.getEndTime().getTime() < System.currentTimeMillis()){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏈夋晥鏈熸埅姝㈡棩鏈熶笉鑳藉皬浜庡綋鍓嶆椂闂达紒");
+            }
+            if(Constants.equalsObject(memberRole.getTimeType(),Constants.ONE) && memberRole.getEndTime().getTime() <= memberRole.getStartTime().getTime()){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏈夋晥鏈熸埅姝㈡棩鏈熶笉鑳藉皬浜庡紑濮嬫椂闂达紒");
+            }
+        }
+        if(Constants.equalsObject(memberRole.getTimeType(),Constants.ZERO) ){
+           memberRole.setStartTime(null);
+           memberRole.setEndTime(null);
+        }
+        for (Integer id : memberRole.getIds()){
+            Member member = memberMapper.selectById(id);
+            if(member==null || member.getIsdeleted().equals(Constants.ONE)){
+                //濡傛灉鍛樺伐淇℃伅涓嶅悎娉曠洿鎺ヨ烦杩�
+               continue;
+            }
+            member.setStartTime(memberRole.getStartTime());
+            member.setEndTime(memberRole.getEndTime());
+            Integer ischange = getRoleIdByParam(memberRole.getRoleIds(),member,memberRoleMapper,deviceRoleMapper);
+            if(ischange == 0){
+                return;//鏈彂鐜版潈闄愬彉鍖栵紝鐩存帴杩斿洖
+            }
+            if(memberRole.getRoleIds()!=null && memberRole.getRoleIds().length>0 && StringUtils.isBlank(member.getRoleId())){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝鏈煡璇㈠埌鏈夋晥闂ㄧ缁勬暟鎹�");
+            }
+            memberMapper.update(null,new UpdateWrapper<Member>().lambda()
+                    .eq(Member::getId,member.getId())
+                    .set(Member::getRoleId,member.getRoleId())
+                    .set(Member::getAuthStatus,Constants.ONE)
+                    .set(Member::getStartTime,memberRole.getStartTime())
+                    .set(Member::getEndTime,memberRole.getEndTime())
+                    .set(Member::getEditor,memberRole.getLoginUserInfo().getId())
+                    .set(Member::getEditDate,new Date()) );
+            saveUserActionBiz(member,memberRole.getLoginUserInfo(), Constants.UserActionType.AUTH_ROLE,userActionJoinMapper);
+            //閲嶆柊鎺堟潈
+            HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(null,member,deviceRoleMapper,empowerMapper,deviceMapper);
+         }
+    }
+
+    public static   Integer   getRoleIdByParam(Integer[] param, Member member,MemberRoleMapper memberRoleMapper,DeviceRoleMapper deviceRoleMapper) {
+        //娣诲姞浜哄憳瑙掕壊鍏宠仈鏁版嵁
+        member.setRoleId(null);
+        List<MemberRole> roleList = memberRoleMapper.selectList( new QueryWrapper<MemberRole>().lambda()
+                .eq(MemberRole::getIsdeleted,Constants.ZERO)
+                .eq(MemberRole::getMemberId,member.getId()));
+
+        member.setRoleId("");
+        if((param == null || param.length==0 ) &&( roleList==null || roleList.size()==0)){
+            //妫�鏌ョ敤鎴锋儏鍐垫潈闄愬師鏈氨鏄┖鐨勶紝 鍒欐棤闇�澶勭悊
+            return  0;
+        }
+         if((param == null || param.length==0 ) &&( roleList!=null && roleList.size()>0) ){
+            //濡傛灉娓呯┖鍘熸潵鏈夋潈闄愶紝鎺ュ彛杩涜鏉冮檺鍒犻櫎鍘熸湁鏉冮檺鍗冲彲
+            memberRoleMapper.delete(new QueryWrapper<MemberRole>().lambda().eq(MemberRole::getMemberId,member.getId()));
+            return 1;
+        }
+        if(!Objects.isNull(param)&&param.length>Constants.ZERO){
+          /*     if(roleList!=null && roleList.size()>0) {
+                //鍜屽師鏈夋潈闄愯繘琛屽姣旓紝鐪嬫槸鍚︽潈闄愬彂鐢熷彉鍖�
+                boolean ischange1=false;
+                for (MemberRole role : roleList) {
+                    ischange1=false;
+                    for (int j = 0; j < param.length; j++) {
+                        if(Constants.equalsInteger(role.getRoleId(),param[j])){
+                            ischange1=true;
+                            break;
+                        }
+                    }
+                    if(!ischange1){
+                        break;
+                    }
+                }
+
+                boolean ischange2 =false;
+                for (int j = 0; j < param.length; j++) {
+                    ischange2=false;
+                    for (MemberRole role : roleList) {
+                        if(Constants.equalsInteger(role.getRoleId(),param[j])){
+                            ischange2=true;
+                            break;
+                        }
+                    }
+                    if(!ischange2){
+                        break;
+                    }
+                }
+                if(ischange2 && ischange1){
+                    return 0;//鏉冮檺鏈彂鐢熸敼鍙�
+                }
+            }*/
+            //濡傛灉鍘熸潵鏈夋潈闄愶紝鎺ュ彛杩涜鏉冮檺鍒犻櫎
+            memberRoleMapper.delete(new QueryWrapper<MemberRole>().lambda().eq(MemberRole::getMemberId,member.getId()));
+            //鏌ヨ鏁版嵁搴撳瓨鍦ㄧ殑鏉冮檺
+            List<DeviceRole> deviceRoleList= deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
+                    .eq(DeviceRole::getType,Constants.TWO)
+                    .in(DeviceRole::getId,param));
+
+            String ids = "";
+            if(CollectionUtils.isNotEmpty(deviceRoleList)){
+                List<MemberRole> memberRoleList = new ArrayList<>();
+                List<Integer> r = new ArrayList<>();
+                for (int i = 0; i < deviceRoleList.size(); i++) {
+                    DeviceRole deviceRole =deviceRoleList.get(i);
+                    if(i>0){
+                        ids += ",";
+                    }
+                    Integer id =deviceRole.getId();
+                    ids += "["+id+"]";
+                    String doorids =deviceRole.getDoorIds();
+                    if(StringUtils.isNotBlank(doorids)){
+                        String[] ss = doorids.split(",");
+                        try {
+                            for(String s :ss){
+                                r.add(Integer.parseInt(s));
+                            }
+                        }catch (Exception e){
+                            //鑴忔暟鎹笉澶勭悊
+                        }
+                    }
+                    MemberRole memberRole = new MemberRole();
+                    memberRole.setCreateDate(new Date());
+                    memberRole.setMemberId(member.getId());
+                    memberRole.setIsdeleted(Constants.ZERO);
+                    memberRole.setRoleId(deviceRole.getId());
+                    memberRoleList.add(memberRole);
+                }
+                memberRoleMapper.insertBatchSomeColumn(memberRoleList);
+            }
+            member.setRoleId(ids);
+            return  1;
+        }
+
+        return  0;
+    }
+
     @Override
     public     void empowerByList(Member member) {
         if(member.getIdList()!=null && member.getIdList().size() >0){
@@ -655,6 +817,7 @@
         userAction.setIsdeleted(Constants.ZERO);
         userAction.setCreateDate(updateMember.getEditDate());
         userAction.setCreator(updateMember.getEditor());
+        userAction.setBeforeStatus(updateMember.getStatus());
         userAction.setType(type.getKey());
         String info = type.getInfo();
         userAction.setRemark(info.replace("${param1}",user!=null?user.getRealname():"").replace("${param2}", com.doumee.core.utils.DateUtil.getPlusTime2(updateMember.getEditDate())));
@@ -714,12 +877,15 @@
                companyMapper.update(null,new UpdateWrapper<Company>().lambda()
                        .eq(Company::getId,model.getCompanyId())
                        .set(Company::getHeadId,member.getId()));
+               //璁板綍鎿嶄綔鏃ュ織
+               saveUserActionBiz(member,member.getLoginUserInfo(), Constants.UserActionType.BE_HEAD,userActionJoinMapper);
            }else{
                //濡傛灉鏄涓轰富绠�
                companyMapper.update(null,new UpdateWrapper<Company>().lambda()
                        .eq(Company::getId,model.getCompanyId())
                        .set(Company::getHeadId,null)
                );
+               saveUserActionBiz(member,member.getLoginUserInfo(),Constants.UserActionType.NOT_HEAD,userActionJoinMapper);
            }
        }
     }
@@ -1050,6 +1216,7 @@
                 .eq(Objects.nonNull(pageWrap.getModel().getHkStatus()),Member::getHkStatus,pageWrap.getModel().getHkStatus())
                 .eq(Objects.isNull(pageWrap.getModel().getIsdeleted()),Member::getIsdeleted,Constants.ZERO)
                 .eq(Objects.nonNull(pageWrap.getModel().getIsdeleted()),Member::getIsdeleted,pageWrap.getModel().getIsdeleted())
+                .eq(Objects.nonNull(pageWrap.getModel().getCompanyType()),Company::getType,pageWrap.getModel().getCompanyType())
                 .like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),Company::getName,pageWrap.getModel().getCompanyName())
 //                .eq(Member::getStatus,Constants.Status.ENABLE.getValue())
 //                .eq(Member::getType,Constants.memberType.internal)

--
Gitblit v1.9.3