r_product.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  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. const checkLogin = require("../middleware/checkSession");
  7. const progressField = require("../map/progressField");
  8. /**
  9. * 加载产品列表,根据类型
  10. * @param key query 产品类别
  11. * @param p query 页码
  12. * @param l query 每页数量
  13. */
  14. router.get('/load',
  15. async (req, res) => {
  16. try{
  17. let err, result;
  18. let {key, l, p} = req.query;
  19. if(!key){
  20. paramFail(res, "key is required");
  21. return;
  22. }
  23. // console.log(key);
  24. // log.info(key);
  25. [err, result] = await c.loadProduct(key, p, l);
  26. if(err){ return controlError(res, err, null);}
  27. success(res, result);
  28. }catch (e) {
  29. ServerError(res, null, e.message);
  30. }
  31. });
  32. router.get(
  33. '/search',
  34. async (req, res) => {
  35. try{
  36. log.info(`[搜索产品] `)
  37. let err, result;
  38. let {key, l, p, type} = req.query;
  39. type = type || 'all';
  40. l = typeTool.toNumber(l);
  41. p = typeTool.toNumber(p);
  42. log.info(`page=${p},limit=${l}`);
  43. [err, result] = await c.searchProduct(type, key, p, l);
  44. if(err){
  45. log.info(`[搜索产品] err=${err}`);
  46. return controlError(res, err, null);}
  47. log.info(`result len=${result.arr.length}`)
  48. searchSuccess(res,
  49. result.arr,
  50. result.total,
  51. result.page,
  52. result.limit,
  53. );
  54. }catch (e) {
  55. ServerError(res, null, e.message);
  56. }
  57. });
  58. router.get('/mini', async (req, res) => {
  59. try{
  60. log.info(`[搜索产品] 只获取基础值`)
  61. let err, result;
  62. let {key, l, p, type} = req.query;
  63. type = type || 'all';
  64. l = typeTool.toNumber(l);
  65. p = typeTool.toNumber(p);
  66. log.info(`page=${p},limit=${l}`);
  67. [err, result] = await c.searchProductByMini(type, key, p, l);
  68. if(err){
  69. log.info(`[搜索产品] err=${err}`);
  70. return controlError(res, err, null);}
  71. log.info(`result len=${result.arr.length}`)
  72. searchSuccess(res,
  73. result.arr,
  74. result.total,
  75. result.page,
  76. result.limit,
  77. );
  78. }catch (e) {
  79. ServerError(res, null, e.message);
  80. }
  81. });
  82. // 获取产品类型信息
  83. router.get('/types', async (req, res) => {
  84. try {
  85. let err, result;
  86. [err, result] = await c.getProductTypes();
  87. if (err) {
  88. return controlError(res, err, null);
  89. }
  90. success(res, result);
  91. } catch (e) {
  92. ServerError(res, null, e.message);
  93. }
  94. });
  95. // 编辑产品类型
  96. router.post('/type/edit', checkLogin(progressField.session_hfy), async (req, res) => {
  97. try {
  98. let err, result;
  99. const id = req.query.id;
  100. const body = req.body;
  101. log.info(`[编辑产品类型] id=${id}, body=${JSON.stringify(body)}`);
  102. [err, result] = await c.editType(id, body);
  103. if(err){ return controlError(res, err, null);}
  104. success(res, result);
  105. }catch (e) {
  106. ServerError(res, null, e.message);
  107. }
  108. });
  109. router.post('/type/add', checkLogin(progressField.session_hfy),async (req, res) => {
  110. try {
  111. let err, result;
  112. const body = req.body;
  113. log.info(`[新增产品类型] body=${JSON.stringify(body)}`);
  114. [err, result] = await c.addType(body);
  115. if(err){ return controlError(res, err, null);}
  116. success(res, result);
  117. }catch (e) {
  118. ServerError(res, null, e.message);
  119. }
  120. });
  121. router.delete('/type/del', checkLogin(progressField.session_hfy), async (req, res) => {
  122. try {
  123. let err, result;
  124. const id = req.query.id;
  125. log.info(`[移除产品类型] id=${id} `);
  126. if(!id ){
  127. paramFail(res, "id is must be two ");
  128. return;
  129. }
  130. [err, result] = await c.deleteType(id);
  131. if(err){ return controlError(res, err, null);}
  132. success(res, result);
  133. }catch (e) {
  134. ServerError(res, null, e.message);
  135. }
  136. });
  137. /**
  138. * 获取产品信息
  139. * @param id path 产品id
  140. */
  141. router.get('/:id', async (req, res) => {
  142. try{
  143. let err, result;
  144. let {id} = req.params;
  145. if(!id){
  146. paramFail(res, "id is required");
  147. return;
  148. }
  149. id = typeTool.toNumber(id);
  150. log.info(`product info ${id}`);
  151. [err, result] = await c.getProductInfo(id);
  152. if(err){ return controlError(res, err, null);}
  153. success(res, result);
  154. }catch (e) {
  155. ServerError(res, null, e.message);
  156. }
  157. });
  158. module.exports = router ;