From 82d07d97089bfe91a369d7bddd4ec09245e45923 Mon Sep 17 00:00:00 2001
From: zzw <228544128@qq.com>
Date: 星期三, 07 十月 2026 12:44:35 +0800
Subject: [PATCH] feat: show user extension attributes in list

---
 emergency-repair-server/src/main/java/com/emergencyrepair/system/controller/SystemController.java |  182 ++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 152 insertions(+), 30 deletions(-)

diff --git a/emergency-repair-server/src/main/java/com/emergencyrepair/system/controller/SystemController.java b/emergency-repair-server/src/main/java/com/emergencyrepair/system/controller/SystemController.java
index 2f96559..2f1e564 100644
--- a/emergency-repair-server/src/main/java/com/emergencyrepair/system/controller/SystemController.java
+++ b/emergency-repair-server/src/main/java/com/emergencyrepair/system/controller/SystemController.java
@@ -1,13 +1,16 @@
 package com.emergencyrepair.system.controller;
 
 import com.emergencyrepair.business.dto.Requests;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.emergencyrepair.business.entity.BaseEquipment;
-import com.emergencyrepair.business.entity.Contractor;
 import com.emergencyrepair.business.entity.EngineeringMajor;
 import com.emergencyrepair.business.entity.ProductNode;
 import com.emergencyrepair.business.entity.TeamMajor;
 import com.emergencyrepair.common.Result;
 import com.emergencyrepair.system.entity.SysMenu;
+import com.emergencyrepair.system.entity.SysErrorLog;
+import com.emergencyrepair.system.entity.SysLoginLog;
+import com.emergencyrepair.system.entity.SysOperationLog;
 import com.emergencyrepair.system.entity.SysRole;
 import com.emergencyrepair.system.service.SystemService;
 import lombok.RequiredArgsConstructor;
@@ -19,6 +22,7 @@
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
@@ -31,13 +35,119 @@
     private final SystemService systemService;
 
     @GetMapping("/menu/nav")
