From 36f691267e45ca2861bed663fdcf5f2efcefdfce Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 10 十一月 2025 15:27:08 +0800
Subject: [PATCH] 最新版本541200007

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java |  186 +++++++++++++++++++++++++++++++++++++---------
 1 files changed, 149 insertions(+), 37 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 b30488b..dfd57cf 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
@@ -2,7 +2,9 @@
 
 import cn.hutool.core.util.IdcardUtil;
 import cn.hutool.core.util.PhoneUtil;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -23,6 +25,10 @@
 import com.doumee.core.haikang.model.param.respose.UserAddResponse;
 import com.doumee.core.haikang.model.param.respose.UserDelResponse;
 import com.doumee.core.haikang.service.HKService;
+import com.doumee.core.jiandaoyun.api.arch.DeptApiClient;
+import com.doumee.core.jiandaoyun.constants.HttpConstant;
+import com.doumee.core.jiandaoyun.model.dept.DeptEntityModel;
+import com.doumee.core.jiandaoyun.model.user.UserEntityModel;
 import com.doumee.dao.web.response.DDAuthorizeVO;
 import com.doumee.service.business.third.TmsService;
 import com.doumee.service.business.third.model.LoginUserInfo;
@@ -78,6 +84,7 @@
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -93,6 +100,9 @@
 
     @Autowired
     private MemberJoinMapper memberJoinMapper;
+
+    @Autowired
+    private JkCabinetMapper jkCabinetMapper;
 
     @Autowired
     private TrainTimeMapper trainTimeMapper;
@@ -233,6 +243,7 @@
         insert.setCode(member.getCode());
         insert.setType(Constants.TWO);
         insert.setHkDate(new Date());
+        insert.setDdId(member.getDdId());
         insert.setErpId(member.getErpId());
         insert.setWorkStatus(Constants.ZERO);//榛樿鍦ㄨ亴
         insert.setCanVisit(Constants.ZERO);//榛樿涓嶅彲璁块棶
@@ -604,7 +615,7 @@
         Member member=new Member();
         member.setId(id);
         member.setIsdeleted(Constants.ONE);
-        member.setEditor(loginUserInfo.getId());
+        member.setEditor(loginUserInfo!=null?loginUserInfo.getId():null);
         member.setEditDate(date);
         member.setHkStatus(Constants.ZERO);
         member.setRemark("浜哄憳宸插垹闄わ紝绛夊緟鍒犻櫎闂ㄧ鏉冮檺");
@@ -1208,6 +1219,21 @@
             if(StringUtils.isNotBlank(companySpecialId)){
                 queryWrapper.apply(" find_in_set('"+companySpecialId+"',REPLACE(t3.company_path,'/',',')) ");
             }
+        }
+        if(null != member.getQueryAuth() && Constants.equalsInteger(member.getQueryAuth(),Constants.ONE)){
+            List<JkCabinet> jkCabinets = jkCabinetMapper.selectList(new QueryWrapper<JkCabinet>().lambda()
+                    .eq(JkCabinet::getIsdeleted,Constants.ZERO)
+                    .isNotNull(JkCabinet::getAuthMemberId)
+            );
+            if(CollectionUtils.isNotEmpty(jkCabinets)){
+                List<String> memberIdList = new ArrayList<>();
+                List<String> authMemberId = jkCabinets.stream().map(i->i.getAuthMemberId()).collect(Collectors.toList());
+                for (String s:authMemberId) {
+                    memberIdList.addAll(Arrays.asList(s.split(","))) ;
+                }
+                queryWrapper.in(Member::getId,memberIdList);
+            }
+
         }
         queryWrapper.eq(Member::getIsdeleted,Constants.ZERO);
         queryWrapper.eq(Member::getWorkStatus,Constants.ZERO);
@@ -1897,15 +1923,15 @@
                 .eq(SystemUser::getDeleted,Constants.ZERO)
                 .last(" limit 1 "));
         //闈炶瀹㈢敤鎴� 杩涜鍒ゆ柇鏄惁瀛樺湪鐢ㄦ埛
