From 36b85cb41d5039dcd6bf4b22819cc3d7cddb7951 Mon Sep 17 00:00:00 2001 From: qmstyle Date: Tue, 1 Apr 2025 15:53:02 +0800 Subject: [PATCH] =?UTF-8?q?2025=E5=B9=B44=E6=9C=881=E6=97=A515:50:44?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../online/exam/ui/api/ApiUtils.java | 17 ++- .../online/exam/ui/api/form/QuestionForm.java | 24 +++ .../exam/ui/api/model/PaperDataLoad.java | 3 +- .../exam/ui/api/model/ProfessionDataLoad.java | 137 ++++++++++++++++++ .../exam/ui/api/model/QuestionDataLoad.java | 25 +++- .../exam/ui/controller/LoginController.java | 1 + .../exam/ui/controller/MainController.java | 13 +- .../ui/controller/QuestionEditController.java | 84 +++++++++++ .../online/exam/ui/module/QuestionType.java | 44 ++++++ .../online/exam/ui/module/SubjectType.java | 74 ++++++++++ .../exam/ui/service/QuestionService.java | 54 +++++++ .../exam/ui/service/SubjectService.java | 34 +++++ .../online/exam/ui/utils/FxUtils.java | 6 + .../online/exam/ui/utils/HttpUtils.java | 2 + src/main/java/module-info.java | 1 + src/main/resources/fxml/question-edit.fxml | 60 ++++++++ 16 files changed, 565 insertions(+), 14 deletions(-) create mode 100644 src/main/java/com/zhangmeng/online/exam/ui/api/form/QuestionForm.java create mode 100644 src/main/java/com/zhangmeng/online/exam/ui/api/model/ProfessionDataLoad.java create mode 100644 src/main/java/com/zhangmeng/online/exam/ui/controller/QuestionEditController.java create mode 100644 src/main/java/com/zhangmeng/online/exam/ui/module/QuestionType.java create mode 100644 src/main/java/com/zhangmeng/online/exam/ui/module/SubjectType.java create mode 100644 src/main/java/com/zhangmeng/online/exam/ui/service/QuestionService.java create mode 100644 src/main/java/com/zhangmeng/online/exam/ui/service/SubjectService.java create mode 100644 src/main/resources/fxml/question-edit.fxml diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/ApiUtils.java b/src/main/java/com/zhangmeng/online/exam/ui/api/ApiUtils.java index eed5cda..fc8b129 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/api/ApiUtils.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/ApiUtils.java @@ -1,6 +1,7 @@ package com.zhangmeng.online.exam.ui.api; import com.zhangmeng.online.exam.ui.admin.IndexPage; +import com.zhangmeng.online.exam.ui.api.form.QuestionForm; import com.zhangmeng.online.exam.ui.api.form.RoleForm; import com.zhangmeng.online.exam.ui.api.form.UserForm; import com.zhangmeng.online.exam.ui.api.model.*; @@ -12,8 +13,11 @@ import javafx.beans.property.SimpleMapProperty; import javafx.beans.property.SimpleStringProperty; import javafx.scene.control.ContextMenu; import javafx.scene.control.MenuItem; +import javafx.scene.control.TabPane; import javafx.scene.control.TableView; import com.alibaba.fastjson2.*; +import javafx.scene.layout.BorderPane; + import java.util.*; /** @@ -76,6 +80,7 @@ public class ApiUtils { public static DataView getQuestionList() { DataLoad dataLoad = new QuestionDataLoad(); + dataLoad.setForm(new QuestionForm()); return dataLoad.loadData(PAGE_NUM,PAGE_SIZE); } @@ -99,10 +104,16 @@ public class ApiUtils { return dataLoad.loadData(PAGE_NUM,PAGE_SIZE); } + public static DataView getProfessionList() { + DataLoad dataLoad = new ProfessionDataLoad(); + return dataLoad.loadData(PAGE_NUM,PAGE_SIZE); + } + public static Map selectedItem(MenuItem menuItem){ ContextMenu parentPopup = menuItem.getParentPopup(); - IndexPage indexPage = (IndexPage)parentPopup.getStyleableParent(); - DynamicTableComponent center = (DynamicTableComponent)indexPage.getCenter(); + BorderPane indexPage = (BorderPane)parentPopup.getStyleableParent(); + TabPane tabPane = (TabPane)indexPage.getCenter(); + DynamicTableComponent center = (DynamicTableComponent)tabPane.getSelectionModel().getSelectedItem().getContent(); TableView> tableView = center.getTableView(); return tableView.getSelectionModel().getSelectedItem(); } @@ -111,6 +122,8 @@ public class ApiUtils { System.out.println(context); } + + public static class DataView { private List keys; diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/form/QuestionForm.java b/src/main/java/com/zhangmeng/online/exam/ui/api/form/QuestionForm.java new file mode 100644 index 0000000..4b2cae7 --- /dev/null +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/form/QuestionForm.java @@ -0,0 +1,24 @@ +package com.zhangmeng.online.exam.ui.api.form; + +import com.zhangmeng.online.exam.ui.api.form.base.Form; +import javafx.fxml.FXMLLoader; + +import java.io.IOException; + +/** + * @author zm + * @date 2025/4/1 11:35 + * @version: 1.0 + */ +public class QuestionForm extends Form { + + + public QuestionForm() { + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/question-edit.fxml")); + this.getChildren().add(fxmlLoader.load()); + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/model/PaperDataLoad.java b/src/main/java/com/zhangmeng/online/exam/ui/api/model/PaperDataLoad.java index 045f459..8dac96c 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/api/model/PaperDataLoad.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/model/PaperDataLoad.java @@ -19,6 +19,7 @@ import javafx.scene.Parent; import javafx.scene.control.ContextMenu; import javafx.scene.control.MenuItem; import javafx.scene.control.TableView; +import javafx.scene.layout.BorderPane; import javafx.stage.Stage; import java.util.*; @@ -146,7 +147,7 @@ public class PaperDataLoad implements DataLoad { String id = map.get("id").getValue(); // AlertUtils.alert_msg("组卷正在开发中..." + id); ContextMenu parentPopup = group_volumes.getParentPopup(); - IndexPage indexPage = (IndexPage) parentPopup.getStyleableParent(); + BorderPane indexPage = (BorderPane) parentPopup.getStyleableParent(); Stage stage = (Stage) indexPage.getScene().getWindow(); Map context = new HashMap<>(); diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/model/ProfessionDataLoad.java b/src/main/java/com/zhangmeng/online/exam/ui/api/model/ProfessionDataLoad.java new file mode 100644 index 0000000..aef0d42 --- /dev/null +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/model/ProfessionDataLoad.java @@ -0,0 +1,137 @@ +package com.zhangmeng.online.exam.ui.api.model; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.zhangmeng.online.exam.ui.api.ApiUtils; +import com.zhangmeng.online.exam.ui.api.DataLoad; +import com.zhangmeng.online.exam.ui.api.form.UserForm; +import com.zhangmeng.online.exam.ui.utils.AlertUtils; +import com.zhangmeng.online.exam.ui.utils.HttpUtils; +import javafx.beans.property.SimpleStringProperty; +import javafx.scene.Parent; +import javafx.scene.control.MenuItem; +import javafx.stage.Stage; + +import java.util.*; + +/** + * @author zm + * @date 2025/4/1 11:26 + * @version: 1.0 + */ +public class ProfessionDataLoad implements DataLoad { + + private Parent form; + + @Override + public ApiUtils.DataView loadData(Integer pageNum, Integer pageSize) { + Map params = new HashMap<>(); + params.put("pageNum", pageNum.toString()); + params.put("pageSize", pageSize.toString()); + String userListData = HttpUtils.GET(ApiUtils.API_URL + "/profession/list", params); + JSONObject jsonObject = JSON.parseObject(userListData); + JSONArray data = jsonObject.getJSONArray("data"); + int total = jsonObject.getIntValue("total"); + List> professionMapList = new ArrayList<>(); + for (Object datum : data) { + JSONObject user = (JSONObject) datum; + Map userMap = new HashMap<>(); + userMap.put("序号", new SimpleStringProperty(user.getString("id"))); + userMap.put("职业名称", new SimpleStringProperty(user.getString("name"))); + userMap.put("职业名称_name", new SimpleStringProperty(user.getString("name"))); + userMap.put("id", new SimpleStringProperty(user.getString("id"))); + professionMapList.add(userMap); + } + + ApiUtils.DataView dataView = new ApiUtils.DataView(Arrays.asList("序号", "职业名称" ), professionMapList).setDataLoad(this).setPageNum(pageNum).setPageSize(pageSize).setTotal(total); + dataView.setDataLoad(this); + return dataView; + } + + @Override + public void setForm(Parent view) { + this.form = view; + } + + @Override + public Parent getForm() { + return this.form; + } + + @Override + public Map saveForm(Map map) { + String result = HttpUtils.POST(ApiUtils.API_URL + "/profession/save", map); + JSONObject jsonObject = JSON.parseObject(result); + if (jsonObject.getIntValue("code") == 200){ + AlertUtils.alert_msg("保存成功!"); + }else { + AlertUtils.alert_warning("保存失败!"); + } + return null; + } + + @Override + public void deleteData(String id) { + Map map = new HashMap<>(); + map.put("id", id); + String result = HttpUtils.POST(ApiUtils.API_URL + "/profession/delete", map); + JSONObject jsonObject = JSON.parseObject(result); + if (jsonObject.getIntValue("code") == 200){ + AlertUtils.alert_msg("删除成功!"); + }else { + AlertUtils.alert_warning("删除失败!"); + } + } + + @Override + public void editData(String id, Stage stage) { + + UserForm userForm = new UserForm(true); + + Map map = new HashMap<>(); + map.put("id", id); + String result = HttpUtils.GET(ApiUtils.API_URL + "/profession/getProfession", map); + JSONObject jsonObject = JSON.parseObject(result); + JSONObject data = jsonObject.getJSONObject("data"); + String username = data.getString("username"); + userForm.getUsername_field().setText(username); + String email = data.getString("email"); + userForm.getEmail_field().setText(email); + String phone = data.getString("phone"); + userForm.getPhone_field().setText(phone); + String password = data.getString("password"); + userForm.getPassword_field().setText(password); + AlertUtils.alert("编辑用户信息", (Parent) userForm, stage); + } + + @Override + public void updateData(String id, String name, String oldValue, String newValue) { +// System.out.println("修改前:" + oldValue + ",修改后:" + newValue); + + Map map = new HashMap<>(); + map.put("id", id); + map.put("fieldName", name); + map.put("oldValue", oldValue); + map.put("newValue", newValue); + String result = HttpUtils.POST(ApiUtils.API_URL + "/profession/update", map); + JSONObject jsonObject = JSON.parseObject(result); + if (jsonObject.getIntValue("code") == 200){ + AlertUtils.alert_msg("更新成功!"); + }else { + AlertUtils.alert_warning("更新失败!"); + } + + } + + + @Override + public List getContextMenu() { + return null; + } + + @Override + public ApiUtils.DataView searchData(Map searchText, int pageNum, int pageSize) { + return null; + } +} diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/model/QuestionDataLoad.java b/src/main/java/com/zhangmeng/online/exam/ui/api/model/QuestionDataLoad.java index e5d1aa7..b73d801 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/api/model/QuestionDataLoad.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/model/QuestionDataLoad.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.zhangmeng.online.exam.ui.api.ApiUtils; import com.zhangmeng.online.exam.ui.api.DataLoad; +import com.zhangmeng.online.exam.ui.utils.AlertUtils; import com.zhangmeng.online.exam.ui.utils.HttpUtils; import javafx.beans.property.SimpleStringProperty; import javafx.scene.Parent; @@ -21,6 +22,9 @@ import static com.zhangmeng.online.exam.ui.api.ApiUtils.API_URL; * @version: 1.0 */ public class QuestionDataLoad implements DataLoad { + + private Parent form; + @Override public ApiUtils.DataView loadData(Integer pageNum, Integer pageSize) { Map params = new HashMap<>(); @@ -41,8 +45,8 @@ public class QuestionDataLoad implements DataLoad { userMap.put("所属学科", new SimpleStringProperty(permission.getString("subject"))); userMap.put("分值", new SimpleStringProperty(permission.getString("score"))); userMap.put("id", new SimpleStringProperty(permission.getString("id"))); - userMap.put("score", new SimpleStringProperty(permission.getString("score"))); - userMap.put("type", new SimpleStringProperty(permission.getString("type"))); + userMap.put("分值_score", new SimpleStringProperty(permission.getString("score"))); + userMap.put("题目_name", new SimpleStringProperty(permission.getString("name"))); questionMapList.add(userMap); } return new ApiUtils.DataView(Arrays.asList("序号", "题目", "题目类型", "所属学科", "分值"), questionMapList).setDataLoad(this).setPageNum(pageNum).setPageSize(pageSize).setTotal(total); @@ -51,12 +55,12 @@ public class QuestionDataLoad implements DataLoad { @Override public void setForm(Parent view) { - + this.form = view; } @Override public Parent getForm() { - return null; + return this.form; } @Override @@ -76,7 +80,18 @@ public class QuestionDataLoad implements DataLoad { @Override public void updateData(String id, String name, String oldValue, String newValue) { - + Map map = new HashMap<>(); + map.put("id", id); + map.put("fieldName", name); + map.put("oldValue", oldValue); + map.put("newValue", newValue); + String result = HttpUtils.POST(ApiUtils.API_URL + "/question/update", map); + JSONObject jsonObject = JSON.parseObject(result); + if (jsonObject.getIntValue("code") == 200){ + AlertUtils.alert_msg("更新成功!"); + }else { + AlertUtils.alert_warning("更新失败!"); + } } diff --git a/src/main/java/com/zhangmeng/online/exam/ui/controller/LoginController.java b/src/main/java/com/zhangmeng/online/exam/ui/controller/LoginController.java index ee712b7..a06f754 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/controller/LoginController.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/controller/LoginController.java @@ -84,6 +84,7 @@ public class LoginController { if (jsonObject.getIntValue("code") == 2001) { Map data = (Map) jsonObject.get("data"); Object token = data.get("token"); + System.out.println("token:" + token); HttpUtils.USER_INFO.put("token", token); User user = new User(); diff --git a/src/main/java/com/zhangmeng/online/exam/ui/controller/MainController.java b/src/main/java/com/zhangmeng/online/exam/ui/controller/MainController.java index bd710d1..c95bd96 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/controller/MainController.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/controller/MainController.java @@ -130,12 +130,13 @@ public class MainController { // 根据标题加载不同的内容 Node content = switch (menuData.getUrl()) { case "/user/list" -> init_table( ApiUtils.getUserList()); - case "添加用户" -> FXMLLoader.load(getClass().getResource("/fxml/user-edit.fxml")); - case "角色列表" -> FXMLLoader.load(getClass().getResource("/fxml/role-list.fxml")); - case "权限分配" -> FXMLLoader.load(getClass().getResource("/fxml/role-permission.fxml")); - case "基本设置" -> FXMLLoader.load(getClass().getResource("/fxml/setting.fxml")); - case "日志查看" -> FXMLLoader.load(getClass().getResource("/fxml/log.fxml")); - case "公告列表" -> FXMLLoader.load(getClass().getResource("/fxml/notice-list.fxml")); + case "/paper/list" -> init_table(ApiUtils.getExamPaper()); + case "/role/list" -> init_table(ApiUtils.getRoleList()); + case "/question/list" -> init_table(ApiUtils.getQuestionList()); + case "/subject/list" -> init_table(ApiUtils.getSubjectList()); + case "/questionOption/list" -> init_table(ApiUtils.getQuestionOptionList()); + case "/permission/list" -> init_table(ApiUtils.getPermissionList()); + case "/profession/list" -> init_table(ApiUtils.getProfessionList()); case "发布公告" -> FXMLLoader.load(getClass().getResource("/fxml/notice-edit.fxml")); case "在线用户" -> FXMLLoader.load(getClass().getResource("/fxml/monitor-online.fxml")); case "系统日志" -> FXMLLoader.load(getClass().getResource("/fxml/monitor-log.fxml")); diff --git a/src/main/java/com/zhangmeng/online/exam/ui/controller/QuestionEditController.java b/src/main/java/com/zhangmeng/online/exam/ui/controller/QuestionEditController.java new file mode 100644 index 0000000..dad3cec --- /dev/null +++ b/src/main/java/com/zhangmeng/online/exam/ui/controller/QuestionEditController.java @@ -0,0 +1,84 @@ +package com.zhangmeng.online.exam.ui.controller; + +import com.zhangmeng.online.exam.ui.module.QuestionType; +import com.zhangmeng.online.exam.ui.module.SubjectType; +import com.zhangmeng.online.exam.ui.service.QuestionService; +import com.zhangmeng.online.exam.ui.service.SubjectService; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.scene.Parent; +import javafx.scene.control.*; +import javafx.util.Callback; +import javafx.util.StringConverter; + +import java.util.List; + +/** + * @author zm + * @date 2025/4/1 12:00 + * @version: 1.0 + */ +public class QuestionEditController { + + @FXML + public TextField scoreField; + + @FXML + public TextField explanationField; + + @FXML + public ComboBox typeComboBox; + + public ComboBox subjectComboBox; + + @FXML + private TextField questionField; + + @FXML + public void initialize() { + typeComboBox.getItems().addAll(QuestionService.getALLQuestionType()); + typeComboBox.getSelectionModel().selectFirst(); + typeComboBox.setConverter(new StringConverter() { + @Override + public String toString(QuestionType object) { + return object.getDesc(); + } + + @Override + public QuestionType fromString(String string) { + return null; + } + }); + + + subjectComboBox.getItems().addAll(SubjectService.getALLSubjectType()); + subjectComboBox.getSelectionModel().selectFirst(); + subjectComboBox.setConverter(new StringConverter() { + @Override + public String toString(SubjectType object) { + return object.getName(); + } + + @Override + public SubjectType fromString(String string) { + return null; + } + }); + } + + public void handleSave(ActionEvent actionEvent) { + QuestionType questionType = typeComboBox.getSelectionModel().getSelectedItem(); + SubjectType subjectType = subjectComboBox.getSelectionModel().getSelectedItem(); + String question = questionField.getText(); + String score = scoreField.getText(); + String explanation = explanationField.getText(); + QuestionService.saveQuestion(questionType.getType(), subjectType.getId(), question, score, explanation); + + + + } + + public void handleCancel(ActionEvent actionEvent) { + + } +} diff --git a/src/main/java/com/zhangmeng/online/exam/ui/module/QuestionType.java b/src/main/java/com/zhangmeng/online/exam/ui/module/QuestionType.java new file mode 100644 index 0000000..946ed39 --- /dev/null +++ b/src/main/java/com/zhangmeng/online/exam/ui/module/QuestionType.java @@ -0,0 +1,44 @@ +package com.zhangmeng.online.exam.ui.module; + +/** + * @author zm + * @date 2025/4/1 12:07 + * @version: 1.0 + */ +public class QuestionType { + + private String type; + private String desc; + private int index; + + public QuestionType(String type, String desc, int index) { + this.type = type; + this.desc = desc; + this.index = index; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + +} diff --git a/src/main/java/com/zhangmeng/online/exam/ui/module/SubjectType.java b/src/main/java/com/zhangmeng/online/exam/ui/module/SubjectType.java new file mode 100644 index 0000000..284659d --- /dev/null +++ b/src/main/java/com/zhangmeng/online/exam/ui/module/SubjectType.java @@ -0,0 +1,74 @@ +package com.zhangmeng.online.exam.ui.module; + +/** + * @author zm + * @date 2025/4/1 12:12 + * @version: 1.0 + */ +public class SubjectType { + + /** + * map.put("index", subject.getId()); + * map.put("name", subject.getName()); + * map.put("code", subject.getCode()); + * map.put("desc",subject.getDescription()); + * map.put("profession",subject.getProfession().getName()); + */ + + private Long id; + private String name; + private String code; + private String desc; + private String profession; + + public SubjectType() { + } + + public SubjectType(Long id, String name, String code, String desc, String profession) { + this.id = id; + this.name = name; + this.code = code; + this.desc = desc; + this.profession = profession; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getProfession() { + return profession; + } + + public void setProfession(String profession) { + this.profession = profession; + } +} diff --git a/src/main/java/com/zhangmeng/online/exam/ui/service/QuestionService.java b/src/main/java/com/zhangmeng/online/exam/ui/service/QuestionService.java new file mode 100644 index 0000000..51a3624 --- /dev/null +++ b/src/main/java/com/zhangmeng/online/exam/ui/service/QuestionService.java @@ -0,0 +1,54 @@ +package com.zhangmeng.online.exam.ui.service; + +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.zhangmeng.online.exam.ui.api.ApiUtils; +import com.zhangmeng.online.exam.ui.module.QuestionType; +import com.zhangmeng.online.exam.ui.utils.AlertUtils; +import com.zhangmeng.online.exam.ui.utils.HttpUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author zm + * @date 2025/4/1 12:04 + * @version: 1.0 + */ +public class QuestionService { + + + public static List getALLQuestionType() { + Map params = new HashMap<>(); + params.put("token", UserService.getCurrentUser().getToken()); +// params.put("token", HttpUtils.Token); + String response = HttpUtils.GET(ApiUtils.API_URL + "/question/getAllQuestionType", params); + JSONObject jsonObject = JSONObject.parseObject(response); + List questionTypes = new ArrayList<>(); + if (jsonObject.getIntValue("code") == 200) { + questionTypes = JSONArray.parseArray(jsonObject.getString("data"), QuestionType.class); + } + return questionTypes; + } + + + public static void saveQuestion(String type, Long id, String question, String score, String explanation) { + Map params = new HashMap<>(); + params.put("token", UserService.getCurrentUser().getToken()); + params.put("type", type); + params.put("id", id); + params.put("question", question); + params.put("score", score); + params.put("explanation", explanation); + String response = HttpUtils.POST(ApiUtils.API_URL + "/question/saveQuestion", params); + JSONObject jsonObject = JSONObject.parseObject(response); + if (jsonObject.getIntValue("code") == 200) { + AlertUtils.alert_msg("保存成功"); + } else { + AlertUtils.alert_warning("保存失败"); + } + } + +} diff --git a/src/main/java/com/zhangmeng/online/exam/ui/service/SubjectService.java b/src/main/java/com/zhangmeng/online/exam/ui/service/SubjectService.java new file mode 100644 index 0000000..98772e5 --- /dev/null +++ b/src/main/java/com/zhangmeng/online/exam/ui/service/SubjectService.java @@ -0,0 +1,34 @@ +package com.zhangmeng.online.exam.ui.service; + +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.zhangmeng.online.exam.ui.api.ApiUtils; +import com.zhangmeng.online.exam.ui.module.QuestionType; +import com.zhangmeng.online.exam.ui.module.SubjectType; +import com.zhangmeng.online.exam.ui.utils.HttpUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author zm + * @date 2025/4/1 14:37 + * @version: 1.0 + */ +public class SubjectService { + + public static List getALLSubjectType() { + Map params = new HashMap<>(); + params.put("token", UserService.getCurrentUser().getToken()); +// params.put("token", HttpUtils.Token); + String response = HttpUtils.GET(ApiUtils.API_URL + "/subject/getALLSubjectType", params); + JSONObject jsonObject = JSONObject.parseObject(response); + List questionTypes = new ArrayList<>(); + if (jsonObject.getIntValue("code") == 200) { + questionTypes = JSONArray.parseArray(jsonObject.getString("data"), SubjectType.class); + } + return questionTypes; + } +} diff --git a/src/main/java/com/zhangmeng/online/exam/ui/utils/FxUtils.java b/src/main/java/com/zhangmeng/online/exam/ui/utils/FxUtils.java index 5bb4cbd..ac70dc9 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/utils/FxUtils.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/utils/FxUtils.java @@ -1,5 +1,6 @@ package com.zhangmeng.online.exam.ui.utils; +import com.zhangmeng.online.exam.ui.api.form.QuestionForm; import com.zhangmeng.online.exam.ui.api.form.RoleForm; import com.zhangmeng.online.exam.ui.api.form.UserForm; import com.zhangmeng.online.exam.ui.api.form.base.Form; @@ -22,6 +23,7 @@ public class FxUtils { public final static double DEFAULT_HEIGHT = 720; public static void alert(String title, Parent node, Stage primaryStage) { + Form form = (Form) node; if (form instanceof UserForm) { form = new UserForm(true); @@ -30,6 +32,10 @@ public class FxUtils { form = new RoleForm(); } + if (form instanceof QuestionForm){ + form = new QuestionForm(); + } + Scene scene = new Scene(form); Stage dialogStage = new Stage(); dialogStage.setTitle(title); diff --git a/src/main/java/com/zhangmeng/online/exam/ui/utils/HttpUtils.java b/src/main/java/com/zhangmeng/online/exam/ui/utils/HttpUtils.java index 3dae62b..7b6efec 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/utils/HttpUtils.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/utils/HttpUtils.java @@ -20,6 +20,8 @@ import java.util.Map; public class HttpUtils { + public static final String Token = "eyJhbGciOiJIUzI1NiJ9.eyJMT0dJTl9VU0VSX0tFWSI6ImUwZWI0MDk2LTRjYzctNDAzOC1iZWI4LTY4OWEzMzZjN2FiNSJ9.BcM1VxIBXDgpu1fzSSRGFPeaOXEzdPJQPr8Mh8PL-UU"; + public static Map USER_INFO = new HashMap<>(); public static T GET(String url, Class clazz) { diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 6e08847..7968f0c 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -12,4 +12,5 @@ module com.zhangmeng.onlineexamui { opens com.zhangmeng.online.exam.ui.controller to javafx.fxml; exports com.zhangmeng.online.exam.ui.controller; + exports com.zhangmeng.online.exam.ui.module; } \ No newline at end of file diff --git a/src/main/resources/fxml/question-edit.fxml b/src/main/resources/fxml/question-edit.fxml new file mode 100644 index 0000000..4c64334 --- /dev/null +++ b/src/main/resources/fxml/question-edit.fxml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +