| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | |
| | | 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); |
| | |
| | | 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); |
| | |
| | | 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) |
| | |
| | | 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) |
| | |
| | | /** |
| | | * 同步钉钉内部员工信息 |
| | | */ |
| | | @Override |
| | | public void syncDDUserInfo() throws ApiException { |
| | | List<OapiV2UserGetResponse.UserGetResponse> list = dingTalk.syncAllUserInfo(); |
| | | if(CollectionUtils.isEmpty(list)){ |
| | |
| | | |
| | | 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()); |
| | |
| | | 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()); |
| | |
| | | |
| | | 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()); |
| | |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void ddPushMemberInfo(String eventType, shade.com.alibaba.fastjson2.JSONObject eventData) throws ApiException { |
| | | JSONArray jsonArray = eventData.getJSONArray("userId"); |
| | | if(jsonArray.isEmpty()){ |
| | |
| | | } |
| | | }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; |
| | | } |
| | | |
| | | |
| | | } |