kindring 2 rokov pred
rodič
commit
44ab71fdad
5 zmenil súbory, kde vykonal 78 pridanie a 18 odobranie
  1. 1 0
      controller/TimeUpdate.js
  2. 16 10
      controller/account.js
  3. 30 6
      database/d_user.js
  4. 2 2
      db.md
  5. 29 0
      routes/userApi.js

+ 1 - 0
controller/TimeUpdate.js

@@ -72,6 +72,7 @@ function payOrderItem(orderId){
     if(ind != -1){orders[ind] = null}
     orders = orders.filter(val=>val);
     payLock=false;
+
 }
 
 

+ 16 - 10
controller/account.js

@@ -375,9 +375,11 @@ async function payOrder(account,passwd,orderId){
             [err,result] = await handle(db_user.clearTick(order.id));
         }
     }
-    [err,result] = await handle(db_user.payOrder(orderId));
+    let unitPrice = parseFloat(flight.currentPrice);
+    let payPrice = parseFloat(flight.currentPrice) * travels.length;
+    [err,result] = await handle(db_user.payOrder(orderId,unitPrice,payPrice));
     if(err){console.log(err);throw err}
-    payOrderItem();
+    await reloadOrder();
     return result;
 }
 
@@ -461,7 +463,7 @@ async function refundTick(account,tickId){
  * @returns {Promise<void>}
  */
 async function orderInfo(account,orderId){
-    let userId,order,travels;
+    let userId,order,travels,ticks,tmpTravels=[];
     // 根据账号查找id
     let [err,result] = await handle(db_user.findAccountUser(userType,account));
     if(err)throw err;
@@ -473,19 +475,22 @@ async function orderInfo(account,orderId){
     if(err)throw err;
     if(result.length < 1){ throw {rcode:codeMap.notFound,msg:'无法找到相关订单'} }
     order = result[0];
+    // 获取所有车票信息,只有在已经支付后才有
+    [err,ticks] = await handle(db_user.orderTicks(orderId));
+    order.ticks = ticks
     // 获取乘车人信息
     travels=order.travelIds.split(',');
-    order.travels = travels.map(async travelId=>{
-        [err,result] = await handle(db_user.travelInfo(travelId));
+    for (let i = 0; i < travels.length ; i++) {
+        [err,result] = await handle(db_user.travelInfo(travels[i]));
         if(err) {console.log('获取乘车人信息失败'); throw  err}
         if(result.length < 1){ throw {rcode:codeMap.notFound,msg:'无法找到乘车人'} }
-        // 查找对应车票信息
-        [err,result] = await handle(db_user.orderTick(order.id,travelId));
-        return {
+        console.log(result);
+        tmpTravels.push({
             id:result[0].id,
             name:result[0].name,
-        }
-    });
+        })
+    }
+    order.travels = tmpTravels;
     return order;
 }
 
@@ -535,6 +540,7 @@ module.exports = {
     addOrder,
     chooseSit,
     payOrder,
+    orderInfo,
     changeOrderTravel
 }
 

+ 30 - 6
database/d_user.js

@@ -226,6 +226,7 @@ function userOrder(userId,orderType = fields.orderType_all){
         select 
         o.*,air.airCode,
         f.sailingTime,f.langdinTime,f.flightState,f.flightName,
+        f.currentPrice,
         dep.cityname as departureCityName,
         tar.cityname as targetCityName
         from 
@@ -261,10 +262,14 @@ function userOrder(userId,orderType = fields.orderType_all){
     return mysql.pq(sql,values);
 }
 
-// 获取
+/**
+ * 获取订单机票数量
+ * @param orderId
+ * @returns {Promise | Promise<unknown>}
+ */
 function orderTicks(orderId){
     let sql=``,values=[];
-    sql+=`select * from airTicket where orderId = ?`;
+    sql+=`select t.*,p.name from airTicket as t LEFT JOIN (select id,name from travel ) as p on p.id = t.travelId where t.orderId = ?`;
     values.push(orderId);
     return mysql.pq(sql,values);
 }
@@ -383,12 +388,14 @@ function findOrder(userId,flightId,travelIds,createTime){
 /**
  * 用户支付订单
  * @param orderId
+ * @param unitPrice 机票单价
+ * @param payPrice 订单总价格
  * @returns {Promise | Promise<unknown>}
  */
-function payOrder(orderId){
+function payOrder(orderId,unitPrice,payPrice){
     let sql=``,values=[];
-    sql+=`update orders set payState = ? where id = ?`
-    values.push(fields.payState_pay,orderId);
+    sql+=`update orders set payState = ?,unitPrice = ?,payPrice= ? where id = ?`
+    values.push(fields.payState_pay,unitPrice,payPrice,orderId);
     return mysql.pq(sql,values);
 }
 
@@ -437,11 +444,28 @@ function changeOrder(orderId,params){
  */
 function userOrderInfo(userId,orderId){
     let sql=``,values=[];
-    sql+=`select * from orders where userId = ? and id = ?`
+    // sql+=`select * from orders as o , flight as  where userId = ? and id = ?`
+    sql+=`select 
+        o.*,air.airCode,
+        f.sailingTime,f.langdinTime,f.flightState,f.flightName,
+        f.currentPrice,
+        dep.cityname as departureCityName,
+        tar.cityname as targetCityName
+        from 
+        orders as o 
+        LEFT JOIN (select * from flight ) as f on f.id = o.flightId
+        LEFT JOIN (select * from air ) as air on air.id = f.airId
+        LEFT JOIN (select id,cityName from area ) as dep on dep.id = f.departureCity
+        LEFT JOIN (select id,cityName from area ) as tar on tar.id = f.targetCity
+        where userId = ? and o.id = ?`
     values.push(userId,orderId);
     return mysql.pq(sql,values);
 }
 
+function orderTick(){
+
+}
+
 module.exports =  {
     register,
     login,

+ 2 - 2
db.md

@@ -81,8 +81,8 @@
 | payTime | date | null | null | 支付时间 |
 | travelIds | varchar |  |  | 乘机人列表 |
 | refundTick | varchar | | | 退款的机票id | 
-| payPrice | floor | n | 0-9999 | 订单价格 |
-
+| payPrice | floor(10,2) | n | 0-9999 | 订单价格 |
+| unitPrice | floor(10,2) | n | 0-9999 | 机票单价 | 
 
 ## 机票表 airTicket (需要选坐,多机票订单不允许)
 | 字段       | 类型      | 默认值 | 可选值 | 备注                  |

+ 29 - 0
routes/userApi.js

@@ -386,4 +386,33 @@ router.get(
         }
     }
 )
+
+router.get(
+    '/order/info',
+    checkLogin(fields.userType),
+    checkParams({
+        get:{orderId:{required:true},}
+    }),
+    async (req,res)=>{
+        try{
+            let results = await c_user.orderInfo(
+                req.session[progress.userSessionField],
+                req.query.orderId,
+            );
+            res.json({
+                rcode: code.ok,
+                data: results,
+                total: results.length
+            })
+        }catch (error) {
+            if (error.rcode !== code.customError) {
+                console.log(error);
+            }
+            res.json({
+                rcode: error.rcode || code.serverError,
+                msg: error.msg || error.message
+            });
+        }
+    }
+)
 module.exports = router;