From 1d064aa5ec2556155bbf116cef1d6d0ac5007acc Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 29 九月 2025 10:23:44 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/wuhuyancao' into wuhuyancao

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java |  108 +++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 99 insertions(+), 9 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 43c2c6f..b30488b 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
@@ -9,6 +9,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dingtalk.api.response.OapiV2DepartmentGetResponse;
 import com.dingtalk.api.response.OapiV2UserGetResponse;
+import com.dingtalk.api.response.OapiV2UserGetuserinfoResponse;
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.config.DataSyncConfig;
 import com.doumee.core.annotation.excel.ExcelImporter;
@@ -22,6 +23,7 @@
 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.dao.web.response.DDAuthorizeVO;
 import com.doumee.service.business.third.TmsService;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
@@ -219,9 +221,9 @@
 
     private Member initAddMemberModel(Member member, LoginUserInfo loginUserInfo) {
         Member insert=  new Member();
-        insert.setCreator(Objects.nonNull(loginUserInfo.getId())?loginUserInfo.getId():null);
+        insert.setCreator(Objects.nonNull(loginUserInfo)?loginUserInfo.getId():null);
         insert.setCreateDate(new Date());
-        insert.setEditor(Objects.nonNull(loginUserInfo.getId())?loginUserInfo.getId():null);
+        insert.setEditor(Objects.nonNull(loginUserInfo)?loginUserInfo.getId():null);
         insert.setEditDate(new Date());
         insert.setHkOrgId(member.getHkOrgId());
         insert.setIsdeleted(Constants.ZERO);
@@ -231,6 +233,7 @@
         insert.setCode(member.getCode());
         insert.setType(Constants.TWO);
         insert.setHkDate(new Date());
+        insert.setErpId(member.getErpId());
         insert.setWorkStatus(Constants.ZERO);//榛樿鍦ㄨ亴
         insert.setCanVisit(Constants.ZERO);//榛樿涓嶅彲璁块棶
         insert.setAuthStatus(Constants.ZERO);
@@ -1845,6 +1848,12 @@
         return wxAuthorizeVO;
     }
 
+    /**
+     * 寰俊鎺堟潈 鍐呴儴浜哄憳鐧诲綍
+     * @param wxAuthorizeVO
+     * @param openId
+     * @param source
+     */
     private void dealSystemUserAuthBiz(WxAuthorizeVO wxAuthorizeVO, String openId, Integer source) {
         SystemUser user = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda()
                 .eq(SystemUser::getOpenid,openId)
@@ -1874,6 +1883,44 @@
             wxAuthorizeVO.setToken(token);
         }
     }
