goProject/trunk/center/paycenter/internal/pay/check_order.go

70 lines
1.8 KiB
Go
Raw Normal View History

2025-01-23 16:12:49 +08:00
package pay
import (
"common/connection"
2025-02-08 16:30:07 +08:00
"common/timer"
2025-01-23 16:12:49 +08:00
"goutil/logUtilPlus"
2025-02-08 16:30:07 +08:00
"paycenter/internal/wxpay"
2025-01-23 16:12:49 +08:00
"strconv"
"time"
)
func init() {
2025-02-08 16:30:07 +08:00
timer.Register(timer.TriggerTypeHalfHour, CheckOrderStatus)
2025-01-23 16:12:49 +08:00
}
2025-02-08 16:30:07 +08:00
// CheckOrderStatus 检查订单状态
// @return error
func CheckOrderStatus(nowTime time.Time) error {
2025-01-23 16:12:49 +08:00
2025-02-08 16:30:07 +08:00
//检索最近一个月的订单
for i := 0; i < 2; i++ {
//取i的负数
dbDate := connection.GetToMonthAdd(int32(-i))
var orders []Order // 使用切片存储查询结果
2025-01-23 16:12:49 +08:00
2025-02-08 16:30:07 +08:00
//这里使用原始sql
sql := "select * from order_" + strconv.Itoa(int(dbDate)) + " where order_status = 0"
dbResult := connection.GetPayDB().Exec(sql).Find(&orders)
if dbResult.Error != nil {
logUtilPlus.ErrorLog("查询订单状态失败", dbResult.Error.Error())
continue
}
2025-01-23 16:12:49 +08:00
2025-02-08 16:30:07 +08:00
// 处理查询结果
for _, order := range orders {
2025-01-23 16:12:49 +08:00
2025-02-08 16:30:07 +08:00
//查询订单状态
statusStr, err := wxpay.QueryOrderByOutTradeNo(order.OrderID)
if err != nil {
logUtilPlus.ErrorLog("查询订单状态失败", err.Error())
2025-01-23 16:12:49 +08:00
continue
}
2025-02-08 16:30:07 +08:00
if statusStr == "SUCCESS" {
//修改订单状态
err = ChangeOrderStatus(order.OrderID, 1)
2025-01-23 16:12:49 +08:00
if err != nil {
2025-02-08 16:30:07 +08:00
logUtilPlus.ErrorLog("修改订单状态失败", err.Error())
2025-01-23 16:12:49 +08:00
continue
}
2025-02-08 16:30:07 +08:00
} else if statusStr == "CLOSED" { //已关闭
order.OrderStatus = 2
//修改订单状态
connection.AsyncSave(connection.GetPayDB(), &order)
} else if order.OrderTime.Add(time.Hour * 1).Before(time.Now()) { //超一个小时未支付 直接关闭订单
//直接关闭订单
err = wxpay.CloseOrder(order.OrderID)
if err != nil {
logUtilPlus.ErrorLog("关闭订单失败", err.Error())
continue
2025-01-23 16:12:49 +08:00
}
2025-02-08 16:30:07 +08:00
order.OrderStatus = 2
connection.AsyncSave(connection.GetPayDB(), &order)
2025-01-23 16:12:49 +08:00
}
}
}
2025-02-08 16:30:07 +08:00
return nil
2025-01-23 16:12:49 +08:00
}