c_recommend.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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. /**
  40. * 修改推就项目信息
  41. * @param recommendId
  42. * @param flightId
  43. * @param params
  44. * @returns {Promise<void>}
  45. */
  46. async function changeRecommendItem(recommendId,flightId,params){
  47. let [err,result] = await handle(db_recommend.updateRecommendItem(recommendId,flightId, {
  48. zIndex:params.zIndex,
  49. img:params.img,
  50. }));
  51. if(err){throw err}
  52. return result;
  53. }
  54. /**
  55. * 显示指定推荐的信息,以及他的所有航班信息
  56. * @returns {Promise<void>}
  57. */
  58. async function recommendInfo(recommendId){
  59. let err,result,recommend;
  60. [err,result] = await handle(db_recommend.find(recommendId));
  61. if(err){throw err}
  62. if(result.length < 1){throw {rcode: codeMap.notFound,msg:'无法找到对应推荐'}}
  63. recommend = result[0];
  64. [err,result] = await handle(db_recommend.loadFlights(recommendId,true));
  65. if(err){throw err}
  66. recommend.flights = result;
  67. return recommend;
  68. }
  69. /**
  70. * 加载主要界面展示用的推荐,显示5个活动,每个活动显示前5个航班
  71. * @returns {Promise<void>}
  72. */
  73. async function homeRecommends(){
  74. let err,recommends,flights;
  75. [err,recommends] = await handle(list());
  76. if(err){throw err}
  77. if(recommends.length){
  78. recommends = recommends.splice(0,5);
  79. }
  80. for (const recommend of recommends) {
  81. // 获取对应的航班信息
  82. [err,flights] = await handle(recommendInfo(recommend.id));
  83. if(err){throw err}
  84. flights=flights.flights;
  85. if(flights.length>=5){
  86. flights = flights.splice(0,5);
  87. }
  88. recommend.flights = flights;
  89. }
  90. console.log(recommends);
  91. return recommends;
  92. }
  93. async function recommendNot(recommendId){
  94. let [err,result] = await handle(db_recommend.loadFlights(recommendId,false));
  95. if(err){throw err}
  96. if(result.length < 1){
  97. // 没有任何航班,直接获取所有在售 的航班
  98. [err,result] = await handle(c_flight.flightList(field.flightState_sail));
  99. if(err){throw err}
  100. result = result.map(val=>{
  101. return {...val,flightId:val.id}
  102. })
  103. }
  104. let r = [];
  105. result.forEach((item) =>{
  106. //当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
  107. let ind = r.findIndex(val=>val.flightId===item.flightId)
  108. console.log(ind)
  109. if(ind===-1){
  110. r.push(item)
  111. }
  112. });
  113. console.log(r)
  114. return r;
  115. }
  116. module.exports = {
  117. list,
  118. addRecommend,
  119. addFlight,
  120. changeRecommend,
  121. changeRecommendItem,
  122. homeRecommends,
  123. recommendInfo,
  124. recommendNot,
  125. }