From ebcd089e34b3667b9586481f6aafc279ff18993f Mon Sep 17 00:00:00 2001 From: Echo <1711788888@qq.com> Date: Mon, 1 Sep 2025 22:37:54 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=20=E6=96=B0=E5=A2=9E=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E8=AE=A2=E5=8D=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/v1/app/order.go | 36 ++++++++++++++++++++++++++++++++++-- initialize/router.go | 4 ++-- model/app/request/order.go | 8 +++++++- router/app/order.go | 9 +++++++-- service/app/order.go | 38 +++++++++++++++++++++++++++++++++++++- 5 files changed, 87 insertions(+), 8 deletions(-) diff --git a/api/v1/app/order.go b/api/v1/app/order.go index e907fea..84d643c 100644 --- a/api/v1/app/order.go +++ b/api/v1/app/order.go @@ -32,6 +32,7 @@ func (o *OrderApi) CreateOrder(c *gin.Context) { r.OkWithData(order, c) } +// PayOrder APP支付订单 func (o *OrderApi) PayOrder(context *gin.Context) { var p request.PayReq if err := context.ShouldBind(&p); err != nil { @@ -61,6 +62,7 @@ func (o *OrderApi) NotifyOrder(context *gin.Context) { r.OkWithMessage("微信支付回调处理成功", context) } +// GetOrderDetail 获取订单详情 func (o *OrderApi) GetOrderDetail(context *gin.Context) { id := context.Param("id") if id == "" { @@ -79,7 +81,8 @@ func (o *OrderApi) GetOrderDetail(context *gin.Context) { r.OkWithData(order, context) } -func (o *OrderApi) GetOrderList(context *gin.Context) { +// AppGetOrderList App获取订单列表 +func (o *OrderApi) AppGetOrderList(context *gin.Context) { var p request.GetOrderList if err := context.ShouldBind(&p); err != nil { global.GVA_LOG.Error("获取订单列表参数错误", zap.Error(err)) @@ -96,7 +99,7 @@ func (o *OrderApi) GetOrderList(context *gin.Context) { } // 获取订单列表 - orders, total, err := orderService.GetOrderList(p, userId) + orders, total, err := orderService.AppGetOrderList(p, userId) if err != nil { global.GVA_LOG.Error("获取订单列表失败", zap.Error(err)) r.FailWithMessage("获取订单列表失败:"+err.Error(), context) @@ -112,6 +115,7 @@ func (o *OrderApi) GetOrderList(context *gin.Context) { }, "获取订单列表成功", context) } +// BalancePay 余额支付 func (o *OrderApi) BalancePay(context *gin.Context) { var p request.BalancePay if err := context.ShouldBind(&p); err != nil { @@ -129,3 +133,31 @@ func (o *OrderApi) BalancePay(context *gin.Context) { r.OkWithMessage("余额支付成功", context) } + +// ======================== 后台管理接口 ======================== + +// GetOrderList 获取订单列表 +func (o *OrderApi) GetOrderList(context *gin.Context) { + var p request.GetOrderList + if err := context.ShouldBind(&p); err != nil { + global.GVA_LOG.Error("获取订单列表参数错误", zap.Error(err)) + r.FailWithMessage("获取订单列表参数错误", context) + return + } + + // 获取订单列表 + orders, total, err := orderService.GetOrderList(p) + if err != nil { + global.GVA_LOG.Error("获取订单列表失败", zap.Error(err)) + r.FailWithMessage("获取订单列表失败:"+err.Error(), context) + return + } + + r.OkWithDetailed( + r.PageResult{ + List: orders, + Total: total, + Page: p.Page, + PageSize: p.PageSize, + }, "获取订单列表成功", context) +} diff --git a/initialize/router.go b/initialize/router.go index 3cdb58f..a0efada 100644 --- a/initialize/router.go +++ b/initialize/router.go @@ -118,8 +118,8 @@ func Routers() *gin.Engine { //APP相关路由 { appRouter.InitAppUserRouter(AppAuthGroup, PublicGroup) - appRouter.InitBannerRouter(PrivateGroup, PublicGroup) // Banner相关路由 - appRouter.InitOrderRouter(AppAuthGroup, PublicGroup) // 订单相关路由 + appRouter.InitBannerRouter(PrivateGroup, PublicGroup) // Banner相关路由 + appRouter.InitOrderRouter(AppAuthGroup, PrivateGroup, PublicGroup) // 订单相关路由 } //插件路由安装 diff --git a/model/app/request/order.go b/model/app/request/order.go index 43f0d82..fdf71c7 100644 --- a/model/app/request/order.go +++ b/model/app/request/order.go @@ -10,7 +10,13 @@ type BalancePay struct { type GetOrderList struct { common.PageInfo - Status int `json:"status" form:"status"` // 订单状态 + Status int `json:"status" form:"status"` // 订单状态 + Title string `json:"title" form:"title"` // 订单标题 + Name string `json:"name" form:"name"` // 订单名称 + PayType int `json:"pay_type" form:"pay_type"` + OrderType int `json:"order_type" form:"order_type"` + StartTime string `json:"start_time" form:"start_time"` + EndTime string `json:"end_time" form:"end_time"` } type PayReq struct { diff --git a/router/app/order.go b/router/app/order.go index 1373366..d5e069b 100644 --- a/router/app/order.go +++ b/router/app/order.go @@ -5,17 +5,22 @@ import "github.com/gin-gonic/gin" type OrderRouter struct{} // InitOrderRouter 初始化订单路由 -func (r *OrderRouter) InitOrderRouter(AppRouter, PublicRouter *gin.RouterGroup) { +func (r *OrderRouter) InitOrderRouter(AppRouter, SysteamRouter, PublicRouter *gin.RouterGroup) { appRouter := AppRouter.Group("app_order") publicRouter := PublicRouter.Group("app_order") + systeamRouter := SysteamRouter.Group("order") { appRouter.POST("", orderApi.CreateOrder) // 创建订单 appRouter.POST("/wechat/pay", orderApi.PayOrder) // 微信支付订单 - appRouter.GET("/list", orderApi.GetOrderList) // 获取订单列表 + appRouter.GET("/list", orderApi.AppGetOrderList) // 获取订单列表 appRouter.GET(":id", orderApi.GetOrderDetail) // 获取订单详情 appRouter.POST("/balance/pay", orderApi.BalancePay) // 余额支付 } { publicRouter.POST("/notify", orderApi.NotifyOrder) // 微信支付回调通知 } + { + systeamRouter.GET("/list", orderApi.GetOrderList) // 获取订单列表 + systeamRouter.GET(":id", orderApi.GetOrderDetail) // 获取订单详情 + } } diff --git a/service/app/order.go b/service/app/order.go index eb4f84d..0285069 100644 --- a/service/app/order.go +++ b/service/app/order.go @@ -145,7 +145,8 @@ func (s *OrderService) BalancePay(p request.BalancePay) error { return nil } -func (s *OrderService) GetOrderList(p request.GetOrderList, id uint) (orders []app.Order, total int64, err error) { +// AppGetOrderList APP端获取订单列表 +func (s *OrderService) AppGetOrderList(p request.GetOrderList, id uint) (orders []app.Order, total int64, err error) { limit := p.PageSize offset := p.PageSize * (p.Page - 1) @@ -165,3 +166,38 @@ func (s *OrderService) GetOrderList(p request.GetOrderList, id uint) (orders []a } return } + +// GetOrderList APP端获取订单列表 +func (s *OrderService) GetOrderList(p request.GetOrderList) (orders []app.Order, total int64, err error) { + limit := p.PageSize + offset := p.PageSize * (p.Page - 1) + + db := global.GVA_DB.Model(&app.Order{}) + if p.Title != "" { + db = db.Where("title LIKE ? ", "%"+p.Title+"%") + } + if p.Status != 0 { + db = db.Where("status = ?", p.Status) + } + if p.PayType != 0 { + db = db.Where("pay_type = ?", p.PayType) + } + if p.OrderType != 0 { + db = db.Where("order_type = ?", p.OrderType) + } + + if p.StartTime != "" && p.EndTime != "" { + db = db.Where("created_at BETWEEN ? AND ?", p.StartTime, p.EndTime) + } + if p.Name != "" { + db = db.Where("name LIKE ? ", "%"+p.Name+"%") + } + + err = db.Count(&total).Error + err = db.Limit(limit).Offset(offset).Order("created_at desc").Find(&orders).Error + if err != nil { + global.GVA_LOG.Error("获取订单列表失败", zap.Error(err)) + return nil, 0, err + } + return +}