52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
package handler
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"dianshang/pkg/response"
|
|
)
|
|
|
|
// GetPaymentStatus 获取订单支付状态
|
|
func (h *OrderHandler) GetPaymentStatus(c *gin.Context) {
|
|
userID, exists := c.Get("user_id")
|
|
if !exists {
|
|
response.Unauthorized(c)
|
|
return
|
|
}
|
|
|
|
// 从URL路径参数获取订单号
|
|
orderNo := c.Param("id")
|
|
if orderNo == "" {
|
|
response.BadRequest(c, "订单号不能为空")
|
|
return
|
|
}
|
|
|
|
// 获取订单详情
|
|
order, err := h.orderService.GetOrderByOrderNo(orderNo)
|
|
if err != nil {
|
|
response.ErrorWithMessage(c, response.ERROR, "订单不存在")
|
|
return
|
|
}
|
|
|
|
// 验证订单归属
|
|
if order.UserID != userID.(uint) {
|
|
response.ErrorWithMessage(c, response.ERROR, "无权限操作此订单")
|
|
return
|
|
}
|
|
|
|
// 返回支付状态
|
|
status := "unpaid"
|
|
if order.Status == 2 || order.Status == 3 || order.Status == 4 || order.Status == 5 || order.Status == 6 {
|
|
status = "paid"
|
|
} else if order.Status == 7 {
|
|
status = "canceled"
|
|
} else if order.Status == 9 {
|
|
status = "refunded"
|
|
}
|
|
|
|
response.Success(c, gin.H{
|
|
"status": status,
|
|
"order_no": order.OrderNo,
|
|
"order_status": order.Status,
|
|
})
|
|
}
|