Przeglądaj źródła

阶段性提交

soft5566 3 lat temu
rodzic
commit
b739f6c744

+ 6 - 0
pom.xml

@@ -56,6 +56,11 @@
 			<version>4.9.1</version>
 		</dependency>
 		<dependency>
+			<groupId>com.google.code.gson</groupId>
+			<artifactId>gson</artifactId>
+			<version>2.8.7</version>
+		</dependency>
+		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-devtools</artifactId>
 			<scope>runtime</scope>
@@ -79,6 +84,7 @@
 	</dependencies>
 
 	<build>
+		<finalName>jiaoxuelou_houtai</finalName>
 		<plugins>
 			<plugin>
 				<groupId>org.springframework.boot</groupId>

+ 24 - 5
src/main/java/com/ch/jiaoxuelou_houtai/controller/ApiController.java

@@ -3,17 +3,16 @@ package com.ch.jiaoxuelou_houtai.controller;
 import com.alibaba.fastjson2.JSONObject;
 import com.ch.jiaoxuelou_houtai.core.ResponseResult;
 import com.ch.jiaoxuelou_houtai.entity.Course;
-import com.ch.jiaoxuelou_houtai.entity.User;
 import com.ch.jiaoxuelou_houtai.service.CourseService;
-import com.ch.jiaoxuelou_houtai.service.UserService;
 import com.ch.jiaoxuelou_houtai.util.DateTimeUtil;
 import com.github.pagehelper.PageInfo;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
 
-import javax.swing.*;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 
@@ -176,4 +175,24 @@ public class ApiController {
         return ResponseResult.failed("开学日期更新失败!");
     }
 
+    /**
+     * 获取学工各年级的获奖人数
+     * @return
+     */
+    @RequestMapping(value = "/getNumbOfAwardWinners", method = RequestMethod.GET)
+    public ResponseResult getNumbOfAwardWinners() {
+        Map<String, Integer> data = new HashMap<>();
+        data.put("2020级", 780);
+        data.put("2022级", 490);
+        data.put("2023级", 350);
+        data.put("2024级", 250);
+
+        return ResponseResult.success(data);
+    }
+
+    @RequestMapping(value = "/teaEnvTesting", method = RequestMethod.GET)
+    public ResponseResult teachingEnvironmentTesting() {
+
+        return ResponseResult.success("pass");
+    }
 }

+ 177 - 0
src/main/java/com/ch/jiaoxuelou_houtai/controller/VideoController.java

