Bladeren bron

新增飞机逻辑,修改航班以适应飞机,以及订单

kindring 2 jaren geleden
bovenliggende
commit
17233ddf77
2 gewijzigde bestanden met toevoegingen van 75 en 9 verwijderingen
  1. 46 8
      controller/TimeUpdate.js
  2. 29 1
      database/d_user.js

+ 46 - 8
controller/TimeUpdate.js

@@ -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();
+

+ 29 - 1
database/d_user.js

@@ -264,6 +264,32 @@ function waitPayOrder(){
     return mysql.pq(sql,values);
 }
 
+/**
+ * 修改订单信息
+ * @param orderId
+ * @param params
+ * @returns {Promise | Promise<unknown>}
+ */
+function changeOrder(orderId,params){
+    let sql=`update orders set`,values=[];
+    let fields = Object.keys(params);
+    fields = fields.filter(field=>params[field])
+    if(fields.length<1){
+        throw {rcode:code.notParam}
+    }
+    for(let field of fields) {
+        if (!params[field]) {
+            continue;
+        }
+        if(values.length>0){sql+=','}
+        sql+=` \`${field}\` = ?`
+        values.push(params[field])
+    }
+    sql+=` where id=?`;
+    values.push(orderId)
+    return mysql.pq(sql,values);
+}
+
 module.exports =  {
     register,
     login,
@@ -282,5 +308,7 @@ module.exports =  {
     travelInfo,
     changeAllTravelState,
     changeTravel,
-    waitPayOrder
+    waitPayOrder,
+    changeOrder,
+    payOrder
 }