-        if(!Objects.isNull(user)){
+        if(Objects.isNull(user)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鎮ㄧ殑璐﹀彿鏆傛湭缁戝畾绯荤粺锛岃鑱旂郴绠$悊鍛�");
+        }else{
             Member member = memberMapper.selectById(user.getMemberId());
             if(member == null || member.getIsdeleted() == Constants.ONE){
-                return;
-//                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸插垹闄�,璇疯仈绯荤鐞嗗憳");
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璐﹀彿缁戝畾寮傚父锛岃鑱旂郴绠$悊鍛�");
             }
             if(member.getStatus() != Constants.ZERO){
-                return;
-//                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸茬鐢�,璇疯仈绯荤鐞嗗憳");
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鎮ㄧ殑璐﹀彿宸茬鐢紝璇疯仈绯荤鐞嗗憳");
             }
             if(StringUtils.isNotBlank(member.getIdcardNo())){
                 member.setIdcardDecode(DESUtil.decrypt(Constants.EDS_PWD, member.getIdcardNo()));
@@ -2139,7 +2165,7 @@
         if(importing!=null && importing){
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝宸插瓨鍦ㄥ憳宸ュ鍏ヤ换鍔℃鍦ㄦ墽琛屼腑锛岃绋嶅悗鍐嶈瘯锛�");
         }
-        redisTemplate.opsForValue().set(Constants.RedisKeys.IMPORTING_MEMBER,true);
+        redisTemplate.opsForValue().set(Constants.RedisKeys.IMPORTING_MEMBER,true,30, TimeUnit.MINUTES);
         try {
             ExcelImporter ie = null;
             List<MemberImport> dataList =null;
@@ -2393,23 +2419,60 @@
      * 鍚屾閽夐拤鍐呴儴鍛樺伐淇℃伅
      */
     @Override
-    public void syncDDUserInfo() throws ApiException {
-        List<OapiV2UserGetResponse.UserGetResponse>  list = dingTalk.syncAllUserInfo();
-        if(CollectionUtils.isEmpty(list)){
-            return;
-        }
-        List<Member> addList = new ArrayList<>();
-        List<Member> updateList = new ArrayList<>();
-        List<String> delIds = new ArrayList<>();//淇敼涓轰娇鐢ㄩ拤閽塱d  erpId
-        List<Member>  allList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
-                .eq(Member::getIsdeleted,Constants.ZERO)
-                .eq(Member::getType,Constants.TWO));
-        dealMemberChangeList(list,addList,updateList,delIds,allList);
+    public void syncDDUserInfo(){
+        try {
+            List<OapiV2UserGetResponse.UserGetResponse>  list = dingTalk.syncAllUserInfo();
+            if(CollectionUtils.isEmpty(list)){
+                return;
+            }
+            List<Member> addList = new ArrayList<>();
+            List<Member> updateList = new ArrayList<>();
+            List<String> delIds = new ArrayList<>();//淇敼涓轰娇鐢ㄩ拤閽塱d  erpId
+            List<Member>  allList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
+                    .eq(Member::getIsdeleted,Constants.ZERO)
+                    .eq(Member::getType,Constants.TWO));
+            dealMemberChangeList(list,addList,updateList,delIds,allList);
 
-        if(delIds.size()>0){
-            syncDelMember(delIds);
+            if(delIds.size()>0){
+                syncDelMember(delIds);
+            }
+        }catch (Exception e){
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"鍚屾閽夐拤浜哄憳淇℃伅寮傚父锛�");
         }
 
+
+    }
+    @Override
+    public String syncJdyUserInfo() {
+        DeptApiClient deptApiClient = new DeptApiClient(HttpConstant.API_KEY, HttpConstant.HOST);
+        try {
+            Map<String, Object> result =  deptApiClient.deptMemberList(1,true,deptApiClient.getDefaultVersion());
+            if(result!=null && result.get("users")!=null ){
+                TypeReference<List<UserEntityModel>> typeReference =     new TypeReference<List<UserEntityModel>>(){};
+                Object obj = result.get("users");
+                List<UserEntityModel> list =  com.alibaba.fastjson.JSONObject.parseObject(JSON.toJSONString(obj), typeReference.getType());
+                if(list !=null && list.size()>0){
+                     List<Member> addList = new ArrayList<>();
+                    List<Member> updateList = new ArrayList<>();
+                    List<String> delIds = new ArrayList<>();//淇敼涓轰娇鐢ㄩ拤閽塱d  erpId
+                    List<Member>  allList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
+                            .eq(Member::getIsdeleted,Constants.ZERO)
+                            .eq(Member::getType,Constants.TWO));
+                    dealMemberChangeListJdy(list,addList,updateList,delIds,allList);
+                    if(delIds.size()>0){
+                        syncDelMember(delIds);
+                    }
+                    return "鍚屾鏁版嵁锛氭柊澧炪��"+addList.size()+"銆戞潯锛屾洿鏂般��"+updateList.size()+"銆戞潯锛屽垹闄ゃ��"+delIds.size()+"銆戞潯";
+                }else{
+                    throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鍚屾閽夐拤鏁版嵁涓虹┖锛�");
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鍚屾鏁版嵁寮傚父锛�");
+        }
+
+        return null;
     }
 
     private void syncDelMember(List<String> delIds) {
@@ -2445,24 +2508,65 @@
             }
         }
     }
+    private void dealMemberChangeListJdy(List<UserEntityModel> list, List<Member> addList, List<Member> updateList, List<String> delIds, List<Member> allList) {
+        Date date = new Date();
+        for(UserEntityModel respone : list){
+            //鏍规嵁erpid鏌ヨ浼佷笟淇℃伅锛屽垽鏂槸鏂板杩樻槸鏇存柊
+            Member param = new Member();
+            param.setErpId(respone.getUsername());
+            param.setName(respone.getName());
+            param.setDdId(respone.getIntegrate_id());
+            param.setCompanyIdList(respone.getDepartments());
+            Member member = findMemberByERPId(allList,respone.getUsername());
+            if(member == null){
+                //濡傛灉鏄柊澧�
+                //灏佽鏂板缁勭粐瀵硅薄鏁版嵁
+                addList.add(syncDDAddMemberModel(param,new Member()));
+            }else{
+                updateList.add(syncDDEditMemberModel(param,member));
+            }
+        }
+        if(allList!=null && allList.size()>0){
+            for(Member m : allList){
+                if(!isMemberDeletedJdy(m,list)){
+                    delIds.add(m.getErpId());
+                }
+            }
+        }
+    }
 
     private Member getAddMemberModel(OapiV2UserGetResponse.UserGetResponse deptGetResponse,Member member) {
-        return  syncDDAddMemberModel(deptGetResponse,member);
+        Member param = new Member();
+        param.setErpId(deptGetResponse.getUnionid());
+        param.setPhone(deptGetResponse.getMobile());
+        param.setName(deptGetResponse.getName());
+        param.setCode(deptGetResponse.getJobNumber());
+        param.setDdId(deptGetResponse.getUserid());
+        param.setCompanyIdList(deptGetResponse.getDeptIdList());
+        return  syncDDAddMemberModel(param,member);
     }
 
 
     private Member getUpdateMemberModel(OapiV2UserGetResponse.UserGetResponse deptGetResponse,Member member) {
-        return  syncDDEditMemberModel(deptGetResponse,member);
+        Member param = new Member();
+        param.setErpId(deptGetResponse.getUnionid());
+        param.setPhone(deptGetResponse.getMobile());
+        param.setName(deptGetResponse.getName());
+        param.setCode(deptGetResponse.getJobNumber());
+        param.setDdId(deptGetResponse.getUserid());
+        param.setCompanyIdList(deptGetResponse.getDeptIdList());
+        return  syncDDEditMemberModel(param,member);
     }
 
 
-    private Member syncDDAddMemberModel(OapiV2UserGetResponse.UserGetResponse deptGetResponse,Member member) {
+    private Member syncDDAddMemberModel(Member deptGetResponse,Member member) {
         member.setCreateDate(new Date());
-        member.setErpId(deptGetResponse.getUnionid());
-        member.setPhone(deptGetResponse.getMobile());
+        member.setErpId(deptGetResponse.getErpId());
+        member.setPhone(deptGetResponse.getPhone());
         member.setName(deptGetResponse.getName());
-        member.setCode(deptGetResponse.getJobNumber());
-        isMemberParamValidDetail(member,deptGetResponse.getDeptIdList());
+        member.setCode(deptGetResponse.getCode());
+        member.setDdId(deptGetResponse.getDdId());
+        isMemberParamValidDetail(member,deptGetResponse.getCompanyIdList());
         //鑾峰彇鍑虹敓鏃ユ湡
         //鑴辨晱鎿嶄綔
         Member insert = initAddMemberModel(member,null);
@@ -2488,7 +2592,7 @@
         if(Objects.nonNull(deptIdList)){
             List<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>().lambda().in(Company::getErpId,deptIdList)
                     .eq(Company::getType,Constants.ONE).eq(Company::getIsdeleted,Constants.ZERO)
-//                    .isNotNull(Company::getHkId) 鏆傛椂鏃犳硶鍚屾寮�鑸� 鍏堟敞閲�
+//                    .isNotNull(Company::getHkId) 鏆傛椂鏃犳硶鍚屾娴峰悍 鍏堟敞閲�
             );
             if(CollectionUtils.isNotEmpty(companyList)){
                 member.setHkOrgId(companyList.get(Constants.ZERO).getHkId());
@@ -2497,7 +2601,7 @@
         }
         member.setCompanyType(Constants.ONE);
         SystemUser queryUserDto = new SystemUser();
-        queryUserDto.setUsername(member.getPhone());
+        queryUserDto.setUsername(StringUtils.defaultString(member.getPhone(),member.getErpId()));
         queryUserDto.setDeleted(Boolean.FALSE);
         SystemUser user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1"));
         if (user != null) {
@@ -2515,13 +2619,13 @@
         }
     }
     
-    public Member syncDDEditMemberModel(OapiV2UserGetResponse.UserGetResponse deptGetResponse,Member updateMember) { 
+    public Member syncDDEditMemberModel(Member deptGetResponse1,Member updateMember) {
         updateMember.setEditDate(new Date());
-        updateMember.setErpId(deptGetResponse.getUnionid());
-        updateMember.setPhone(deptGetResponse.getMobile());
-        updateMember.setName(deptGetResponse.getName());
-        updateMember.setCode(deptGetResponse.getJobNumber());
-       
+//        updateMember.setErpId(deptGetResponse.getErpId());
+//        updateMember.setPhone(deptGetResponse.getPhone());
+//        updateMember.setName(deptGetResponse.getName());
+//        updateMember.setCode(deptGetResponse.getCode());
+//        updateMember.setDdId(deptGetResponse.getDdId());
         updateMember.setHkId(null);
         updateMember.setAuthStatus(Constants.ZERO);
         Boolean hkFlag = dealHkUserForUpdateBiz(updateMember);
@@ -2543,6 +2647,7 @@
                 .set(updateMember.getHkDate()!=null,Member::getHkDate,updateMember.getHkDate())
                 .set(StringUtils.isNotBlank(updateMember.getRemark()),Member::getRemark,updateMember.getRemark())
                 .set(StringUtils.isNotBlank(updateMember.getFaceImg()),Member::getFaceImg,updateMember.getFaceImg())
+                .set(StringUtils.isNotBlank(updateMember.getDdId()),Member::getDdId,updateMember.getDdId())
                 .set(updateMember.getFaceId()!=null,Member::getFaceId,updateMember.getFaceId())
                 .set(updateMember.getCompanyId()!=null,Member::getCompanyId,updateMember.getCompanyId())
                 .set(Member::getCode,updateMember.getCode())
@@ -2582,7 +2687,14 @@
         }
         return false;
     }
-
+    private boolean isMemberDeletedJdy(Member member, List<UserEntityModel> list) {
+        for(UserEntityModel m : list){
+            if(StringUtils.equals(m.getUsername(),member.getErpId())){
+                return  true;
+            }
+        }
+        return false;
+    }
 
     @Override
     public void ddPushMemberInfo(String eventType, shade.com.alibaba.fastjson2.JSONObject eventData) throws ApiException {

--
Gitblit v1.9.3