@@ -0,0 +1,177 @@
+package com.ch.jiaoxuelou_houtai.controller;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.ch.jiaoxuelou_houtai.core.ResponseResult;
+import com.ch.jiaoxuelou_houtai.service.VideoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/video")
+public class VideoController {
+
+    private final String baseUrl = "https://chtech.ncjti.edu.cn/video/transcoding";
+
+    @Autowired
+    private VideoService videoService;
+
+    /**
+     * 登录视频中台
+     *
+     * @return 成功 true  失败 false
+     */
+    @RequestMapping(value = "/login", method = RequestMethod.POST)
+    public String login() {
+        // 请求头
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Content-Type", "application/json");
+        // 请求参数
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("username", "admin");
+        jsonObject.put("password", "jAYArls3XOUU6auwkGjmtMSgwgWxXFw2KRiuGrbszO0wKT5prodiYnReaROaq" +
+                "CX1XGKLNhTJOtJch9ipji9QrTep3zEzBJTVFt9vfqS2FYBtB2iRkNgR0egY/OvoGGOQ" +
+                "jFioepN9o1sNPahzdQutZ7mg9L/+TEtT0NK+VtnI1Fo=");
+
+        String url = baseUrl + "/videoAdmin/login";
+        JSONObject login = videoService.login(url, jsonObject.toString(), headers);
+        Boolean success = login.getBoolean("success");
+        if (success) {
+            // 获取登录成功后的token
+            return login.getJSONObject("data").getString("token");
+        }
+
+        return "";
+    }
+
+    /**
+     * 获取教室视频列表
+     *
+     * @param jsonObject
+     * @return
+     */
+    @RequestMapping(value = "/getVideoList", method = RequestMethod.GET)
+    public ResponseResult getVideoList(@RequestBody JSONObject jsonObject) {
+        // 先登录,获取token
+        String admin_token = login();
+        if ("".equals(admin_token)) {
+            return ResponseResult.failed("视频登录失败!");
+        }
+        // 请求头
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Content-Type", "application/json");
+        headers.put("admin_token", admin_token);
+        // 设置请求参数
+        JSONObject jsonParams = new JSONObject();
+        jsonParams.put("regularExpression", "^[A|B|C]{1}[0-9]{3}.*");
+        jsonParams.put("curPage", jsonObject.getString("curPage"));
+        jsonParams.put("pageSize", jsonObject.getString("pageSize"));
+        jsonParams.put("orderField", "installation_site");
+        jsonParams.put("order", "asc");
+        // 视频列表接口URL
+        String url = baseUrl + "/camera/list";
+        // 调用方法
+        JSONObject videoList = videoService.getVideoList(url, jsonParams.toString(), headers);
+        // 判断视频列表是否为空
+        if (videoList.isEmpty()) {
+            return ResponseResult.failed("获取教室列表失败!");
+        }
+
+        return ResponseResult.success(videoList);
+    }
+
+    /**
+     * 获取空调超时预警
+     *
+     * @return
+     */
+    @RequestMapping(value = "/getAirOverTime", method = RequestMethod.GET)
+    public ResponseResult getAirOverTime() {
+        // 视频列表接口URL
+        String url = "https://chtech.ncjti.edu.cn/air-conditioner-control/airManage/firstqueryOverTime.action";
+        // 请求头
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Admin-Name", "admin");
+        headers.put("X-Token", "admin_token");
+        // 请求数据formdata
+        Map<String, String> formData = new HashMap<>();
+        formData.put("page", "1");
+        formData.put("rows", "10");
+        // 调用方法
+        JSONObject airOverTime = videoService.getAirOverTime(url, formData, headers);
+        // 判断视频列表是否为空
+        if (airOverTime.isEmpty()) {
+            return ResponseResult.failed("获取教室列表失败!");
+        }
+
+        return ResponseResult.success(airOverTime);
+    }
+
+    /**
+     * 拉流,获取视频流地址
+     *
+     * @return
+     */
+    @RequestMapping(value = "/openStreaming", method = RequestMethod.POST)
+    public ResponseResult openStreaming(@RequestBody JSONObject jsonObject) {
+        // 先登录,获取token
+        String admin_token = login();
+        if ("".equals(admin_token)) {
+            return ResponseResult.failed("视频登录失败!");
+        }
+
+        // 请求头
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Content-Type", "application/json");
+        headers.put("admin_token", admin_token);
+
+        // 拉流接口URL
+        String url = baseUrl + "/stream/addStreamSource";
+        // 调用方法
+        JSONObject openAddress = videoService.openStreaming(url, jsonObject.toString(), headers);
+
+        if (openAddress.isEmpty()) {
+            return ResponseResult.failed("获取视频流地址失败!");
+        }
+
+        return ResponseResult.success(openAddress);
+    }
+
+    /**
+     * 关闭视频流地址
+     *
+     * @return
+     */
+    @RequestMapping(value = "/closeStreaming", method = RequestMethod.POST)
+    public ResponseResult closeStreaming(@RequestBody JSONObject jsonObject) {
+        // 先登录,获取token
+        String admin_token = login();
+        if ("".equals(admin_token)) {
+            return ResponseResult.failed("视频登录失败!");
+        }
+
+        // 请求头
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Content-Type", "application/json");
+        headers.put("admin_token", admin_token);
+
+        // 关闭流接口URL
+        String url = baseUrl + "/stream/delStreamSource";
+        // 调用方法
+        JSONObject closeStreaming = videoService.closeStreaming(url, jsonObject.toString(), headers);
+
+        if (closeStreaming.isEmpty()) {
+            return ResponseResult.failed("关闭视频流失败!");
+        }
+
+        return ResponseResult.success(closeStreaming);
+    }
+
+
+}

