r_product.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. const router = require('express').Router();
  2. const {paramFail, ServerError, success, controlError, searchSuccess} = require("../tools/result");
  3. const c = require('../control/product');
  4. const log = require("../logger").logger("r_product","info")
  5. const typeTool = require('../tools/typeTool_cjs');
  6. /**
  7. * 加载产品列表,根据类型
  8. * @param key query 产品类别
  9. * @param p query 页码
  10. * @param l query 每页数量
  11. */
  12. router.get('/load',
  13. async (req, res) => {
  14. try{
  15. let err, result;
  16. let {key, l, p} = req.query;
  17. if(!key){
  18. paramFail(res, "key is required");
  19. return;
  20. }
  21. // console.log(key);
  22. // log.info(key);
  23. [err, result] = await c.loadProduct(key, p, l);
  24. if(err){ return controlError(res, err, null);}
  25. success(res, result);
  26. }catch (e) {
  27. ServerError(res, null, e.message);
  28. }
  29. });
  30. router.get(
  31. '/search',
  32. async (req, res) => {
  33. try{
  34. log.info(`[搜索产品] `)
  35. let err, result;
  36. let {key, l, p, type} = req.query;
  37. type = type || 'all';
  38. l = typeTool.toNumber(l);
  39. p = typeTool.toNumber(p);
  40. log.info(`page=${p},limit=${l}`);
  41. [err, result] = await c.searchProduct(type, key, p, l);
  42. if(err){
  43. log.info(`[搜索产品] err=${err}`);
  44. return controlError(res, err, null);}
  45. log.info(`result len=${result.arr.length}`)
  46. searchSuccess(res,
  47. result.arr,
  48. result.total,
  49. result.page,
  50. result.limit,
  51. );
  52. }catch (e) {
  53. ServerError(res, null, e.message);
  54. }
  55. });
  56. router.get('/mini', async (req, res) => {
  57. try{
  58. log.info(`[搜索产品] 只获取基础值`)
  59. let err, result;
  60. let {key, l, p, type} = req.query;
  61. type = type || 'all';
  62. l = typeTool.toNumber(l);
  63. p = typeTool.toNumber(p);
  64. log.info(`page=${p},limit=${l}`);
  65. [err, result] = await c.searchProductByMini(type, key, p, l);
  66. if(err){
  67. log.info(`[搜索产品] err=${err}`);
  68. return controlError(res, err, null);}
  69. log.info(`result len=${result.arr.length}`)
  70. searchSuccess(res,
  71. result.arr,
  72. result.total,
  73. result.page,
  74. result.limit,
  75. );
  76. }catch (e) {
  77. ServerError(res, null, e.message);
  78. }
  79. });
  80. /**
  81. * 获取产品信息
  82. * @param id path 产品id
  83. */
  84. router.get('/:id', async (req, res) => {
  85. try{
  86. let err, result;
  87. let {id} = req.params;
  88. if(!id){
  89. paramFail(res, "id is required");
  90. return;
  91. }
  92. id = typeTool.toNumber(id);
  93. log.info(`product info ${id}`);
  94. [err, result] = await c.getProductInfo(id);
  95. if(err){ return controlError(res, err, null);}
  96. success(res, result);
  97. }catch (e) {
  98. ServerError(res, null, e.message);
  99. }
  100. });
  101. module.exports = router ;