From 5df732ffe16b3f162422c2db61a78458e28c7f8d Mon Sep 17 00:00:00 2001 From: rk <94314517@qq.com> Date: 星期五, 10 十月 2025 14:45:29 +0800 Subject: [PATCH] 钥匙柜开发 天气预警通知 --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 134 +++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 123 insertions(+), 11 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..01b1d19 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; @@ -76,6 +78,7 @@ import java.math.BigDecimal; import java.util.Date; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -91,6 +94,9 @@ @Autowired private MemberJoinMapper memberJoinMapper; + + @Autowired + private JkCabinetMapper jkCabinetMapper; @Autowired private TrainTimeMapper trainTimeMapper; @@ -219,9 +225,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 +237,8 @@ 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);//榛樿涓嶅彲璁块棶 insert.setAuthStatus(Constants.ZERO); @@ -1206,6 +1214,21 @@ 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); queryWrapper.orderByAsc(Member::getPinyin); @@ -1845,6 +1868,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 +1903,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) @@ -2092,7 +2159,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; @@ -2345,6 +2412,7 @@ /** * 鍚屾閽夐拤鍐呴儴鍛樺伐淇℃伅 */ + @Override public void syncDDUserInfo() throws ApiException { List<OapiV2UserGetResponse.UserGetResponse> list = dingTalk.syncAllUserInfo(); if(CollectionUtils.isEmpty(list)){ @@ -2410,10 +2478,11 @@ 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()); + member.setDdId(deptGetResponse.getUserid()); isMemberParamValidDetail(member,deptGetResponse.getDeptIdList()); //鑾峰彇鍑虹敓鏃ユ湡 //鑴辨晱鎿嶄綔 @@ -2440,7 +2509,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,11 +2538,11 @@ 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()); - + updateMember.setDdId(deptGetResponse.getUserid()); updateMember.setHkId(null); updateMember.setAuthStatus(Constants.ZERO); Boolean hkFlag = dealHkUserForUpdateBiz(updateMember); @@ -2495,6 +2564,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()) @@ -2536,6 +2606,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 +2624,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