Bladeren bron

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

kindring 3 jaren geleden
bovenliggende
commit
02ad7c7999
7 gewijzigde bestanden met toevoegingen van 231 en 52 verwijderingen
  1. 101 0
      controller/c_flight.js
  2. 0 44
      controller/flight.js
  3. 3 0
      database/d_air.js
  4. 13 0
      database/d_area.js
  5. 106 0
      database/d_recommend.js
  6. 7 7
      db.md
  7. 1 1
      routes/admin_api.js

+ 101 - 0
controller/c_flight.js

@@ -0,0 +1,101 @@
+// 管理航班
+const db_air = require('../database/d_air')
+const db_area = require('../database/d_area')
+const handle = require('../until/handle')
+const field = require('../maps/field')
+const codeMap = require('../maps/rcodeMap')
+
+/**
+ *
+ * @param departureCity 出发城市
+ * @param targetCity 目标城市
+ * @param routeType 航线类型
+ * @param startUnixTime 起飞时间开始
+ * @param endUnixTime 起飞时间结束
+ * @returns {Promise<*>}
+ */
+async function searchFlight(departureCity,targetCity,routeType,startUnixTime,endUnixTime){
+    let [err,result] = await handle(db_air.flightSearch(...arguments));
+    if(err){throw err}
+    return result;
+}
+
+/**
+ * 航班列表
+ * @param routeType 航班类型
+ * @returns {Promise<*>}
+ */
+async function flightList(routeType){
+    let [err,result] = await handle(db_air.flightList(routeType));
+    if(err){throw err}
+    return result;
+}
+
+
+
+/**
+ * 新增航班
+ * @param flightName 航班代号
+ * @param airCode 飞机代号
+ * @param originalPrice 原始价格
+ * @param currentPrice 当前价格
+ * @param seilingTime 出发时间
+ * @param langdingTime 落地时间
+ * @param totalVotes 票数量
+ * @param departureCity 出发城市id
+ * @param targetCity 目标城市id
+ * @returns {Promise<*>}
+ */
+async function addFlight(
+    flightName,airCode,
+    originalPrice,currentPrice,
+    seilingTime,langdingTime,
+    totalVotes,departureCity,targetCity){
+    let err,result,departCityType,targetCityType,routerType;
+    // 检查参数
+    if(!flightName||!airCode||!originalPrice||!currentPrice||!seilingTime||!langdingTime||!totalVotes||!departureCity||!targetCity){
+        throw {rcode:codeMap.notParam,msg:``}
+    }
+    // 判断时间是否合法
+    if(seilingTime >= langdingTime){
+        throw {rcode:codeMap.customError,msg:`出发时间晚于到站时间`}
+    }
+    // 获取城市类型
+    [err,departCityType] = await handle(db_area.cityType(departureCity));
+    [err,targetCityType] = await handle(db_area.cityType(targetCity));
+    if(!departCityType.length||!targetCityType.length){
+        console.log('------error------')
+        console.log(departCityType);
+        console.log(targetCityType);
+        throw {rcode:codeMap.customError,msg:`未知的起始城市`}
+    }
+    departCityType = departCityType[0].cityType;
+    targetCityType = targetCityType[0].cityType;
+    if(departCityType==field.cityType_domestic&&targetCityType==field.cityType_domestic){
+        routerType=field.routeType_domestic;
+    }else{
+        routerType=field.routeType_international;
+    }
+    if(err){throw err}
+    [err,result] = await handle(db_air.addFlight(
+        flightName,
+        airCode,
+        originalPrice,
+        currentPrice,
+        seilingTime,
+        langdingTime,
+        totalVotes,
+        routerType,
+        departureCity,
+        targetCity
+    ));
+    if(err){throw err}
+    return result;
+}
+
+module.exports = {
+    searchFlight,
+    flightList,
+    addFlight,
+
+}

+ 0 - 44
controller/flight.js

@@ -1,44 +0,0 @@
-// 管理航班
-const db_air = require('../database/d_air')
-const db_area = require('../database/d_area')
-const handle = require('../until/handle')
-const field = require('../maps/field')
-const codeMap = require('../maps/rcodeMap')
-
-/**
- *
- * @param departureCity 出发城市
- * @param targetCity 目标城市
- * @param routeType 航线类型
- * @param startUnixTime 起飞时间开始
- * @param endUnixTime 起飞时间结束
- * @returns {Promise<*>}
- */
-async function searchFlight(departureCity,targetCity,routeType,startUnixTime,endUnixTime){
-    let [err,result] = await handle(db_air.flightSearch(...arguments));
-    if(err){throw err}
-    return result;
-}
-
-/**
- * 航班列表
- * @param routeType 航班类型
- * @returns {Promise<*>}
- */
-async function flightList(routeType){
-    let [err,result] = await handle(db_air.flightList(routeType));
-    if(err){throw err}
-    return result;
-}
-
-
-
-async function addFlight(departureCity,targetCity,routeType,startUnixTime,endUnixTime){
-    let [err,result] = await handle(db_air.flightSearch(...arguments));
-    if(err){throw err}
-    return result;
-}
-
-module.exports = {
-    searchFlight
-}

+ 3 - 0
database/d_air.js

@@ -116,6 +116,8 @@ function addFlight(flightName,
     return mysql.pq(sql,values);
 }
 
