今天写一个功能的时候,遇到了一个情况就是用户拉起支付宝准备支付的时候,可能会点击X退出 支付,但是项目里面不允许这样的操作,于是hu6xaingd想到一个办法就是20秒之内没有完成支付的话,就释放改订单,给其他人支付,使用goroutine异步执行一个20秒的函数,然后给安卓返回数据,防止等死。以下是代码:
go
func(orderid
int64) {
nt :=
20
for i :=
0; i < nt; i++ {
time.Sleep(time.Second *
1)
}
q, _ := common.NewOrm().QueryTable(
"anchor_order").Filter(
"id", orderid).Filter(
"status",
1).Count()
if q >
0 {
//还原
if _, err := common.NewOrm().QueryTable(
"anchor_order").Filter(
"id", orderid).Update(orm.Params{
"anchorid":
0,
"mph":
0,
"total":
0,
"status":
0,
}); err !=
nil {
fmt.Println(
"还原AOT出错")
}
}
fmt.Println(
"FUCK---执行结束")
}(orderid)