feat(coupon): 新增营销模块 gym-coupon,实现 PRD 2.5 优惠券/拼团/秒杀/营销/积分

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
时舟年
2026-06-15 09:14:17 +08:00
parent 7a94145819
commit af2422c114
132 changed files with 9977 additions and 2 deletions
+5
View File
@@ -159,6 +159,11 @@
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.novalon.gym.manage</groupId>
<artifactId>gym-coupon</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
@@ -24,7 +24,12 @@ import java.util.List;
"cn.novalon.gym.manage.gymmembercard.dao",
"cn.novalon.gym.manage.member.repository",
"cn.novalon.gym.manage.groupcourse.dao",
"cn.novalon.gym.manage.checkIn.repository"
"cn.novalon.gym.manage.checkIn.repository",
"cn.novalon.gym.manage.coupon.dao",
"cn.novalon.gym.manage.coupon.groupbuy.dao",
"cn.novalon.gym.manage.coupon.flashsale.dao",
"cn.novalon.gym.manage.coupon.marketing.dao",
"cn.novalon.gym.manage.coupon.points.dao"
})
@EnableReactiveElasticsearchRepositories(basePackages = "cn.novalon.gym.manage.member.es.repository")
public class ManageApplication {
@@ -1,6 +1,12 @@
package cn.novalon.gym.manage.app.config;
import cn.novalon.gym.manage.coupon.flashsale.handler.FlashSaleHandler;
import cn.novalon.gym.manage.coupon.groupbuy.handler.GroupBuyHandler;
import cn.novalon.gym.manage.coupon.handler.CouponHandler;
import cn.novalon.gym.manage.coupon.handler.MemberCouponHandler;
import cn.novalon.gym.manage.coupon.marketing.handler.MarketingActivityHandler;
import cn.novalon.gym.manage.coupon.points.handler.PointsHandler;
import cn.novalon.gym.manage.checkIn.handler.CheckInHandler;
import cn.novalon.gym.manage.datacount.handler.DataStatisticsHandler;
import cn.novalon.gym.manage.file.handler.SysFileHandler;
@@ -74,7 +80,13 @@ public class SystemRouter {
GroupCourseTypeHandler groupCourseTypeHandler,
CourseLabelHandler courseLabelHandler,
CheckInHandler checkInHandler,
DataStatisticsHandler dataStatisticsHandler) {
DataStatisticsHandler dataStatisticsHandler,
CouponHandler couponHandler,
MemberCouponHandler memberCouponHandler,
GroupBuyHandler groupBuyHandler,
FlashSaleHandler flashSaleHandler,
MarketingActivityHandler marketingActivityHandler,
PointsHandler pointsHandler) {
return route()
// ========== 诊断路由 ==========
@@ -335,6 +347,97 @@ public class SystemRouter {
.GET("/api/datacount/signin", dataStatisticsHandler::getSignInStatistics)
.GET("/api/datacount/history", dataStatisticsHandler::queryHistoricalStatistics)
.GET("/api/datacount/export", dataStatisticsHandler::exportStatistics)
// ========================================
// ========== 优惠券模块路由 ===============
// ========================================
.GET("/api/coupon/list", couponHandler::getAllCoupons)
.POST("/api/coupon/page", couponHandler::getCouponsByPage)
.GET("/api/coupon/search", couponHandler::searchCoupons)
.GET("/api/coupon/member/{memberId}/coupons", memberCouponHandler::getMemberCoupons)
.POST("/api/coupon/claim", memberCouponHandler::claimCoupon)
.GET("/api/coupon/{id}/statistics", couponHandler::getCouponStatistics)
.POST("/api/coupon/{id}/publish", couponHandler::publishCoupon)
.POST("/api/coupon/{id}/terminate", couponHandler::terminateCoupon)
.POST("/api/coupon/{id}/distribute", couponHandler::distributeCoupon)
.GET("/api/coupon/{id}", couponHandler::getCouponById)
.POST("/api/coupon", couponHandler::createCoupon)
.PUT("/api/coupon/{id}", couponHandler::updateCoupon)
.DELETE("/api/coupon/{id}", couponHandler::deleteCoupon)
// ========================================
// ========== 拼团模块路由 =================
// ========================================
.GET("/api/coupon/groupBuy/list", groupBuyHandler::getAllActivities)
.POST("/api/coupon/groupBuy/page", groupBuyHandler::getActivitiesByPage)
.GET("/api/coupon/groupBuy/search", groupBuyHandler::searchActivities)
.POST("/api/coupon/groupBuy/teams", groupBuyHandler::createTeam)
.GET("/api/coupon/groupBuy/teams", groupBuyHandler::getTeams)
.POST("/api/coupon/groupBuy/teams/{teamId}/join", groupBuyHandler::joinTeam)
.POST("/api/coupon/groupBuy/teams/{teamId}/cancel", groupBuyHandler::cancelTeam)
.GET("/api/coupon/groupBuy/teams/{teamId}", groupBuyHandler::getTeamById)
.GET("/api/coupon/groupBuy/{id}/statistics", groupBuyHandler::getStatistics)
.POST("/api/coupon/groupBuy/{id}/publish", groupBuyHandler::publishActivity)
.POST("/api/coupon/groupBuy/{id}/terminate", groupBuyHandler::terminateActivity)
.GET("/api/coupon/groupBuy/{id}", groupBuyHandler::getActivityById)
.POST("/api/coupon/groupBuy", groupBuyHandler::createActivity)
.PUT("/api/coupon/groupBuy/{id}", groupBuyHandler::updateActivity)
.DELETE("/api/coupon/groupBuy/{id}", groupBuyHandler::deleteActivity)
// ========================================
// ========== 秒杀模块路由 =================
// ========================================
.GET("/api/coupon/flashSale/list", flashSaleHandler::getAllActivities)
.POST("/api/coupon/flashSale/page", flashSaleHandler::getActivitiesByPage)
.GET("/api/coupon/flashSale/search", flashSaleHandler::searchActivities)
.GET("/api/coupon/flashSale/items", flashSaleHandler::getItems)
.POST("/api/coupon/flashSale/items", flashSaleHandler::createItem)
.PUT("/api/coupon/flashSale/items/{id}", flashSaleHandler::updateItem)
.POST("/api/coupon/flashSale/grab", flashSaleHandler::grab)
.POST("/api/coupon/flashSale/orders/{orderId}/pay", flashSaleHandler::payOrder)
.POST("/api/coupon/flashSale/orders/{orderId}/cancel", flashSaleHandler::cancelOrder)
.GET("/api/coupon/flashSale/orders/member/{memberId}", flashSaleHandler::getOrdersByMember)
.GET("/api/coupon/flashSale/{id}/statistics", flashSaleHandler::getStatistics)
.POST("/api/coupon/flashSale/{id}/publish", flashSaleHandler::publishActivity)
.POST("/api/coupon/flashSale/{id}/terminate", flashSaleHandler::terminateActivity)
.GET("/api/coupon/flashSale/{id}", flashSaleHandler::getActivityById)
.POST("/api/coupon/flashSale", flashSaleHandler::createActivity)
.PUT("/api/coupon/flashSale/{id}", flashSaleHandler::updateActivity)
.DELETE("/api/coupon/flashSale/{id}", flashSaleHandler::deleteActivity)
// ========================================
// ========== 会员营销活动路由 =============
// ========================================
.GET("/api/coupon/marketing/list", marketingActivityHandler::getAllActivities)
.POST("/api/coupon/marketing/page", marketingActivityHandler::getActivitiesByPage)
.GET("/api/coupon/marketing/search", marketingActivityHandler::searchActivities)
.GET("/api/coupon/marketing/{id}/statistics", marketingActivityHandler::getActivityStatistics)
.POST("/api/coupon/marketing/{id}/publish", marketingActivityHandler::publishActivity)
.POST("/api/coupon/marketing/{id}/terminate", marketingActivityHandler::terminateActivity)
.GET("/api/coupon/marketing/{id}", marketingActivityHandler::getActivityById)
.POST("/api/coupon/marketing", marketingActivityHandler::createActivity)
.PUT("/api/coupon/marketing/{id}", marketingActivityHandler::updateActivity)
.DELETE("/api/coupon/marketing/{id}", marketingActivityHandler::deleteActivity)
// ========================================
// ========== 积分商城路由 =================
// ========================================
.GET("/api/coupon/points/rules/list", pointsHandler::getAllRules)
.POST("/api/coupon/points/rules", pointsHandler::createRule)
.PUT("/api/coupon/points/rules/{id}", pointsHandler::updateRule)
.DELETE("/api/coupon/points/rules/{id}", pointsHandler::deleteRule)
.GET("/api/coupon/points/products/list", pointsHandler::getAllProducts)
.GET("/api/coupon/points/products/search", pointsHandler::searchProducts)
.POST("/api/coupon/points/products", pointsHandler::createProduct)
.PUT("/api/coupon/points/products/{id}", pointsHandler::updateProduct)
.DELETE("/api/coupon/points/products/{id}", pointsHandler::deleteProduct)
.POST("/api/coupon/points/products/{id}/publish", pointsHandler::publishProduct)
.GET("/api/coupon/points/balance/{memberId}", pointsHandler::getBalance)
.POST("/api/coupon/points/earn", pointsHandler::earnPoints)
.POST("/api/coupon/points/signIn", pointsHandler::signIn)
.POST("/api/coupon/points/exchange", pointsHandler::exchange)
.GET("/api/coupon/points/records/member/{memberId}", pointsHandler::getRecordsByMember)
.GET("/api/coupon/points/statistics", pointsHandler::getStatistics)
.build();
}
}