From 80f9adf3f7682edf1d997f48c65a9bac2e4c1605 Mon Sep 17 00:00:00 2001 From: rk <94314517@qq.com> Date: 星期日, 28 九月 2025 15:25:42 +0800 Subject: [PATCH] 钉钉授权 与 通知开发 --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 86 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 86 insertions(+), 0 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..624ce03 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; @@ -1845,6 +1847,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 +1882,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) @@ -2568,5 +2614,45 @@ } } + /** + * 閽夐拤鎺堟潈鐧诲綍 + * @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