+ 32 - 0
src/main/java/com/ch/jiaoxuelou_houtai/entity/Course.java

@@ -0,0 +1,32 @@
+package com.ch.jiaoxuelou_houtai.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+
+@TableName("tb_course_scheduling")
+@Data
+public class Course {
+    @TableId(value = "id", type = IdType.AUTO)
+    private int id;
+    private String pushId; // 序号
+    private String pushKcbh; // 课程编号
+    private String pushKcmc; // 课程名称
+    private String pushJxbid; // 教学班id
+    private String pushJxbmc; // 教学班名称
+    private String pushJsgh; // 教师工号
+    private String pushJsxm; // 教师姓名
+    private String pushXn; // 学年
+    private String pushXq; // 学期
+    private String pushDjz; // 第几周
+    private String pushZj; // 周几
+    private String pushJc; // 节次
+    private String pushSkdd; // 上课地点
+    private String pushJxbzc; // 教学班组成
+    private int classSize;  // 班级人数
+    private Timestamp timestamp; // 日期时间
+}

+ 49 - 0
src/main/java/com/ch/jiaoxuelou_houtai/mapper/CourseMapper.java

@@ -0,0 +1,49 @@
+package com.ch.jiaoxuelou_houtai.mapper;
+
+import com.ch.jiaoxuelou_houtai.entity.Course;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+import org.apache.ibatis.annotations.UpdateProvider;
+
+import java.util.List;
+
+@Mapper
+public interface CourseMapper {
+
+    // 排课表列表查询
+    @Select("SELECT id, push_skdd, push_jxbid, push_jxbmc, push_jxbzc, push_kcmc, push_jsxm, push_djz, push_zj, push_jc" +
+            " FROM tb_course_scheduling" +
+            " WHERE push_skdd LIKE concat(#{building}, '%') AND push_xn = #{schoolYear} AND push_xq = #{semester}" +
+            " AND push_djz = #{weeks} AND push_zj = #{week} AND push_jc LIKE concat('%', #{section}, '%')" +
+            " ORDER BY push_skdd, push_djz, push_zj, push_jc")
+    List<Course> listCourse(String building, String schoolYear, String semester, String weeks, String week, String section);
+
+    // 获取教学班人数
+    @Select("SELECT COUNT(push_jxbid) num FROM tb_course_selection WHERE push_jxbid = #{classId} GROUP BY push_jxbid")
+    Integer getNumberOfClass(String classId);
+
+    // 获取学期开学日期
+    @Select("SELECT cfg_value FROM tb_config WHERE cfg_key = 'termBeginsTime'")
+    String getTermBeginsTime();
+
+    // 设置开学日期
+    @Update("UPDATE tb_config SET cfg_value = #{date} WHERE cfg_key = 'termBeginsTime'")
+    Integer updateTermBeginsDate(String date);
+
+    // 获取正在使用的教室数量
+    @Select("SELECT COUNT(push_skdd)" +
+            " FROM tb_course_scheduling" +
+            " WHERE push_skdd LIKE concat(#{building}, '%') AND push_xn = #{schoolYear} AND push_xq = #{semester}" +
+            " AND push_djz = #{weeks} AND push_zj = #{week} AND push_jc LIKE concat('%', #{section}, '%')" +
+            " ORDER BY push_skdd")
+    Integer getNumOfUsingClassRoom(String building, String schoolYear, String semester, String weeks, String week, String section);
+
+    // 获取教室总数量
+    @Select("SELECT COUNT(DISTINCT push_skdd)" +
+            " FROM tb_course_scheduling" +
+            " WHERE push_skdd LIKE concat(#{building}, '%')")
+    Integer getTotalOfClassRoom(String building);
+
+
+}

+ 0 - 9
src/main/java/com/ch/jiaoxuelou_houtai/mapper/VideoMapper.java

@@ -1,9 +0,0 @@
-package com.ch.jiaoxuelou_houtai.mapper;
-
-
-import org.apache.ibatis.annotations.Mapper;
-
-@Mapper
-public interface VideoMapper {
-
-}