-    public Result<List<SysMenu>> nav() {
-        return Result.ok(systemService.menuTree());
+    public Result<List<SysMenu>> nav(@RequestHeader(value = "X-Username", required = false) String username) {
+        return Result.ok(systemService.menuTreeForUser(username));
     }
 
     @GetMapping("/menu/list")
     public Result<List<SysMenu>> menuList() {
         return Result.ok(systemService.listMenus());
+    }
+
+    @GetMapping("/menu/tree")
+    public Result<List<SysMenu>> menuTreeWithButtons() {
+        return Result.ok(systemService.menuTreeWithButtons());
+    }
+
+    @GetMapping("/menu/buttons")
+    public Result<Map<String, Object>> menuButtons(@RequestParam Long menuId) {
+        return Result.ok(systemService.menuButtons(menuId));
+    }
+
+    @PostMapping("/menu/buttons")
+    public Result<Void> syncMenuButtons(@RequestBody Requests.ButtonSyncRequest request) {
+        systemService.syncMenuButtons(request.getMenuId(), request.getCodes());
+        return Result.ok();
+    }
+
+    @GetMapping("/users")
+    public Result<Map<String, Object>> users(@RequestParam(required = false) String keyword,
+                                            @RequestParam(required = false) Long deptId,
+                                            @RequestParam(required = false) Long roleId,
+                                            @RequestParam(defaultValue = "1") int current,
+                                            @RequestParam(defaultValue = "20") int size) {
+        return Result.ok(systemService.userPage(keyword, deptId, roleId, current, size));
+    }
+
+    @GetMapping("/users/{userId}/roles")
+    public Result<List<String>> userRoles(@PathVariable Long userId) {
+        return Result.ok(systemService.userRoleIds(userId));
+    }
+
+    @PutMapping("/users/{userId}/roles")
+    public Result<Void> saveUserRoles(@PathVariable Long userId, @RequestBody Requests.UserRoleRequest request) {
+        systemService.saveUserRoles(userId, request.getRoleIds());
+        return Result.ok();
+    }
+
+    @GetMapping("/users/{userId}/ext")
+    public Result<Map<String, Object>> userExt(@PathVariable Long userId) {
+        return Result.ok(systemService.userExt(userId));
+    }
+
+    @PutMapping("/users/{userId}/ext")
+    public Result<Void> saveUserExt(@PathVariable Long userId, @RequestBody Requests.UserExtRequest request) {
+        systemService.saveUserExt(userId, request.getEngineeringMajor(), request.getTeamMajor(), request.getResponsibleXNo());
+        return Result.ok();
+    }
+
+    @PutMapping("/users/roles/batch")
+    public Result<Void> saveBatchUserRoles(@RequestBody Requests.BatchUserRoleRequest request) {
+        systemService.saveUserRolesBatch(request.getUserIds(), request.getRoleIds(), request.getMode());
+        return Result.ok();
+    }
+
+    @GetMapping("/depts")
+    public Result<List<Map<String, Object>>> depts() {
+        return Result.ok(systemService.depts());
+    }
+
+    @GetMapping("/depts/{deptId}/ext")
+    public Result<Map<String, Object>> deptExt(@PathVariable Long deptId) {
+        return Result.ok(systemService.deptExt(deptId));
+    }
+
+    @PutMapping("/depts/{deptId}/ext")
+    public Result<Void> saveDeptExt(@PathVariable Long deptId, @RequestBody Requests.DeptExtRequest request) {
+        systemService.saveDeptExt(deptId, request.getResponsibleXNo());
+        return Result.ok();
+    }
+
+    @GetMapping("/login-logs")
+    public Result<Page<SysLoginLog>> loginLogs(@RequestParam(defaultValue = "1") int current,
+                                                @RequestParam(defaultValue = "20") int size,
+                                                @RequestParam(required = false) String keyword,
+                                                @RequestParam(required = false) String status,
+                                                @RequestParam(required = false) String startDate,
+                                                @RequestParam(required = false) String endDate) {
+        return Result.ok(systemService.loginLogPage(current, size, keyword, status, startDate, endDate));
+    }
+
+    @GetMapping("/operation-logs")
+    public Result<Page<SysOperationLog>> operationLogs(@RequestParam(defaultValue = "1") int current,
+                                                    @RequestParam(defaultValue = "20") int size,
+                                                    @RequestParam(required = false) String keyword,
+                                                    @RequestParam(required = false) String module,
+                                                    @RequestParam(required = false) String operationType,
+                                                    @RequestParam(required = false) String startDate,
+                                                    @RequestParam(required = false) String endDate) {
+        return Result.ok(systemService.operationLogPage(current, size, keyword, module, operationType, startDate, endDate));
+    }
+
+    @GetMapping("/error-logs")
+    public Result<Page<SysErrorLog>> errorLogs(@RequestParam(defaultValue = "1") int current,
+                                              @RequestParam(defaultValue = "20") int size,
+                                              @RequestParam(required = false) String keyword,
+                                              @RequestParam(required = false) String module,
+                                              @RequestParam(required = false) String exceptionType,
+                                              @RequestParam(required = false) String startDate,
+                                              @RequestParam(required = false) String endDate) {
+        return Result.ok(systemService.errorLogPage(current, size, keyword, module, exceptionType, startDate, endDate));
+    }
+
+    @GetMapping("/error-logs/{id}")
+    public Result<SysErrorLog> errorLog(@PathVariable Long id) {
+        return Result.ok(systemService.errorLog(id));
     }
 
     @PostMapping("/menu")
@@ -81,27 +191,20 @@
         return Result.ok();
     }
 
