diff --git a/gym-manage-api/manage-app/src/main/java/cn/novalon/gym/manage/app/config/SystemRouter.java b/gym-manage-api/manage-app/src/main/java/cn/novalon/gym/manage/app/config/SystemRouter.java index 8a7d9a2..79812cd 100644 --- a/gym-manage-api/manage-app/src/main/java/cn/novalon/gym/manage/app/config/SystemRouter.java +++ b/gym-manage-api/manage-app/src/main/java/cn/novalon/gym/manage/app/config/SystemRouter.java @@ -34,7 +34,7 @@ import static org.springframework.web.reactive.function.server.RouterFunctions.r * * 文件定义:配置WebFlux函数式路由,将HTTP请求映射到对应的Handler方法 * 涉及业务:用户、角色、字典、菜单、公告、文件等所有RESTful API路由 - * 算法:使用RouterFunctions.route()构建函数式路由规则 + * 路由规范:后台管理 API 统一前缀 /api/admin/**,前台会员 API 统一前缀 /api/member/** * * @author 张翔 * @date 2026-03-13 @@ -67,151 +67,151 @@ public class SystemRouter { CheckInHandler checkInHandler) { return route() - // ========== 诊断路由 ========== - .GET("/api/diagnostic/password", passwordDiagnosticHandler::diagnose) + // ========== 诊断路由(管理端) ========== + .GET("/api/admin/diagnostic/password", passwordDiagnosticHandler::diagnose) - // ========== 字典路由 ========== - .GET("/api/dictionaries", dictionaryHandler::getAllDictionaries) - .GET("/api/dictionaries/{id}", dictionaryHandler::getDictionaryById) - .GET("/api/dictionaries/type/{type}", dictionaryHandler::getDictionariesByType) - .GET("/api/dictionaries/check/exists", dictionaryHandler::checkTypeAndCodeExists) - .POST("/api/dictionaries", dictionaryHandler::createDictionary) - .PUT("/api/dictionaries/{id}", dictionaryHandler::updateDictionary) - .DELETE("/api/dictionaries/{id}", dictionaryHandler::deleteDictionary) + // ========== 字典路由(管理端) ========== + .GET("/api/admin/dictionaries", dictionaryHandler::getAllDictionaries) + .GET("/api/admin/dictionaries/{id}", dictionaryHandler::getDictionaryById) + .GET("/api/admin/dictionaries/type/{type}", dictionaryHandler::getDictionariesByType) + .GET("/api/admin/dictionaries/check/exists", dictionaryHandler::checkTypeAndCodeExists) + .POST("/api/admin/dictionaries", dictionaryHandler::createDictionary) + .PUT("/api/admin/dictionaries/{id}", dictionaryHandler::updateDictionary) + .DELETE("/api/admin/dictionaries/{id}", dictionaryHandler::deleteDictionary) - // ========== 用户路由 ========== - .GET("/api/users", userHandler::getAllUsers) - .GET("/api/users/page", userHandler::getUsersByPage) - .GET("/api/users/count", userHandler::getUserCount) - .GET("/api/users/username/{username}", userHandler::getUserByUsername) - .GET("/api/users/check/username", userHandler::checkUsernameExists) - .GET("/api/users/check/email", userHandler::checkEmailExists) - .POST("/api/users", userHandler::createUser) - .GET("/api/users/{id}", userHandler::getUserById) - .PUT("/api/users/{id}", userHandler::updateUser) - .DELETE("/api/users/{id}", userHandler::deleteUser) - .POST("/api/users/{id}/action/change-password", userHandler::changePassword) - .POST("/api/users/{id}/action/logical-delete", userHandler::logicalDeleteUser) - .POST("/api/users/logical-delete", userHandler::logicalDeleteUsers) - .POST("/api/users/action/restore", userHandler::restoreUsers) - .POST("/api/users/{id}/action/restore", userHandler::restoreUser) - .GET("/api/users/{id}/roles", userHandler::getUserRoles) - .POST("/api/users/{id}/roles", userHandler::assignRoles) + // ========== 用户路由(管理端) ========== + .GET("/api/admin/users", userHandler::getAllUsers) + .GET("/api/admin/users/page", userHandler::getUsersByPage) + .GET("/api/admin/users/count", userHandler::getUserCount) + .GET("/api/admin/users/username/{username}", userHandler::getUserByUsername) + .GET("/api/admin/users/check/username", userHandler::checkUsernameExists) + .GET("/api/admin/users/check/email", userHandler::checkEmailExists) + .POST("/api/admin/users", userHandler::createUser) + .GET("/api/admin/users/{id}", userHandler::getUserById) + .PUT("/api/admin/users/{id}", userHandler::updateUser) + .DELETE("/api/admin/users/{id}", userHandler::deleteUser) + .POST("/api/admin/users/{id}/action/change-password", userHandler::changePassword) + .POST("/api/admin/users/{id}/action/logical-delete", userHandler::logicalDeleteUser) + .POST("/api/admin/users/logical-delete", userHandler::logicalDeleteUsers) + .POST("/api/admin/users/action/restore", userHandler::restoreUsers) + .POST("/api/admin/users/{id}/action/restore", userHandler::restoreUser) + .GET("/api/admin/users/{id}/roles", userHandler::getUserRoles) + .POST("/api/admin/users/{id}/roles", userHandler::assignRoles) - // ========== 菜单路由 ========== - .GET("/api/menus", menuHandler::getAllMenus) - .GET("/api/menus/tree", menuHandler::getMenuTree) - .GET("/api/menus/{id}", menuHandler::getMenuById) - .POST("/api/menus", menuHandler::createMenu) - .PUT("/api/menus/{id}", menuHandler::updateMenu) - .DELETE("/api/menus/{id}", menuHandler::deleteMenu) + // ========== 菜单路由(管理端) ========== + .GET("/api/admin/menus", menuHandler::getAllMenus) + .GET("/api/admin/menus/tree", menuHandler::getMenuTree) + .GET("/api/admin/menus/{id}", menuHandler::getMenuById) + .POST("/api/admin/menus", menuHandler::createMenu) + .PUT("/api/admin/menus/{id}", menuHandler::updateMenu) + .DELETE("/api/admin/menus/{id}", menuHandler::deleteMenu) - // ========== 角色路由 ========== - .GET("/api/roles", roleHandler::getAllRoles) - .GET("/api/roles/page", roleHandler::getRolesByPage) - .GET("/api/roles/count", roleHandler::getRoleCount) - .GET("/api/roles/name/{roleName}", roleHandler::getRoleByName) - .GET("/api/roles/check-name", roleHandler::checkNameExists) - .GET("/api/roles/{id}", roleHandler::getRoleById) - .POST("/api/roles", roleHandler::createRole) - .PUT("/api/roles/{id}", roleHandler::updateRole) - .DELETE("/api/roles/{id}", roleHandler::deleteRole) - .POST("/api/roles/{id}/restore", roleHandler::restoreRole) - .GET("/api/roles/{id}/permissions", permissionHandler::getPermissionsByRoleId) - .POST("/api/roles/{id}/permissions", permissionHandler::assignPermissionsToRole) + // ========== 角色路由(管理端) ========== + .GET("/api/admin/roles", roleHandler::getAllRoles) + .GET("/api/admin/roles/page", roleHandler::getRolesByPage) + .GET("/api/admin/roles/count", roleHandler::getRoleCount) + .GET("/api/admin/roles/name/{roleName}", roleHandler::getRoleByName) + .GET("/api/admin/roles/check-name", roleHandler::checkNameExists) + .GET("/api/admin/roles/{id}", roleHandler::getRoleById) + .POST("/api/admin/roles", roleHandler::createRole) + .PUT("/api/admin/roles/{id}", roleHandler::updateRole) + .DELETE("/api/admin/roles/{id}", roleHandler::deleteRole) + .POST("/api/admin/roles/{id}/restore", roleHandler::restoreRole) + .GET("/api/admin/roles/{id}/permissions", permissionHandler::getPermissionsByRoleId) + .POST("/api/admin/roles/{id}/permissions", permissionHandler::assignPermissionsToRole) - // ========== 配置路由 ========== - .GET("/api/config", configHandler::getAllConfigs) - .GET("/api/config/{id}", configHandler::getConfigById) - .GET("/api/config/key/{configKey}", configHandler::getConfigByKey) - .POST("/api/config", configHandler::createConfig) - .PUT("/api/config/{id}", configHandler::updateConfig) - .DELETE("/api/config/{id}", configHandler::deleteConfig) + // ========== 配置路由(管理端) ========== + .GET("/api/admin/config", configHandler::getAllConfigs) + .GET("/api/admin/config/{id}", configHandler::getConfigById) + .GET("/api/admin/config/key/{configKey}", configHandler::getConfigByKey) + .POST("/api/admin/config", configHandler::createConfig) + .PUT("/api/admin/config/{id}", configHandler::updateConfig) + .DELETE("/api/admin/config/{id}", configHandler::deleteConfig) - // ========== 日志路由 ========== - .GET("/api/logs/login", logHandler::getAllLoginLogs) - .GET("/api/logs/login/page", logHandler::getLoginLogsByPage) - .GET("/api/logs/login/count", logHandler::getLoginLogCount) - .GET("/api/logs/login/today/count", logHandler::getTodayLoginCount) - .GET("/api/logs/login/recent", logHandler::getRecentLoginLogs) - .GET("/api/logs/login/{id}", logHandler::getLoginLogById) - .POST("/api/logs/login", logHandler::createLoginLog) - .GET("/api/logs/exception", logHandler::getAllExceptionLogs) - .GET("/api/logs/exception/page", logHandler::getExceptionLogsByPage) - .GET("/api/logs/exception/count", logHandler::getExceptionLogCount) - .GET("/api/logs/exception/{id}", logHandler::getExceptionLogById) - .POST("/api/logs/exception", logHandler::createExceptionLog) - .GET("/api/logs/operation", operationLogHandler::getAllOperationLogs) - .GET("/api/logs/operation/export", operationLogHandler::exportOperationLogs) - .GET("/api/logs/operation/page", operationLogHandler::getOperationLogsByPage) - .GET("/api/logs/operation/count", operationLogHandler::getOperationLogCount) - .GET("/api/logs/operation/{id}", operationLogHandler::getOperationLogById) - .POST("/api/logs/operation", operationLogHandler::createOperationLog) + // ========== 日志路由(管理端) ========== + .GET("/api/admin/logs/login", logHandler::getAllLoginLogs) + .GET("/api/admin/logs/login/page", logHandler::getLoginLogsByPage) + .GET("/api/admin/logs/login/count", logHandler::getLoginLogCount) + .GET("/api/admin/logs/login/today/count", logHandler::getTodayLoginCount) + .GET("/api/admin/logs/login/recent", logHandler::getRecentLoginLogs) + .GET("/api/admin/logs/login/{id}", logHandler::getLoginLogById) + .POST("/api/admin/logs/login", logHandler::createLoginLog) + .GET("/api/admin/logs/exception", logHandler::getAllExceptionLogs) + .GET("/api/admin/logs/exception/page", logHandler::getExceptionLogsByPage) + .GET("/api/admin/logs/exception/count", logHandler::getExceptionLogCount) + .GET("/api/admin/logs/exception/{id}", logHandler::getExceptionLogById) + .POST("/api/admin/logs/exception", logHandler::createExceptionLog) + .GET("/api/admin/logs/operation", operationLogHandler::getAllOperationLogs) + .GET("/api/admin/logs/operation/export", operationLogHandler::exportOperationLogs) + .GET("/api/admin/logs/operation/page", operationLogHandler::getOperationLogsByPage) + .GET("/api/admin/logs/operation/count", operationLogHandler::getOperationLogCount) + .GET("/api/admin/logs/operation/{id}", operationLogHandler::getOperationLogById) + .POST("/api/admin/logs/operation", operationLogHandler::createOperationLog) - // ========== 认证路由 ========== - .POST("/api/auth/login", authHandler::login) - .POST("/api/auth/register", authHandler::register) - .POST("/api/auth/logout", authHandler::logout) + // ========== 认证路由(管理端) ========== + .POST("/api/admin/auth/login", authHandler::login) + .POST("/api/admin/auth/register", authHandler::register) + .POST("/api/admin/auth/logout", authHandler::logout) - // ========== 统计路由 ========== - .GET("/api/stats/overview", statsHandler::getOverview) + // ========== 统计路由(管理端) ========== + .GET("/api/admin/stats/overview", statsHandler::getOverview) - // ========== 数据字典路由 ========== - .GET("/api/dict/types", dictHandler::getAllDictTypes) - .GET("/api/dict/types/{id}", dictHandler::getDictTypeById) - .GET("/api/dict/types/type/{dictType}", dictHandler::getDictTypeByType) - .POST("/api/dict/types", dictHandler::createDictType) - .PUT("/api/dict/types/{id}", dictHandler::updateDictType) - .DELETE("/api/dict/types/{id}", dictHandler::deleteDictType) - .GET("/api/dict/data", dictHandler::getAllDictData) - .GET("/api/dict/data/type/{dictType}", dictHandler::getDictDataByType) - .GET("/api/dict/data/{id}", dictHandler::getDictDataById) - .POST("/api/dict/data", dictHandler::createDictData) - .PUT("/api/dict/data/{id}", dictHandler::updateDictData) - .DELETE("/api/dict/data/{id}", dictHandler::deleteDictData) + // ========== 数据字典路由(管理端) ========== + .GET("/api/admin/dict/types", dictHandler::getAllDictTypes) + .GET("/api/admin/dict/types/{id}", dictHandler::getDictTypeById) + .GET("/api/admin/dict/types/type/{dictType}", dictHandler::getDictTypeByType) + .POST("/api/admin/dict/types", dictHandler::createDictType) + .PUT("/api/admin/dict/types/{id}", dictHandler::updateDictType) + .DELETE("/api/admin/dict/types/{id}", dictHandler::deleteDictType) + .GET("/api/admin/dict/data", dictHandler::getAllDictData) + .GET("/api/admin/dict/data/type/{dictType}", dictHandler::getDictDataByType) + .GET("/api/admin/dict/data/{id}", dictHandler::getDictDataById) + .POST("/api/admin/dict/data", dictHandler::createDictData) + .PUT("/api/admin/dict/data/{id}", dictHandler::updateDictData) + .DELETE("/api/admin/dict/data/{id}", dictHandler::deleteDictData) - // ========== 公告路由 ========== - .GET("/api/notices", noticeHandler::getAllNotices) - .GET("/api/notices/{id}", noticeHandler::getNoticeById) - .GET("/api/notices/status/{status}", noticeHandler::getNoticesByStatus) - .POST("/api/notices", noticeHandler::createNotice) - .PUT("/api/notices/{id}", noticeHandler::updateNotice) - .DELETE("/api/notices/{id}", noticeHandler::deleteNotice) + // ========== 公告路由(管理端) ========== + .GET("/api/admin/notices", noticeHandler::getAllNotices) + .GET("/api/admin/notices/{id}", noticeHandler::getNoticeById) + .GET("/api/admin/notices/status/{status}", noticeHandler::getNoticesByStatus) + .POST("/api/admin/notices", noticeHandler::createNotice) + .PUT("/api/admin/notices/{id}", noticeHandler::updateNotice) + .DELETE("/api/admin/notices/{id}", noticeHandler::deleteNotice) - // ========== 消息路由 ========== - .GET("/api/messages/user/{userId}", messageHandler::getMessagesByUser) - .GET("/api/messages/user/{userId}/unread", messageHandler::getUnreadCount) - .GET("/api/messages/user/{userId}/unread/list", messageHandler::getUnreadList) - .POST("/api/messages", messageHandler::createMessage) - .PUT("/api/messages/{id}/read", messageHandler::markAsRead) - .DELETE("/api/messages/{id}", messageHandler::deleteMessage) + // ========== 消息路由(管理端) ========== + .GET("/api/admin/messages/user/{userId}", messageHandler::getMessagesByUser) + .GET("/api/admin/messages/user/{userId}/unread", messageHandler::getUnreadCount) + .GET("/api/admin/messages/user/{userId}/unread/list", messageHandler::getUnreadList) + .POST("/api/admin/messages", messageHandler::createMessage) + .PUT("/api/admin/messages/{id}/read", messageHandler::markAsRead) + .DELETE("/api/admin/messages/{id}", messageHandler::deleteMessage) - // ========== 文件路由 ========== - .GET("/api/files", fileHandler::getAllFiles) - .GET("/api/files/{id}", fileHandler::getFileById) - .POST("/api/files/upload", fileHandler::uploadFile) - .GET("/api/files/{id}/download", fileHandler::downloadFile) - .GET("/api/files/download/{fileName}", fileHandler::downloadFileByName) - .GET("/api/files/{id}/preview", fileHandler::previewFile) - .GET("/api/files/preview/{fileName}", fileHandler::previewFileByName) - .DELETE("/api/files/{id}", fileHandler::deleteFile) + // ========== 文件路由(管理端) ========== + .GET("/api/admin/files", fileHandler::getAllFiles) + .GET("/api/admin/files/{id}", fileHandler::getFileById) + .POST("/api/admin/files/upload", fileHandler::uploadFile) + .GET("/api/admin/files/{id}/download", fileHandler::downloadFile) + .GET("/api/admin/files/download/{fileName}", fileHandler::downloadFileByName) + .GET("/api/admin/files/{id}/preview", fileHandler::previewFile) + .GET("/api/admin/files/preview/{fileName}", fileHandler::previewFileByName) + .DELETE("/api/admin/files/{id}", fileHandler::deleteFile) - // ========== 权限路由 ========== - .GET("/api/permissions", permissionHandler::getAllPermissions) - .GET("/api/permissions/{id}", permissionHandler::getPermissionById) - .GET("/api/permissions/code/{code}", permissionHandler::getPermissionByCode) - .GET("/api/permissions/check-code", permissionHandler::checkCodeExists) - .GET("/api/permissions/count", permissionHandler::getPermissionCount) - .POST("/api/permissions", permissionHandler::createPermission) - .PUT("/api/permissions/{id}", permissionHandler::updatePermission) - .DELETE("/api/permissions/{id}", permissionHandler::deletePermission) + // ========== 权限路由(管理端) ========== + .GET("/api/admin/permissions", permissionHandler::getAllPermissions) + .GET("/api/admin/permissions/{id}", permissionHandler::getPermissionById) + .GET("/api/admin/permissions/code/{code}", permissionHandler::getPermissionByCode) + .GET("/api/admin/permissions/check-code", permissionHandler::checkCodeExists) + .GET("/api/admin/permissions/count", permissionHandler::getPermissionCount) + .POST("/api/admin/permissions", permissionHandler::createPermission) + .PUT("/api/admin/permissions/{id}", permissionHandler::updatePermission) + .DELETE("/api/admin/permissions/{id}", permissionHandler::deletePermission) - // ========== 会员模块路由 - 微信认证 ========== + // ========== 会员模块路由 - 微信认证(前台公开) ========== .POST("/api/member/auth/miniapp/login", wechatAuthHandler::miniappLogin) .GET("/api/member/auth/mp/callback", wechatAuthHandler::verifyMpSignature) .POST("/api/member/auth/mp/callback", wechatAuthHandler::mpCallback) - // ========== 会员模块路由 - 会员信息 ========== + // ========== 会员模块路由 - 会员信息(前台) ========== .GET("/api/member/info", memberHandler::getMemberInfo) .PUT("/api/member/info", memberHandler::updateMemberInfo) .POST("/api/member/phone/bind", memberHandler::bindPhone) @@ -226,35 +226,35 @@ public class SystemRouter { // ======================================== - // ========== 会员卡管理路由 ============== + // ========== 会员卡管理路由(管理端) ============== // ======================================== // ===== 会员卡类型管理 ===== - .GET("/api/member-cards/active", memberCardHandler::getActiveCards) - .GET("/api/member-cards/{memberCardId}", memberCardHandler::getMemberCardById) - .POST("/api/member-cards", memberCardHandler::createMemberCard) + .GET("/api/admin/member-cards/active", memberCardHandler::getActiveCards) + .GET("/api/admin/member-cards/{memberCardId}", memberCardHandler::getMemberCardById) + .POST("/api/admin/member-cards", memberCardHandler::createMemberCard) // ===== 会员卡记录管理(核心业务)===== - .POST("/api/member-card-records/purchase", memberCardRecordHandler::purchaseCard) - .POST("/api/member-card-records/{recordId}/renew", memberCardRecordHandler::renewCard) - .POST("/api/member-card-records/{recordId}/use", memberCardRecordHandler::useCard) - .POST("/api/member-card-records/{recordId}/refund", memberCardRecordHandler::refundCard) - .GET("/api/member-card-records/my-cards/{memberId}", memberCardRecordHandler::getMyCards) - .GET("/api/member-card-records/{recordId}", memberCardRecordHandler::getMemberCardRecordById) - .POST("/api/member-card-records/process-expired", memberCardRecordHandler::processExpiredCards) + .POST("/api/admin/member-card-records/purchase", memberCardRecordHandler::purchaseCard) + .POST("/api/admin/member-card-records/{recordId}/renew", memberCardRecordHandler::renewCard) + .POST("/api/admin/member-card-records/{recordId}/use", memberCardRecordHandler::useCard) + .POST("/api/admin/member-card-records/{recordId}/refund", memberCardRecordHandler::refundCard) + .GET("/api/admin/member-card-records/my-cards/{memberId}", memberCardRecordHandler::getMyCards) + .GET("/api/admin/member-card-records/{recordId}", memberCardRecordHandler::getMemberCardRecordById) + .POST("/api/admin/member-card-records/process-expired", memberCardRecordHandler::processExpiredCards) // ===== 会员卡交易流水管理 ===== - .POST("/api/member-card-transactions", memberCardTransactionHandler::insertTransaction) - .GET("/api/member-card-transactions", memberCardTransactionHandler::getTransactionsWithConditions) - .GET("/api/member-card-transactions/member/{memberId}", memberCardTransactionHandler::getMemberTransactions) - .GET("/api/member-card-transactions/card/{cardId}", memberCardTransactionHandler::getTransactionsByCardId) - .GET("/api/member-card-transactions/statistics/deduct/{cardId}", memberCardTransactionHandler::getDeductCountByCardId) - .GET("/api/member-card-transactions/statistics/renew", memberCardTransactionHandler::getRenewAmountByTimeRange) - .GET("/api/member-card-transactions/statistics/purchase/{memberId}", memberCardTransactionHandler::getPurchaseAmountByMember) + .POST("/api/admin/member-card-transactions", memberCardTransactionHandler::insertTransaction) + .GET("/api/admin/member-card-transactions", memberCardTransactionHandler::getTransactionsWithConditions) + .GET("/api/admin/member-card-transactions/member/{memberId}", memberCardTransactionHandler::getMemberTransactions) + .GET("/api/admin/member-card-transactions/card/{cardId}", memberCardTransactionHandler::getTransactionsByCardId) + .GET("/api/admin/member-card-transactions/statistics/deduct/{cardId}", memberCardTransactionHandler::getDeductCountByCardId) + .GET("/api/admin/member-card-transactions/statistics/renew", memberCardTransactionHandler::getRenewAmountByTimeRange) + .GET("/api/admin/member-card-transactions/statistics/purchase/{memberId}", memberCardTransactionHandler::getPurchaseAmountByMember) - // ========= 签到路由 ========== - .POST("/api/checkIn", checkInHandler::checkIn ) - .GET("/api/checkIn/qrcode", checkInHandler::getQRCode) + // ========= 签到路由(前台会员) ========== + .POST("/api/member/checkIn", checkInHandler::checkIn) + .GET("/api/member/checkIn/qrcode", checkInHandler::getQRCode) .build(); } }