Bladeren bron

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

kindring 3 jaren geleden
bovenliggende
commit
acd5c8bd3d
7 gewijzigde bestanden met toevoegingen van 132 en 47 verwijderingen
  1. 10 2
      controller/account.js
  2. 14 10
      controller/c_flight.js
  3. 9 14
      database/d_air.js
  4. 4 4
      database/d_user.js
  5. 8 16
      routes/flight_api.js
  6. 28 1
      routes/userApi.js
  7. 59 0
      routes/users.js

+ 10 - 2
controller/account.js

@@ -5,6 +5,13 @@ const codeMap = require('../maps/rcodeMap')
 const {userType} = require("../maps/field");
 // 处理账号的注册登录,
 
+async function checkAccount(account,userType= field.userType){
+    let [err,result] = await handle(db_user.findAccountUser(userType,account));
+    if(err){throw err}
+    // 查看是否有结果
+    if (result.length >= 1 ) {throw {rcode:codeMap.notFound,msg:'该账户已经被注册'}}
+    return true;
+}
 /**
  * 用户登录,返回用户名
  * @param userType
@@ -15,7 +22,7 @@ const {userType} = require("../maps/field");
 async function login(userType = field.userType,account,passwd){
     let [err,result] = await handle(db_user.login(userType,account,passwd));
     if(err){throw err}
-    // 查看是否有结果
+    // 查看是否有结果,没有结果自动告知账户或者密码错误
     if (result.length < 1 ) {throw {rcode:codeMap.notFound,msg:'账号或者密码错误'}}
     // 账号被冻结
     if (result[0].state == field.userFreezeState ){throw {rcode:codeMap.permissionDenied,msg:'账号被冻结'}}
@@ -77,7 +84,7 @@ async function register(type,account,passwd,nickName){
     // 根据账号和原密码查找id
     let [err,result] = await handle(db_user.findAccountUser(type,account));
     if(err)throw err;
-    if(result[0].total){throw {rcode:codeMap.dataRepeat,msg:'账号重复'}}
+    if(result.length&&result[0].total){throw {rcode:codeMap.dataRepeat,msg:'账号重复'}}
     // 新增用户
     [err,result] = await handle(db_user.register(type,nickName,account,passwd));
     if(err)throw err;
@@ -89,6 +96,7 @@ module.exports = {
     register,
     changePhone,
     changePasswd,
+    checkAccount,
     login,
 }
 

+ 14 - 10
controller/c_flight.js

@@ -39,7 +39,10 @@ async function flightList(routeType){
 async function flightInfo(flightId){
     let [err,result] = await handle(db_air.flightInfo(flightId));
     if(err){throw err}
-    return result;
+    if(!result.length){
+        throw {rcode:codeMap.notFound,msg:'无法找到航班'}
+    }
+    return result[0];
 }
 
 
@@ -49,8 +52,8 @@ async function flightInfo(flightId){
  * @param airCode 飞机代号
  * @param originalPrice 原始价格
  * @param currentPrice 当前价格
- * @param seilingTime 出发时间
- * @param langdingTime 落地时间
+ * @param sailingTime 出发时间
+ * @param langdinTime 落地时间
  * @param totalVotes 票数量
  * @param departureCity 出发城市id
  * @param targetCity 目标城市id
@@ -59,15 +62,15 @@ async function flightInfo(flightId){
 async function addFlight(
     flightName,airCode,
     originalPrice,currentPrice,
-    seilingTime,langdingTime,
+    sailingTime,langdinTime,
     totalVotes,departureCity,targetCity){
     let err,result,departCityType,targetCityType,routerType;
     // 检查参数
-    if(!flightName||!airCode||!originalPrice||!currentPrice||!seilingTime||!langdingTime||!totalVotes||!departureCity||!targetCity){
+    if(!flightName||!airCode||!originalPrice||!currentPrice||!sailingTime||!langdinTime||!totalVotes||!departureCity||!targetCity){
         throw {rcode:codeMap.notParam,msg:``}
     }
     // 判断时间是否合法
-    if(seilingTime >= langdingTime){
+    if(sailingTime >= langdinTime){
         throw {rcode:codeMap.customError,msg:`出发时间晚于到站时间`}
     }
     // 获取城市类型
@@ -92,8 +95,8 @@ async function addFlight(
         airCode,
         originalPrice,
         currentPrice,
-        seilingTime,
-        langdingTime,
+        sailingTime,
+        langdinTime,
         totalVotes,
         routerType,
         departureCity,
@@ -112,7 +115,8 @@ async function addFlight(
 async function updateFlight(flightId,updateOption){
     let err,result,departCityType,targetCityType,routerType;
     let updateOptions = {}
-
+    console.log(flightId);
+    console.log(updateOption);
     // 如果修改了城市,那么直接修改对应的航班类型
     if(updateOption.departureCity){
         [err,departCityType] = await handle(db_area.cityType(updateOption.departureCity));
@@ -144,7 +148,7 @@ async function updateFlight(flightId,updateOption){
     updateOptions.airCode = updateOption.airCode;
     updateOptions.originalPrice = updateOption.originalPrice;
     updateOptions.currentPrice = updateOption.currentPrice;
-    updateOptions.seilingTime = updateOption.seilingTime;
+    updateOptions.sailingTime = updateOption.sailingTime;
     updateOptions.langdinTime = updateOption.langdinTime;
     updateOptions.totalVotes = updateOption.totalVotes;
     updateOptions.departureCity = updateOption.departureCity;

+ 9 - 14
database/d_air.js

@@ -116,18 +116,11 @@ function addFlight(flightName,
                    targetCity){
     let sql = ``,values = [];
     sql = `insert into flight 
-    (
-        flightName,airCode,
-        originalPrice,currentPrice,
-        sailingTime,langdinTime,
-        totalVotes,routeType,
-        departureCity,targetCity
-    ) values(
-        ?,?,
-        ?,?,
-        ?,?,
-        ?,?
-        )`;
+    (flightName,airCode,originalPrice,currentPrice,
+    sailingTime,langdinTime,
+    totalVotes,routeType,
+    departureCity,targetCity
+    ) values(?,?,?,?,?,?,?,?,?,?)`;
     values.push(...arguments);
     sql += ';'
     return mysql.pq(sql,values);
@@ -146,14 +139,16 @@ function updateFlight(flightId,updateOptions){
     let _arguments = Array.from(arguments);
 
     // 判断如果所有参数都为空时抛出异常
-    sql+=`update from flight set`
+    sql+=`update flight set `
     let keys = Object.keys(updateOptions);
     if(keys.length < 1){
         throw {rcode:code.notParam,msg:'没有修改项'}
     }
     for(let i = 0;i<keys.length;i++){
         let field = keys[i];
-        if(i>0){sql+=','}
+        if(!updateOptions[field]){continue;}
+        console.log(i);
+        if(values.length > 0){sql+=','}
         sql+=`${field} = ?`
         values.push(updateOptions[field])
     }

+ 4 - 4
database/d_user.js

@@ -7,7 +7,7 @@ const mysql = require('./mysql');
  * @returns {Promise<unknown>}
  */
 function findAccountUser(userType,account){
-    let sql = `select count(*) as total from user where type = ? and account = ?`;
+    let sql = `select * from user where accountType = ? and account = ?`;
     let values = [userType,account];
     return mysql.pq(sql,values);
 }
