会员卡管理功能初步完成

This commit is contained in:
时舟年
2026-05-24 00:57:22 +08:00
parent 2325c66c37
commit cd44caee57
39 changed files with 2570 additions and 677 deletions
@@ -31,7 +31,7 @@ import static org.springframework.web.reactive.function.server.RouterFunctions.r
* 文件定义:配置WebFlux函数式路由,将HTTP请求映射到对应的Handler方法
* 涉及业务:用户、角色、字典、菜单、公告、文件等所有RESTful API路由
* 算法:使用RouterFunctions.route()构建函数式路由规则
*
*
* @author 张翔
* @date 2026-03-13
*/
@@ -58,11 +58,11 @@ public class SystemRouter {
MemberCardHandler memberCardHandler,
MemberCardRecordHandler memberCardRecordHandler,
MemberCardTransactionHandler memberCardTransactionHandler) {
return route()
// ========== 诊断路由 ==========
.GET("/api/diagnostic/password", passwordDiagnosticHandler::diagnose)
// ========== 字典路由 ==========
.GET("/api/dictionaries", dictionaryHandler::getAllDictionaries)
.GET("/api/dictionaries/{id}", dictionaryHandler::getDictionaryById)
@@ -71,7 +71,7 @@ public class SystemRouter {
.POST("/api/dictionaries", dictionaryHandler::createDictionary)
.PUT("/api/dictionaries/{id}", dictionaryHandler::updateDictionary)
.DELETE("/api/dictionaries/{id}", dictionaryHandler::deleteDictionary)
// ========== 用户路由 ==========
.GET("/api/users", userHandler::getAllUsers)
.GET("/api/users/page", userHandler::getUsersByPage)
@@ -90,7 +90,7 @@ public class SystemRouter {
.POST("/api/users/{id}/action/restore", userHandler::restoreUser)
.GET("/api/users/{id}/roles", userHandler::getUserRoles)
.POST("/api/users/{id}/roles", userHandler::assignRoles)
// ========== 菜单路由 ==========
.GET("/api/menus", menuHandler::getAllMenus)
.GET("/api/menus/tree", menuHandler::getMenuTree)
@@ -98,7 +98,7 @@ public class SystemRouter {
.POST("/api/menus", menuHandler::createMenu)
.PUT("/api/menus/{id}", menuHandler::updateMenu)
.DELETE("/api/menus/{id}", menuHandler::deleteMenu)
// ========== 角色路由 ==========
.GET("/api/roles", roleHandler::getAllRoles)
.GET("/api/roles/page", roleHandler::getRolesByPage)
@@ -112,7 +112,7 @@ public class SystemRouter {
.POST("/api/roles/{id}/restore", roleHandler::restoreRole)
.GET("/api/roles/{id}/permissions", permissionHandler::getPermissionsByRoleId)
.POST("/api/roles/{id}/permissions", permissionHandler::assignPermissionsToRole)
// ========== 配置路由 ==========
.GET("/api/config", configHandler::getAllConfigs)
.GET("/api/config/{id}", configHandler::getConfigById)
@@ -120,7 +120,7 @@ public class SystemRouter {
.POST("/api/config", configHandler::createConfig)
.PUT("/api/config/{id}", configHandler::updateConfig)
.DELETE("/api/config/{id}", configHandler::deleteConfig)
// ========== 日志路由 ==========
.GET("/api/logs/login", logHandler::getAllLoginLogs)
.GET("/api/logs/login/page", logHandler::getLoginLogsByPage)
@@ -140,15 +140,15 @@ public class SystemRouter {
.GET("/api/logs/operation/count", operationLogHandler::getOperationLogCount)
.GET("/api/logs/operation/{id}", operationLogHandler::getOperationLogById)
.POST("/api/logs/operation", operationLogHandler::createOperationLog)
// ========== 认证路由 ==========
.POST("/api/auth/login", authHandler::login)
.POST("/api/auth/register", authHandler::register)
.POST("/api/auth/logout", authHandler::logout)
// ========== 统计路由 ==========
.GET("/api/stats/overview", statsHandler::getOverview)
// ========== 数据字典路由 ==========
.GET("/api/dict/types", dictHandler::getAllDictTypes)
.GET("/api/dict/types/{id}", dictHandler::getDictTypeById)
@@ -162,7 +162,7 @@ public class SystemRouter {
.POST("/api/dict/data", dictHandler::createDictData)
.PUT("/api/dict/data/{id}", dictHandler::updateDictData)
.DELETE("/api/dict/data/{id}", dictHandler::deleteDictData)
// ========== 公告路由 ==========
.GET("/api/notices", noticeHandler::getAllNotices)
.GET("/api/notices/{id}", noticeHandler::getNoticeById)
@@ -170,7 +170,7 @@ public class SystemRouter {
.POST("/api/notices", noticeHandler::createNotice)
.PUT("/api/notices/{id}", noticeHandler::updateNotice)
.DELETE("/api/notices/{id}", noticeHandler::deleteNotice)
// ========== 消息路由 ==========
.GET("/api/messages/user/{userId}", messageHandler::getMessagesByUser)
.GET("/api/messages/user/{userId}/unread", messageHandler::getUnreadCount)
@@ -178,7 +178,7 @@ public class SystemRouter {
.POST("/api/messages", messageHandler::createMessage)
.PUT("/api/messages/{id}/read", messageHandler::markAsRead)
.DELETE("/api/messages/{id}", messageHandler::deleteMessage)
// ========== 文件路由 ==========
.GET("/api/files", fileHandler::getAllFiles)
.GET("/api/files/{id}", fileHandler::getFileById)
@@ -188,7 +188,7 @@ public class SystemRouter {
.GET("/api/files/{id}/preview", fileHandler::previewFile)
.GET("/api/files/preview/{fileName}", fileHandler::previewFileByName)
.DELETE("/api/files/{id}", fileHandler::deleteFile)
// ========== 权限路由 ==========
.GET("/api/permissions", permissionHandler::getAllPermissions)
.GET("/api/permissions/{id}", permissionHandler::getPermissionById)
@@ -199,52 +199,33 @@ public class SystemRouter {
.PUT("/api/permissions/{id}", permissionHandler::updatePermission)
.DELETE("/api/permissions/{id}", permissionHandler::deletePermission)
// ========== 会员卡管理路由 ==========
// 会员卡类型
// 1. 获取所有会员卡类型
.GET("/api/memberCard/active", memberCardHandler::getActiveCards)
// 2. 获取会员卡详情
.GET("/api/memberCard/{memberCardId}", memberCardHandler::getMemberCardById)
// 3. 条件查询会员卡列表
.GET("/api/memberCard", memberCardHandler::getMemberCardList)
// 4. 新增/更新会员卡
.POST("/api/memberCard", memberCardHandler::saveMemberCard)
// 5. 逻辑删除会员卡
.DELETE("/api/memberCard/{memberCardId}", memberCardHandler::deleteMemberCard)
// 会员卡持卡
// 1. 会员购卡/发卡
.POST("/api/memberCardRecord", memberCardRecordHandler::insertActiveRecord)
// 2. 会员端“我的卡包” - 按会员ID获取有效卡
.GET("/api/memberCardRecord/member/{memberId}/active", memberCardRecordHandler::getMyCards)
// 3. 管理端按会员ID分页查所有卡记录
.GET("/api/memberCardRecord/member/{memberId}", memberCardRecordHandler::getMemberCardRecords)
// 4. 到期扫描
.GET("/api/memberCardRecord/expired", memberCardRecordHandler::getExpiredCards)
// 5. 扣次/扣费
.POST("/api/memberCardRecord/{id}/deduct", memberCardRecordHandler::deductUsage)
// 6. 续费
.POST("/api/memberCardRecord/{id}/renew", memberCardRecordHandler::renewCard)
// 7. 状态变更(过期/退款)
.PUT("/api/memberCardRecord/{id}/status", memberCardRecordHandler::updateStatus)
// 8. 验证次卡
.GET("/api/memberCardRecord/{id}/validate/count", memberCardRecordHandler::validateCountCard)
// 9. 验证储值卡
.GET("/api/memberCardRecord/{id}/validate/stored", memberCardRecordHandler::validateStoredCard)
// 会员卡交易
// 1. 插入流水记录
.POST("/api/transactions", memberCardTransactionHandler::insertTransaction)
// 2. 后台条件分页查询流水(带多个查询参数)
.GET("/api/transactions", memberCardTransactionHandler::getTransactionsWithConditions)
// 3. 按会员ID查询使用记录(分页 + 时间范围)
.GET("/api/transactions/member/{memberId}", memberCardTransactionHandler::getMemberTransactions)
// 4. 按卡ID查询所有流水记录
.GET("/api/transactions/card/{cardId}", memberCardTransactionHandler::getTransactionsByCardId)
// 5. 统计某卡种总扣次数
.GET("/api/transactions/statistics/deduct/card/{cardId}", memberCardTransactionHandler::getDeductCountByCardId)
// 6. 统计某时间段续费总金额
.GET("/api/transactions/statistics/renew", memberCardTransactionHandler::getRenewAmountByTimeRange)
// 7. 统计某会员购卡总金额
.GET("/api/transactions/statistics/purchase/member/{memberId}", memberCardTransactionHandler::getPurchaseAmountByMember)
// ========================================
// ========== 会员卡管理路由 ==============
// ========================================
// ===== 会员卡类型管理 =====
.GET("/api/member-cards/active", memberCardHandler::getActiveCards)
.GET("/api/member-cards/{memberCardId}", memberCardHandler::getMemberCardById)
.POST("/api/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/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)
.build();
}
}