wangliang 3 лет назад
Родитель
Сommit
4835fa6943

+ 16 - 4
distributed-print/src/main/java/com/qmth/distributed/print/api/TSAuthController.java

@@ -1,6 +1,8 @@
 package com.qmth.distributed.print.api;
 
 import com.alibaba.fastjson.JSONObject;
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.core.solar.crypto.AppLicenseUtil;
 import com.qmth.boot.tools.signature.SignatureEntity;
@@ -17,16 +19,14 @@ import org.apache.commons.io.IOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import java.net.URLDecoder;
 import java.util.Objects;
 
 /**
@@ -105,6 +105,7 @@ public class TSAuthController {
         jsonObject.put("accessSecret", basicSchool.getAccessSecret());
         jsonObject.put("createId", sysUser.getId());
         jsonObject.put("createUserName", sysUser.getRealName());
+        jsonObject.put("callbackUrl", "/api/admin/auth/test/callback");
         Long timestamp = System.currentTimeMillis();
         String accessToken = SignatureEntity.build(SignatureType.SECRET, SystemConstant.METHOD, "/api/report/open/basic/examination/data", timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
         String result = HttpUtil.postJson("http://127.0.0.1:7004/api/report/open/basic/examination/data", jsonObject.toJSONString(), accessToken, timestamp);
@@ -112,4 +113,15 @@ public class TSAuthController {
             log.info("result:{}", JacksonUtil.parseJson(result));
         }
     }
+
+    @ApiOperation(value = "测试教研分析回调接口")
+    @ApiResponses({@ApiResponse(code = 200, message = "测试教研分析回调接口", response = Objects.class)})
+    @RequestMapping(value = "/test/callback", method = RequestMethod.POST)
+    @Aac(auth = BOOL.FALSE)
+    public Result testCallback(@ApiParam(value = "接收教研分析回调数据", required = true) @RequestBody String result) throws IOException {
+        log.info("testCallback,result:{}", result);
+        String decodeJson = URLDecoder.decode(result, SystemConstant.CHARSET_NAME);
+        log.info("testCallback decodeJson:{}", decodeJson);
+        return ResultUtil.ok(System.currentTimeMillis());
+    }
 }

+ 34 - 2
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/OpenApiController.java

@@ -1,9 +1,14 @@
 package com.qmth.teachcloud.report.api;
 
+import com.alibaba.fastjson.JSONObject;
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.boot.tools.signature.SignatureEntity;
+import com.qmth.boot.tools.signature.SignatureType;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.util.HttpUtil;
+import com.qmth.teachcloud.common.util.JacksonUtil;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import io.swagger.annotations.*;
@@ -15,8 +20,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.io.UnsupportedEncodingException;
+import java.io.IOException;
 import java.net.URLDecoder;
+import java.util.Objects;
 
 /**
  * <p>
@@ -37,10 +43,36 @@ public class OpenApiController {
     @ApiOperation(value = "接收基础考务数据")
     @ApiResponses({@ApiResponse(code = 200, message = "推送基础考务数据", response = Object.class)})
     @RequestMapping(value = "/basic/examination/data", method = RequestMethod.POST)
-    public Result basicExaminationData(@ApiParam(value = "接收基础考务数据信息", required = true) @RequestBody String result) throws UnsupportedEncodingException {
+    public Result basicExaminationData(@ApiParam(value = "接收基础考务数据信息", required = true) @RequestBody String result) throws IOException, InterruptedException {
         log.info("basicExaminationData进来了,result:{}", result);
         String decodeJson = URLDecoder.decode(result, SystemConstant.CHARSET_NAME);
         log.info("decodeJson:{}", decodeJson);
+        if (Objects.nonNull(decodeJson)) {
+            JSONObject jsonObject = JSONObject.parseObject(decodeJson);
+            String callbackUrl = jsonObject.getString("callbackUrl");
+            String accessKey = jsonObject.getString("accessKey");
+            String accessSecret = jsonObject.getString("accessSecret");
+            if (Objects.nonNull(callbackUrl)) {
+                Double progress = 0D;
+                for (int i = 0; i < 11; i++) {
+                    progress += 10D;
+                    JSONObject dataObjectJson = new JSONObject();
+                    dataObjectJson.put("progress", progress);
+                    if (progress == 100D) {
+                        dataObjectJson.put("status", "FINISHED");
+                    } else {
+                        dataObjectJson.put("status", "RUNNING");
+                    }
+                    Long timestamp = System.currentTimeMillis();
+                    String accessToken = SignatureEntity.build(SignatureType.SECRET, SystemConstant.METHOD, callbackUrl, timestamp, accessKey, accessSecret);
+                    String callbackResult = HttpUtil.postJson("http://127.0.0.1:7001" + callbackUrl, dataObjectJson.toJSONString(), accessToken, timestamp);
+                    if (Objects.nonNull(callbackResult)) {
+                        log.info("callbackResult:{}", JacksonUtil.parseJson(callbackResult));
+                    }
+                    Thread.sleep(5000);
+                }
+            }
+        }
         return ResultUtil.ok(true);
     }
 }