Bladeren bron

修改部分数据库字段,新增乘机人

kindring 2 jaren geleden
bovenliggende
commit
7cccf13294
5 gewijzigde bestanden met toevoegingen van 283 en 7 verwijderingen
  1. 105 1
      controller/account.js
  2. 86 2
      database/d_user.js
  3. 31 4
      db.md
  4. 3 0
      maps/field.js
  5. 58 0
      routes/userApi.js

+ 105 - 1
controller/account.js

@@ -135,6 +135,105 @@ async function removeCar(carId){
     return result;
 }
 
+/**
+ * 移除乘机人
+ * @param travelId
+ * @returns {Promise<*>}
+ */
+async function removeTravel(travelId){
+    let [err,result] = await handle(db_user.removeTravel(travelId));
+    if(err)throw err;
+    return result;
+}
+
+/**
+ * 添加乘机人
+ * @param name 乘机人名
+ * @param card 身份证号
+ * @param phone 手机号
+ * @param account 登陆账号
+ * @param isDefault 是否为默认
+ * @returns {Promise<*>}
+ */
+async function addTravel(name,card,phone,account,isDefault = field.travelState_isDefault){
+    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(db_user.changeAllTravelState(userId,field.travelState_notDefault));
+    if(err)throw err;
+    // 开始添加购物车
+    [err,result] = await handle(db_user.addTravel(userId,name,card,phone,isDefault));
+    if(err)throw err;
+    return result;
+}
+
+async function updateTravel(account,travelId,params){
+    // 根据账号查找id
+    let [err,result] = await handle(db_user.findAccountUser(userType,account));
+    if(err)throw err;
+    if(result.length < 1){
+        throw {rcode:codeMap.notFound,msg:'无法找到账户'}
+    }
+    [err,result] = await handle(db_user.changeTravel(travelId,{
+        card:params.card,
+        phone:params.phone,
+        default:params.default
+    }));
+    if(err)throw err;
+
+    // 查找成功
+    return result;
+}
+
+/**
+ * 查找所有的乘机人
+ * @param account
+ * @returns {Promise<*>}
+ */
+async function travels(account){
+    // 根据账号查找id
+    let [err,result] = await handle(db_user.findAccountUser(userType,account));
+    if(err)throw err;
+    if(result.length < 1){
+        throw {rcode:codeMap.notFound,msg:'无法找到账户'}
+    }
+    [err,result] = await handle(db_user.travels(result[0].id));
+    if(err)throw err;
+
+    // 查找成功
+    return result.map(val=>{
+        let card = val.card.replace(val.card.substr(4,10),'**********')
+        return {
+            ...val,
+            card:card
+        }
+    });
+}
+
+/**
+ * 乘机人详细信息
+ * @param account
+ * @param passwd
+ * @param travelId
+ * @returns {Promise<*>}
+ */
+async function travelInfo(account,passwd,travelId){
+    // 根据账号查找id
+    let [err,result] = await handle(db_user.login(userType,account,passwd));
+    if(err)throw err;
+    if(result.length < 1){
+        throw {rcode:codeMap.notFound,msg:'无法找到账户'}
+    }
+    [err,result] = await handle(db_user.travelInfo(travelId));
+    if(err)throw err;
+    return result;
+}
+
 async function addCar(flightId,account){
     let userId;
     // 根据账号查找id
@@ -174,6 +273,11 @@ module.exports = {
     info,
     removeCar,
     addCar,
-    cars
+    cars,
+    removeTravel,
+    addTravel,
+    travels,
+    travelInfo,
+    updateTravel
 }
 

+ 86 - 2
database/d_user.js

@@ -1,5 +1,6 @@
 const mysql = require('./mysql');
-
+const fields = require("../maps/field")
+const code = require("../maps/rcodeMap");
 /**
  * 查找是否有指定用户名的账户
  * @param userType 用户类型
@@ -116,6 +117,83 @@ function addCar(flightId,userId){
     return mysql.pq(sql,values);
 }
 
+/**
+ * 添加乘机人
+ * @param userId
+ * @param name
+ * @param card
+ * @param phone
+ * @param defaultState
+ * @returns {Promise | Promise<unknown>}
+ */
+function addTravel(userId,name,card,phone,defaultState){
+    let sql = `insert into travel(userId,name,card,phone,default) values(?,?,?,?,?)`;
+    let values = [userId,name,card,phone,defaultState];
+    return mysql.pq(sql,values);
+}
+// 获取乘机人
+function travels(userId){
+    let sql = `select * from travel where userId = ?`;
+    let values = [userId];
+    return mysql.pq(sql,values);
+}
+
+/**
+ * 修改指定用户的所有状态
+ * @param userId
+ * @param travelState
+ * @returns {Promise | Promise<unknown>}
+ */
+function changeAllTravelState(userId,travelState = fields.travelState_notDefault){
+    let sql = `update travel set default = ? where userId = ?`;
+    let values = [travelState,userId];
+    return mysql.pq(sql,values);
+}
+
+/**
+ * 修改指定乘机人的信息
+ * @param travelId
+ * @param params
+ * @returns {Promise | Promise<unknown>}
+ */
+function changeTravel(travelId,params){
+    let sql=`update travel 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) {
+        // console.log(`${field} : ${searchItems[field]}`)
+        if (!params[field]) {
+            continue;
+        }
+        sql+=` ${field} = ?`
+        values.push(params[field])
+    }
+    sql+=` where id=?`;
+    values.push(travelId)
+    // let sql = `update travel set default = ? where userId = ?`;
+    // let values = [travelState,userId];
+    return mysql.pq(sql,values);
+}
+
+// 修改乘机人
+function removeTravel(travelId,name,card,phone,defaultState){
+    let sql = `delete from travel where id = ?`;
+    let values = [travelId];
+    return mysql.pq(sql,values);
+}
+
+
+// 修改乘机人
+function travelInfo(travelId){
+    let sql = `select * from travel where id = ?`;
+    let values = [travelId];
+    return mysql.pq(sql,values);
+}
+
+
 /**
  * 移除购物车的指定行 根据id
  * @param carId 要删除的id
@@ -138,5 +216,11 @@ module.exports =  {
     cars,
     removeCar,
     addCar,
-    findCar
+    findCar,
+    removeTravel,
+    addTravel,
+    travels,
+    travelInfo,
+    changeAllTravelState,
+    changeTravel
 }

+ 31 - 4
db.md

@@ -22,6 +22,16 @@
 | accountState | char | 1   | 账号状态,封禁 |
 | createTime | date | now | 创建时间  |
 
+## 乘机人 travel
+| 字段  | 类型  | 默认值 | 可选值| 备注    |
+|-----|-----|-----|---|-------|
+| id | int | | | |
+| userId | int | | | 用户id |
+| name | varchar | '' | '' | 乘机人名字 |
+| phone | varchar | '' |'' | 手机号 |
+| card | varchar | '' |'' | 乘机人身份证 |
+| default | char(2) | 1 | 1默认 2非默认 |是否为默认 |
+
 ## 地区表 area
 | 字段        | 类型      | 默认值  | 可选值 | 备注  |
 |-----------|---------|------|----|-----|
@@ -31,33 +41,50 @@
 | cityState | int     | 1    | 1启用2封禁 | 封禁 |
 
 
+## 飞机表 air
+| 字段           | 类型      | 默认值 | 可选值                      | 备注     |
+|--------------|---------|-----|--------------------------|--------|
+| id | int | pk | n | id |
+| airCode | varcahr | 255 | '' | 飞机名称 |
+| row | int | 1 | 15 | 一共有多少排 |
+| col | int | 1 | 5 | 一排几个座位 |
+
 ## 航班表flight(管理员通过航线创建航班),需要输入价格和指定飞机和起飞时间
 | 字段           | 类型      | 默认值 | 可选值                      | 备注     |
 |--------------|---------|-----|--------------------------|--------|
 | id           | int     | pk  | n                        | id     |
+| airId  | varcahr | 755 | s                        | 飞机代号   |
 | originalPrice | floor   | 1   | 0-99999                  | 原始机票价格 |
 | currentPrice | floor   | 1   | 0-99999                  | 当前机票价格 |
 | sailingTime  | varcahr    | 0 | 0                      | 起飞时间,unix时间戳   |
 | langdinTime  | varcahr    | 0 | 0                     | 到站时间,unix时间戳   |
-| airCode  | varcahr | 755 | s                        | 飞机代号   |
 | flightState  | char    | 1   | 1(售票),2(值机),3(飞行中),4(结束) | 航班状态   |
 | lateState    | cahr    | 1   | 1(正点),2(晚点)              | 航班晚点状态 |
-| totalVotes   | int | 3   | 1-200                    | 售卖总票数  |
 | routeType    | char | 1 | 1(国内),2(国际) | 航线类型,是否为跨国航线,程序自动生成 | 
 | departureCity | int  | null | n           | 出发城市          |
 | targetCity   | int  | null | n           | 目标城市          |
 | flightName   | varchar | '' | '' | 航班名称 | 
 
+## 订单表 orders 
+| 字段       | 类型      | 默认值 | 可选值 | 备注                  |
+|----------|---------|----|-----|---------------------|
+| id       | int     | pk | n   | id |
+| payState | char | 1 | 1(创建,待支付),2(已经支付),3(等待值机,值机后不允许进行),3(订单结束,航班已经到站),4(取消),5(已经退款) | 机票状态|
+| userId | int | pk | n   | 用户id |
+| flightId | int | pk | n | 航班id |
+| createTime | date | now | now | 创建时间 |
+| payTime | date | null | null | 支付时间 |
+
+
 ## 机票表 airTickets
 | 字段       | 类型      | 默认值 | 可选值 | 备注                  |
 |----------|---------|----|-----|---------------------|
 | id       | int     | pk | n   | id |
 | flightId | int | pk | n   | 航班id |
-| userId | int | pk | n   | 用户id |
-| payState | char | 1 | 1(创建,待支付),2(已经支付),3(订单结束,航班已经到站),4(取消),5(已经退款) | 机票状态|
 | createTime | date | now | now | 创建时间 |
 | payTime | date | null | null | 支付时间 |
 
+
 ## 购物车 car
 | 字段       | 类型      | 默认值 | 可选值 | 备注                  |
 |----------|---------|----|-----|---------------------|

+ 3 - 0
maps/field.js

@@ -21,4 +21,7 @@ module.exports = {
     flightState_sail: 1,
     // 航班检票状态
     flightState_wicket:2,
+    // 设置
+    travelState_isDefault: 1,
+    travelState_notDefault: 2,
 }

+ 58 - 0
routes/userApi.js

@@ -146,4 +146,62 @@ router.post('/car/remove',
         }
     })
 
+
+router.post('/travel/remove',
+    checkLogin(fields.userType),
+    checkParams(
+        {
+            post:{
+                travelId:{required:true}
+            }
+        }),
+    async(req,res)=>{
+        try{
+            let results = await c_user.removeTravel(req.body.travelId);
+            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('/travel/add',
+    checkLogin(fields.userType),
+    checkParams(
+        {
+            post:{
+                name:{required:true},
+                card:{required:true},
+                phone:{required:true},
+                isDefault:{required:true},
+            }
+        }),
+    async(req,res)=>{
+        try{
+            let results = await c_user.addTravel(req.body.travelId);
+            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;