main
黄海 10 months ago
parent 80cd1bc59d
commit 33d1b6266d

@ -0,0 +1,43 @@
技术上采用微服务架构支持K8SJFinal+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、输出问卷结果报告

@ -0,0 +1,43 @@
技术上采用微服务架构支持K8SJFinal+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、输出问卷结果报告

@ -0,0 +1,43 @@
技术上采用微服务架构支持K8SJFinal+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、输出问卷结果报告

@ -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页面中的<input name="对应这个名字"/>
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 + "保存成功!"));
}
}
}

@ -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
* <p>
* 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<UploadFile> files = mp.getFiles();
if (files.isEmpty()) {
JSONObject jo = new JSONObject();
jo.put("success", false);
jo.put("message", "没有上传文件!");
renderJson(res, jo);
isHandled[0] = true;//停止filter
return;
}
UploadFile fu = files.getFirst();
// 获取文件流
RequestBody requestBody = RequestBody.create(fu.getFile(), mediaType);
// 构建MultipartBody
MultipartBody body = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", fu.getFileName(), requestBody)
.build();
// 构建Request
Request request = new Request.Builder()
.url(FORWARD_URL)
.post(body)
.build();
executeRequest(request, res);
} catch (IOException e) {
} catch (Exception e) {
JSONObject jo = new JSONObject();
jo.put("success", false);
jo.put("message", "请求失败!" + e);
renderJson(res, jo);
}
} else //上传文件
if (req.getContentType().startsWith("multipart/form-data")) {
// 指定文件类型
MediaType mediaType = MediaType.parse("multipart/form-data");
} else
//处理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();
}
try {
// 获取上传的文件
Part filePart = req.getPart("file");
if (filePart == null) {
res.setStatus(HttpServletResponse.SC_BAD_REQUEST);
res.getWriter().write("No file uploaded");
//停止filter
isHandled[0] = true;
return;
}
// 获取文件流
RequestBody requestBody = RequestBody.create(convertPartToByteArray(filePart), mediaType, (int) filePart.getSize());
// 构建MultipartBody
MultipartBody body = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", filePart.getSubmittedFileName(), requestBody)
.build();
// 构建Request
Request request = new Request.Builder()
.url(FORWARD_URL)
.post(body)
.build();
executeRequest(request, res);
} catch (Exception e) {
} catch (IOException e) {
JSONObject jo = new JSONObject();
jo.put("success", false);
jo.put("message", "请求失败!" + e);

@ -0,0 +1,43 @@
技术上采用微服务架构支持K8SJFinal+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、输出问卷结果报告

@ -0,0 +1,43 @@
技术上采用微服务架构支持K8SJFinal+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、输出问卷结果报告

@ -0,0 +1,43 @@
技术上采用微服务架构支持K8SJFinal+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、输出问卷结果报告

@ -0,0 +1,43 @@
技术上采用微服务架构支持K8SJFinal+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、输出问卷结果报告

@ -0,0 +1,43 @@
技术上采用微服务架构支持K8SJFinal+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、输出问卷结果报告
Loading…
Cancel
Save