93 lines
2.6 KiB
Go
93 lines
2.6 KiB
Go
|
package transfersys
|
|||
|
|
|||
|
import (
|
|||
|
"context"
|
|||
|
"fmt"
|
|||
|
"io/ioutil"
|
|||
|
"net/http"
|
|||
|
"strconv"
|
|||
|
"strings"
|
|||
|
"time"
|
|||
|
|
|||
|
"com.snow.auto_monitor/app/http/middlewares"
|
|||
|
orderServ "com.snow.auto_monitor/app/services/orders"
|
|||
|
"com.snow.auto_monitor/app/utils/rdbdq"
|
|||
|
"github.com/qit-team/snow-core/log/logger"
|
|||
|
)
|
|||
|
|
|||
|
func DoCallBack() {
|
|||
|
fmt.Println("开始执行周期任务:DoCallBack")
|
|||
|
|
|||
|
// 创建一个新的Ticker,每3秒钟触发一次
|
|||
|
ticker := time.NewTicker(1 * time.Second)
|
|||
|
defer ticker.Stop() // 在函数结束时停止Ticker
|
|||
|
for range ticker.C {
|
|||
|
for i := 0; i < 10; i++ {
|
|||
|
res, err := rdbdq.ReadLatestOne()
|
|||
|
if err != nil {
|
|||
|
logger.Error(context.TODO(), "middlewares", err)
|
|||
|
continue
|
|||
|
}
|
|||
|
if res != "" {
|
|||
|
// fmt.Println("获取到的数据:", res)
|
|||
|
wait_time, err := strconv.Atoi(strings.Split(res, "_")[0])
|
|||
|
if err != nil {
|
|||
|
logger.Error(context.TODO(), "middlewares", err)
|
|||
|
continue
|
|||
|
}
|
|||
|
order_id, err := strconv.Atoi(strings.Split(res, "_")[1])
|
|||
|
if err != nil {
|
|||
|
logger.Error(context.TODO(), "middlewares", err)
|
|||
|
continue
|
|||
|
}
|
|||
|
order, err := orderServ.GetById(int64(order_id))
|
|||
|
if err != nil {
|
|||
|
logger.Error(context.TODO(), "middlewares", err)
|
|||
|
continue
|
|||
|
}
|
|||
|
// fmt.Println(order)
|
|||
|
contentType := "application/x-www-form-urlencoded"
|
|||
|
status := "01"
|
|||
|
if order.Status != 1 {
|
|||
|
status = "03"
|
|||
|
}
|
|||
|
datamap := map[string]interface{}{
|
|||
|
"merchantId": order.MerchantId,
|
|||
|
"outTradeNo": order.OutTradeNo,
|
|||
|
"status": status,
|
|||
|
"rechargeAccount": order.RechargeAccount,
|
|||
|
}
|
|||
|
sign, _ := middlewares.GetMD5Sign(datamap)
|
|||
|
data := fmt.Sprintf("merchantId=%d&outTradeNo=%s&status=%s&rechargeAccount=%s&sign=%s", order.MerchantId, order.OutTradeNo, status, order.RechargeAccount, sign)
|
|||
|
// fmt.Println(data)
|
|||
|
notifyUrl := "http://openapi.1688sup.com/notify/JingRongZhuanDan"
|
|||
|
resp, err := http.Post(notifyUrl, contentType, strings.NewReader(data))
|
|||
|
if err != nil {
|
|||
|
logger.Error(context.TODO(), "middlewares", err)
|
|||
|
return
|
|||
|
}
|
|||
|
defer resp.Body.Close()
|
|||
|
b, err := ioutil.ReadAll(resp.Body)
|
|||
|
if err != nil {
|
|||
|
logger.Error(context.TODO(), "middlewares", err)
|
|||
|
return
|
|||
|
}
|
|||
|
if string(b) != "success" && wait_time < 1024 {
|
|||
|
wait_time = wait_time * 4
|
|||
|
err = rdbdq.WriteOne(strconv.FormatInt(int64(wait_time), 10)+"_"+strconv.FormatInt(int64(order_id), 10),
|
|||
|
time.Now().Add(time.Duration(wait_time)*time.Second).Unix())
|
|||
|
if err != nil {
|
|||
|
logger.Error(context.TODO(), "middlewares", string(b))
|
|||
|
logger.Error(context.TODO(), "middlewares", err)
|
|||
|
return
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
func init() {
|
|||
|
go DoCallBack()
|
|||
|
}
|