From a94aacd36460d76297878c304f4837813191232c Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 29 九月 2025 18:04:47 +0800
Subject: [PATCH] 钉钉授权 与 通知开发

---
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                            |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java |    5 
 server/system_service/src/main/java/com/doumee/dao/business/model/Member.java                       |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalk.java                  |  374 +++++++++++++++++++++++++++++++++++++++++++++--------
 4 files changed, 324 insertions(+), 58 deletions(-)

diff --git a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
index 55d1824..25e1f63 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -499,6 +499,7 @@
     public static final String APP_KEY ="APP_KEY";
     public static final String APP_SECRET ="APP_SECRET";
     public static final String ACCESS_TOKEN ="ACCESS_TOKEN";
+    public static final String AGENT_ID ="AGENT_ID";
 
 
 
diff --git a/server/system_service/src/main/java/com/doumee/dao/business/model/Member.java b/server/system_service/src/main/java/com/doumee/dao/business/model/Member.java
index 9c60826..50a0bb2 100644
--- a/server/system_service/src/main/java/com/doumee/dao/business/model/Member.java
+++ b/server/system_service/src/main/java/com/doumee/dao/business/model/Member.java
@@ -190,7 +190,7 @@
     private Integer erpStatus;
 
     @ApiModelProperty(value = "閽夐拤鏍囪瘑", example = "1")
-    private Integer ddId;
+    private String ddId;
 
     @ApiModelProperty(value = "閽夐拤鍚屾鏃堕棿")
     private Date ddDate;
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 84ac5f5..0f41075 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
@@ -4,7 +4,9 @@
 import com.aliyun.dingtalkoauth2_1_0.Client;
 import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest;
 import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenResponse;
+import com.aliyun.dingtalktodo_1_0.models.*;
 import com.aliyun.tea.TeaException;
+import com.aliyun.teautil.models.RuntimeOptions;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.dingtalk.api.DefaultDingTalkClient;
 import com.dingtalk.api.DingTalkClient;
@@ -18,6 +20,7 @@
 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.HiddenDanger;
 import com.doumee.dao.business.model.Visits;
 import com.doumee.dao.system.model.SystemDictData;
 import com.doumee.service.business.CompanyService;
@@ -49,7 +52,7 @@
     private CompanyMapper companyMapper;
 
     /**
-     * 浣跨敤 Token 鍒濆鍖栬处鍙稢lient
+     * 浣跨敤 Token 鍒濆鍖栬处鍙稢lient 鏁版嵁鍚屾绫�
      * @return Client com.aliyun.dingtalkoauth2_1_0.
      * @throws Exception
      */
@@ -60,6 +63,17 @@
         return new Client(config);
     }
 
+    /**
+     * 寰呭姙閫氱煡绫� 閾炬帴姹�
+     * @return
+     * @throws Exception
+     */
+    public static com.aliyun.dingtalktodo_1_0.Client createV1Client() throws Exception {
+        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
+        config.protocol = "https";
+        config.regionId = "central";
+        return new com.aliyun.dingtalktodo_1_0.Client(config);
+    }
 
     public void updTokenInfo() throws Exception {
         String appKey  =  systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.APP_KEY).getCode();
@@ -150,7 +164,6 @@
                 getResponseList.add(deptGetResponse);
             }
         }
-
         return getResponseList;
     }
 
@@ -180,8 +193,6 @@
         }
         return thisLevelList;
     }
