1
0

c_recommend.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. const db_air = require('../database/d_air')
  2. const db_area = require('../database/d_area')
  3. const db_recommend = require('../database/d_recommend')
  4. const c_flight = require('./c_flight')
  5. const handle = require('../until/handle')
  6. const field = require('../maps/field')
  7. const codeMap = require('../maps/rcodeMap')
  8. async function list(){
  9. let [err,result] = await handle(db_recommend.recommendList());
  10. if(err){throw err}
  11. return result;
  12. }
  13. async function addRecommend(name,descript,zIndex,imgUrl){
  14. let [err,result] = await handle(db_recommend.addRecommend(name,descript,zIndex,imgUrl));
  15. if(err){throw err}
  16. return result;
  17. }
  18. async function addFlight(recommendId,flightId,img,zIndex){
  19. let [err,result] = await handle(db_recommend.addFlight(recommendId,flightId,img,zIndex));
  20. if(err){throw err}
  21. return result;
  22. }
  23. /**
  24. * 修改推荐
  25. * @param recommendId
  26. * @param params
  27. * @returns {Promise<*>}
  28. */
  29. async function changeRecommend(recommendId,params){
  30. let [err,result] = await handle(db_recommend.updateRecommend(recommendId, {
  31. recommendName:params.recommendName,
  32. discript:params.discript,
  33. zIndex:params.zIndex,
  34. bg:params.bg,
  35. }));
  36. if(err){throw err}
  37. return result;
  38. }
  39. async function deleteItem(recommendId,flightId){
  40. let [err,result] = await handle(db_recommend.deleteFlight(recommendId,flightId));
  41. if(err){throw err}
  42. return result;
  43. }
  44. /**
  45. * 修改推就项目信息
  46. * @param recommendId
  47. * @param flightId
  48. * @param params
  49. * @returns {Promise<void>}
  50. */
  51. async function changeRecommendItem(recommendId,flightId,params){
  52. let [err,result] = await handle(db_recommend.updateRecommendItem(recommendId,flightId, {
  53. zIndex:params.zIndex,
  54. img:params.img,
  55. }));
  56. if(err){throw err}
  57. return result;
  58. }
  59. /**
  60. * 显示指定推荐的信息,以及他的所有航班信息
  61. * @returns {Promise<void>}
  62. */
  63. async function recommendInfo(recommendId){
  64. let err,result,recommend;
  65. [err,result] = await handle(db_recommend.find(recommendId));
  66. if(err){throw err}
  67. if(result.length < 1){throw {rcode: codeMap.notFound,msg:'无法找到对应推荐'}}
  68. recommend = result[0];
  69. [err,result] = await handle(db_recommend.loadFlights(recommendId,true));
  70. if(err){throw err}
  71. recommend.flights = result;
  72. return recommend;
  73. }
  74. /**
  75. * 加载主要界面展示用的推荐,显示5个活动,每个活动显示前5个航班
  76. * @returns {Promise<void>}
  77. */
  78. async function homeRecommends(){
  79. let err,recommends,flights;
  80. [err,recommends] = await handle(list());
  81. if(err){throw err}
  82. if(recommends.length){
  83. recommends = recommends.splice(0,5);
  84. }
  85. for (const recommend of recommends) {
  86. // 获取对应的航班信息
  87. [err,flights] = await handle(recommendInfo(recommend.id));
  88. if(err){throw err}
  89. flights=flights.flights;
  90. if(flights.length>=5){
  91. flights = flights.splice(0,5);
  92. }
  93. recommend.flights = flights;
  94. }
  95. console.log(recommends);
  96. return recommends;
  97. }
  98. async function recommendNot(recommendId){
  99. let [err,result] = await handle(db_recommend.loadFlights(recommendId,false));
  100. if(err){throw err}
  101. if(result.length < 1){
  102. // 没有任何航班,直接获取所有在售 的航班
  103. [err,result] = await handle(c_flight.flightList(field.flightState_sail));
  104. if(err){throw err}
  105. result = result.map(val=>{
  106. return {...val,flightId:val.id}
  107. })
  108. }
  109. let r = [];
  110. result.forEach((item) =>{
  111. //当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
  112. let ind = r.findIndex(val=>val.flightId===item.flightId)
  113. console.log(ind)
  114. if(ind===-1){
  115. r.push(item)
  116. }
  117. });
  118. console.log(r)
  119. return r;
  120. }
  121. module.exports = {
  122. list,
  123. addRecommend,
  124. addFlight,
  125. deleteItem,
  126. changeRecommend,
  127. changeRecommendItem,
  128. homeRecommends,
  129. recommendInfo,
  130. recommendNot,
  131. }