From 474006abd5c38379bdb75272f6fc8b141b01df9f Mon Sep 17 00:00:00 2001 From: qmstyle Date: Wed, 9 Apr 2025 18:19:13 +0800 Subject: [PATCH] =?UTF-8?q?2025=E5=B9=B44=E6=9C=889=E6=97=A518:19:04?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../online/exam/ui/api/ApiUtils.java | 6 +- .../exam/ui/api/form/PermissionForm.java | 37 +++++++ .../exam/ui/api/model/PermissionDataLoad.java | 7 +- .../controller/PermissionEditController.java | 104 ++++++++++++++++++ .../online/exam/ui/module/Permission.java | 16 ++- .../exam/ui/service/PermissionService.java | 84 ++++++++++++++ .../online/exam/ui/utils/FxUtils.java | 9 +- src/main/resources/fxml/permission-edit.fxml | 42 +++++++ src/main/resources/fxml/user_form.fxml | 22 ---- 9 files changed, 294 insertions(+), 33 deletions(-) create mode 100644 src/main/java/com/zhangmeng/online/exam/ui/api/form/PermissionForm.java create mode 100644 src/main/java/com/zhangmeng/online/exam/ui/controller/PermissionEditController.java create mode 100644 src/main/java/com/zhangmeng/online/exam/ui/service/PermissionService.java create mode 100644 src/main/resources/fxml/permission-edit.fxml delete mode 100644 src/main/resources/fxml/user_form.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 dc7ed0d..a211920 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,10 +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.PaperForm; -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.*; import com.zhangmeng.online.exam.ui.api.model.*; import com.zhangmeng.online.exam.ui.components.DynamicTableComponent; import com.zhangmeng.online.exam.ui.components.callBack.DynamicTableComponentCallBack; @@ -77,6 +74,7 @@ public class ApiUtils { public static DataView getPermissionList() { DataLoad dataLoad = new PermissionDataLoad(); + dataLoad.setForm(new PermissionForm()); return dataLoad.loadData(PAGE_NUM,PAGE_SIZE); } diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/form/PermissionForm.java b/src/main/java/com/zhangmeng/online/exam/ui/api/form/PermissionForm.java new file mode 100644 index 0000000..18c906a --- /dev/null +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/form/PermissionForm.java @@ -0,0 +1,37 @@ +package com.zhangmeng.online.exam.ui.api.form; + +import com.zhangmeng.online.exam.ui.api.form.base.Form; +import com.zhangmeng.online.exam.ui.controller.PermissionEditController; +import com.zhangmeng.online.exam.ui.controller.UserEditController; +import javafx.fxml.FXMLLoader; + +import java.io.IOException; + +/** + * @author zm + * @date 2025/4/8 12:22 + * @version: 1.0 + */ +public class PermissionForm extends Form { + private PermissionEditController controller; + + public PermissionForm() { + + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/permission-edit.fxml")); + this.getChildren().add(fxmlLoader.load()); + this.controller = fxmlLoader.getController(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + + public PermissionEditController getController() { + return controller; + } + + public void setController(PermissionEditController controller) { + this.controller = controller; + } +} diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/model/PermissionDataLoad.java b/src/main/java/com/zhangmeng/online/exam/ui/api/model/PermissionDataLoad.java index 984ccd0..5783ddc 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/api/model/PermissionDataLoad.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/model/PermissionDataLoad.java @@ -21,6 +21,9 @@ import static com.zhangmeng.online.exam.ui.api.ApiUtils.API_URL; * @version: 1.0 */ public class PermissionDataLoad implements DataLoad { + + private Parent form; + @Override public ApiUtils.DataView loadData(Integer pageNum, Integer pageSize) { Map params = new HashMap<>(); @@ -46,12 +49,12 @@ public class PermissionDataLoad implements DataLoad { @Override public void setForm(Parent view) { - + this.form = view; } @Override public Parent getForm() { - return null; + return this.form; } @Override diff --git a/src/main/java/com/zhangmeng/online/exam/ui/controller/PermissionEditController.java b/src/main/java/com/zhangmeng/online/exam/ui/controller/PermissionEditController.java new file mode 100644 index 0000000..56b1982 --- /dev/null +++ b/src/main/java/com/zhangmeng/online/exam/ui/controller/PermissionEditController.java @@ -0,0 +1,104 @@ +package com.zhangmeng.online.exam.ui.controller; + +import com.zhangmeng.online.exam.ui.module.Permission; +import com.zhangmeng.online.exam.ui.module.SubjectType; +import com.zhangmeng.online.exam.ui.service.SubjectService; +import com.zhangmeng.online.exam.ui.service.UserService; +import javafx.collections.ObservableList; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.scene.control.ComboBox; +import javafx.scene.control.TextField; +import javafx.stage.Stage; +import javafx.util.StringConverter; +import com.zhangmeng.online.exam.ui.service.PermissionService; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author zm + * @date 2025/4/8 14:07 + * @version: 1.0 + */ +public class PermissionEditController { + + @FXML + public TextField rolenameField; + + @FXML + public TextField descriptionField; + + @FXML + public TextField urlField; + + @FXML + public ComboBox permissionComboBox; + + private Permission editPermission; + + @FXML + public void initialize() { + + permissionComboBox.getItems().addAll(PermissionService.getALLPermissions()); + //permissionComboBox.getSelectionModel().selectFirst(); + permissionComboBox.setConverter(new StringConverter() { + @Override + public String toString(Permission object) { + if (object == null){ + return null; + } + return object.getName(); + } + + @Override + public Permission fromString(String string) { + return null; + } + }); + } + + public void handleSave(ActionEvent actionEvent) { + Permission permission = permissionComboBox.getSelectionModel().getSelectedItem(); + + Map params = new HashMap<>(); + params.put("id", editPermission == null? "" : editPermission.getId()); + params.put("name", rolenameField.getText()); + params.put("description", descriptionField.getText()); + params.put("url", urlField.getText()); + params.put("parent_id",permission == null? "" : permission.getId()); + params.put("token", UserService.getCurrentUser().getToken()); + + boolean flag = false; + if (editPermission == null){ + flag = true; + } + + PermissionService.savePermission(params,flag); + closeDialog(); + } + + public void setEditPermission(Permission editPermission) { + this.editPermission = editPermission; + rolenameField.setText(editPermission.getName()); + descriptionField.setText(editPermission.getDescription()); + urlField.setText(editPermission.getUrl()); + ObservableList items = permissionComboBox.getItems(); + for (Permission permission : items) { + if (permission.getId() == editPermission.getParentId()){ + permissionComboBox.getSelectionModel().select(permission); + break; + } + } + } + + @FXML + public void handleCancel() { + closeDialog(); + } + + private void closeDialog() { + Stage stage = (Stage) permissionComboBox.getScene().getWindow(); + stage.close(); + } +} diff --git a/src/main/java/com/zhangmeng/online/exam/ui/module/Permission.java b/src/main/java/com/zhangmeng/online/exam/ui/module/Permission.java index f959fd9..0756bc8 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/module/Permission.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/module/Permission.java @@ -11,6 +11,9 @@ public class Permission { private int parentId; // 父权限ID private String url; // 资源路径 private int sort; // 排序号 + + private String description; // 描述 + private List children = new ArrayList<>(); public Permission(int id, String code, String name, String type, int parentId, String url, int sort) { @@ -23,6 +26,9 @@ public class Permission { this.sort = sort; } + public Permission() { + } + // Getters and Setters public int getId() { return id; @@ -87,4 +93,12 @@ public class Permission { public void setChildren(List children) { this.children = children; } -} \ No newline at end of file + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } +} \ No newline at end of file diff --git a/src/main/java/com/zhangmeng/online/exam/ui/service/PermissionService.java b/src/main/java/com/zhangmeng/online/exam/ui/service/PermissionService.java new file mode 100644 index 0000000..011c2c0 --- /dev/null +++ b/src/main/java/com/zhangmeng/online/exam/ui/service/PermissionService.java @@ -0,0 +1,84 @@ +package com.zhangmeng.online.exam.ui.service; + +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.module.Permission; +import com.zhangmeng.online.exam.ui.module.Role; +import com.zhangmeng.online.exam.ui.utils.AlertUtils; +import com.zhangmeng.online.exam.ui.utils.FxUtils; +import com.zhangmeng.online.exam.ui.utils.HttpUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.zhangmeng.online.exam.ui.api.ApiUtils.API_URL; +import static com.zhangmeng.online.exam.ui.utils.FxUtils.Permission_DynamicTableComponent; +import static com.zhangmeng.online.exam.ui.utils.FxUtils.User_DynamicTableComponent; + +/** + * @author zm + * @date 2025/4/8 14:23 + * @version: 1.0 + */ +public class PermissionService { + + + public static List getALLPermissions() { + + + Map params = new HashMap<>(); + params.put("pageNum", ApiUtils.PAGE_NUM); + params.put("pageSize", ApiUtils.PAGE_SIZE); + params.put("isTop", true); + + String userListData = HttpUtils.GET(API_URL + "/permission/list",params); + JSONObject jsonObject = JSON.parseObject(userListData); + JSONArray data = jsonObject.getJSONArray("data"); + Integer total = jsonObject.getInteger("total"); + List roles = new ArrayList<>(); + for (Object datum : data) { + JSONObject permissionmap = (JSONObject) datum; + + String id = permissionmap.getString("id"); + String name = permissionmap.getString("name"); + String desc = permissionmap.getString("desc"); + String url = permissionmap.getString("url"); + String parentId = permissionmap.getString("parentId"); + String sort = permissionmap.getString("sort"); + + Permission permission = new Permission(); + permission.setId(Integer.parseInt(id)); + permission.setName(name); + permission.setUrl(url); + if (sort != null){ + permission.setSort(Integer.parseInt(sort)); + } + permission.setParentId(Integer.parseInt(parentId)); + roles.add(permission); + } + + return roles; + + + } + + public static void savePermission(Map params,boolean isEdit) { + String result = HttpUtils.POST(ApiUtils.API_URL + "/permission/save", params); + JSONObject jsonObject = JSON.parseObject(result); + if (jsonObject.getIntValue("code") == 200){ + if (!isEdit){ + AlertUtils.alert_msg("保存成功!"); + FxUtils.FX_BEANS.get(Permission_DynamicTableComponent).flushData(); + }else { + AlertUtils.alert_msg("更新成功!"); + FxUtils.FX_BEANS.get(Permission_DynamicTableComponent).flushData(); + } + }else { + AlertUtils.alert_warning("保存失败!"); + } + } +} 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 1fe3445..d911457 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,9 +1,6 @@ package com.zhangmeng.online.exam.ui.utils; -import com.zhangmeng.online.exam.ui.api.form.PaperForm; -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.*; import com.zhangmeng.online.exam.ui.api.form.base.Form; import com.zhangmeng.online.exam.ui.components.DynamicTableComponent; import javafx.fxml.FXMLLoader; @@ -81,6 +78,10 @@ public class FxUtils { form = new PaperForm(); } + if (form instanceof PermissionForm){ + form = new PermissionForm(); + } + Scene scene = null; if (!isEdit) { scene = new Scene(form); diff --git a/src/main/resources/fxml/permission-edit.fxml b/src/main/resources/fxml/permission-edit.fxml new file mode 100644 index 0000000..f78ee6e --- /dev/null +++ b/src/main/resources/fxml/permission-edit.fxml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + +