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.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; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; 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; import java.util.Map; @RestController @RequestMapping("/api/system") @RequiredArgsConstructor public class SystemController { private final SystemService systemService; @GetMapping("/menu/nav") public Result> nav(@RequestHeader(value = "X-Username", required = false) String username) { return Result.ok(systemService.menuTreeForUser(username)); } @GetMapping("/menu/list") public Result> menuList() { return Result.ok(systemService.listMenus()); } @GetMapping("/menu/tree") public Result> menuTreeWithButtons() { return Result.ok(systemService.menuTreeWithButtons()); } @GetMapping("/menu/buttons") public Result> menuButtons(@RequestParam Long menuId) { return Result.ok(systemService.menuButtons(menuId)); } @PostMapping("/menu/buttons") public Result syncMenuButtons(@RequestBody Requests.ButtonSyncRequest request) { systemService.syncMenuButtons(request.getMenuId(), request.getCodes()); return Result.ok(); } @GetMapping("/users") public Result> 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> userRoles(@PathVariable Long userId) { return Result.ok(systemService.userRoleIds(userId)); } @PutMapping("/users/{userId}/roles") public Result saveUserRoles(@PathVariable Long userId, @RequestBody Requests.UserRoleRequest request) { systemService.saveUserRoles(userId, request.getRoleIds()); return Result.ok(); } @PutMapping("/users/roles/batch") public Result saveBatchUserRoles(@RequestBody Requests.BatchUserRoleRequest request) { systemService.saveUserRolesBatch(request.getUserIds(), request.getRoleIds(), request.getMode()); return Result.ok(); } @GetMapping("/depts") public Result>> depts() { return Result.ok(systemService.depts()); } @GetMapping("/login-logs") public Result> 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> 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> 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 errorLog(@PathVariable Long id) { return Result.ok(systemService.errorLog(id)); } @PostMapping("/menu") public Result createMenu(@RequestBody SysMenu menu) { menu.setId(null); return Result.ok(systemService.saveMenu(menu)); } @PutMapping("/menu/{id}") public Result updateMenu(@PathVariable Long id, @RequestBody SysMenu menu) { menu.setId(id); return Result.ok(systemService.saveMenu(menu)); } @DeleteMapping("/menu/{id}") public Result deleteMenu(@PathVariable Long id) { systemService.deleteMenu(id); return Result.ok(); } @GetMapping("/roles") public Result> roles() { return Result.ok(systemService.listRoles()); } @PostMapping("/roles") public Result createRole(@RequestBody SysRole role) { role.setId(null); return Result.ok(systemService.saveRole(role)); } @PutMapping("/roles/{id}") public Result updateRole(@PathVariable Long id, @RequestBody SysRole role) { role.setId(id); return Result.ok(systemService.saveRole(role)); } @DeleteMapping("/roles/{id}") public Result deleteRole(@PathVariable Long id) { systemService.deleteRole(id); return Result.ok(); } @GetMapping("/roles/{roleId}/users") public Result> roleUsers(@PathVariable Long roleId) { return Result.ok(systemService.roleUsers(roleId)); } @PutMapping("/roles/{roleId}/users") public Result saveRoleUsers(@PathVariable Long roleId, @RequestBody Requests.RoleUserRequest request) { systemService.saveRoleUsers(roleId, request.getUserIds()); return Result.ok(); } @GetMapping("/contractors") public Result>> contractors() { return Result.ok(systemService.listContractors()); } @GetMapping("/engineering-majors") public Result> engineeringMajors() { return Result.ok(systemService.listEngineeringMajors()); } @PostMapping("/engineering-majors") public Result createEngineeringMajor(@RequestBody EngineeringMajor major) { major.setId(null); return Result.ok(systemService.saveEngineeringMajor(major)); } @PutMapping("/engineering-majors/{id}") public Result updateEngineeringMajor(@PathVariable Long id, @RequestBody EngineeringMajor major) { major.setId(id); return Result.ok(systemService.saveEngineeringMajor(major)); } @DeleteMapping("/engineering-majors/{id}") public Result deleteEngineeringMajor(@PathVariable Long id) { systemService.deleteEngineeringMajor(id); return Result.ok(); } @GetMapping("/team-majors") public Result> teamMajors() { return Result.ok(systemService.listTeamMajors()); } @PostMapping("/team-majors") public Result createTeamMajor(@RequestBody TeamMajor major) { major.setId(null); return Result.ok(systemService.saveTeamMajor(major)); } @PutMapping("/team-majors/{id}") public Result updateTeamMajor(@PathVariable Long id, @RequestBody TeamMajor major) { major.setId(id); return Result.ok(systemService.saveTeamMajor(major)); } @DeleteMapping("/team-majors/{id}") public Result deleteTeamMajor(@PathVariable Long id) { systemService.deleteTeamMajor(id); return Result.ok(); } @GetMapping("/tree") public Result>> tree(@RequestParam String type) { return Result.ok(systemService.tree(type)); } @GetMapping("/tree/product/roots") public Result>> productTreeRoots() { return Result.ok(systemService.productTreeRoots()); } @GetMapping("/tree/product/children") public Result>> productTreeChildren(@RequestParam Long parentId) { return Result.ok(systemService.productTreeChildren(parentId)); } @GetMapping("/tree/product/side-roots") public Result>> productTreeForXNo(@RequestParam(required = false) String xNo) { return Result.ok(systemService.productTreeForXNo(xNo)); } @GetMapping("/tree/product/x-numbers") public Result> productXNumbers() { return Result.ok(systemService.productXNumbers()); } @GetMapping("/tree/product/selected") public Result>> selectedProductNodes(@RequestParam List ids) { return Result.ok(systemService.selectedProductNodes(ids)); } @PostMapping("/tree/product") public Result createProduct(@RequestBody ProductNode node) { node.setId(null); return Result.ok(systemService.saveProductNode(node)); } @PutMapping("/tree/product/{id}") public Result updateProduct(@PathVariable Long id, @RequestBody ProductNode node) { node.setId(id); return Result.ok(systemService.saveProductNode(node)); } @DeleteMapping("/tree/product/{id}") public Result deleteProduct(@PathVariable Long id) { systemService.deleteProductNode(id); return Result.ok(); } @PostMapping("/tree/base") public Result createBase(@RequestBody BaseEquipment node) { node.setId(null); return Result.ok(systemService.saveBaseNode(node)); } @PutMapping("/tree/base/{id}") public Result updateBase(@PathVariable Long id, @RequestBody BaseEquipment node) { node.setId(id); return Result.ok(systemService.saveBaseNode(node)); } @DeleteMapping("/tree/base/{id}") public Result deleteBase(@PathVariable Long id) { systemService.deleteBaseNode(id); return Result.ok(); } @GetMapping("/menu-permissions") public Result> menuPermissions(@RequestParam(required = false) Long roleId) { return Result.ok(systemService.menuPermissions(roleId)); } @PostMapping("/menu-permissions") public Result saveMenuPermissions(@RequestBody Requests.MenuPermissionRequest request) { systemService.saveMenuPermissions(request.getRoleId(), request.getRoleMenuIds()); return Result.ok(); } @GetMapping("/three-member") public Result> threeMember() { return Result.ok(systemService.threeMemberOverview()); } }