From 36f691267e45ca2861bed663fdcf5f2efcefdfce Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 10 十一月 2025 15:27:08 +0800
Subject: [PATCH] 最新版本541200007
---
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 180 ++++++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 144 insertions(+), 36 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 40f62c5..dfd57cf 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
@@ -2,7 +2,9 @@
import cn.hutool.core.util.IdcardUtil;
import cn.hutool.core.util.PhoneUtil;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -23,6 +25,10 @@
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.core.jiandaoyun.api.arch.DeptApiClient;
+import com.doumee.core.jiandaoyun.constants.HttpConstant;
+import com.doumee.core.jiandaoyun.model.dept.DeptEntityModel;
+import com.doumee.core.jiandaoyun.model.user.UserEntityModel;
import com.doumee.dao.web.response.DDAuthorizeVO;
import com.doumee.service.business.third.TmsService;
import com.doumee.service.business.third.model.LoginUserInfo;
@@ -94,6 +100,9 @@
@Autowired
private MemberJoinMapper memberJoinMapper;
+
+ @Autowired
+ private JkCabinetMapper jkCabinetMapper;
@Autowired
private TrainTimeMapper trainTimeMapper;
@@ -606,7 +615,7 @@
Member member=new Member();
member.setId(id);
member.setIsdeleted(Constants.ONE);
- member.setEditor(loginUserInfo.getId());
+ member.setEditor(loginUserInfo!=null?loginUserInfo.getId():null);
member.setEditDate(date);
member.setHkStatus(Constants.ZERO);
member.setRemark("浜哄憳宸插垹闄わ紝绛夊緟鍒犻櫎闂ㄧ鏉冮檺");
@@ -1210,6 +1219,21 @@
if(StringUtils.isNotBlank(companySpecialId)){
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);
@@ -1899,15 +1923,15 @@
.eq(SystemUser::getDeleted,Constants.ZERO)
.last(" limit 1 "));
//闈炶瀹㈢敤鎴� 杩涜鍒ゆ柇鏄惁瀛樺湪鐢ㄦ埛
- if(!Objects.isNull(user)){
+ if(Objects.isNull(user)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鎮ㄧ殑璐﹀彿鏆傛湭缁戝畾绯荤粺锛岃鑱旂郴绠$悊鍛�");
+ }else{
Member member = memberMapper.selectById(user.getMemberId());
if(member == null || member.getIsdeleted() == Constants.ONE){
- return;
-// throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸插垹闄�,璇疯仈绯荤鐞嗗憳");
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璐﹀彿缁戝畾寮傚父锛岃鑱旂郴绠$悊鍛�");
}
if(member.getStatus() != Constants.ZERO){
- return;
-// throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸茬鐢�,璇疯仈绯荤鐞嗗憳");
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鎮ㄧ殑璐﹀彿宸茬鐢紝璇疯仈绯荤鐞嗗憳");
}
if(StringUtils.isNotBlank(member.getIdcardNo())){
member.setIdcardDecode(DESUtil.decrypt(Constants.EDS_PWD, member.getIdcardNo()));
@@ -2395,23 +2419,60 @@
* 鍚屾閽夐拤鍐呴儴鍛樺伐淇℃伅
*/
@Override
- public void syncDDUserInfo() throws ApiException {
- List<OapiV2UserGetResponse.UserGetResponse> list = dingTalk.syncAllUserInfo();
- if(CollectionUtils.isEmpty(list)){
- return;
- }
- List<Member> addList = new ArrayList<>();
- List<Member> updateList = new ArrayList<>();
- List<String> delIds = new ArrayList<>();//淇敼涓轰娇鐢ㄩ拤閽塱d erpId
- List<Member> allList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
- .eq(Member::getIsdeleted,Constants.ZERO)
- .eq(Member::getType,Constants.TWO));
- dealMemberChangeList(list,addList,updateList,delIds,allList);
+ public void syncDDUserInfo(){
+ try {
+ List<OapiV2UserGetResponse.UserGetResponse> list = dingTalk.syncAllUserInfo();
+ if(CollectionUtils.isEmpty(list)){
+ return;
+ }
+ List<Member> addList = new ArrayList<>();
+ List<Member> updateList = new ArrayList<>();
+ List<String> delIds = new ArrayList<>();//淇敼涓轰娇鐢ㄩ拤閽塱d erpId
+ List<Member> allList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
+ .eq(Member::getIsdeleted,Constants.ZERO)
+ .eq(Member::getType,Constants.TWO));
+ dealMemberChangeList(list,addList,updateList,delIds,allList);
- if(delIds.size()>0){
- syncDelMember(delIds);
+ if(delIds.size()>0){
+ syncDelMember(delIds);
+ }
+ }catch (Exception e){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"鍚屾閽夐拤浜哄憳淇℃伅寮傚父锛�");
}
+
+ }
+ @Override
+ public String syncJdyUserInfo() {
+ DeptApiClient deptApiClient = new DeptApiClient(HttpConstant.API_KEY, HttpConstant.HOST);
+ try {
+ Map<String, Object> result = deptApiClient.deptMemberList(1,true,deptApiClient.getDefaultVersion());
+ if(result!=null && result.get("users")!=null ){
+ TypeReference<List<UserEntityModel>> typeReference = new TypeReference<List<UserEntityModel>>(){};
+ Object obj = result.get("users");
+ List<UserEntityModel> list = com.alibaba.fastjson.JSONObject.parseObject(JSON.toJSONString(obj), typeReference.getType());
+ if(list !=null && list.size()>0){
+ List<Member> addList = new ArrayList<>();
+ List<Member> updateList = new ArrayList<>();
+ List<String> delIds = new ArrayList<>();//淇敼涓轰娇鐢ㄩ拤閽塱d erpId
+ List<Member> allList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
+ .eq(Member::getIsdeleted,Constants.ZERO)
+ .eq(Member::getType,Constants.TWO));
+ dealMemberChangeListJdy(list,addList,updateList,delIds,allList);
+ if(delIds.size()>0){
+ syncDelMember(delIds);
+ }
+ return "鍚屾鏁版嵁锛氭柊澧炪��"+addList.size()+"銆戞潯锛屾洿鏂般��"+updateList.size()+"銆戞潯锛屽垹闄ゃ��"+delIds.size()+"銆戞潯";
+ }else{
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鍚屾閽夐拤鏁版嵁涓虹┖锛�");
+ }
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鍚屾鏁版嵁寮傚父锛�");
+ }
+
+ return null;
}
private void syncDelMember(List<String> delIds) {
@@ -2447,25 +2508,65 @@
}
}
}
+ private void dealMemberChangeListJdy(List<UserEntityModel> list, List<Member> addList, List<Member> updateList, List<String> delIds, List<Member> allList) {
+ Date date = new Date();
+ for(UserEntityModel respone : list){
+ //鏍规嵁erpid鏌ヨ浼佷笟淇℃伅锛屽垽鏂槸鏂板杩樻槸鏇存柊
+ Member param = new Member();
+ param.setErpId(respone.getUsername());
+ param.setName(respone.getName());
+ param.setDdId(respone.getIntegrate_id());
+ param.setCompanyIdList(respone.getDepartments());
+ Member member = findMemberByERPId(allList,respone.getUsername());
+ if(member == null){
+ //濡傛灉鏄柊澧�
+ //灏佽鏂板缁勭粐瀵硅薄鏁版嵁
+ addList.add(syncDDAddMemberModel(param,new Member()));
+ }else{
+ updateList.add(syncDDEditMemberModel(param,member));
+ }
+ }
+ if(allList!=null && allList.size()>0){
+ for(Member m : allList){
+ if(!isMemberDeletedJdy(m,list)){
+ delIds.add(m.getErpId());
+ }
+ }
+ }
+ }
private Member getAddMemberModel(OapiV2UserGetResponse.UserGetResponse deptGetResponse,Member member) {
- return syncDDAddMemberModel(deptGetResponse,member);
+ Member param = new Member();
+ param.setErpId(deptGetResponse.getUnionid());
+ param.setPhone(deptGetResponse.getMobile());
+ param.setName(deptGetResponse.getName());
+ param.setCode(deptGetResponse.getJobNumber());
+ param.setDdId(deptGetResponse.getUserid());
+ param.setCompanyIdList(deptGetResponse.getDeptIdList());
+ return syncDDAddMemberModel(param,member);
}
private Member getUpdateMemberModel(OapiV2UserGetResponse.UserGetResponse deptGetResponse,Member member) {
- return syncDDEditMemberModel(deptGetResponse,member);
+ Member param = new Member();
+ param.setErpId(deptGetResponse.getUnionid());
+ param.setPhone(deptGetResponse.getMobile());
+ param.setName(deptGetResponse.getName());
+ param.setCode(deptGetResponse.getJobNumber());
+ param.setDdId(deptGetResponse.getUserid());
+ param.setCompanyIdList(deptGetResponse.getDeptIdList());
+ return syncDDEditMemberModel(param,member);
}
- private Member syncDDAddMemberModel(OapiV2UserGetResponse.UserGetResponse deptGetResponse,Member member) {
+ private Member syncDDAddMemberModel(Member deptGetResponse,Member member) {
member.setCreateDate(new Date());
- member.setErpId(deptGetResponse.getUnionid());
- member.setPhone(deptGetResponse.getMobile());
+ member.setErpId(deptGetResponse.getErpId());
+ member.setPhone(deptGetResponse.getPhone());
member.setName(deptGetResponse.getName());
- member.setCode(deptGetResponse.getJobNumber());
- member.setDdId(deptGetResponse.getUserid());
- isMemberParamValidDetail(member,deptGetResponse.getDeptIdList());
+ member.setCode(deptGetResponse.getCode());
+ member.setDdId(deptGetResponse.getDdId());
+ isMemberParamValidDetail(member,deptGetResponse.getCompanyIdList());
//鑾峰彇鍑虹敓鏃ユ湡
//鑴辨晱鎿嶄綔
Member insert = initAddMemberModel(member,null);
@@ -2500,7 +2601,7 @@
}
member.setCompanyType(Constants.ONE);
SystemUser queryUserDto = new SystemUser();
- queryUserDto.setUsername(member.getPhone());
+ queryUserDto.setUsername(StringUtils.defaultString(member.getPhone(),member.getErpId()));
queryUserDto.setDeleted(Boolean.FALSE);
SystemUser user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1"));
if (user != null) {
@@ -2518,13 +2619,13 @@
}
}
- public Member syncDDEditMemberModel(OapiV2UserGetResponse.UserGetResponse deptGetResponse,Member updateMember) {
+ public Member syncDDEditMemberModel(Member deptGetResponse1,Member updateMember) {
updateMember.setEditDate(new Date());
- updateMember.setErpId(deptGetResponse.getUnionid());
- updateMember.setPhone(deptGetResponse.getMobile());
- updateMember.setName(deptGetResponse.getName());
- updateMember.setCode(deptGetResponse.getJobNumber());
- updateMember.setDdId(deptGetResponse.getUserid());
+// updateMember.setErpId(deptGetResponse.getErpId());
+// updateMember.setPhone(deptGetResponse.getPhone());
+// updateMember.setName(deptGetResponse.getName());
+// updateMember.setCode(deptGetResponse.getCode());
+// updateMember.setDdId(deptGetResponse.getDdId());
updateMember.setHkId(null);
updateMember.setAuthStatus(Constants.ZERO);
Boolean hkFlag = dealHkUserForUpdateBiz(updateMember);
@@ -2586,7 +2687,14 @@
}
return false;
}
-
+ private boolean isMemberDeletedJdy(Member member, List<UserEntityModel> list) {
+ for(UserEntityModel m : list){
+ if(StringUtils.equals(m.getUsername(),member.getErpId())){
+ return true;
+ }
+ }
+ return false;
+ }
@Override
public void ddPushMemberInfo(String eventType, shade.com.alibaba.fastjson2.JSONObject eventData) throws ApiException {
--
Gitblit v1.9.3