r_product.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  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. const codeMap = require("../map/rcodeMap");
  9. /**
  10. * 加载产品列表,根据类型
  11. * @param key query 产品类别
  12. * @param p query 页码
  13. * @param l query 每页数量
  14. */
  15. router.get('/load',
  16. async (req, res) => {
  17. try{
  18. let err, result;
  19. let {key, l, p} = req.query;
  20. if(!key){
  21. paramFail(res, "key is required");
  22. return;
  23. }
  24. // console.log(key);
  25. // log.info(key);
  26. [err, result] = await c.loadProduct(key, p, l);
  27. if(err){ return controlError(res, err, null);}
  28. success(res, result);
  29. }catch (e) {
  30. ServerError(res, null, e.message);
  31. }
  32. });
  33. router.get(
  34. '/search',
  35. async (req, res) => {
  36. try{
  37. log.info(`[搜索产品] `)
  38. let err, result;
  39. let {key, l, p, type} = req.query;
  40. type = type || 'all';
  41. l = typeTool.toNumber(l);
  42. p = typeTool.toNumber(p);
  43. log.info(`page=${p},limit=${l}`);
  44. [err, result] = await c.searchProduct(type, key, p, l);
  45. if(err){
  46. log.info(`[搜索产品] err=${err}`);
  47. return controlError(res, err, null);}
  48. log.info(`result len=${result.arr.length}`)
  49. searchSuccess(res,
  50. result.arr,
  51. result.total,
  52. result.page,
  53. result.limit,
  54. );
  55. }catch (e) {
  56. ServerError(res, null, e.message);
  57. }
  58. });
  59. router.get('/mini', async (req, res) => {
  60. try{
  61. log.info(`[搜索产品] 只获取基础值`)
  62. let err, result;
  63. let {key, l, p, type} = req.query;
  64. type = type || 'all';
  65. l = typeTool.toNumber(l);
  66. p = typeTool.toNumber(p);
  67. log.info(`page=${p},limit=${l}`);
  68. [err, result] = await c.searchProductByMini(type, key, p, l);
  69. if(err){
  70. log.info(`[搜索产品] err=${err}`);
  71. return controlError(res, err, null);}
  72. log.info(`result len=${result.arr.length}`)
  73. searchSuccess(res,
  74. result.arr,
  75. result.total,
  76. result.page,
  77. result.limit,
  78. );
  79. }catch (e) {
  80. ServerError(res, null, e.message);
  81. }
  82. });
  83. // 获取产品类型信息
  84. router.get('/types', async (req, res) => {
  85. try {
  86. let err, result;
  87. [err, result] = await c.getProductTypes();
  88. if (err) {
  89. return controlError(res, err, null);
  90. }
  91. success(res, result);
  92. } catch (e) {
  93. ServerError(res, null, e.message);
  94. }
  95. });
  96. // 编辑产品类型
  97. router.post('/type/edit', checkLogin(progressField.session_hfy), async (req, res) => {
  98. try {
  99. let err, result;
  100. const id = req.query.id;
  101. const body = req.body;
  102. log.info(`[编辑产品类型] id=${id}, body=${JSON.stringify(body)}`);
  103. [err, result] = await c.editType(id, body);
  104. if(err){ return controlError(res, err, null);}
  105. success(res, result);
  106. }catch (e) {
  107. ServerError(res, null, e.message);
  108. }
  109. });
  110. router.post('/type/add', checkLogin(progressField.session_hfy),async (req, res) => {
  111. try {
  112. let err, result;
  113. const body = req.body;
  114. log.info(`[新增产品类型] body=${JSON.stringify(body)}`);
  115. [err, result] = await c.addType(body);
  116. if(err){ return controlError(res, err, null);}
  117. success(res, result);
  118. }catch (e) {
  119. ServerError(res, null, e.message);
  120. }
  121. });
  122. router.delete('/type/del', checkLogin(progressField.session_hfy), async (req, res) => {
  123. try {
  124. let err, result;
  125. const id = req.query.id;
  126. log.info(`[移除产品类型] id=${id} `);
  127. if(!id ){
  128. paramFail(res, "id is must be two ");
  129. return;
  130. }
  131. [err, result] = await c.deleteType(id);
  132. if(err){ return controlError(res, err, null);}
  133. success(res, result);
  134. }catch (e) {
  135. ServerError(res, null, e.message);
  136. }
  137. });
  138. /**
  139. * 获取产品信息
  140. * @param id path 产品id
  141. */
  142. router.get('/:id', async (req, res) => {
  143. try{
  144. let err, result;
  145. let {id, lang} = req.params;
  146. if(!id){
  147. paramFail(res, "id is required");
  148. return;
  149. }
  150. id = typeTool.toNumber(id);
  151. log.info(`product info ${id}`);
  152. [err, result] = await c.getProductInfo(id);
  153. if(err){ return controlError(res, err, null);}
  154. success(res, result);
  155. }catch (e) {
  156. ServerError(res, null, e.message);
  157. }
  158. });
  159. router.post('/edit', checkLogin(progressField.session_hfy), async (req, res) => {
  160. try{
  161. let err, result;
  162. const body = req.body;
  163. let sub_images = body.sub_images;
  164. if(!sub_images){
  165. log.error(`无法获取产品子图`)
  166. paramFail(res, "sub_images is required");
  167. }
  168. log.info(`[编辑产品] body=${JSON.stringify(body)}`);
  169. [err, result] = await c.editProduct(body);
  170. if(err){ return controlError(res, err, null);}
  171. success(res, result);
  172. }catch (e) {
  173. ServerError(res, null, e.message);
  174. }
  175. })
  176. router.post('/add', checkLogin(progressField.session_hfy), async (req, res) => {
  177. try{
  178. let err, result;
  179. const body = req.body;
  180. let sub_images = body.sub_images;
  181. if(!sub_images){
  182. log.error(`无法获取产品子图:${JSON.stringify(body)}`)
  183. return [
  184. {
  185. eCode: codeMap.NotParam,
  186. eMsg: `无法获取产品图`
  187. }, null]
  188. }
  189. log.info(`[编辑产品] body=${JSON.stringify(body)}`);
  190. [err, result] = await c.addProduct(body);
  191. if(err){ return controlError(res, err, null);}
  192. success(res, result);
  193. }catch (e) {
  194. ServerError(res, null, e.message);
  195. }
  196. })
  197. router.post('/del', checkLogin(progressField.session_hfy), async (req, res) => {
  198. try{
  199. let err, result;
  200. const id = req.query.id;
  201. log.info(`[移除产品] id=${id} `);
  202. if(!id ){
  203. paramFail(res, "id is must be two ");
  204. return;
  205. }
  206. [err, result] = await c.deleteProduct(id);
  207. if(err){ return controlError(res, err, null);}
  208. success(res, result);
  209. }catch (e) {
  210. ServerError(res, null, e.message);
  211. }
  212. })
  213. module.exports = router ;