cr пре 1 месец
родитељ
комит
3be1db3939

+ 2 - 0
blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java

@@ -80,6 +80,8 @@ public interface LauncherConstant {
 
     String  APPLICATION_REPAIR_NAME = APPLICATION_NAME_PREFIX + "repair";
 
+    String  APPLICATION_DingDing_NAME = APPLICATION_NAME_PREFIX + "dingding";
+
 
     /**
      * nacos dev 地址 215==172.31.222.127   192.168.0.109     127.0.0.1  210-=-172.30.224.81

+ 31 - 0
blade-service/blade-dingding/pom.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.springblade</groupId>
+        <artifactId>BladeX</artifactId>
+        <version>2.9.1.RELEASE</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>blade-dingding</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-core-boot</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

+ 23 - 0
blade-service/blade-dingding/src/main/java/org/springblade/DingDingApplication.java

@@ -0,0 +1,23 @@
+package org.springblade;
+
+
+import org.springblade.common.constant.LauncherConstant;
+import org.springblade.core.cloud.feign.EnableBladeFeign;
+import org.springblade.core.launch.BladeApplication;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.cloud.client.SpringCloudApplication;
+import org.springframework.scheduling.annotation.EnableAsync;
+
+
+/**
+ * 客户端启动类
+ */
+@EnableBladeFeign
+@SpringCloudApplication
+@EnableAsync
+@EnableCaching
+public class DingDingApplication {
+    public static void main(String[] args) {
+        BladeApplication.run(LauncherConstant.APPLICATION_DingDing_NAME, DingDingApplication.class, args);
+    }
+}

+ 24 - 0
blade-service/blade-dingding/src/main/java/org/springblade/dingding/controller/MeetingController.java

@@ -0,0 +1,24 @@
+package org.springblade.dingding.controller;
+
+import io.swagger.annotations.Api;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tool.api.R;
+import org.springblade.dingding.service.MeetingService;
+import org.springblade.dingding.vo.MeetingVo;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/meeting")
+@Api(value = "", tags = "钉钉会议接口")
+public class MeetingController {
+
+  private final MeetingService meetingService;
+
+
+  public R<MeetingVo> getMeetingInfo(){
+    return R.data(meetingService.getMeetingInfo());
+  }
+
+}

+ 7 - 0
blade-service/blade-dingding/src/main/java/org/springblade/dingding/service/MeetingService.java

@@ -0,0 +1,7 @@
+package org.springblade.dingding.service;
+
+import org.springblade.dingding.vo.MeetingVo;
+
+public interface MeetingService {
+    MeetingVo getMeetingInfo();
+}

+ 98 - 0
blade-service/blade-dingding/src/main/java/org/springblade/dingding/service/impl/MeetingServiceImpl.java

@@ -0,0 +1,98 @@
+package org.springblade.dingding.service.impl;
+
+import com.alibaba.nacos.shaded.com.google.gson.JsonObject;
+import com.alibaba.nacos.shaded.com.google.gson.JsonParser;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.dingding.service.MeetingService;
+import org.springblade.dingding.vo.MeetingVo;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+public class MeetingServiceImpl implements MeetingService {
+
+    private static final String DINGTALK_API_BASE = "https://api.dingtalk.com/v1.0/";
+    private static final String APP_KEY = "dingbqbwen1t2qixpj7g";
+    private static final String APP_SECRET = "F_56XGS03bSCjMWgkdFcdBWtg3V6xsJva4XHmR8qMFmadS9U_3OK_953Zd409O6L";
+
+
+    @Override
+    public MeetingVo getMeetingInfo() {
+        return null;
+    }
+
+    //解析json字符串
+    private String parseFromJson(String json,String key) {
+        try {
+            JsonObject jsonObject = JsonParser.parseString(json).getAsJsonObject();
+            return jsonObject.get(key).getAsString();
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    //获取AccessToken
+    public  String getAccessToken() {
+        // 实现获取AccessToken逻辑
+        String url = DINGTALK_API_BASE + "oauth2/accessToken";
+        RestTemplate restTemplate = new RestTemplate();
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        // 构造请求体
+        String requestBody = "{\n" +
+                "    \"appKey\": \"" + APP_KEY + "\",\n" +
+                "    \"appSecret\": \"" + APP_SECRET + "\"\n" +
+                "}";
+        HttpEntity<String> entity = new HttpEntity<>(requestBody, headers);
+        try {
+            ResponseEntity<String> response = restTemplate.postForEntity(url, entity, String.class);
+            return parseFromJson(response.getBody(), "accessToken");
+        } catch (Exception e) {
+            throw new ServiceException("获取AccessToken失败");
+        }
+    }
+
+    /**
+     * 获取unionId 操作人id
+     * @return
+     */
+    public String getUnionId(String accessToken){
+        String url = "https://oapi.dingtalk.com/topapi/v2/user/get?access_token="+accessToken;
+        RestTemplate restTemplate = new RestTemplate();
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        Map<String, String> requestBody = new HashMap<>();
+        requestBody.put("language", "zh_CN");
+        requestBody.put("userid", "11664747591221614");
+        ObjectMapper objectMapper = new ObjectMapper();
+        try {
+            String jsonString = objectMapper.writeValueAsString(requestBody);
+            HttpEntity<String> entity = new HttpEntity<>(jsonString, headers);
+            ResponseEntity<String> response = restTemplate.postForEntity(url, entity, String.class);
+            return parseFromJson(response.getBody(), "unionId");
+        } catch (Exception e) {
+            throw new ServiceException("获取unionId失败");
+        }
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+}

+ 14 - 0
blade-service/blade-dingding/src/main/java/org/springblade/dingding/vo/MeetingSchedule.java

@@ -0,0 +1,14 @@
+package org.springblade.dingding.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+//今日预定场次
+public class MeetingSchedule {
+    private String reservationTime; //预约时间
+    private String reservationDept; //预约部门
+}

+ 23 - 0
blade-service/blade-dingding/src/main/java/org/springblade/dingding/vo/MeetingVo.java

@@ -0,0 +1,23 @@
+package org.springblade.dingding.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class MeetingVo {
+    private String fixedData; //固定数据
+    private String meetingTheme; //会议主题
+    private String meetingDept;  //召开部门
+    private String meetingBooker;//会议预定者,主持人
+    private String participants; //参会人员
+    private String meetingTime; //会议时间
+    private Integer status; //会议时间 1空闲中 2会议中
+    private Integer meetingSession; //今日会议场次
+    private List<MeetingSchedule> meetings; //今日预定会议场次详情
+
+}

+ 10 - 0
blade-service/blade-dingding/src/main/resources/application-dev.yml

@@ -0,0 +1,10 @@
+#服务器端口
+server:
+  port: 9120
+
+#数据源配置
+spring:
+  datasource:
+    url: ${blade.datasource.dev.url}
+    username: ${blade.datasource.dev.username}
+    password: ${blade.datasource.dev.password}

+ 10 - 0
blade-service/blade-dingding/src/main/resources/application-prod.yml

@@ -0,0 +1,10 @@
+#服务器端口
+server:
+  port: 9120
+
+#数据源配置
+spring:
+  datasource:
+    url: ${blade.datasource.dev.url}
+    username: ${blade.datasource.dev.username}
+    password: ${blade.datasource.dev.password}

+ 10 - 0
blade-service/blade-dingding/src/main/resources/application-test.yml

@@ -0,0 +1,10 @@
+#服务器端口
+server:
+  port: 9120
+
+#数据源配置
+spring:
+  datasource:
+    url: ${blade.datasource.dev.url}
+    username: ${blade.datasource.dev.username}
+    password: ${blade.datasource.dev.password}

+ 1 - 0
pom.xml

@@ -41,6 +41,7 @@
         <module>blade-service</module>
         <module>blade-service-api</module>
         <module>blade-service/blade-repair</module>
+        <module>blade-service/blade-dingding</module>
     </modules>
 
     <dependencyManagement>