From c11a1dccf47caa4daed5fcc3f7cef94c4ae8c9d9 Mon Sep 17 00:00:00 2001 From: SOR <3272194354@qq.com> Date: Wed, 22 Jul 2026 21:13:36 +0800 Subject: [PATCH] feat: All api url --- README.md | 9 +-- .../controller/v1/DepartmentsController.kt | 40 ++++++++--- .../controller/v1/EmailController.kt | 34 ++++++--- .../v1/EvaluationRecordsController.kt | 60 +++++++++++++--- .../controller/v1/FinanceController.kt | 57 ++++++++++++--- .../controller/v1/ItemsController.kt | 70 ++++++++++++++++++- .../controller/v1/MemosController.kt | 44 +++++++++--- .../controller/v1/PersonnelController.kt | 56 ++++++++++++--- .../controller/v1/ProjectGroupsController.kt | 44 +++++++++--- .../controller/v1/ProofImagesController.kt | 40 ++++++++--- .../controller/v1/UsagesController.kt | 61 +++++++++++++--- .../controller/v1/UsersController.kt | 18 +++++ .../club/itstudio/itmanager/utils/Const.kt | 4 ++ 13 files changed, 431 insertions(+), 106 deletions(-) create mode 100644 src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/UsersController.kt diff --git a/README.md b/README.md index cf72be0..015856f 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ - /project-groups - /proof-images - /usages + - /users ## 预计完成的 API 列表 @@ -43,10 +44,10 @@ | `usages/{id}/upload_images/` | POST | 上传使用记录图片 | | `usages/current/` | GET | 获取当前使用中的记录 | | `usages/by_user/` | GET | 根据用户姓名获取使用记录 | -| `item_categories/` | GET/POST/PUT/DELETE | 物品类别 CRUD 操作 | +| `items/categories/`(原 `item_categories/`) | GET/POST/PUT/DELETE | 物品类别 CRUD 操作 | | `users/` | GET | 获取用户列表(只读) | -| `item-images/` | GET/POST/PUT/DELETE | 物品图片 CRUD 操作 | -| `usage-images/` | GET/POST/PUT/DELETE | 使用记录图片 CRUD 操作 | +| `items/images/`(原 `item-images/`) | GET/POST/PUT/DELETE | 物品图片 CRUD 操作 | +| `usages/images/`(原 `usage-images/`) | GET/POST/PUT/DELETE | 使用记录图片 CRUD 操作 | --- @@ -77,7 +78,7 @@ | `finance/{id}/` | DELETE | 删除财务记录(发送邮件通知) | | `departments/` | GET/POST/PUT/DELETE | 部门 CRUD 操作 | | `departments/{id}/` | DELETE | 删除部门(发送邮件通知) | -| `finance_categories/` | GET/POST/PUT/DELETE | 财务分类 CRUD 操作 | +| `finance/categories/`(原 `finance_categories/`) | GET/POST/PUT/DELETE | 财务分类 CRUD 操作 | | `proof-images/` | GET/POST/PUT/DELETE | 财务凭证图片 CRUD 操作 | | `proof-images/{id}/` | DELETE | 删除凭证图片(自动删除物理文件) | diff --git a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/DepartmentsController.kt b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/DepartmentsController.kt index 08544b9..94bc933 100644 --- a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/DepartmentsController.kt +++ b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/DepartmentsController.kt @@ -1,11 +1,29 @@ -package club.itstudio.itmanager.controller.v1 - -import org.springframework.validation.annotation.Validated -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController - -@Validated -@RestController -@RequestMapping("/api/v1/department") -class DepartmentsController { -} \ No newline at end of file +package club.itstudio.itmanager.controller.v1 + +import club.itstudio.itmanager.utils.Const +import org.springframework.validation.annotation.Validated +import org.springframework.web.bind.annotation.* +import reactor.core.publisher.Mono + +@Validated +@RestController +@RequestMapping("/api/v1/departments") +class DepartmentsController { + + // departments/ GET/POST/PUT/DELETE 部门 CRUD 操作 + @GetMapping("", "/") + fun getDepartments(): Mono = Const.INTERNAL_ERROR_MONO + + @PostMapping("", "/") + fun createDepartment(): Mono = Const.INTERNAL_ERROR_MONO + + @PutMapping("", "/") + fun updateDepartment(): Mono = Const.INTERNAL_ERROR_MONO + + @DeleteMapping("", "/") + fun deleteDepartment(@RequestParam(required = false) id: String?): Mono = Const.INTERNAL_ERROR_MONO + + // departments/{id}/ DELETE 删除部门(发送邮件通知) + @DeleteMapping("/{id}", "/{id}/") + fun deleteById(@PathVariable("id") id: String): Mono = Const.INTERNAL_ERROR_MONO +} \ No newline at end of file diff --git a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/EmailController.kt b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/EmailController.kt index f04f0f5..47374a0 100644 --- a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/EmailController.kt +++ b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/EmailController.kt @@ -1,11 +1,23 @@ -package club.itstudio.itmanager.controller.v1 - -import org.springframework.validation.annotation.Validated -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController - -@Validated -@RestController -@RequestMapping("/api/v1/email") -class EmailController { -} \ No newline at end of file +package club.itstudio.itmanager.controller.v1 + +import club.itstudio.itmanager.utils.Const +import org.springframework.validation.annotation.Validated +import org.springframework.web.bind.annotation.* +import reactor.core.publisher.Mono + +@Validated +@RestController +@RequestMapping("/api/v1/email") +class EmailController { + + // notification-settings/ GET/POST 获取/更新通知设置和邮箱列表 + @GetMapping("/notification-settings", "/notification-settings/") + fun getNotificationSettings(): Mono = Const.INTERNAL_ERROR_MONO + + @PostMapping("/notification-settings", "/notification-settings/") + fun updateNotificationSettings(): Mono = Const.INTERNAL_ERROR_MONO + + // toggle-email-status/ POST 切换邮箱启用/禁用状态 + @PostMapping("/toggle-email-status", "/toggle-email-status/") + fun toggleEmailStatus(): Mono = Const.INTERNAL_ERROR_MONO +} \ No newline at end of file diff --git a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/EvaluationRecordsController.kt b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/EvaluationRecordsController.kt index b0a40e1..185305f 100644 --- a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/EvaluationRecordsController.kt +++ b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/EvaluationRecordsController.kt @@ -1,11 +1,49 @@ -package club.itstudio.itmanager.controller.v1 - -import org.springframework.validation.annotation.Validated -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController - -@Validated -@RestController -@RequestMapping("/api/v1/evaluation-records") -class EvaluationRecordsController { -} \ No newline at end of file +package club.itstudio.itmanager.controller.v1 + +import club.itstudio.itmanager.utils.Const +import org.springframework.validation.annotation.Validated +import org.springframework.web.bind.annotation.* +import reactor.core.publisher.Mono + +@Validated +@RestController +@RequestMapping("/api/v1/evaluation-records") +class EvaluationRecordsController { + + // evaluation-records/ GET/POST/PUT/DELETE 考评记录 CRUD 操作 + @GetMapping("", "/") + fun getRecords(): Mono = Const.INTERNAL_ERROR_MONO + + @PostMapping("", "/") + fun createRecord(): Mono = Const.INTERNAL_ERROR_MONO + + @PutMapping("", "/") + fun updateRecord(): Mono = Const.INTERNAL_ERROR_MONO + + @DeleteMapping("", "/") + fun deleteRecord(@RequestParam(required = false) id: String?): Mono = Const.INTERNAL_ERROR_MONO + + // evaluation-records/personnel-summary/ GET 获取人员考评汇总 + @GetMapping("/personnel-summary", "/personnel-summary/") + fun getPersonnelSummary(): Mono = Const.INTERNAL_ERROR_MONO + + // evaluation-records/personnel-records/ GET 获取某个人员的所有考评记录 + @GetMapping("/personnel-records", "/personnel-records/") + fun getPersonnelRecords(@RequestParam(required = false) personId: String?): Mono = Const.INTERNAL_ERROR_MONO + + // evaluation-records/delete-personnel/ DELETE 删除某个人员的所有考评记录 + @DeleteMapping("/delete-personnel", "/delete-personnel/") + fun deletePersonnelRecords(@RequestParam(required = false) personId: String?): Mono = Const.INTERNAL_ERROR_MONO + + // evaluation-records/export/ GET 导出考评记录为 Excel + @GetMapping("/export", "/export/") + fun exportRecords(): Mono = Const.INTERNAL_ERROR_MONO + + // evaluation-records/download-template/ GET 下载人员导入样表 + @GetMapping("/download-template", "/download-template/") + fun downloadTemplate(): Mono = Const.INTERNAL_ERROR_MONO + + // evaluation-records/import/ POST 导入考评记录 + @PostMapping("/import", "/import/") + fun importRecords(): Mono = Const.INTERNAL_ERROR_MONO +} \ No newline at end of file diff --git a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/FinanceController.kt b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/FinanceController.kt index 537ec51..58c3d00 100644 --- a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/FinanceController.kt +++ b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/FinanceController.kt @@ -1,11 +1,46 @@ -package club.itstudio.itmanager.controller.v1 - -import org.springframework.validation.annotation.Validated -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController - -@Validated -@RestController -@RequestMapping("/api/v1/finance") -class FinanceController { -} \ No newline at end of file +package club.itstudio.itmanager.controller.v1 + +import club.itstudio.itmanager.utils.Const +import org.springframework.validation.annotation.Validated +import org.springframework.web.bind.annotation.* +import reactor.core.publisher.Mono + +@Validated +@RestController +@RequestMapping("/api/v1/finance") +class FinanceController { + + // finance/ GET/POST/PUT/DELETE 财务记录 CRUD 操作 + @GetMapping("", "/") + fun getFinanceRecords(): Mono = Const.INTERNAL_ERROR_MONO + + @PostMapping("", "/") + fun createFinanceRecord(): Mono = Const.INTERNAL_ERROR_MONO + + @PutMapping("", "/") + fun updateFinanceRecord(): Mono = Const.INTERNAL_ERROR_MONO + + @DeleteMapping("", "/") + fun deleteFinanceRecord(@RequestParam(required = false) id: String?): Mono = Const.INTERNAL_ERROR_MONO + + // finance/{id}/upload_images/ POST 上传财务凭证图片 + @PostMapping("/{id}/upload_images", "/{id}/upload_images/") + fun uploadImages(@PathVariable("id") id: String): Mono = Const.INTERNAL_ERROR_MONO + + // finance/{id}/ DELETE 删除财务记录(发送邮件通知) + @DeleteMapping("/{id}", "/{id}/") + fun deleteById(@PathVariable("id") id: String): Mono = Const.INTERNAL_ERROR_MONO + + // finance/categories/ GET/POST/PUT/DELETE 财务分类 CRUD 操作 + @GetMapping("/categories", "/categories/") + fun getFinanceCategories(): Mono = Const.INTERNAL_ERROR_MONO + + @PostMapping("/categories", "/categories/") + fun createFinanceCategory(): Mono = Const.INTERNAL_ERROR_MONO + + @PutMapping("/categories", "/categories/") + fun updateFinanceCategory(): Mono = Const.INTERNAL_ERROR_MONO + + @DeleteMapping("/categories", "/categories/") + fun deleteFinanceCategory(@RequestParam(required = false) id: String?): Mono = Const.INTERNAL_ERROR_MONO +} \ No newline at end of file diff --git a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/ItemsController.kt b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/ItemsController.kt index 560f120..af08c15 100644 --- a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/ItemsController.kt +++ b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/ItemsController.kt @@ -1,11 +1,75 @@ package club.itstudio.itmanager.controller.v1 +import club.itstudio.itmanager.utils.Const import org.springframework.validation.annotation.Validated -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController +import org.springframework.web.bind.annotation.* +import reactor.core.publisher.Mono @Validated @RestController @RequestMapping("/api/v1/items") class ItemsController { -} \ No newline at end of file + + // items/ GET/POST/PUT/DELETE 物品 CRUD 操作 + @GetMapping("", "/") + fun getItems(): Mono = Const.INTERNAL_ERROR_MONO + + @PostMapping("", "/") + fun createItem(): Mono = Const.INTERNAL_ERROR_MONO + + @PutMapping("", "/") + fun updateItem(): Mono = Const.INTERNAL_ERROR_MONO + + @DeleteMapping("", "/") + fun deleteItem(@RequestParam(required = false) id: String?): Mono = Const.INTERNAL_ERROR_MONO + + // items/{id}/upload_images/ POST 上传物品图片 + @PostMapping("/{id}/upload_images", "/{id}/upload_images/") + fun uploadImages(@PathVariable("id") id: String): Mono = Const.INTERNAL_ERROR_MONO + + // items/{id}/set_primary_image/ POST 设置主图片 + @PostMapping("/{id}/set_primary_image", "/{id}/set_primary_image/") + fun setPrimaryImage(@PathVariable("id") id: String): Mono = Const.INTERNAL_ERROR_MONO + + // items/{id}/borrow/ POST 借用物品 + @PostMapping("/{id}/borrow", "/{id}/borrow/") + fun borrowItem(@PathVariable("id") id: String): Mono = Const.INTERNAL_ERROR_MONO + + // items/{id}/return_item/ POST 归还物品 + @PostMapping("/{id}/return_item", "/{id}/return_item/") + fun returnItem(@PathVariable("id") id: String): Mono = Const.INTERNAL_ERROR_MONO + + // items/available/ GET 获取可用物品列表 + @GetMapping("/available", "/available/") + fun getAvailableItems(): Mono = Const.INTERNAL_ERROR_MONO + + // items/in_use/ GET 获取使用中的物品列表 + @GetMapping("/in_use", "/in_use/") + fun getInUseItems(): Mono = Const.INTERNAL_ERROR_MONO + + // items/categories/ GET/POST/PUT/DELETE 物品类别 CRUD 操作 + @GetMapping("/categories", "/categories/") + fun getItemCategories(): Mono = Const.INTERNAL_ERROR_MONO + + @PostMapping("/categories", "/categories/") + fun createItemCategory(): Mono = Const.INTERNAL_ERROR_MONO + + @PutMapping("/categories", "/categories/") + fun updateItemCategory(): Mono = Const.INTERNAL_ERROR_MONO + + @DeleteMapping("/categories", "/categories/") + fun deleteItemCategory(@RequestParam(required = false) id: String?): Mono = Const.INTERNAL_ERROR_MONO + + // items/images/ GET/POST/PUT/DELETE 物品图片 CRUD 操作 + @GetMapping("/images", "/images/") + fun getItemImages(): Mono = Const.INTERNAL_ERROR_MONO + + @PostMapping("/images", "/images/") + fun createItemImage(): Mono = Const.INTERNAL_ERROR_MONO + + @PutMapping("/images", "/images/") + fun updateItemImage(): Mono = Const.INTERNAL_ERROR_MONO + + @DeleteMapping("/images", "/images/") + fun deleteItemImage(@RequestParam(required = false) id: String?): Mono = Const.INTERNAL_ERROR_MONO +} diff --git a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/MemosController.kt b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/MemosController.kt index 0476a76..a849515 100644 --- a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/MemosController.kt +++ b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/MemosController.kt @@ -1,11 +1,33 @@ -package club.itstudio.itmanager.controller.v1 - -import org.springframework.validation.annotation.Validated -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController - -@Validated -@RestController -@RequestMapping("/api/v1/memos") -class MemosController { -} \ No newline at end of file +package club.itstudio.itmanager.controller.v1 + +import club.itstudio.itmanager.utils.Const +import org.springframework.validation.annotation.Validated +import org.springframework.web.bind.annotation.* +import reactor.core.publisher.Mono + +@Validated +@RestController +@RequestMapping("/api/v1/memos") +class MemosController { + + // memos/ GET/POST/PUT/DELETE 备忘录 CRUD 操作 + @GetMapping("", "/") + fun getMemos(): Mono = Const.INTERNAL_ERROR_MONO + + @PostMapping("", "/") + fun createMemo(): Mono = Const.INTERNAL_ERROR_MONO + + @PutMapping("", "/") + fun updateMemo(): Mono = Const.INTERNAL_ERROR_MONO + + @DeleteMapping("", "/") + fun deleteMemo(@RequestParam(required = false) id: String?): Mono = Const.INTERNAL_ERROR_MONO + + // memos/{id}/upload_image/ POST 上传备忘录图片 + @PostMapping("/{id}/upload_image", "/{id}/upload_image/") + fun uploadImage(@PathVariable("id") id: String): Mono = Const.INTERNAL_ERROR_MONO + + // memos/{id}/delete_image/ DELETE 删除备忘录图片 + @DeleteMapping("/{id}/delete_image", "/{id}/delete_image/") + fun deleteImage(@PathVariable("id") id: String): Mono = Const.INTERNAL_ERROR_MONO +} \ No newline at end of file diff --git a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/PersonnelController.kt b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/PersonnelController.kt index 024a69b..45ae3e7 100644 --- a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/PersonnelController.kt +++ b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/PersonnelController.kt @@ -1,11 +1,45 @@ -package club.itstudio.itmanager.controller.v1 - -import org.springframework.validation.annotation.Validated -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController - -@Validated -@RestController -@RequestMapping("/api/v1/personnel") -class PersonnelController { -} \ No newline at end of file +package club.itstudio.itmanager.controller.v1 + +import club.itstudio.itmanager.utils.Const +import org.springframework.validation.annotation.Validated +import org.springframework.web.bind.annotation.* +import reactor.core.publisher.Mono + +@Validated +@RestController +@RequestMapping("/api/v1/personnel") +class PersonnelController { + + // personnel/ GET/POST/PUT/DELETE 人员信息 CRUD 操作 + @GetMapping("", "/") + fun getPersonnel(): Mono = Const.INTERNAL_ERROR_MONO + + @PostMapping("", "/") + fun createPersonnel(): Mono = Const.INTERNAL_ERROR_MONO + + @PutMapping("", "/") + fun updatePersonnel(): Mono = Const.INTERNAL_ERROR_MONO + + @DeleteMapping("", "/") + fun deletePersonnel(@RequestParam(required = false) id: String?): Mono = Const.INTERNAL_ERROR_MONO + + // personnel/statistics/ GET 获取人员统计信息(按部门和职位) + @GetMapping("/statistics", "/statistics/") + fun getStatistics(): Mono = Const.INTERNAL_ERROR_MONO + + // personnel/{id}/set_inactive/ POST 设置人员为已卸任状态 + @PostMapping("/{id}/set_inactive", "/{id}/set_inactive/") + fun setInactive(@PathVariable("id") id: String): Mono = Const.INTERNAL_ERROR_MONO + + // personnel/{id}/set_active/ POST 设置人员为在职状态 + @PostMapping("/{id}/set_active", "/{id}/set_active/") + fun setActive(@PathVariable("id") id: String): Mono = Const.INTERNAL_ERROR_MONO + + // personnel/{id}/ DELETE 删除人员(发送邮件通知) + @DeleteMapping("/{id}", "/{id}/") + fun deleteById(@PathVariable("id") id: String): Mono = Const.INTERNAL_ERROR_MONO + + // personnel/check_expired/ POST 检查并更新已到期的人员状态 + @PostMapping("/check_expired", "/check_expired/") + fun checkExpired(): Mono = Const.INTERNAL_ERROR_MONO +} \ No newline at end of file diff --git a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/ProjectGroupsController.kt b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/ProjectGroupsController.kt index 1c4fa62..e5143b6 100644 --- a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/ProjectGroupsController.kt +++ b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/ProjectGroupsController.kt @@ -1,11 +1,33 @@ -package club.itstudio.itmanager.controller.v1 - -import org.springframework.validation.annotation.Validated -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController - -@Validated -@RestController -@RequestMapping("/api/v1/project-groups") -class ProjectGroupsController { -} \ No newline at end of file +package club.itstudio.itmanager.controller.v1 + +import club.itstudio.itmanager.utils.Const +import org.springframework.validation.annotation.Validated +import org.springframework.web.bind.annotation.* +import reactor.core.publisher.Mono + +@Validated +@RestController +@RequestMapping("/api/v1/project-groups") +class ProjectGroupsController { + + // project-groups/ GET/POST/PUT/DELETE 项目组 CRUD 操作 + @GetMapping("", "/") + fun getProjectGroups(): Mono = Const.INTERNAL_ERROR_MONO + + @PostMapping("", "/") + fun createProjectGroup(): Mono = Const.INTERNAL_ERROR_MONO + + @PutMapping("", "/") + fun updateProjectGroup(): Mono = Const.INTERNAL_ERROR_MONO + + @DeleteMapping("", "/") + fun deleteProjectGroup(@RequestParam(required = false) id: String?): Mono = Const.INTERNAL_ERROR_MONO + + // project-groups/by_department/ GET 按部门获取项目组 + @GetMapping("/by_department", "/by_department/") + fun getByDepartment(@RequestParam(required = false) departmentId: String?): Mono = Const.INTERNAL_ERROR_MONO + + // project-groups/{id}/ DELETE 删除项目组(发送邮件通知) + @DeleteMapping("/{id}", "/{id}/") + fun deleteById(@PathVariable("id") id: String): Mono = Const.INTERNAL_ERROR_MONO +} \ No newline at end of file diff --git a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/ProofImagesController.kt b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/ProofImagesController.kt index cf038dd..a2afb2c 100644 --- a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/ProofImagesController.kt +++ b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/ProofImagesController.kt @@ -1,11 +1,29 @@ -package club.itstudio.itmanager.controller.v1 - -import org.springframework.validation.annotation.Validated -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController - -@Validated -@RestController -@RequestMapping("/api/v1/proof-images") -class ProofImagesController { -} \ No newline at end of file +package club.itstudio.itmanager.controller.v1 + +import club.itstudio.itmanager.utils.Const +import org.springframework.validation.annotation.Validated +import org.springframework.web.bind.annotation.* +import reactor.core.publisher.Mono + +@Validated +@RestController +@RequestMapping("/api/v1/proof-images") +class ProofImagesController { + + // proof-images/ GET/POST/PUT/DELETE 财务凭证图片 CRUD 操作 + @GetMapping("", "/") + fun getProofImages(): Mono = Const.INTERNAL_ERROR_MONO + + @PostMapping("", "/") + fun createProofImage(): Mono = Const.INTERNAL_ERROR_MONO + + @PutMapping("", "/") + fun updateProofImage(): Mono = Const.INTERNAL_ERROR_MONO + + @DeleteMapping("", "/") + fun deleteProofImage(@RequestParam(required = false) id: String?): Mono = Const.INTERNAL_ERROR_MONO + + // proof-images/{id}/ DELETE 删除凭证图片(自动删除物理文件) + @DeleteMapping("/{id}", "/{id}/") + fun deleteById(@PathVariable("id") id: String): Mono = Const.INTERNAL_ERROR_MONO +} \ No newline at end of file diff --git a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/UsagesController.kt b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/UsagesController.kt index 6823a2a..6e1692a 100644 --- a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/UsagesController.kt +++ b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/UsagesController.kt @@ -1,11 +1,50 @@ -package club.itstudio.itmanager.controller.v1 - -import org.springframework.validation.annotation.Validated -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController - -@Validated -@RestController -@RequestMapping("/api/v1/usages") -class UsagesController { -} \ No newline at end of file +package club.itstudio.itmanager.controller.v1 + +import club.itstudio.itmanager.utils.Const +import org.springframework.validation.annotation.Validated +import org.springframework.web.bind.annotation.* +import reactor.core.publisher.Mono + +@Validated +@RestController +@RequestMapping("/api/v1/usages") +class UsagesController { + + // usages/ GET/POST/PUT/DELETE 物品使用记录 CRUD 操作 + @GetMapping("", "/") + fun getUsages(): Mono = Const.INTERNAL_ERROR_MONO + + @PostMapping("", "/") + fun createUsage(): Mono = Const.INTERNAL_ERROR_MONO + + @PutMapping("", "/") + fun updateUsage(): Mono = Const.INTERNAL_ERROR_MONO + + @DeleteMapping("", "/") + fun deleteUsage(@RequestParam(required = false) id: String?): Mono = Const.INTERNAL_ERROR_MONO + + // usages/{id}/upload_images/ POST 上传使用记录图片 + @PostMapping("/{id}/upload_images", "/{id}/upload_images/") + fun uploadImages(@PathVariable("id") id: String): Mono = Const.INTERNAL_ERROR_MONO + + // usages/current/ GET 获取当前使用中的记录 + @GetMapping("/current", "/current/") + fun getCurrentUsages(): Mono = Const.INTERNAL_ERROR_MONO + + // usages/by_user/ GET 根据用户姓名获取使用记录 + @GetMapping("/by_user", "/by_user/") + fun getUsagesByUser(@RequestParam(required = false) name: String?): Mono = Const.INTERNAL_ERROR_MONO + + // usages/images/ GET/POST/PUT/DELETE 使用记录图片 CRUD 操作 + @GetMapping("/images", "/images/") + fun getUsageImages(): Mono = Const.INTERNAL_ERROR_MONO + + @PostMapping("/images", "/images/") + fun createUsageImage(): Mono = Const.INTERNAL_ERROR_MONO + + @PutMapping("/images", "/images/") + fun updateUsageImage(): Mono = Const.INTERNAL_ERROR_MONO + + @DeleteMapping("/images", "/images/") + fun deleteUsageImage(@RequestParam(required = false) id: String?): Mono = Const.INTERNAL_ERROR_MONO +} \ No newline at end of file diff --git a/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/UsersController.kt b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/UsersController.kt new file mode 100644 index 0000000..ab5ad23 --- /dev/null +++ b/src/beckend/src/main/kotlin/club/itstudio/itmanager/controller/v1/UsersController.kt @@ -0,0 +1,18 @@ +package club.itstudio.itmanager.controller.v1 + +import club.itstudio.itmanager.utils.Const +import org.springframework.validation.annotation.Validated +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController +import reactor.core.publisher.Mono + +@Validated +@RestController +@RequestMapping("/api/v1/users") +class UsersController { + + // users/ GET 获取用户列表(只读) + @GetMapping("", "/") + fun getUsers(): Mono = Const.INTERNAL_ERROR_MONO +} diff --git a/src/beckend/src/main/kotlin/club/itstudio/itmanager/utils/Const.kt b/src/beckend/src/main/kotlin/club/itstudio/itmanager/utils/Const.kt index 861d8d3..e42f6cd 100644 --- a/src/beckend/src/main/kotlin/club/itstudio/itmanager/utils/Const.kt +++ b/src/beckend/src/main/kotlin/club/itstudio/itmanager/utils/Const.kt @@ -1,5 +1,7 @@ package club.itstudio.itmanager.utils +import reactor.core.publisher.Mono + object Const { const val FLOW_LIMIT_ORDER = -101 @@ -9,4 +11,6 @@ object Const { const val FLOW_LIMIT_COUNTER = "flow:counter:" const val FLOW_LIMIT_BLOCK = "flow:block:" + + val INTERNAL_ERROR_MONO = Mono.just("something went wrong. Please contact the administrator.") } \ No newline at end of file -- 2.47.3