From bfaf38f9788baacc2f239cf56e745e451490600c Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 29 九月 2025 10:19:35 +0800
Subject: [PATCH] 钉钉授权 与 通知开发
---
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java | 4 +
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java | 11 ++
server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalkStream.java | 2
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 22 +++--
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java | 10 ++
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java | 2
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java | 6 +
server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalk.java | 124 ++++++++++++++++++++++++++----
8 files changed, 149 insertions(+), 32 deletions(-)
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java
index ee19a81..b8f1acc 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java
@@ -21,6 +21,7 @@
import com.doumee.service.business.ext.ERPSyncService;
import com.doumee.service.business.impl.hksync.fhk.HkSyncOrgUserFromHKServiceImpl;
import com.doumee.service.business.impl.hksync.fhk.HkSyncOrgUserFromSelfServiceImpl;
+import com.taobao.api.ApiException;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
@@ -367,4 +368,14 @@
return ApiResponse.success(null);
}
+
+ @ApiOperation("鍏ㄩ噺浜哄憳淇℃伅鍚屾 - 閽夐拤")
+ @PostMapping("/syncAllDingding")
+// @CloudRequiredPermission("business:company:sync")
+ public ApiResponse syncAllDingding() throws ApiException {
+ memberService.syncDDUserInfo();
+ return ApiResponse.success("鍚屾鎴愬姛");
+ }
+
+
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalk.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalk.java
index e4a88b3..84ac5f5 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalk.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalk.java
@@ -14,16 +14,21 @@
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.dao.CompanyMapper;
+import com.doumee.dao.business.model.CarUseBook;
import com.doumee.dao.business.model.Company;
+import com.doumee.dao.business.model.Visits;
import com.doumee.dao.system.model.SystemDictData;
import com.doumee.service.business.CompanyService;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import com.taobao.api.ApiException;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.text.DateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -383,23 +388,7 @@
request.setAgentId(agentId);
request.setUseridList(userIds);
request.setToAllUser(false);
-// OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
-// msg.setMsgtype("oa");
-// OapiMessageCorpconversationAsyncsendV2Request.OA oa = new OapiMessageCorpconversationAsyncsendV2Request.OA();
-// oa.setMessageUrl("");
-// OapiMessageCorpconversationAsyncsendV2Request.Head head = new OapiMessageCorpconversationAsyncsendV2Request.Head();
-// head.setText("");
-// head.setBgcolor("#279BAA");
-//
-// oa.setHead(head);
-//
-// OapiMessageCorpconversationAsyncsendV2Request.Body body = new OapiMessageCorpconversationAsyncsendV2Request.Body();
-// body.setTitle("");
-// List<OapiMessageCorpconversationAsyncsendV2Request.Form> form = new ArrayList<>();
-//
-// body.setForm(form);
-// oa.setBody(body);
-// msg.setOa(oa);
+
request.setMsg(msg);
OapiMessageCorpconversationAsyncsendV2Response rsp = client.execute(request, getToken());
if(rsp.getErrcode().equals(Constants.DD_ERR_CODE)){
@@ -410,8 +399,109 @@
}
+ /**
+ * 璁垮鐢宠/鎶ュ OA 宸ヤ綔閫氱煡 鍐呭
+ * @param visits
+ * @param title
+ * @return
+ */
+ public OapiMessageCorpconversationAsyncsendV2Request.Msg getVisitNoticeMsg(Visits visits,String title){
+ OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
+ msg.setMsgtype("oa");
+ OapiMessageCorpconversationAsyncsendV2Request.OA oa = new OapiMessageCorpconversationAsyncsendV2Request.OA();
+ oa.setMessageUrl("");
+ OapiMessageCorpconversationAsyncsendV2Request.Head head = new OapiMessageCorpconversationAsyncsendV2Request.Head();
+ head.setText(title);
+ head.setBgcolor("#279BAA");
+ oa.setHead(head);
+
+ OapiMessageCorpconversationAsyncsendV2Request.Body body = new OapiMessageCorpconversationAsyncsendV2Request.Body();
+ body.setTitle(!Constants.equalsInteger(visits.getType(),Constants.TWO)?visits.getName()+"鐨勮瀹㈢敵璇�":"鐨勮瀹㈡姤澶�");
+ List<OapiMessageCorpconversationAsyncsendV2Request.Form> formList = new ArrayList<>();
+
+ OapiMessageCorpconversationAsyncsendV2Request.Form visitUser = new OapiMessageCorpconversationAsyncsendV2Request.Form();
+ visitUser.setKey("鏉ヨ浜�");
+ visitUser.setValue(visits.getName());
+ formList.add(visitUser);
+
+ OapiMessageCorpconversationAsyncsendV2Request.Form inDate = new OapiMessageCorpconversationAsyncsendV2Request.Form();
+ inDate.setKey("鍏ュ洯鏃堕棿");
+ inDate.setValue(DateUtil.formatDate(visits.getStarttime(),"MM-dd HH:mm"));
+ formList.add(inDate);
+
+ OapiMessageCorpconversationAsyncsendV2Request.Form outDate = new OapiMessageCorpconversationAsyncsendV2Request.Form();
+ outDate.setKey("绂诲洯鏃堕棿");
+ outDate.setValue(DateUtil.formatDate(visits.getEndtime(),"MM-dd HH:mm"));
+ formList.add(outDate);
+
+ OapiMessageCorpconversationAsyncsendV2Request.Form inReason = new OapiMessageCorpconversationAsyncsendV2Request.Form();
+ inReason.setKey("鏉ヨ浜嬬敱");
+ inReason.setValue(visits.getReason());
+ formList.add(inReason);
+
+ if(StringUtils.isNotBlank(visits.getCarNos())){
+ OapiMessageCorpconversationAsyncsendV2Request.Form carNos = new OapiMessageCorpconversationAsyncsendV2Request.Form();
+ carNos.setKey("闅忚杞﹁締");
+ carNos.setValue(visits.getCarNos());
+ formList.add(visitUser);
+ }
+
+ body.setForm(formList);
+ oa.setBody(body);
+ msg.setOa(oa);
+
+ return msg;
+ }
+ /* public OapiMessageCorpconversationAsyncsendV2Request.Msg getCarUseNoticeMsg(CarUseBook carUseBook,String title){
+ OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
+ msg.setMsgtype("oa");
+ OapiMessageCorpconversationAsyncsendV2Request.OA oa = new OapiMessageCorpconversationAsyncsendV2Request.OA();
+ oa.setMessageUrl("");
+ OapiMessageCorpconversationAsyncsendV2Request.Head head = new OapiMessageCorpconversationAsyncsendV2Request.Head();
+ head.setText(title);
+ head.setBgcolor("#279BAA");
+ oa.setHead(head);
+ OapiMessageCorpconversationAsyncsendV2Request.Body body = new OapiMessageCorpconversationAsyncsendV2Request.Body();
+ body.setTitle("鍏姟鐢ㄨ溅");
+ List<OapiMessageCorpconversationAsyncsendV2Request.Form> formList = new ArrayList<>();
+
+
+ OapiMessageCorpconversationAsyncsendV2Request.Form startDate = new OapiMessageCorpconversationAsyncsendV2Request.Form();
+ startDate.setKey("寮�濮嬫椂闂�");
+ startDate.setValue(DateUtil.formatDate(carUseBook.getStartTime(),"MM-dd HH:mm"));
+ formList.add(startDate);
+
+ OapiMessageCorpconversationAsyncsendV2Request.Form endDate = new OapiMessageCorpconversationAsyncsendV2Request.Form();
+ endDate.setKey("缁撴潫鏃堕棿");
+ endDate.setValue(DateUtil.formatDate(carUseBook.getEndTime(),"MM-dd HH:mm"));
+ formList.add(endDate);
+
+
+ OapiMessageCorpconversationAsyncsendV2Request.Form userNum = new OapiMessageCorpconversationAsyncsendV2Request.Form();
+ userNum.setKey("涔樿溅浜烘暟");
+ userNum.setValue(DateUtil.formatDate(carUseBook.getEndTime(),"MM-dd HH:mm"));
+ formList.add(userNum);
+
+ OapiMessageCorpconversationAsyncsendV2Request.Form inReason = new OapiMessageCorpconversationAsyncsendV2Request.Form();
+ inReason.setKey("鏉ヨ浜嬬敱");
+ inReason.setValue(visits.getReason());
+ formList.add(inReason);
+
+ if(StringUtils.isNotBlank(visits.getCarNos())){
+ OapiMessageCorpconversationAsyncsendV2Request.Form carNos = new OapiMessageCorpconversationAsyncsendV2Request.Form();
+ carNos.setKey("闅忚杞﹁締");
+ carNos.setValue(visits.getCarNos());
+ formList.add(visitUser);
+ }
+
+ body.setForm(formList);
+ oa.setBody(body);
+ msg.setOa(oa);
+
+ return msg;
+ }*/
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalkStream.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalkStream.java
index 474b586..5dfd1a8 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalkStream.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalkStream.java
@@ -76,7 +76,7 @@
if(eventType.startsWith("org")){
companyService.ddPushCompanyInfo(eventType,bizData);
}else if(eventType.startsWith("user")){
-
+ memberService.ddPushMemberInfo(eventType,bizData);
}
//澶勭悊浜嬩欢
// process(bizData);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java
index 06d9df9..024145c 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java
@@ -211,4 +211,8 @@
List<Member> findDriveList(Member model);
void initPinyinTool();
+
+ void syncDDUserInfo() throws ApiException;
+
+ void ddPushMemberInfo(String eventType, shade.com.alibaba.fastjson2.JSONObject eventData) throws ApiException;
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
index 7336cb7..575f5a3 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
@@ -961,7 +961,7 @@
company.setCompanyNamePath(company.getName());//鍚嶇О璺緞
company.setHkParentId(rootOrgId);
String idPath = "";
- if(StringUtils.isNotBlank(company.getErpParentId()) && !StringUtils.equals(company.getErpParentId(),Constants.ONE+"")){
+ if(StringUtils.isNotBlank(company.getErpParentId())){
Company parent = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getErpId,company.getErpParentId())
.eq(Company::getIsdeleted,Constants.ZERO).last(" limit 1 "));
if(parent == null || Constants.equalsInteger(parent.getIsdeleted(),Constants.ONE)){
@@ -981,6 +981,7 @@
company.setHkParentId(parent.getHkId());
company.setCompanyPath(parent.getCompanyPath()+company.getId()+"/");
company.setCompanyNamePath(parent.getCompanyNamePath()+"/"+company.getName());
+ company.setParentId(parent.getId());
}
company.setHkCompanyPath(company.getCompanyNamePath());
company.setCreateDate(new Date());
@@ -1009,7 +1010,7 @@
public Company syncDDEditCompanyModel(OapiV2DepartmentGetResponse.DeptGetResponse deptGetResponse,Company company){
company.setErpParentId(deptGetResponse.getParentId().toString());
String idPath = "";
- if(StringUtils.isNotBlank(company.getErpParentId()) && !StringUtils.equals(company.getErpParentId(),Constants.ONE+"")){
+ if(StringUtils.isNotBlank(company.getErpParentId())){
Company parent = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getErpId,company.getErpParentId())
.eq(Company::getIsdeleted,Constants.ZERO).last("limit 1 "));
if(parent == null || Constants.equalsInteger(parent.getIsdeleted(),Constants.ONE)){
@@ -1026,6 +1027,7 @@
company.setHkParentId(parent.getHkId());
company.setCompanyPath(parent.getCompanyPath()+company.getId()+"/");
company.setCompanyNamePath(parent.getCompanyNamePath()+"/"+company.getName());
+ company.setParentId(parent.getId());
}
company.setName(deptGetResponse.getName());
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 624ce03..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
@@ -221,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);
@@ -233,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);
@@ -2391,6 +2392,7 @@
/**
* 鍚屾閽夐拤鍐呴儴鍛樺伐淇℃伅
*/
+ @Override
public void syncDDUserInfo() throws ApiException {
List<OapiV2UserGetResponse.UserGetResponse> list = dingTalk.syncAllUserInfo();
if(CollectionUtils.isEmpty(list)){
@@ -2456,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());
@@ -2486,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());
@@ -2515,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());
@@ -2582,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()){
@@ -2599,16 +2602,17 @@
}
}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);
}
}
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
index a98b0e8..4ad2587 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -239,7 +239,7 @@
//妫�鏌ユ槸鍚﹀繀椤荤瓟棰橈紝骞朵笖绗﹀悎绛旈瑕佹眰
ProblemLog problemLog = isValidProblemLog(visits,source);
//鑾峰彇鐢宠鐨勬捣搴疯闂棬绂佺粍淇℃伅
- getHkDeviceRoles(visits,isERP);
+// getHkDeviceRoles(visits,isERP);
//妫�楠屾嫓璁夸汉鏄惁鍚堟硶
Member visitMember = isValideVisitedUser(visits.getReceptMemberId());
if(StringUtils.isNotBlank(visits.getIdcardNo()) && Constants.equalsInteger(Constants.ZERO, visits.getIdcardType())
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
index c525f0e..552d487 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
@@ -1360,12 +1360,18 @@
List<Long> startTimeList = platformLogList.stream().filter(i->Objects.nonNull(i.getParam1()))
.filter(i->Objects.nonNull(i.getParam1())&&i.getParam1().indexOf(today)>=0)
.map(i->DateUtil.fromStringToDate("yyyy-MM-dd HH:mm:ss",i.getParam1()).getTime()).collect(Collectors.toList());
- Long startTime = Collections.min(startTimeList);
+ Long startTime = null ;
+ if(CollectionUtils.isNotEmpty(startTimeList)){
+ startTime = Collections.min(startTimeList);
+ }
//鑾峰彇缁撴潫鏃堕棿
List<Long> endTimeList = platformLogList.stream()
.filter(i->Objects.nonNull(i.getParam2())&&i.getParam2().indexOf(today)>=0)
.map(i->DateUtil.fromStringToDate("yyyy-MM-dd HH:mm:ss",i.getParam2()).getTime()).collect(Collectors.toList());
- Long endTime = Collections.max(endTimeList);
+ Long endTime = null ;
+ if(CollectionUtils.isNotEmpty(endTimeList)){
+ endTime = Collections.max(endTimeList);
+ }
if(Objects.isNull(startTime)
|| Objects.isNull(endTime) || (startTime>=endTime)){
return BigDecimal.ZERO;
--
Gitblit v1.9.3