@@ -19,7 +19,7 @@ function findAccountUser(userType,account){
  * @returns {Promise<unknown>}
  */
 function findPhoneUser(userType,phone){
-    let sql = `select count(*) as total from user where type = ? and phone = ?`;
+    let sql = `select count(*) as total from user where accountType = ? and phone = ?`;
     let values = [userType,phone];
     return mysql.pq(sql,values);
 }
@@ -71,8 +71,8 @@ function changePhone(id,phone){
  * @returns {Promise<unknown>}
  */
 function register(userType,nickName,account,passwd){
-    let sql = `insert into user(nickName,account,passwd,type) values(?,?,?,?)`;
-    let values = [newPasswd,id];
+    let sql = `insert into user(nickName,account,passwd,accountType) values(?,?,?,?)`;
+    let values = [nickName,account,passwd,userType];
     return mysql.pq(sql,values);
 }
 

+ 8 - 16
routes/flight_api.js

@@ -56,15 +56,15 @@ router.post('/search',
     }
 })
 
-router.get('/detail',
+router.get('/info',
     paramsCheck({
         get:{
-            flight:{required:true}
+            flightId:{required:true}
         }
     }),
     async (req,res)=>{
         try{
-            let results = await c_flight.flightInfo(req.query.flight);
+            let results = await c_flight.flightInfo(req.query.flightId);
             res.json({
                 rcode: code.ok,
                 data: results
@@ -90,7 +90,7 @@ router.post('/add',
             airCode:{required:true},
             originalPrice:{required:true},
             currentPrice:{required:true},
-            seilingTime:{required:true},
+            sailingTime:{required:true},
             langdinTime:{required:true},
             totalVotes:{required:true},
             departureCity:{required:true},
@@ -104,7 +104,7 @@ router.post('/add',
                 req.body.airCode,
                 req.body.originalPrice,
                 req.body.currentPrice,
-                req.body.seilingTime,
+                req.body.sailingTime,
                 req.body.langdinTime,
                 req.body.totalVotes,
                 req.body.departureCity,
@@ -137,17 +137,9 @@ router.post('/update',
     }),
     async (req,res)=>{
         try{
-            let results = await c_flight.updateFlight({
-                flightName:req.body.flightName,
-                airCode:req.body.airCode,
-                originalPrice:req.body.originalPrice,
-                currentPrice:req.body.currentPrice,
-                seilingTime:req.body.seilingTime,
-                langdinTime:req.body.langdinTime,
-                totalVotes:req.body.totalVotes,
-                departureCity:req.body.departureCity,
-                targetCity:req.body.targetCity
-            });
+            console.log()
+
+            let results = await c_flight.updateFlight(req.body.flightId, req.body.newOption);
             res.json({
                 rcode: code.ok,
                 data: results

+ 28 - 1
routes/userApi.js

@@ -1,3 +1,30 @@
 const router = require('express').Router();
-
+const checkParams = require('../middleware/paramsCheck')
+const c_user = require("../controller/account");
+const code = require("../maps/rcodeMap");
+const  fields = require("../maps/field")
+// 检查账户 是否存在
+router.get('/check',
+    checkParams({
+       get:{
+           account:{required:true}
+       }
+    }),
+    async (req,res)=>{
+        try{
+            let results = await c_user.checkAccount(req.query.account,fields.userType );
+            res.json({
+                rcode: code.ok,
+                data: results
+            })
+        }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;

+ 59 - 0
routes/users.js

@@ -2,6 +2,9 @@ const router = require('express').Router();
 const userApi = require('./userApi');
 const progress = require("../maps/progress");
 const code = require("../maps/rcodeMap");
+const paramsCheck = require('../middleware/paramsCheck')
+const c_user = require("../controller/account");
+const fields = require("../maps/field");
 /* 登录页面, . */
 router.get('/', function(req, res, next) {
   res.send('respond with a resource');
@@ -23,6 +26,62 @@ router.get('/logout',(req,res)=>{
     });
   }
 });
+router.post('/register',
+    paramsCheck({
+        post: {
+          nickName:{required:true},
+          account:{required:true},
+          passwd:{required:true},
+          captcha:{required:true}
+        }
+}),
+    async(req,res)=>{
+      try{
+        if (req.body.captcha.toLowerCase() != req.session.captcha) return res.json({rcode: code.customError, msg: `验证码错误,captcha error` });
+        let results = await c_user.register(fields.userType,
+            req.body.account,req.body.passwd,req.body.nickName);
+        res.json({
+          rcode: code.ok,
+          data: results
+        })
+      }catch (error) {
+        if (error.rcode !== code.customError) {
+          console.log(error);
+        }
+        res.json({
+          rcode: error.rcode || code.serverError,
+          msg: error.msg || error.message
+        });
+      }
+});
+
+
+router.post('/login',
+    paramsCheck({
+      post: {
+        account:{required:true},
+        passwd:{required:true}
+      }
+    }),
+    async(req,res)=>{
+      try{
+        if (req.body.captcha.toLowerCase() != req.session.captcha) return res.json({...result, msg: `验证码错误,captcha error` });
+        let results = await c_user.login(fields.userType,req.body.account,req.body.passwd);
+        res.json({
+          rcode: code.ok,
+          data: results
+        })
+      }catch (error) {
+        if (error.rcode !== code.customError) {
+          console.log(error);
+        }
+        res.json({
+          rcode: error.rcode || code.serverError,
+          msg: error.msg || error.message
+        });
+      }
+    });
+
 router.use('/api',userApi)
 
 module.exports = router;