package com.emergencyrepair.system.controller; import com.emergencyrepair.business.dto.Requests; 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.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.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() { return Result.ok(systemService.menuTree()); } @GetMapping("/menu/list") public Result> menuList() { return Result.ok(systemService.listMenus()); } @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("/contractors") public Result> contractors() { return Result.ok(systemService.listContractors()); } @PostMapping("/contractors") public Result createContractor(@RequestBody Contractor contractor) { contractor.setId(null); return Result.ok(systemService.saveContractor(contractor)); } @PutMapping("/contractors/{id}") public Result updateContractor(@PathVariable Long id, @RequestBody Contractor contractor) { contractor.setId(id); return Result.ok(systemService.saveContractor(contractor)); } @DeleteMapping("/contractors/{id}") public Result deleteContractor(@PathVariable Long id) { systemService.deleteContractor(id); return Result.ok(); } @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)); } @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, @RequestParam(required = false) Long tenantId) { return Result.ok(systemService.menuPermissions(roleId, tenantId)); } @PostMapping("/menu-permissions") public Result saveMenuPermissions(@RequestBody Requests.MenuPermissionRequest request) { systemService.saveMenuPermissions(request.getRoleId(), request.getTenantId(), request.getRoleMenuIds(), request.getTenantMenuIds()); return Result.ok(); } @GetMapping("/tenants") public Result>> tenants() { return Result.ok(systemService.tenants()); } @GetMapping("/three-member") public Result> threeMember() { return Result.ok(systemService.threeMemberOverview()); } }