|
@@ -2,27 +2,65 @@
|
|
|
const {getUnixTimeStamp} = require('../until/time')
|
|
|
const db_user = require('../database/d_user')
|
|
|
const handle = require("../until/handle");
|
|
|
+const {payState_cancel} = require("../maps/field");
|
|
|
let orders = [];
|
|
|
-
|
|
|
+let payLock = false;
|
|
|
// 订单超过15分钟的自动过期
|
|
|
let expire = 60 * 15;
|
|
|
let timerHandle = null;
|
|
|
|
|
|
-// 每隔5秒遍历一次数据
|
|
|
-async function loadOrders(now,){
|
|
|
- let [err,result] = await handle(db_user.waitPayOrder());
|
|
|
+
|
|
|
+function tick (t,fn){
|
|
|
+ setTimeout(async ()=>{
|
|
|
+ await fn();
|
|
|
+ tick(t,fn);
|
|
|
+ },t)
|
|
|
}
|
|
|
|
|
|
-async function tick (){
|
|
|
|
|
|
+async function check(){
|
|
|
+ if(payLock){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let nowUnix = getUnixTimeStamp();
|
|
|
+ for (let i = 0; i < orders.length; i++) {
|
|
|
+ let order = orders[i];
|
|
|
+ if(!order){
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if(nowUnix>order.endTime){
|
|
|
+ let [err,result] = await handle(db_user.changeOrder(order.id,{payState:payState_cancel}));
|
|
|
+ if(err){console.log(err)}
|
|
|
+ console.log(`订单${order.id},超时过期`);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
+async function main(){
|
|
|
+ let [err,result] = await handle(db_user.waitPayOrder());
|
|
|
+ if(err){
|
|
|
+ console.log('获取用户数据失败')
|
|
|
+ console.error(err);
|
|
|
+ }
|
|
|
+ orders = result.map(order=>{
|
|
|
+ return {
|
|
|
+ id: order.id,
|
|
|
+ endTime: order.createTime + expire
|
|
|
+ }
|
|
|
+ });
|
|
|
+ tick(1000,check);
|
|
|
}
|
|
|
|
|
|
+main();
|
|
|
+
|
|
|
+console.log('检测订单');
|
|
|
|
|
|
-function check(order){
|
|
|
+async function payOrder(orderId){
|
|
|
+ payLock=true;
|
|
|
+ let [err,result] = await handle(db_user.payOrder(orderId));
|
|
|
+ if(err){console.log(err)}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
-console.log('检测订单')
|
|
|
-tick();
|
|
|
+
|