-
-
 
     /**
      * 鍒涘缓缁勭粐閮ㄩ棬 鏆備笉浣跨敤
@@ -354,34 +365,14 @@
     }
 
 
-    public static void main(String[] args) throws Exception {
-        String appKey  = "dingkfglaktqmfd2dmo2";//systemDictDataBiz.queryByCode("","").getCode();
-        String appSecret  = "0e22TT2s794Yj49Exgvq8nU2ulpXmxlw9ThBh5s-vDv5Cfspv-f8HPmta4cg2evk";//systemDictDataBiz.queryByCode("","").getCode();
-        Client client = DingTalk.createClient();
-        GetAccessTokenRequest getAccessTokenRequest = new GetAccessTokenRequest()
-                .setAppKey(appKey)
-                .setAppSecret(appSecret);
-        try {
-            GetAccessTokenResponse getAccessTokenResponse = client.getAccessToken(getAccessTokenRequest);
-
-            //鏇存柊Token淇℃伅
-            System.out.println(JSONObject.toJSONString(getAccessTokenResponse));
-
-        } catch (TeaException err) {
-            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
-                // err 涓惈鏈� code 鍜� message 灞炴�э紝鍙府鍔╁紑鍙戝畾浣嶉棶棰�
-                log.error("鏇存柊閽夐拤Token澶辫触锛歿}" + err.message);
-            }
-
-        } catch (Exception _err) {
-            TeaException err = new TeaException(_err.getMessage(), _err);
-            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
-                // err 涓惈鏈� code 鍜� message 灞炴�э紝鍙府鍔╁紑鍙戝畾浣嶉棶棰�
-                log.error("鏇存柊閽夐拤Token澶辫触锛歿}" + err.message);
-            }
-        }
-    }
-
+    /**
+     * 鍙戦�� 宸ヤ綔閫氱煡
+     * @param agentId
+     * @param userIds
+     * @param msg
+     * api 鍦板潃 https://open.dingtalk.com/document/orgapp/asynchronous-sending-of-enterprise-session-messages
+     * @throws ApiException
+     */
     public void workInfoOANotice(Long agentId,String userIds,OapiMessageCorpconversationAsyncsendV2Request.Msg msg)throws ApiException {
         DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2");
         OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request();
@@ -390,7 +381,7 @@
         request.setToAllUser(false);
 
         request.setMsg(msg);
-        OapiMessageCorpconversationAsyncsendV2Response rsp = client.execute(request, getToken());
+        OapiMessageCorpconversationAsyncsendV2Response rsp = client.execute(request, "60c2df248ca93d4eafb4a04a2330d3d3");//getToken());
         if(rsp.getErrcode().equals(Constants.DD_ERR_CODE)){
 
         }else{
@@ -420,28 +411,28 @@
         List<OapiMessageCorpconversationAsyncsendV2Request.Form> formList = new ArrayList<>();
 
         OapiMessageCorpconversationAsyncsendV2Request.Form visitUser = new OapiMessageCorpconversationAsyncsendV2Request.Form();
-        visitUser.setKey("鏉ヨ浜�");
+        visitUser.setKey("鏉ヨ浜猴細");
         visitUser.setValue(visits.getName());
         formList.add(visitUser);
 
         OapiMessageCorpconversationAsyncsendV2Request.Form inDate = new OapiMessageCorpconversationAsyncsendV2Request.Form();
-        inDate.setKey("鍏ュ洯鏃堕棿");
+        inDate.setKey("鍏ュ洯鏃堕棿锛�");
         inDate.setValue(DateUtil.formatDate(visits.getStarttime(),"MM-dd HH:mm"));
         formList.add(inDate);
 
         OapiMessageCorpconversationAsyncsendV2Request.Form outDate = new OapiMessageCorpconversationAsyncsendV2Request.Form();
-        outDate.setKey("绂诲洯鏃堕棿");
+        outDate.setKey("绂诲洯鏃堕棿锛�");
         outDate.setValue(DateUtil.formatDate(visits.getEndtime(),"MM-dd HH:mm"));
         formList.add(outDate);
 
         OapiMessageCorpconversationAsyncsendV2Request.Form inReason = new OapiMessageCorpconversationAsyncsendV2Request.Form();
-        inReason.setKey("鏉ヨ浜嬬敱");
+        inReason.setKey("鏉ヨ浜嬬敱锛�");
         inReason.setValue(visits.getReason());
         formList.add(inReason);
 
         if(StringUtils.isNotBlank(visits.getCarNos())){
             OapiMessageCorpconversationAsyncsendV2Request.Form carNos = new OapiMessageCorpconversationAsyncsendV2Request.Form();
-            carNos.setKey("闅忚杞﹁締");
+            carNos.setKey("闅忚杞﹁締锛�");
             carNos.setValue(visits.getCarNos());
             formList.add(visitUser);
         }
@@ -449,12 +440,17 @@
         body.setForm(formList);
         oa.setBody(body);
         msg.setOa(oa);
-
         return msg;
     }
 
 
-   /* public OapiMessageCorpconversationAsyncsendV2Request.Msg getCarUseNoticeMsg(CarUseBook carUseBook,String title){
+    /**
+     * 鐢ㄨ溅淇℃伅 閽夐拤閫氱煡鏁版嵁缁勫悎
+     * @param carUseBook
+     * @param title
+     * @return
+     */
+    public OapiMessageCorpconversationAsyncsendV2Request.Msg getCarUseNoticeMsg(CarUseBook carUseBook,String title){
         OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
         msg.setMsgtype("oa");
         OapiMessageCorpconversationAsyncsendV2Request.OA oa = new OapiMessageCorpconversationAsyncsendV2Request.OA();
@@ -470,38 +466,304 @@
 
 
         OapiMessageCorpconversationAsyncsendV2Request.Form startDate = new OapiMessageCorpconversationAsyncsendV2Request.Form();
-        startDate.setKey("寮�濮嬫椂闂�");
+        startDate.setKey("寮�濮嬫椂闂达細");
         startDate.setValue(DateUtil.formatDate(carUseBook.getStartTime(),"MM-dd HH:mm"));
         formList.add(startDate);
 
         OapiMessageCorpconversationAsyncsendV2Request.Form endDate = new OapiMessageCorpconversationAsyncsendV2Request.Form();
-        endDate.setKey("缁撴潫鏃堕棿");
+        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"));
+        userNum.setKey("涔樿溅浜烘暟锛�");
+        userNum.setValue(StringUtils.isBlank(carUseBook.getMemberNames())?"0浜�": (carUseBook.getMemberNames().split(",").length+"浜�"));
         formList.add(userNum);
 
         OapiMessageCorpconversationAsyncsendV2Request.Form inReason = new OapiMessageCorpconversationAsyncsendV2Request.Form();
-        inReason.setKey("鏉ヨ浜嬬敱");
-        inReason.setValue(visits.getReason());
+        inReason.setKey("鐢ㄨ溅鍦扮偣锛�");
+        inReason.setValue(Constants.equalsInteger(carUseBook.getType(),Constants.ZERO)?"甯傚唴":"甯傚");
         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;
-    }*/
+    }
+
+    /**
+     * 澶╂皵 markdown
+     * @param title
+     * @param text
+     * @return
+     */
+    public OapiMessageCorpconversationAsyncsendV2Request.Msg getWeatherNoticeMsg(String title,String text){
+        OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
+        msg.setMsgtype("markdown");
+        OapiMessageCorpconversationAsyncsendV2Request.Markdown markdown = new OapiMessageCorpconversationAsyncsendV2Request.Markdown();
+        markdown.setTitle(title);
+        markdown.setText(text);
+        msg.setMarkdown(markdown);
+        return msg;
+    }
+
+
+    /**
+     * 瀹夐槻/娑堥槻 markdown
+     * @param hiddenDanger
+     * @return
+     */
+    public OapiMessageCorpconversationAsyncsendV2Request.Msg getHiddenDangerNoticeMsg(HiddenDanger hiddenDanger){
+        OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
+        msg.setMsgtype("markdown");
+        OapiMessageCorpconversationAsyncsendV2Request.Markdown markdown = new OapiMessageCorpconversationAsyncsendV2Request.Markdown();
+        markdown.setTitle("鍥尯瀛樺湪瀹夐槻/娑堥槻闅愭偅");
+        markdown.setText(hiddenDanger.getAreaName()+"鍦�"+DateUtil.formatDate(hiddenDanger.getSubmitTime(),"YYYY-MM-dd HH:mm")+"鍙戠敓"+hiddenDanger.getCategoryName()+",璇峰強鏃跺墠寰�瀹夐槻涓績/娑堥槻涓績杩涜澶勭悊");
+        msg.setMarkdown(markdown);
+        return msg;
+    }
+
+
+    /**
+     * 閽夐拤寰呭姙浜嬩欢
+     * api鍦板潃 https://open.dingtalk.com/document/orgapp/add-dingtalk-to-do-task
+     * unionId 閫氱煡鎵�灞炵敤鎴�
+     * title 鏍囬
+     * unionIdList 寰呭姙閫氱煡浜哄憳闆嗗悎
+     * @throws Exception
+     */
+    public String toDoNotice(String title,List<String> unionIdList,List<CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList> fieldList) throws Exception {
+        com.aliyun.dingtalktodo_1_0.Client client = DingTalk.createV1Client();
+        CreateTodoTaskHeaders createTodoTaskHeaders = new CreateTodoTaskHeaders();
+        createTodoTaskHeaders.xAcsDingtalkAccessToken = "43cf8213909f34ef81e7447905b822fb";//getToken();
+        //寰呭姙鎴鍓嶇殑鎻愰啋
+        CreateTodoTaskRequest.CreateTodoTaskRequestRemindNotifyConfigs remindNotifyConfigs = new CreateTodoTaskRequest.CreateTodoTaskRequestRemindNotifyConfigs()
+                .setDingNotify("1")
+                .setSendTodoApn("true");
+        //寰呭姙閫氱煡閰嶇疆
+        CreateTodoTaskRequest.CreateTodoTaskRequestNotifyConfigs notifyConfigs = new CreateTodoTaskRequest.CreateTodoTaskRequestNotifyConfigs()
+                .setDingNotify("1")
+                .setSendTodoApn("true")
+                .setSendAssistantChat("true");
+        //鎸夐挳浜嬩欢
+        CreateTodoTaskRequest.CreateTodoTaskRequestActionListParam actionList0Param = new CreateTodoTaskRequest.CreateTodoTaskRequestActionListParam()
+                .setBody("");
+        CreateTodoTaskRequest.CreateTodoTaskRequestActionList actionList0 = new CreateTodoTaskRequest.CreateTodoTaskRequestActionList()
+                .setTitle("鍘诲鐞�")
+                .setActionType(2)
+                .setParam(actionList0Param)
+                .setUrl("https://www.baidu.com") //TODO 璇︽儏鍦板潃
+                .setActionKey("ak-1-1");
+        //璇︽儏椤祏rl璺宠浆鍦板潃
+        CreateTodoTaskRequest.CreateTodoTaskRequestDetailUrl detailUrl = new CreateTodoTaskRequest.CreateTodoTaskRequestDetailUrl()
+                .setAppUrl("https://www.baidu.com")
+                .setPcUrl("https://www.baidu.com");
+        CreateTodoTaskRequest createTodoTaskRequest = new CreateTodoTaskRequest()
+                .setSubject(title)
+                .setCreatorId(unionIdList.get(Constants.ZERO))
+                .setDescription(title)
+                .setExecutorIds(unionIdList)
+                .setDetailUrl(detailUrl)
+                .setContentFieldList(fieldList)
+                .setIsOnlyShowExecutor(true)
+                .setPriority(20)
+                .setNotifyConfigs(notifyConfigs)
+                .setActionList(java.util.Arrays.asList(actionList0))
+                .setTodoType("TODO")
+                .setRemindNotifyConfigs(remindNotifyConfigs);
+        try {
+            CreateTodoTaskResponse response = client.createTodoTaskWithOptions(unionIdList.get(Constants.ZERO), createTodoTaskRequest, createTodoTaskHeaders, new com.aliyun.teautil.models.RuntimeOptions());
+            log.error("寰呭姙閫氱煡鍙戦�佹垚鍔燂紝鍙戦�佸唴瀹癸細{}"+JSONObject.toJSONString(response));
+            return response.getBody().getId();
+        } catch (TeaException err) {
+            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
+                log.error("寰呭姙閫氱煡鍙戦�佸け璐ワ紝澶辫触鍘熷洜锛歿}"+err.message);
+            }
+        } catch (Exception _err) {
+            TeaException err = new TeaException(_err.getMessage(), _err);
+            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
+                // err 涓惈鏈� code 鍜� message 灞炴�э紝鍙府鍔╁紑鍙戝畾浣嶉棶棰�
+                log.error("寰呭姙閫氱煡鍙戦�佸け璐ワ紝澶辫触鍘熷洜锛歿}"+err.message);
+            }
+        }
+        return null;
+    }
+
+
+    /**
+     * 澶勭悊鍏ㄩ儴浜虹殑寰呭姙淇℃伅
+     * @param unionId
+     * @param taskId
+     * api鍦板潃 https://open.dingtalk.com/document/orgapp/updates-dingtalk-to-do-tasks
+     * @throws Exception
+     */
+    public void updToDoNoticeInfoStatus(String unionId,String taskId) throws Exception {
+        com.aliyun.dingtalktodo_1_0.Client client = DingTalk.createV1Client();
+        UpdateTodoTaskHeaders updateTodoTaskHeaders = new UpdateTodoTaskHeaders();
+        updateTodoTaskHeaders.xAcsDingtalkAccessToken = "43cf8213909f34ef81e7447905b822fb";//getToken();
+        UpdateTodoTaskRequest updateTodoTaskRequest = new UpdateTodoTaskRequest()
+                .setOperatorId(unionId)
+                .setDone(true);
+        try {
+            UpdateTodoTaskResponse response = client.updateTodoTaskWithOptions(unionId, taskId, updateTodoTaskRequest, updateTodoTaskHeaders, new RuntimeOptions());
+            log.error("寰呭姙閫氱煡鍙戦�佹垚鍔燂紝鍙戦�佸唴瀹癸細{}"+JSONObject.toJSONString(response));
+        } catch (TeaException err) {
+            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
+                // err 涓惈鏈� code 鍜� message 灞炴�э紝鍙府鍔╁紑鍙戝畾浣嶉棶棰�
+                log.error("寰呭姙閫氱煡鍙戦�佸け璐ワ紝澶辫触鍘熷洜锛歿}"+err.message);
+            }
+
+        } catch (Exception _err) {
+            TeaException err = new TeaException(_err.getMessage(), _err);
+            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
+                // err 涓惈鏈� code 鍜� message 灞炴�э紝鍙府鍔╁紑鍙戝畾浣嶉棶棰�
+                log.error("寰呭姙閫氱煡鍙戦�佸け璐ワ紝澶辫触鍘熷洜锛歿}"+err.message);
+            }
+        }
+    }
+
+    /**
+     * 澶勭悊瀵瑰簲浜哄憳鐨勫緟鍔炰俊鎭�
+     * @param unionId 鍒涘缓浜簎nionId
+     * @param taskId  閽夐拤浠诲姟涓婚敭
+     * @param dealUnionId
+     * api 鍦板潃 https://open.dingtalk.com/document/orgapp/update-dingtalk-to-do-status
+     * @throws Exception
+     */
+    public void updUserToDoNoticeInfoStatus(String unionId,String taskId,String dealUnionId) throws Exception {
+        com.aliyun.dingtalktodo_1_0.Client client = DingTalk.createV1Client();
+        UpdateTodoTaskExecutorStatusHeaders updateTodoTaskExecutorStatusHeaders = new UpdateTodoTaskExecutorStatusHeaders();
+        updateTodoTaskExecutorStatusHeaders.xAcsDingtalkAccessToken = "43cf8213909f34ef81e7447905b822fb";//getToken();
+        UpdateTodoTaskExecutorStatusRequest.UpdateTodoTaskExecutorStatusRequestExecutorStatusList executorStatusList0 = new UpdateTodoTaskExecutorStatusRequest.UpdateTodoTaskExecutorStatusRequestExecutorStatusList()
+                .setId(dealUnionId)
+                .setIsDone(true);
+        UpdateTodoTaskExecutorStatusRequest updateTodoTaskExecutorStatusRequest = new UpdateTodoTaskExecutorStatusRequest()
+                .setExecutorStatusList(java.util.Arrays.asList(
+                        executorStatusList0
+                ));
+        try {
+            UpdateTodoTaskExecutorStatusResponse response = client.updateTodoTaskExecutorStatusWithOptions(unionId, taskId, updateTodoTaskExecutorStatusRequest, updateTodoTaskExecutorStatusHeaders, new RuntimeOptions());
+            log.error("寰呭姙閫氱煡鍙戦�佹垚鍔燂紝鍙戦�佸唴瀹癸細{}"+JSONObject.toJSONString(response));
+        } catch (TeaException err) {
+            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
+                // err 涓惈鏈� code 鍜� message 灞炴�э紝鍙府鍔╁紑鍙戝畾浣嶉棶棰�
+                log.error("寰呭姙閫氱煡鍙戦�佸け璐ワ紝澶辫触鍘熷洜锛歿}"+err.message);
+            }
+
+        } catch (Exception _err) {
+            TeaException err = new TeaException(_err.getMessage(), _err);
+            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
+                // err 涓惈鏈� code 鍜� message 灞炴�э紝鍙府鍔╁紑鍙戝畾浣嶉棶棰�
+                log.error("寰呭姙閫氱煡鍙戦�佸け璐ワ紝澶辫触鍘熷洜锛歿}"+err.message);
+            }
+        }
+
+    }
+
+
+    public List<CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList> getToDoVisitFiledInfo(Visits visits){
+        List<CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList> list = new ArrayList<>();
+        CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList contentFieldList0 = new CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList()
+                .setFieldKey("鏉ヨ浜�")
+                .setFieldValue(visits.getName());
+        list.add(contentFieldList0);
+        CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList contentFieldList1 = new CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList()
+                .setFieldKey("鍏ュ洯鏃堕棿")
+                .setFieldValue(DateUtil.getFomartDate(visits.getStarttime(),"MM-dd HH:mm"));
+        list.add(contentFieldList1);
+        CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList contentFieldList2 = new CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList()
+                .setFieldKey("绂诲洯鏃堕棿")
+                .setFieldValue(DateUtil.getFomartDate(visits.getEndtime(),"MM-dd HH:mm"));
+        list.add(contentFieldList2);
+        CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList contentFieldList3 = new CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList()
+                .setFieldKey("鏉ヨ浜嬬敱")
+                .setFieldValue(visits.getReason());
+        list.add(contentFieldList3);
+        if(StringUtils.isNotBlank(visits.getCarNos())){
+            CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList contentFieldList4 = new CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList()
+                    .setFieldKey("闅忚杞﹁締")
+                    .setFieldValue(visits.getCarNos());
+            list.add(contentFieldList4);
+        }
+        return list;
+    }
+
+
+
+    public List<CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList> getToDoCarUseBookFiledInfo(CarUseBook carUseBook){
+        List<CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList> list = new ArrayList<>();
+        CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList contentFieldList1 = new CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList()
+                .setFieldKey("寮�濮嬫椂闂�")
+                .setFieldValue(DateUtil.getFomartDate(carUseBook.getStartTime(),"MM-dd HH:mm"));
+        list.add(contentFieldList1);
+        CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList contentFieldList2 = new CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList()
+                .setFieldKey("缁撴潫鏃堕棿")
+                .setFieldValue(DateUtil.getFomartDate(carUseBook.getEndTime(),"MM-dd HH:mm"));
+        list.add(contentFieldList2);
+        CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList contentFieldList3 = new CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList()
+                .setFieldKey("涔樿溅浜烘暟")
+                .setFieldValue(StringUtils.isBlank(carUseBook.getMemberNames())?"0浜�": (carUseBook.getMemberNames().split(",").length+"浜�"));
+        list.add(contentFieldList3);
+        CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList contentFieldList4 = new CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList()
+                .setFieldKey("鐢ㄨ溅鍦扮偣")
+                .setFieldValue(Constants.equalsInteger(carUseBook.getType(),Constants.ZERO)?"甯傚唴":"甯傚");
+        list.add(contentFieldList4);
+        return list;
+    }
+
+
+    public static void main(String[] args) throws Exception {
+        DingTalk dingTalk = new DingTalk();
+//        Visits visits = new Visits();
+//        visits.setName("灏忚眴涓�");
+//        visits.setStarttime(new Date());
+//        visits.setEndtime(new Date());
+//        visits.setReason("鍙傝");
+//        visits.setCarNos("鐨朅00001");
+//        dingTalk.toDoNotice("visit_01","灏忚眴涓佺殑璁垮鐢宠",java.util.Arrays.asList("iPsP86axviPHiSP4nm5YgQNCQiEiE") ,dingTalk.getToDoVisitFiledInfo(visits));
+
+        CarUseBook carUseBook = new CarUseBook();
+        carUseBook.setStartTime(new Date());
+        carUseBook.setEndTime(new Date());
+        carUseBook.setMemberNames("寮犱笁,鏉庡洓,鐜嬩簲");
+        carUseBook.setType(Constants.ZERO);
+
+
+        dingTalk.workInfoOANotice(4015267031L,"1568490244651036",dingTalk.getCarUseNoticeMsg(carUseBook,"鐢ㄨ溅鐢宠"));
+
+
+//        dingTalk.toDoNotice("灏忚眴涓佹彁浜ょ殑鍏姟杞︾敤杞�",java.util.Arrays.asList("iPsP86axviPHiSP4nm5YgQNCQiEiE","XiPYJKRAv9eCoO4UPM20HQQiEiE","eWbHiSp3uRtrMtiiOX5LXamgiEiE") ,dingTalk.getToDoCarUseBookFiledInfo(carUseBook));
+//
+
+//        dingTalk.updUserToDoNoticeInfoStatus("iPsP86axviPHiSP4nm5YgQNCQiEiE",
+//                "taska2d004da1f8e84847c895d14e8695102",
+//                "XiPYJKRAv9eCoO4UPM20HQQiEiE");
+        ;
+//        String appKey  = "dingkfglaktqmfd2dmo2";//systemDictDataBiz.queryByCode("","").getCode();
+//        String appSecret  = "0e22TT2s794Yj49Exgvq8nU2ulpXmxlw9ThBh5s-vDv5Cfspv-f8HPmta4cg2evk";//systemDictDataBiz.queryByCode("","").getCode();
+//        Client client = DingTalk.createClient();
+//        GetAccessTokenRequest getAccessTokenRequest = new GetAccessTokenRequest()
+//                .setAppKey(appKey)
+//                .setAppSecret(appSecret);
+//        try {
+//            GetAccessTokenResponse getAccessTokenResponse = client.getAccessToken(getAccessTokenRequest);
+//
+//            //鏇存柊Token淇℃伅
+//            System.out.println(JSONObject.toJSONString(getAccessTokenResponse));
+//
+//        } catch (TeaException err) {
+//            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
+//                // err 涓惈鏈� code 鍜� message 灞炴�э紝鍙府鍔╁紑鍙戝畾浣嶉棶棰�
+//                log.error("鏇存柊閽夐拤Token澶辫触锛歿}" + err.message);
+//            }
+//
+//        } catch (Exception _err) {
+//            TeaException err = new TeaException(_err.getMessage(), _err);
+//            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
+//                // err 涓惈鏈� code 鍜� message 灞炴�э紝鍙府鍔╁紑鍙戝畾浣嶉棶棰�
+//                log.error("鏇存柊閽夐拤Token澶辫触锛歿}" + err.message);
+//            }
+//        }
+    }
 
 }
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 b30488b..18f4d81 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
@@ -233,6 +233,7 @@
         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);//榛樿涓嶅彲璁块棶
@@ -2462,6 +2463,7 @@
         member.setPhone(deptGetResponse.getMobile());
         member.setName(deptGetResponse.getName());
         member.setCode(deptGetResponse.getJobNumber());
+        member.setDdId(deptGetResponse.getUserid());
         isMemberParamValidDetail(member,deptGetResponse.getDeptIdList());
         //鑾峰彇鍑虹敓鏃ユ湡
         //鑴辨晱鎿嶄綔
@@ -2521,7 +2523,7 @@
         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);
@@ -2543,6 +2545,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())

--
Gitblit v1.9.3