+ 0 - 33
src/main/java/com/ch/jiaoxuelou_houtai/service/ApiService.java

@@ -1,33 +0,0 @@
-package com.ch.jiaoxuelou_houtai.service;
-
-import okhttp3.HttpUrl;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.Response;
-import org.springframework.stereotype.Service;
-
-import java.io.IOException;
-import java.util.Objects;
-
-@Service
-public class ApiService {
-    private final OkHttpClient httpClient = new OkHttpClient();
-    public String callApi(String url, int page, int rows) throws IOException {
-        HttpUrl.Builder httpBuilder = Objects.requireNonNull(HttpUrl.parse(url)).newBuilder();
-        httpBuilder.addQueryParameter("page", String.valueOf(page));
-        httpBuilder.addQueryParameter("rows", String.valueOf(rows));
-        String strUrl = httpBuilder.build().toString();
-
-        Request request = new Request.Builder()
-                .url(strUrl)
-                .build();
-
-        try (Response response = httpClient.newCall(request).execute()) {
-            if (response.body() != null) {
-                return response.body().string();
-            } else {
-                return null;
-            }
-        }
-    }
-}

+ 18 - 0
src/main/java/com/ch/jiaoxuelou_houtai/service/VideoService.java

@@ -0,0 +1,18 @@
+package com.ch.jiaoxuelou_houtai.service;
+
+import com.alibaba.fastjson2.JSONObject;
+
+import java.util.Map;
+
+public interface VideoService {
+
+    JSONObject login(String url, String params, Map<String, String> headers);
+
+    JSONObject getVideoList(String url, String requestBody, Map<String, String> headers);
+
+    JSONObject openStreaming(String url, String requestBody, Map<String, String> headers);
+
+    JSONObject closeStreaming(String url, String requestBody, Map<String, String> headers);
+
+    JSONObject getAirOverTime(String url, Map<String, String> formData, Map<String, String> headers);
+}

+ 94 - 0
src/main/java/com/ch/jiaoxuelou_houtai/service/impl/VideoServiceImpl.java

@@ -0,0 +1,94 @@
+package com.ch.jiaoxuelou_houtai.service.impl;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.ch.jiaoxuelou_houtai.service.VideoService;
+import com.ch.jiaoxuelou_houtai.util.OkHttpUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+@Service
+public class VideoServiceImpl implements VideoService {
+
+    /**
+     * 登录视频中台
+     *
+     * @param url
+     * @param requestBody
+     * @return
+     */
+    @Override
+    public JSONObject login(String url, String requestBody, Map<String, String> headers) {
+        // 调用封装的方法,发送http  post请求
+        OkHttpUtils okHttpUtils = new OkHttpUtils();
+        String s = okHttpUtils.post(url, requestBody, headers);
+        // 返回json数据
+        return JSONObject.parse(s);
+    }
+
+    /**
+     * 获取教室视频列表
+     *
+     * @param url
+     * @param requestBody
+     * @param headers
+     * @return
+     */
+    @Override
+    public JSONObject getVideoList(String url, String requestBody, Map<String, String> headers) {
+        // 调用封装的方法,发送http  post请求
+        OkHttpUtils okHttpUtils = new OkHttpUtils();
+        String s = okHttpUtils.post(url, requestBody, headers);
+        // 返回json数据
+        return JSONObject.parse(s);
+    }
+
+    /**
+     * 获取空调超时预警
+     *
+     * @param url
+     * @return
+     */
+    @Override
+    public JSONObject getAirOverTime(String url, Map<String, String> formData, Map<String, String> headers) {
+        // 调用封装的方法,发送http  post请求
+        OkHttpUtils okHttpUtils = new OkHttpUtils();
+        String s = okHttpUtils.postFormData(url, formData, headers);
+        // 返回json数据
+        return JSONObject.parse(s);
+    }
+
+    /**
+     * 拉流,获取视频流地址
+     *
+     * @param url
+     * @param json
+     * @param headers
+     * @return
+     */
+    @Override
+    public JSONObject openStreaming(String url, String json, Map<String, String> headers) {
+        // 调用封装的方法,发送http  post请求
+        OkHttpUtils okHttpUtils = new OkHttpUtils();
+        String s = okHttpUtils.post(url, json, headers);
+        // 返回json数据
+        return JSONObject.parse(s);
+    }
+
+    /**
+     * 关闭视频流地址
+     *
+     * @param url
+     * @param json
+     * @param headers
+     * @return
+     */
+    @Override
+    public JSONObject closeStreaming(String url, String json, Map<String, String> headers) {
+        // 调用封装的方法,发送http  post请求
+        OkHttpUtils okHttpUtils = new OkHttpUtils();
+        String s = okHttpUtils.post(url, json, headers);
+        // 返回json数据
+        return JSONObject.parse(s);
+    }
+}