+
+
 /**
  * 修改航班信息
  * @param flightId
@@ -214,6 +216,7 @@ function recommendFlight(){
 module.exports = {
     flightSearch,
     addFlight,
+    flightTicks,
     updateFlight,
     flightList
 }

+ 13 - 0
database/d_area.js

@@ -17,6 +17,18 @@ function addArea(cityType = field.cityType_domestic,cityName){
     return mysql.pq(sql,values);
 }
 
+/**
+ * 获取航班类型
+ * @param cityId
+ */
+function cityType(cityId){
+    let sql = ``,values = [];
+    sql = `select cityType from area where id = ?`
+    values.push(cityId)
+    sql += ';'
+    return mysql.pq(sql,values);
+}
+
 /**
  * 搜索地区
  * @param [cityType] 城市类型
@@ -64,4 +76,5 @@ module.exports = {
     updateCity,
     addArea,
     searchAreas,
+    cityType
 }

+ 106 - 0
database/d_recommend.js

@@ -0,0 +1,106 @@
+const mysql = require('./mysql')
+const field = require('../maps/field')
+const code = require('../maps/rcodeMap')
+const checkArgumentsIsEmpty = require('../until/checkArgumentsIsEmpty')
+
+/**
+ * 新增活动
+ * @param recommendName 活动名
+ * @param discript 推荐描述
+ * @param zIndex 排序
+ * @returns {Promise | Promise<unknown>}
+ */
+function addRecommend(recommendName,discript,zIndex = 1){
+    let sql=``,values=[];
+    sql+=`insert into 
+            recommend (recommendName,discript,zIndex) 
+            values(?,?,?);`
+    values.push(recommendName,discript,zIndex)
+    return mysql.pq(sql,values);
+}
+
+/**
+ * 搜索活动
+ * @param key
+ * @param state
+ * @returns {Promise<unknown>}
+ */
+function searchRecommend(key,state){
+    let sql=``,values=[];
+    sql+=`select * from recommendDir`
+    if(key){
+        sql += ` where recommend like "%?%" and discript like "%?%"`
+        values.push(key,key)
+    }
+    if(state){
+        if(values.length < 1){
+            sql += ' where'
+        }
+        sql += ` state = state`
+        values.push(state)
+    }
+    sql += ';'
+    // values.push(recommendName,discript,zIndex)
+    return mysql.pq(sql,values);
+}
+
+/**
+ * 加载所有航班
+ * @param recommendId 航班id
+ * @param isHave 是否为在指定航班中
+ * @returns {Promise<unknown>}
+ */
+function loadFlights(recommendId,isHave){
+    let sql=``,values=[];
+    sql+=`select f.*,r.recommendIndex from flight as f , recommendFlight as r  where`
+    if(isHave){
+        sql += ` f.id = r.flightId`;
+    }else {
+        sql += ` f.id != r.flightId`;
+    }
+    sql += ` and r.recommendId = ?`;
+    values.push(recommendId);
+    sql += ';'
+    return mysql.pq(sql,values);
+}
+
+/**
+ * 活动添加航班
+ * @param recommendId 活动id
+ * @param flights 航班列表
+ * @returns {Promise<unknown>}
+ */
+function addFlights(recommendId,flights){
+    let sql=``,values=[];
+    sql+=`insert into area (recommendId,flightId,recommendIndex) values`
+    for (let i = 0;i<flights.length;i++){
+        if(i>0){
+            sql+=',';
+        }
+        sql+=`(?,?,?)`;
+        values.push(recommendId,flights.flightId,flights.recommendIndex);
+    }
+    sql += ';'
+    return mysql.pq(sql,values);
+}
+
+/**
+ * 删除推荐里的指定航班
+ * @param recommendId 推荐id
+ * @param flightId 航班id
+ */
+function deleteFlight(recommendId,flightId){
+    let sql=``,values=[];
+    sql+=`delete from recommendFlight where recommendId = ? and flightId = ?`
+    values.push(recommendId,flightId);
+    sql += ';'
+    return mysql.pq(sql,values);
+}
+
+module.exports = {
+    addRecommend,
+    searchRecommend,
+    loadFlights,
+    addFlights,
+    deleteFlight,
+}

+ 7 - 7
db.md

@@ -66,13 +66,13 @@
 | userId | int | pk | n   | 用户id |
 
 ## 推荐活动集合表 recommendDir
-| 字段            | 类型      | 默认值 | 可选值 | 备注            |
-|---------------|---------|----|-----|---------------|
-| id            | int     | pk | n   | id            |
-| recommendName | varcahr | '' | '' | 推荐名           |
-| discript      | varcahr | '' | '' | 路线简介          |
-| zindex        | int | 1 | n | 推荐等级,等级越高排名越前 |
-
+| 字段            | 类型      | 默认值 | 可选值 | 备注              |
+|---------------|---------|----|-----|-----------------|
+| id            | int     | pk | n   | id              |
+| recommendName | varcahr | '' | '' | 推荐名             |
+| discript      | varcahr | '' | '' | 路线简介            |
+| zindex        | int | 1 | n | 推荐等级,等级越高排名越前   |
+| state | char | 1 | 1(启用),2(关闭) | 互动状态,是否启用活动     |
 ## 推荐机票活动相关的航班表 recommendFlight
 | 字段       | 类型      | 默认值 | 可选值 | 备注   |
 |----------|---------|----|-----|------|

+ 1 - 1
routes/admin_api.js

@@ -4,7 +4,7 @@ const field = require('../maps/field')
 const code = require("../maps/rcodeMap");
 const progress = require("../maps/progress");
 const c_user = require("../controller/account");
-const c_flight = require("../controller/flight");
+const c_flight = require("../controller/c_flight");
 const paramsCheck = require("../middleware/paramsCheck");
 // 获取航班列表数据
 router.get('/flights',