Browse Source

U9工作消息通知

xuj 4 years ago
parent
commit
64abc194f6

+ 6 - 0
pom.xml

@@ -76,6 +76,12 @@
         </dependency>
 
         <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.37</version>
+        </dependency>
+
+        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>

+ 2 - 0
src/main/java/com/galaxis/manatee/configuration/ManateeSecurity.java

@@ -41,6 +41,8 @@ public class ManateeSecurity extends WebSecurityConfigurerAdapter {
                 .antMatchers(HttpMethod.GET,GO_CONFIRM).permitAll()
                 .antMatchers(HttpMethod.GET,"/test/**").permitAll()
                 .antMatchers(HttpMethod.POST,"/test/**").permitAll()
+                .antMatchers(HttpMethod.GET,"/u9workmessage/**").permitAll()
+                .antMatchers(HttpMethod.POST,"/u9workmessage/**").permitAll()
                 .antMatchers(HttpMethod.GET,"/ws/**").permitAll()
                 .antMatchers(HttpMethod.POST,"/ws/**").permitAll()
                 .anyRequest().authenticated()

+ 11 - 0
src/main/java/com/galaxis/manatee/constant/DingTalkConstant.java

@@ -22,6 +22,11 @@ public class DingTalkConstant {
     public static String DING_TALK_APP_KEY;
 
     /**
+     * 钉钉AgentId
+     */
+    public static Long DING_TALK_AGENTID;
+
+    /**
      * 钉钉appSecret
      */
     public static String DING_TALK_APP_SECRET;
@@ -65,4 +70,10 @@ public class DingTalkConstant {
     public  void setProcessCodeAskforleave(String askForLeave) {
         DingTalkConstant.PROCESS_CODE_ASKFORLEAVE = askForLeave;
     }
+
+    @Value(value = "${dingTalk.AgentId}")
+    public void setAgentId(Long agentId) {
+        DingTalkConstant.DING_TALK_AGENTID = agentId;
+    }
+
 }

+ 74 - 0
src/main/java/com/galaxis/manatee/controller/U9WorkMessageController.java

@@ -0,0 +1,74 @@
+package com.galaxis.manatee.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.dingtalk.api.DefaultDingTalkClient;
+import com.dingtalk.api.DingTalkClient;
+import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
+import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response;
+import com.galaxis.manatee.constant.DingTalkConstant;
+import com.galaxis.manatee.dao.ChuanyunUserDao;
+import com.galaxis.manatee.entity.chuanyun.dto.U9Message;
+import com.galaxis.manatee.entity.chuanyun.dto.U9ResponseMessageDTO;
+import com.taobao.api.ApiException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * created by IntelliJ IDEA.
+ * author: xuj
+ * date: 2020/9/15
+ */
+@RestController
+@Slf4j
+public class U9WorkMessageController {
+
+    @Autowired
+    private ChuanyunUserDao chuanyunUserDao;
+
+    @PostMapping("/u9workmessage/send")
+    @ResponseBody
+    public String sendMessage(@RequestBody String userInfo) {
+        U9ResponseMessageDTO u9ResponseMessageDTO = new U9ResponseMessageDTO();
+        U9Message u9Msg = JSON.parseObject(userInfo, U9Message.class);
+        try {
+            String[] accounts = u9Msg.getUserCode().split(",");
+            List<String> requestIds = new ArrayList<String>();
+            if (accounts.length > 0) {
+                for (String accout : accounts) {
+                    String dingreqId = chuanyunUserDao.findByEmployeeNumber(accout).getDingTalkAccount();
+                    requestIds.add(dingreqId.substring(0, dingreqId.indexOf(".")));
+                }
+            }
+            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2");
+            OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request();
+            request.setUseridList(String.join(",", requestIds));
+            request.setAgentId(DingTalkConstant.DING_TALK_AGENTID);
+            request.setToAllUser(false);
+
+            OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
+            msg.setMsgtype("text");
+            msg.setText(new OapiMessageCorpconversationAsyncsendV2Request.Text());
+            msg.getText().setContent(u9Msg.getMsg());
+            request.setMsg(msg);
+            OapiMessageCorpconversationAsyncsendV2Response response = client.execute(request, DingTalkConstant.DING_TALK_TOKEN);
+            if (response.getErrcode() == 0) {
+                u9ResponseMessageDTO.setErrorCode(response.getErrcode());
+                u9ResponseMessageDTO.setDoCno(u9Msg.getDoCno());
+                log.info("发送消息成功!");
+                return JSON.toJSONString(u9ResponseMessageDTO);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.info("发送消息失败!");
+        }
+        u9ResponseMessageDTO.setErrorCode(1L);
+        return JSON.toJSONString(u9ResponseMessageDTO);
+     }
+
+}

+ 7 - 0
src/main/java/com/galaxis/manatee/dao/ChuanyunUserDao.java

@@ -24,4 +24,11 @@ public interface ChuanyunUserDao extends GalaxisRepository<ChuanyunUserDO,String
      * @return  氚云对象
      */
     ChuanyunUserDO findByDingTalkAccountContaining(String dingTalkAccount);
+
+    /**
+     * 根据钉钉工号获取用户对象
+     * @param employeeNumber  钉钉工号
+     * @return 氚云对象
+     */
+    ChuanyunUserDO findByEmployeeNumber(String employeeNumber);
 }

+ 23 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/dto/U9Message.java

@@ -0,0 +1,23 @@
+package com.galaxis.manatee.entity.chuanyun.dto;
+
+import lombok.Data;
+
+/**
+ * created by IntelliJ IDEA.
+ * author: xuj
+ * date: 2020/9/16
+ */
+@Data
+public class U9Message {
+
+    private Long agentId;
+
+    private String userCode;
+
+    private String msgType;
+
+    private String msg;
+
+    private String doCno;
+
+}

+ 20 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/dto/U9ResponseMessageDTO.java

@@ -0,0 +1,20 @@
+package com.galaxis.manatee.entity.chuanyun.dto;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * created by IntelliJ IDEA.
+ * author: dell
+ * date: 2020/9/18
+ */
+@Data
+public class U9ResponseMessageDTO {
+
+    private Long errorCode;
+
+    private String doCno;
+
+    private LocalDateTime date;
+
+}

+ 11 - 6
src/main/resources/application.yml

@@ -11,6 +11,8 @@ dingTalk:
   getTokenUri: https://oapi.dingtalk.com/gettoken
   #钉钉appKey
   appKey : ding8orokzhrrnfc898k
+  #钉钉AgentId
+  AgentId: 345024272
   #钉钉appSecret
   appSecret : xIwNfl7lVIBwQgKeLBNsDOuKZ-KJWRRBnr_we_-S3GFP32BkdeWzVMsm8z-rTJv8
   processUrl:
@@ -29,13 +31,16 @@ dingTalk:
     askForLeave: PROC-EF6Y0XWVO2-GBP690HMRWVELM4WJ0WT1-DEP53YII-PR1
 
 #阿里云
-#aliyun:
-#  access:
-#    key:
-#      id: ${ACCESS_KEY_ID}
-#      secret: ${ACCESS_KEY_SECRET}
-#    mobile: ${ALIYUN_MOBILE}
+aliyun:
+  access:
+    key:
+      id: ${ACCESS_KEY_ID}
+      secret: ${ACCESS_KEY_SECRET}
+    mobile: ${ALIYUN_MOBILE}
 #spring data jpa database
+server:
+  #端口号
+  port: 8889
 spring:
   task:
     scheduling: