r_product.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  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. router.get('/types', async (req, res) => {
  82. try {
  83. let err, result;
  84. [err, result] = await c.getProductTypes();
  85. if (err) {
  86. return controlError(res, err, null);
  87. }
  88. success(res, result);
  89. } catch (e) {
  90. ServerError(res, null, e.message);
  91. }
  92. });
  93. // 编辑产品类型
  94. router.post('/type/edit', async (req, res) => {
  95. try {
  96. let err, result;
  97. const id = req.query.id;
  98. const body = req.body;
  99. log.info(`[编辑产品类型] id=${id}, body=${JSON.stringify(body)}`);
  100. [err, result] = await c.editType(id, body);
  101. if(err){ return controlError(res, err, null);}
  102. success(res, result);
  103. }catch (e) {
  104. ServerError(res, null, e.message);
  105. }
  106. });
  107. router.post('/type/add', async (req, res) => {
  108. try {
  109. let err, result;
  110. const body = req.body;
  111. log.info(`[新增产品类型] body=${JSON.stringify(body)}`);
  112. [err, result] = await c.addType(body);
  113. if(err){ return controlError(res, err, null);}
  114. success(res, result);
  115. }catch (e) {
  116. ServerError(res, null, e.message);
  117. }
  118. });
  119. router.post('/type/del', async (req, res) => {
  120. try {
  121. let err, result;
  122. const id = req.query.id;
  123. const body = req.body;
  124. log.info(`[移除产品类型] id=${id} body=${JSON.stringify(body)}`);
  125. if(!id || !body || id !== body.id){
  126. paramFail(res, "id is must be two ");
  127. return;
  128. }
  129. [err, result] = await c.addType(body);
  130. if(err){ return controlError(res, err, null);}
  131. success(res, result);
  132. }catch (e) {
  133. ServerError(res, null, e.message);
  134. }
  135. });
  136. /**
  137. * 获取产品信息
  138. * @param id path 产品id
  139. */
  140. router.get('/:id', async (req, res) => {
  141. try{
  142. let err, result;
  143. let {id} = req.params;
  144. if(!id){
  145. paramFail(res, "id is required");
  146. return;
  147. }
  148. id = typeTool.toNumber(id);
  149. log.info(`product info ${id}`);
  150. [err, result] = await c.getProductInfo(id);
  151. if(err){ return controlError(res, err, null);}
  152. success(res, result);
  153. }catch (e) {
  154. ServerError(res, null, e.message);
  155. }
  156. });
  157. module.exports = router ;