+
+    /**
+     * 閽夐拤鎺堟潈鑾峰彇鍐呴儴浜哄憳鐧诲綍淇℃伅
+     * @param ddAuthorizeVO
+     * @param unionId
+     * @param source
+     */
+    private void dealSystemUserAuthBizByDD(DDAuthorizeVO ddAuthorizeVO, String unionId, Integer source) {
+        SystemUser user = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda()
+                .eq(SystemUser::getDdUnionId,unionId)
+                .in(SystemUser::getType,Constants.memberType.internal)
+                .eq(SystemUser::getDeleted,Constants.ZERO)
+                .last(" limit 1 "));
+        //闈炶瀹㈢敤鎴� 杩涜鍒ゆ柇鏄惁瀛樺湪鐢ㄦ埛
+        if(!Objects.isNull(user)){
+            Member member = memberMapper.selectById(user.getMemberId());
+            if(member == null || member.getIsdeleted() == Constants.ONE){
+                return;
+//                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸插垹闄�,璇疯仈绯荤鐞嗗憳");
+            }
+            if(member.getStatus() != Constants.ZERO){
+                return;
+//                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸茬鐢�,璇疯仈绯荤鐞嗗憳");
+            }
+            if(StringUtils.isNotBlank(member.getIdcardNo())){
+                member.setIdcardDecode(DESUtil.decrypt(Constants.EDS_PWD, member.getIdcardNo()));
+            }
+            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
+                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
+            member.setPrefixUrl(prefixUrl);
+            ddAuthorizeVO.setMember(member);
+            //鍙告満 涓� 鍐呴儴浜哄憳 鎻愪緵token
+            String token = systemLoginService.loginByUserId(user.getId());
+            ddAuthorizeVO.setToken(token);
+        }
+    }
+
+
     private void dealDriverUserAuthBiz(WxAuthorizeVO wxAuthorizeVO, String openId, Integer source) {
         SystemUser user = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda()
                 .eq(SystemUser::getOpenid,openId)
@@ -2345,6 +2392,7 @@
     /**
      * 鍚屾閽夐拤鍐呴儴鍛樺伐淇℃伅
      */
+    @Override
     public void syncDDUserInfo() throws ApiException {
         List<OapiV2UserGetResponse.UserGetResponse>  list = dingTalk.syncAllUserInfo();
         if(CollectionUtils.isEmpty(list)){
@@ -2410,7 +2458,7 @@
 
     private Member syncDDAddMemberModel(OapiV2UserGetResponse.UserGetResponse deptGetResponse,Member member) {
         member.setCreateDate(new Date());
-        member.setErpId(deptGetResponse.getUserid());
+        member.setErpId(deptGetResponse.getUnionid());
         member.setPhone(deptGetResponse.getMobile());
         member.setName(deptGetResponse.getName());
         member.setCode(deptGetResponse.getJobNumber());
@@ -2440,7 +2488,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());
@@ -2469,7 +2517,7 @@
     
     public Member syncDDEditMemberModel(OapiV2UserGetResponse.UserGetResponse deptGetResponse,Member updateMember) { 
         updateMember.setEditDate(new Date());
-        updateMember.setErpId(deptGetResponse.getUserid());
+        updateMember.setErpId(deptGetResponse.getUnionid());
         updateMember.setPhone(deptGetResponse.getMobile());
         updateMember.setName(deptGetResponse.getName());
         updateMember.setCode(deptGetResponse.getJobNumber());
@@ -2536,6 +2584,7 @@
     }
 
 
+    @Override
     public void ddPushMemberInfo(String eventType, shade.com.alibaba.fastjson2.JSONObject eventData) throws ApiException {
         JSONArray jsonArray = eventData.getJSONArray("userId");
         if(jsonArray.isEmpty()){
@@ -2553,20 +2602,61 @@
             }
         }else if(eventType.equals("user_add_org")||eventType.equals("user_modify_org")){
             for (int i = 0; i < jsonArray.size(); i++) {
+                OapiV2UserGetResponse.UserGetResponse userGetResponse =  dingTalk.syncUserInfo(jsonArray.getString(i));
                 Member member  = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
                         .eq(Member::getIsdeleted,Constants.ZERO)
-                        .eq(Member::getErpId,jsonArray.getLong(i))
+                        .eq(Member::getErpId,userGetResponse.getUnionid())
                         .last(" limit 1")
                 );
-                OapiV2UserGetResponse.UserGetResponse deptGetResponse = dingTalk.syncUserInfo(jsonArray.getString(i));
                 if(Objects.isNull(member)){
-                    getAddMemberModel(deptGetResponse,member);
+                    member = new Member();
+                    getAddMemberModel(userGetResponse,member);
                 }else{
-                    getUpdateMemberModel(deptGetResponse,member);
+                    getUpdateMemberModel(userGetResponse,member);
                 }
             }
         }
     }
 
+    /**
+     * 閽夐拤鎺堟潈鐧诲綍
+     * @param code
+     * @param source
+     * @return
+     * @throws ApiException
+     */
+    @Override
+    public DDAuthorizeVO ddAuthorize(String code, Integer source) throws ApiException {
+        if(StringUtils.isBlank(code)||Objects.isNull(source)){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        OapiV2UserGetuserinfoResponse.UserGetByCodeResponse userGetByCodeResponse = dingTalk.getDDUserByCode(code);
+        if(Objects.isNull(userGetByCodeResponse)
+                || StringUtils.isBlank(userGetByCodeResponse.getUnionid())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"閽夐拤鎺堟潈澶辫触");
+        }
+        String unionId = userGetByCodeResponse.getUnionid();
+
+        DDAuthorizeVO ddAuthorizeVO = new DDAuthorizeVO();
+        if(StringUtils.isBlank(unionId)){
+            return ddAuthorizeVO;
+        }
+        ddAuthorizeVO.setUnionId(unionId);
+//        if(source==1){
+//            //澶勭悊鏅�氳瀹汉鍛樿嚜鍔ㄦ巿鏉冮�昏緫
+//            dealVisitUserAuthBiz(wxAuthorizeVO,openId,source);
+//        }else if(source == 3){
+//            //澶勭悊tms绠℃帶浜哄憳鑷姩鎺堟潈閫昏緫
+//            dealGkUserAuthBiz(wxAuthorizeVO,openId,source);
+//        }else if(source == 0){
+//            //濡傛灉鏄徃鏈猴紝鍒欎粠system_user鏌ヨ
+//            dealDriverUserAuthBiz(wxAuthorizeVO,openId,source);
+//        }else{
+            //濡傛灉鏄唴閮ㄤ汉鍛橈紝鍒欎粠system_user鏌ヨ
+            dealSystemUserAuthBizByDD(ddAuthorizeVO,unionId,source);
+//        }
+        return ddAuthorizeVO;
+    }
+
 
 }

--
Gitblit v1.9.3