From 33d1b6266dff72d4f348deb7c5cdb58ced638ca0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Fri, 20 Sep 2024 16:03:28 +0800 Subject: [PATCH] 'commit' --- .../微服务架构教育项目组成1.txt | 43 ++++++ .../微服务架构教育项目组成2.txt | 43 ++++++ .../微服务架构教育项目组成3.txt | 43 ++++++ .../Global/Controller/GlobalController.java | 25 ++++ .../com/dsideal/gw/Handler/RouterHandler.java | 122 ++++++++++-------- .../微服务架构教育项目组成.txt | 43 ++++++ .../微服务架构教育项目组成1.txt | 43 ++++++ .../微服务架构教育项目组成2.txt | 43 ++++++ .../微服务架构教育项目组成3.txt | 43 ++++++ .../微服务架构教育项目组成4.txt | 43 ++++++ 10 files changed, 435 insertions(+), 56 deletions(-) create mode 100644 ds-base/WebRoot/upload/微服务架构教育项目组成1.txt create mode 100644 ds-base/WebRoot/upload/微服务架构教育项目组成2.txt create mode 100644 ds-base/WebRoot/upload/微服务架构教育项目组成3.txt create mode 100644 ds-gw/src/main/webapp/upload/微服务架构教育项目组成.txt create mode 100644 ds-gw/src/main/webapp/upload/微服务架构教育项目组成1.txt create mode 100644 ds-gw/src/main/webapp/upload/微服务架构教育项目组成2.txt create mode 100644 ds-gw/src/main/webapp/upload/微服务架构教育项目组成3.txt create mode 100644 ds-gw/src/main/webapp/upload/微服务架构教育项目组成4.txt diff --git a/ds-base/WebRoot/upload/微服务架构教育项目组成1.txt b/ds-base/WebRoot/upload/微服务架构教育项目组成1.txt new file mode 100644 index 00000000..b34a337b --- /dev/null +++ b/ds-base/WebRoot/upload/微服务架构教育项目组成1.txt @@ -0,0 +1,43 @@ +技术上采用微服务架构,支持K8S,JFinal+JDK21+Mysql5.7+Docker+Pika+Vue+UniApp构成技术栈。 +目标: +1、基础功能一次开发,以后项目迭代可以随时拉取镜像就可以有支撑服务,无需重复开发。 +2、高性能,高并发,横向可扩展 +3、WEB端,手机端健全,各种技术全面得到实践应用 + + +模块 +一、基础支撑系统 +0、学段表 +1、科目 +2、支持多套章节目录结构 scheme+structure +3、支持知识点目录结构 + +二、资源库 +1、上传资源,上传到支持S3协议的Minio服务或者华为云、阿里云存储 +2、支持文件在线预览功能,需要整合下面的服务 +3、支持系统提供的资源和自己上传的资源,共享、上级等概念暂不支持 + +https://file.kkview.cn/ +https://gitee.com/kekingcn/file-online-preview + +三、题库 +1、录入试题 +暂不支持导入试题 + +2、支持单选,判断,多选,子母题(比如一个题干,多个小题),简答 + +3、支持根据试题级卷,包括手动组卷,自动级卷 + + +四、考试系统 +1、发布考试 +2、在规定的时间内答题 +2、导入考生名单,生成准考证,生成用户名和密码 +3、考生高并发答题,最终系统输出成绩,导出成绩 +4、针对题目的得分率进行分析 + +五、调查问卷系统 +1、发布调查问卷 +2、在规定的时间内答题 +3、针对题目的得分率进行分析 +4、输出问卷结果报告 \ No newline at end of file diff --git a/ds-base/WebRoot/upload/微服务架构教育项目组成2.txt b/ds-base/WebRoot/upload/微服务架构教育项目组成2.txt new file mode 100644 index 00000000..b34a337b --- /dev/null +++ b/ds-base/WebRoot/upload/微服务架构教育项目组成2.txt @@ -0,0 +1,43 @@ +技术上采用微服务架构,支持K8S,JFinal+JDK21+Mysql5.7+Docker+Pika+Vue+UniApp构成技术栈。 +目标: +1、基础功能一次开发,以后项目迭代可以随时拉取镜像就可以有支撑服务,无需重复开发。 +2、高性能,高并发,横向可扩展 +3、WEB端,手机端健全,各种技术全面得到实践应用 + + +模块 +一、基础支撑系统 +0、学段表 +1、科目 +2、支持多套章节目录结构 scheme+structure +3、支持知识点目录结构 + +二、资源库 +1、上传资源,上传到支持S3协议的Minio服务或者华为云、阿里云存储 +2、支持文件在线预览功能,需要整合下面的服务 +3、支持系统提供的资源和自己上传的资源,共享、上级等概念暂不支持 + +https://file.kkview.cn/ +https://gitee.com/kekingcn/file-online-preview + +三、题库 +1、录入试题 +暂不支持导入试题 + +2、支持单选,判断,多选,子母题(比如一个题干,多个小题),简答 + +3、支持根据试题级卷,包括手动组卷,自动级卷 + + +四、考试系统 +1、发布考试 +2、在规定的时间内答题 +2、导入考生名单,生成准考证,生成用户名和密码 +3、考生高并发答题,最终系统输出成绩,导出成绩 +4、针对题目的得分率进行分析 + +五、调查问卷系统 +1、发布调查问卷 +2、在规定的时间内答题 +3、针对题目的得分率进行分析 +4、输出问卷结果报告 \ No newline at end of file diff --git a/ds-base/WebRoot/upload/微服务架构教育项目组成3.txt b/ds-base/WebRoot/upload/微服务架构教育项目组成3.txt new file mode 100644 index 00000000..b34a337b --- /dev/null +++ b/ds-base/WebRoot/upload/微服务架构教育项目组成3.txt @@ -0,0 +1,43 @@ +技术上采用微服务架构,支持K8S,JFinal+JDK21+Mysql5.7+Docker+Pika+Vue+UniApp构成技术栈。 +目标: +1、基础功能一次开发,以后项目迭代可以随时拉取镜像就可以有支撑服务,无需重复开发。 +2、高性能,高并发,横向可扩展 +3、WEB端,手机端健全,各种技术全面得到实践应用 + + +模块 +一、基础支撑系统 +0、学段表 +1、科目 +2、支持多套章节目录结构 scheme+structure +3、支持知识点目录结构 + +二、资源库 +1、上传资源,上传到支持S3协议的Minio服务或者华为云、阿里云存储 +2、支持文件在线预览功能,需要整合下面的服务 +3、支持系统提供的资源和自己上传的资源,共享、上级等概念暂不支持 + +https://file.kkview.cn/ +https://gitee.com/kekingcn/file-online-preview + +三、题库 +1、录入试题 +暂不支持导入试题 + +2、支持单选,判断,多选,子母题(比如一个题干,多个小题),简答 + +3、支持根据试题级卷,包括手动组卷,自动级卷 + + +四、考试系统 +1、发布考试 +2、在规定的时间内答题 +2、导入考生名单,生成准考证,生成用户名和密码 +3、考生高并发答题,最终系统输出成绩,导出成绩 +4、针对题目的得分率进行分析 + +五、调查问卷系统 +1、发布调查问卷 +2、在规定的时间内答题 +3、针对题目的得分率进行分析 +4、输出问卷结果报告 \ No newline at end of file diff --git a/ds-base/src/main/java/com/dsideal/base/Global/Controller/GlobalController.java b/ds-base/src/main/java/com/dsideal/base/Global/Controller/GlobalController.java index 4295def2..0fe89eb6 100644 --- a/ds-base/src/main/java/com/dsideal/base/Global/Controller/GlobalController.java +++ b/ds-base/src/main/java/com/dsideal/base/Global/Controller/GlobalController.java @@ -10,9 +10,11 @@ import com.jfinal.ext.interceptor.GET; import com.jfinal.ext.interceptor.POST; import com.jfinal.plugin.activerecord.Page; import com.jfinal.plugin.activerecord.Record; +import com.jfinal.upload.UploadFile; import org.apache.commons.lang.StringUtils; import org.bouncycastle.util.encoders.Base64; +import java.io.File; import java.util.List; @SuppressWarnings("unchecked") @@ -210,4 +212,27 @@ public class GlobalController extends Controller { public void testPost(int a) { renderJson(CommonUtil.returnMessageJson(true, "保存成功!a=" + a)); } + + @Before({POST.class}) + public void testUpload() { + System.out.println(getRequest().getContentType()); + UploadFile uploadFile = getFile("file");//parameterName对应jsp页面中的 + + if (uploadFile != null) { + // 获取文件的原始名称 + String originalFileName = uploadFile.getOriginalFileName(); + // 指定文件保存的路径,可以是相对路径或绝对路径 + String savePath = "c://" + originalFileName; + // 构造 File 对象 + File saveFile = new File(savePath); + // 确保保存路径的目录存在 + if (!saveFile.getParentFile().exists()) { + saveFile.getParentFile().mkdirs(); + } + // 保存文件 + uploadFile.getFile().renameTo(saveFile); + String fileName = uploadFile.getFileName(); + renderJson(CommonUtil.returnMessageJson(true, fileName + "保存成功!")); + } + } } \ No newline at end of file diff --git a/ds-gw/src/main/java/com/dsideal/gw/Handler/RouterHandler.java b/ds-gw/src/main/java/com/dsideal/gw/Handler/RouterHandler.java index bd471799..32532d71 100644 --- a/ds-gw/src/main/java/com/dsideal/gw/Handler/RouterHandler.java +++ b/ds-gw/src/main/java/com/dsideal/gw/Handler/RouterHandler.java @@ -4,6 +4,8 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.dsideal.gw.GwApplication; import com.jfinal.handler.Handler; +import com.jfinal.upload.MultipartRequest; +import com.jfinal.upload.UploadFile; import okhttp3.*; import javax.servlet.http.HttpServletRequest; @@ -11,6 +13,7 @@ import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; import java.io.*; import java.util.Enumeration; +import java.util.List; public class RouterHandler extends Handler { @@ -39,9 +42,12 @@ public class RouterHandler extends Handler { * GET * http://10.10.21.20:8000/dsBase/dm/getDmSchoolProperty * http://10.10.21.20:8000/dsBase/global/getGlobalList?page=1&limit=10 - *
* POST
* http://10.10.21.20:8000/dsBase/global/testPost?a=100
+ * 上传文件
+ * http://10.10.21.20:8000/dsBase/global/testUpload
+ * form-data
+ * upfile --->参数值:选择一个文件 类型:file
*/
//OkHttp的实例,单例模式
@@ -122,70 +128,74 @@ public class RouterHandler extends Handler {
} else {
//路由到哪个微服务
String FORWARD_URL = GwApplication.routeList.get(prefix) + "/" + prefix + "/" + action;
- //处理GET请求
- if (req.getMethod().equals("GET")) {
- //参数:queryString
- Request request;
- if (queryString != null) {
- request = new Request.Builder().url(FORWARD_URL + "?" + queryString).get().build();
- } else {
- request = new Request.Builder().url(FORWARD_URL).get().build();
- }
- try {
- executeRequest(request, res);
- } catch (IOException e) {
- JSONObject jo = new JSONObject();
- jo.put("success", false);
- jo.put("message", "请求失败!" + e);
- renderJson(res, jo);
- }
- }//处理POST请求
- else if (req.getMethod().equals("POST")) {
- RequestBody body = createRequestBody(req);
- Request request;
- if (queryString != null) {
- request = new Request.Builder().url(FORWARD_URL + "?" + queryString).post(body).build();
- } else {
- request = new Request.Builder().url(FORWARD_URL).post(body).build();
- }
+ //上传文件
+ if (req.getContentType().startsWith("multipart/form-data")) {
+ // 指定文件类型
+ MediaType mediaType = MediaType.parse("multipart/form-data");
+
try {
+ MultipartRequest mp = new MultipartRequest(req);
+ List