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 |  162 ++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 126 insertions(+), 36 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 01b1d19..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;
@@ -609,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("浜哄憳宸插垹闄わ紝绛夊緟鍒犻櫎闂ㄧ鏉冮檺");
@@ -1917,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()));
@@ -2413,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) {
@@ -2465,25 +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());
-        member.setDdId(deptGetResponse.getUserid());
-        isMemberParamValidDetail(member,deptGetResponse.getDeptIdList());
+        member.setCode(deptGetResponse.getCode());
+        member.setDdId(deptGetResponse.getDdId());
+        isMemberParamValidDetail(member,deptGetResponse.getCompanyIdList());
         //鑾峰彇鍑虹敓鏃ユ湡
         //鑴辨晱鎿嶄綔
         Member insert = initAddMemberModel(member,null);
@@ -2518,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) {
@@ -2536,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.setDdId(deptGetResponse.getUserid());
+//        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);
@@ -2604,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