🎨 完善订单和微信支付功能

This commit is contained in:
2025-07-25 23:02:43 +08:00
parent 8fd1968cf6
commit bb2a68fb61
9 changed files with 572 additions and 41 deletions

View File

@@ -1,3 +1,131 @@
package app
import (
"git.echol.cn/loser/lckt/global"
"git.echol.cn/loser/lckt/model/app"
"git.echol.cn/loser/lckt/model/app/request"
r "git.echol.cn/loser/lckt/model/common/response"
"git.echol.cn/loser/lckt/utils/user_jwt"
"git.echol.cn/loser/lckt/utils/wechat"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
type OrderApi struct{}
// CreateOrder APP新建订单
func (o *OrderApi) CreateOrder(c *gin.Context) {
var p app.Order
if err := c.ShouldBind(&p); err != nil {
global.GVA_LOG.Error("支付订单参数错误", zap.Error(err))
r.FailWithMessage("支付订单参数错误", c)
return
}
order, err := orderService.Create(&p)
if err != nil {
global.GVA_LOG.Error("创建订单失败", zap.Error(err))
r.FailWithMessage("创建订单失败", c)
return
}
r.OkWithData(order, c)
}
func (o *OrderApi) PayOrder(context *gin.Context) {
var p request.PayReq
if err := context.ShouldBind(&p); err != nil {
global.GVA_LOG.Error("支付订单参数错误", zap.Error(err))
r.FailWithMessage("支付订单参数错误", context)
return
}
pay, err := orderService.Pay(p, context)
if err != nil {
global.GVA_LOG.Error("支付订单失败", zap.Error(err))
r.FailWithMessage("支付订单失败:"+err.Error(), context)
return
}
r.OkWithDetailed(pay, "支付订单成功", context)
}
// NotifyOrder 微信支付回调通知
func (o *OrderApi) NotifyOrder(context *gin.Context) {
err := wechat.NotifyHandle(context)
if err != nil {
global.GVA_LOG.Error("微信支付回调处理失败", zap.Error(err))
r.FailWithMessage("微信支付回调处理失败:"+err.Error(), context)
return
}
r.OkWithMessage("微信支付回调处理成功", context)
}
func (o *OrderApi) GetOrderDetail(context *gin.Context) {
id := context.Param("id")
if id == "" {
global.GVA_LOG.Error("获取订单详情参数错误: ID不能为空")
r.FailWithMessage("获取订单详情参数错误: ID不能为空", context)
return
}
order, err := orderService.GetOrderDetail(id)
if err != nil {
global.GVA_LOG.Error("获取订单详情失败", zap.Error(err))
r.FailWithMessage("获取订单详情失败", context)
return
}
r.OkWithData(order, context)
}
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
}
// 获取当前用户ID
userId := user_jwt.GetUserID(context)
if userId == 0 {
global.GVA_LOG.Error("获取用户ID失败")
r.FailWithMessage("获取用户ID失败", context)
return
}
// 获取订单列表
orders, total, err := orderService.GetOrderList(p, userId)
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)
}
func (o *OrderApi) BalancePay(context *gin.Context) {
var p request.BalancePay
if err := context.ShouldBind(&p); err != nil {
global.GVA_LOG.Error("余额支付参数错误", zap.Error(err))
r.FailWithMessage("余额支付参数错误", context)
return
}
err := orderService.BalancePay(p)
if err != nil {
global.GVA_LOG.Error("余额支付失败", zap.Error(err))
r.FailWithMessage("余额支付失败:"+err.Error(), context)
return
}
r.OkWithMessage("余额支付成功", context)
}