-    @GetMapping("/contractors")
-    public Result<List<Contractor>> contractors() {
-        return Result.ok(systemService.listContractors());
+    @GetMapping("/roles/{roleId}/users")
+    public Result<Map<String, Object>> roleUsers(@PathVariable Long roleId) {
+        return Result.ok(systemService.roleUsers(roleId));
     }
 
-    @PostMapping("/contractors")
-    public Result<Contractor> createContractor(@RequestBody Contractor contractor) {
-        contractor.setId(null);
-        return Result.ok(systemService.saveContractor(contractor));
-    }
-
-    @PutMapping("/contractors/{id}")
-    public Result<Contractor> updateContractor(@PathVariable Long id, @RequestBody Contractor contractor) {
-        contractor.setId(id);
-        return Result.ok(systemService.saveContractor(contractor));
-    }
-
-    @DeleteMapping("/contractors/{id}")
-    public Result<Void> deleteContractor(@PathVariable Long id) {
-        systemService.deleteContractor(id);
+    @PutMapping("/roles/{roleId}/users")
+    public Result<Void> saveRoleUsers(@PathVariable Long roleId, @RequestBody Requests.RoleUserRequest request) {
+        systemService.saveRoleUsers(roleId, request.getUserIds());
         return Result.ok();
+    }
+
+    @GetMapping("/contractors")
+    public Result<List<Map<String, Object>>> contractors() {
+        return Result.ok(systemService.listContractors());
     }
 
     @GetMapping("/engineering-majors")
@@ -155,6 +258,31 @@
         return Result.ok(systemService.tree(type));
     }
 
+    @GetMapping("/tree/product/roots")
+    public Result<List<Map<String, Object>>> productTreeRoots() {
+        return Result.ok(systemService.productTreeRoots());
+    }
+
+    @GetMapping("/tree/product/children")
+    public Result<List<Map<String, Object>>> productTreeChildren(@RequestParam Long parentId) {
+        return Result.ok(systemService.productTreeChildren(parentId));
+    }
+
+    @GetMapping("/tree/product/side-roots")
+    public Result<List<Map<String, Object>>> productTreeForXNo(@RequestParam(required = false) String xNo) {
+        return Result.ok(systemService.productTreeForXNo(xNo));
+    }
+
+    @GetMapping("/tree/product/x-numbers")
+    public Result<List<String>> productXNumbers() {
+        return Result.ok(systemService.productXNumbers());
+    }
+
+    @GetMapping("/tree/product/selected")
+    public Result<List<Map<String, Object>>> selectedProductNodes(@RequestParam List<Long> ids) {
+        return Result.ok(systemService.selectedProductNodes(ids));
+    }
+
     @PostMapping("/tree/product")
     public Result<ProductNode> createProduct(@RequestBody ProductNode node) {
         node.setId(null);
@@ -192,22 +320,16 @@
     }
 
     @GetMapping("/menu-permissions")
-    public Result<Map<String, Object>> menuPermissions(@RequestParam(required = false) Long roleId,
-                                                       @RequestParam(required = false) Long tenantId) {
-        return Result.ok(systemService.menuPermissions(roleId, tenantId));
+    public Result<Map<String, Object>> menuPermissions(@RequestParam(required = false) Long roleId) {
+        return Result.ok(systemService.menuPermissions(roleId));
     }
 
     @PostMapping("/menu-permissions")
     public Result<Void> saveMenuPermissions(@RequestBody Requests.MenuPermissionRequest request) {
-        systemService.saveMenuPermissions(request.getRoleId(), request.getTenantId(),
-                request.getRoleMenuIds(), request.getTenantMenuIds());
+        systemService.saveMenuPermissions(request.getRoleId(), request.getRoleMenuIds());
         return Result.ok();
     }
 
-    @GetMapping("/tenants")
-    public Result<List<Map<String, Object>>> tenants() {
-        return Result.ok(systemService.tenants());
-    }
 
     @GetMapping("/three-member")
     public Result<Map<String, Object>> threeMember() {

--
Gitblit v1.9.1