Bladeren bron

航班与城市相关数据库操作

kindring 3 jaren geleden
bovenliggende
commit
0c266506c3
4 gewijzigde bestanden met toevoegingen van 110 en 3 verwijderingen
  1. 33 0
      controller/account.js
  2. 2 2
      database/d_air.js
  3. 21 1
      database/d_user.js
  4. 54 0
      routes/userApi.js

+ 33 - 0
controller/account.js

@@ -1,4 +1,5 @@
 const db_user = require('../database/d_user')
+const d_air = require('../database/d_air')
 const handle = require('../until/handle')
 const field = require('../maps/field')
 const codeMap = require('../maps/rcodeMap')
@@ -128,6 +129,36 @@ async function cars(account){
 }
 
 
+async function removeCar(carId){
+    let [err,result] = await handle(db_user.removeCar(carId));
+    if(err)throw err;
+    return result;
+}
+
+async function addCar(flightId,account){
+    let userId;
+    // 根据账号查找id
+    let [err,result] = await handle(db_user.findAccountUser(userType,account));
+    if(err)throw err;
+    if(result.length < 1){
+        throw {rcode:codeMap.notFound,msg:'无法找到账户'}
+    }
+    userId = result[0].id;
+    // 查看航班是否已经结束
+    [err,result] = await handle(d_air.flightInfo(flightId));
+    if(err)throw err;
+    if(result.length < 1){
+        throw {rcode:codeMap.notFound,msg:'无法找到航班,航班号错误'}
+    }
+    console.log(result[0]);
+    if(result[0].flightState !== field.flightState_sail+''){
+        throw {rcode:codeMap.customError,msg:'航班非销售状态'}
+    }
+    // 开始添加购物车
+    [err,result] = await handle(db_user.addCar(flightId,userId));
+    if(err)throw err;
+    return result;
+}
 
 module.exports = {
     register,
@@ -136,6 +167,8 @@ module.exports = {
     checkAccount,
     login,
     info,
+    removeCar,
+    addCar,
     cars
 }
 

+ 2 - 2
database/d_air.js

@@ -235,7 +235,7 @@ function searchFlights(searchItems,cityName = true,page = 1,limit){
 function sellFlights(num = 5){
     let sql=``,values=[];
     // 判断状态为
-    sql+=`select f.id,f.currentPrice,f.sailingTime,f.langdinTime,dep.cityname as departureCityName,tar.cityname as targetCityName
+    sql+=`select f.id,f.currentPrice,f.sailingTime,f.langdinTime,f.flightState,dep.cityname as departureCityName,tar.cityname as targetCityName
             from
             flight as f
             LEFT JOIN (select id,cityName from area ) as dep on dep.id = f.departureCity
@@ -253,7 +253,7 @@ function sellFlights(num = 5){
 function wicketFlights(num = 5){
     let sql=``,values=[];
     // 判断状态为
-    sql+=`select f.id,f.currentPrice,f.sailingTime,f.langdinTime,f.createTime,dep.cityname as departureCityName,tar.cityname as targetCityName
+    sql+=`select f.id,f.currentPrice,f.sailingTime,f.langdinTime,f.flightState,f.createTime,dep.cityname as departureCityName,tar.cityname as targetCityName
             from
             flight as f
             LEFT JOIN (select id,cityName from area ) as dep on dep.id = f.departureCity

+ 21 - 1
database/d_user.js

@@ -95,6 +95,24 @@ function cars(id){
     return mysql.pq(sql,values);
 }
 
+
+function addCar(flightId,userId){
+    let sql = `insert into car(flightId,userId) values(?,?)`;
+    let values = [flightId,userId];
+    return mysql.pq(sql,values);
+}
+
+/**
+ * 移除购物车的指定行 根据id
+ * @param carId 要删除的id
+ * @returns {Promise<unknown>}
+ */
+function removeCar(carId){
+    let sql = `delete from car where id = ?`;
+    let values = [carId];
+    return mysql.pq(sql,values);
+}
+
 module.exports =  {
     register,
     login,
@@ -103,5 +121,7 @@ module.exports =  {
     changePhone,
     changePasswd,
     info,
-    cars
+    cars,
+    removeCar,
+    addCar
 }

+ 54 - 0
routes/userApi.js

@@ -66,4 +66,58 @@ router.get('/cars',checkLogin(fields.userType),async(req,res)=>{
     }
 });
 
+router.post('/car/add',
+    checkLogin(fields.userType),
+    checkParams(
+        {
+            post:{
+                flightId:{required:true}
+            }
+        }),
+    async(req,res)=>{
+        try{
+            let results = await c_user.addCar(req.body.flightId,req.session[progress.userSessionField]);
+            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
+            });
+        }
+    })
+
+router.post('/car/remove',
+    checkLogin(fields.userType),
+    checkParams(
+        {
+            post:{
+                carId:{required:true}
+            }
+        }),
+   async(req,res)=>{
+        try{
+            let results = await c_user.removeCar(req.body.carId);
+            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;