+ 28 - 0
src/main/java/com/ch/jiaoxuelou_houtai/util/CommonUtil.java

@@ -0,0 +1,28 @@
+package com.ch.jiaoxuelou_houtai.util;
+
+import com.alibaba.fastjson2.JSONObject;
+
+import java.util.Iterator;
+
+public class CommonUtil {
+
+    /**
+     * 拼接URL参数
+     * @param jsonParams
+     * @return
+     */
+    public String urlParams(JSONObject jsonParams) {
+        Iterator<String> it = jsonParams.keySet().iterator();
+        StringBuilder paramStr = new StringBuilder();
+        while (it.hasNext()) {
+            String key = it.next();
+            String value = jsonParams.getString(key);
+            paramStr.append("&").append(key).append("=").append(value);
+        }
+
+        paramStr.replace(0, 1, "?");
+
+        return paramStr.toString();
+    }
+
+}

+ 175 - 0
src/main/java/com/ch/jiaoxuelou_houtai/util/OkHttpUtils.java

@@ -0,0 +1,175 @@
+package com.ch.jiaoxuelou_houtai.util;
+
+import okhttp3.*;
+
+import java.io.IOException;
+import java.util.Map;
+
+public class OkHttpUtils {
+    private static final MediaType JSON = MediaType.get("application/json; charset=utf-8");
+    private static final MediaType FORM_DATA = MediaType.get("multipart/form-data; charset=utf-8");
+    private static final MediaType PLAIN_TEXT = MediaType.get("text/plain; charset=utf-8");
+    private final OkHttpClient client = new OkHttpClient();
+
+    public String get(String url) {
+        Request request = new Request.Builder()
+                .url(url)
+                .build();
+        try (Response response = client.newCall(request).execute()) {
+            if (response.body() != null) {
+                return response.body().string();
+            } else {
+                return "";
+            }
+        } catch (IOException e) {
+            return e.getMessage();
+        }
+    }
+
+    public String get(String url, Map<String, String> params) {
+        HttpUrl httpUrl = HttpUrl.parse(url);
+        if (httpUrl == null) {
+            return "URL解析异常!";
+        }
+        HttpUrl.Builder httpBuilder = httpUrl.newBuilder();
+        for (Map.Entry<String, String> entry : params.entrySet()) {
+            httpBuilder.addQueryParameter(entry.getKey(), entry.getValue());
+        }
+        String newUrl = httpBuilder.build().toString();
+
+        Request request = new Request.Builder()
+                .url(newUrl)
+                .build();
+        try (Response response = client.newCall(request).execute()) {
+            if (response.body() != null) {
+                return response.body().string();
+            } else {
+                return "返回null";
+            }
+        } catch (IOException e) {
+            return e.getMessage();
+        }
+    }
+
+    public String post(String url) {
+        RequestBody body = RequestBody.create("", JSON);
+
+        Request request = new Request.Builder()
+                .url(url)
+                .header("Content-Type", "application/json")
+                .post(body)
+                .build();
+
+        try (Response response = client.newCall(request).execute()) {
+            if (response.body() != null) {
+                return response.body().string();
+            } else {
+                return "返回null";
+            }
+        } catch (IOException e) {
+            return e.getMessage();
+        }
+    }
+
+    public String post(String url, String json, Map<String,String> headers) {
+        RequestBody body = RequestBody.create(json, JSON);
+
+        Request.Builder requestBuilder = new Request.Builder()
+                .url(url)
+                .post(body);
+
+        requestBuilder.addHeader("Content-Type", "application/json");
+        for (Map.Entry<String, String> entry : headers.entrySet()) {
+            requestBuilder.addHeader(entry.getKey(), entry.getValue());
+        }
+
+        Request request = requestBuilder.build();
+
+        try (Response response = client.newCall(request).execute()) {
+            if (response.body() != null) {
+                return response.body().string();
+            } else {
+                return "返回null";
+            }
+        } catch (IOException e) {
+            return e.getMessage();
+        }
+    }
+
+    public String postFormData(String url, Map<String, String> formData, Map<String, String> headers) {
+        MultipartBody.Builder formBuilder = new MultipartBody.Builder().setType(MultipartBody.FORM);
+        for (Map.Entry<String, String> entry : formData.entrySet()) {
+            formBuilder.addFormDataPart(entry.getKey(), entry.getValue());
+        }
+
+        RequestBody formBody = formBuilder.build();
+
+        Request.Builder requestBuilder = new Request.Builder()
+                .url(url)
+                .post(formBody);
+
+        requestBuilder.addHeader("Content-Type", "multipart/form-data");
+        for (Map.Entry<String, String> entry : headers.entrySet()) {
+            requestBuilder.addHeader(entry.getKey(), entry.getValue());
+        }
+
+        Request request = requestBuilder.build();
+        try (Response response = client.newCall(request).execute()) {
+            if (response.body() != null) {
+                return response.body().string();
+            } else {
+                return "返回null";
+            }
+        } catch (IOException e) {
+            return e.getMessage();
+        }
+    }
+
+    public String postPlainText(String url, String text) {
+        RequestBody body = RequestBody.create(text, PLAIN_TEXT);
+
+        Request request = new Request.Builder()
+                .url(url)
+                .header("Content-Type", "text/plain")
+                .post(body)
+                .build();
+        try (Response response = client.newCall(request).execute()) {
+            if (response.body() != null) {
+                return response.body().string();
+            } else {
+                return "";
+            }
+        } catch (IOException e) {
+            return e.getMessage();
+        }
+    }
+
+    public String post(String url, Map<String, String> formData, Map<String, String> jsonParams, Map<String, String> textParams) {
+        MultipartBody.Builder formBuilder = new MultipartBody.Builder().setType(MultipartBody.FORM);
+        for (Map.Entry<String, String> entry : formData.entrySet()) {
+            formBuilder.addFormDataPart(entry.getKey(), entry.getValue());
+        }
+        for (Map.Entry<String, String> entry : jsonParams.entrySet()) {
+            formBuilder.addFormDataPart(entry.getKey(), entry.getValue(), RequestBody.create(entry.getValue(), JSON));
+        }
+        for (Map.Entry<String, String> entry : textParams.entrySet()) {
+            formBuilder.addFormDataPart(entry.getKey(), entry.getValue(), RequestBody.create(entry.getValue(), PLAIN_TEXT));
+        }
+        RequestBody formBody = formBuilder.build();
+
+        Request request = new Request.Builder()
+                .url(url)
+                .header("Content-Type", "multipart/form-data")
+                .post(formBody)
+                .build();
+        try (Response response = client.newCall(request).execute()) {
+            if (response.body() != null) {
+                return response.body().string();
+            } else {
+                return "";
+            }
+        } catch (IOException e) {
+            return e.getMessage();
+        }
+    }
+}

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

@@ -5,6 +5,12 @@ server:
       timeout: 1440m
   port: 8088
 
+modulea:
+  datasource:
+    url: jdbc:mysql://172.16.20.45:3306/martschool_bigdata?allowPublicKeyRetrieval=true&useSSL=false&connectTimeout=10000&socketTimeout=10000&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull
+    username: queryUser
+    password: fcBtkT2EwCjiTdc4
+
 
 spring:
   datasource: