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