const router = require('express').Router(); const {paramFail, ServerError, success, controlError, searchSuccess} = require("../tools/result"); const c = require('../control/product'); const log = require("../logger").logger("r_product","info") const typeTool = require('../tools/typeTool_cjs'); const checkLogin = require("../middleware/checkSession"); const progressField = require("../map/progressField"); const codeMap = require("../map/rcodeMap"); /** * 加载产品列表,根据类型 * @param key query 产品类别 * @param p query 页码 * @param l query 每页数量 */ router.get('/load', async (req, res) => { try{ let err, result; let {key, l, p} = req.query; if(!key){ paramFail(res, "key is required"); return; } // console.log(key); // log.info(key); [err, result] = await c.loadProduct(key, p, l); if(err){ return controlError(res, err, null);} success(res, result); }catch (e) { ServerError(res, null, e.message); } }); router.get( '/search', async (req, res) => { try{ log.info(`[搜索产品] `) let err, result; let {key, l, p, type} = req.query; type = type || 'all'; l = typeTool.toNumber(l); p = typeTool.toNumber(p); log.info(`page=${p},limit=${l}`); [err, result] = await c.searchProduct(type, key, p, l); if(err){ log.info(`[搜索产品] err=${err}`); return controlError(res, err, null);} log.info(`result len=${result.arr.length}`) searchSuccess(res, result.arr, result.total, result.page, result.limit, ); }catch (e) { ServerError(res, null, e.message); } }); router.get('/mini', async (req, res) => { try{ log.info(`[搜索产品] 只获取基础值`) let err, result; let {key, l, p, type} = req.query; type = type || 'all'; l = typeTool.toNumber(l); p = typeTool.toNumber(p); log.info(`page=${p},limit=${l}`); [err, result] = await c.searchProductByMini(type, key, p, l); if(err){ log.info(`[搜索产品] err=${err}`); return controlError(res, err, null);} log.info(`result len=${result.arr.length}`) searchSuccess(res, result.arr, result.total, result.page, result.limit, ); }catch (e) { ServerError(res, null, e.message); } }); // 获取产品类型信息 router.get('/types', async (req, res) => { try { let err, result; [err, result] = await c.getProductTypes(); if (err) { return controlError(res, err, null); } success(res, result); } catch (e) { ServerError(res, null, e.message); } }); // 编辑产品类型 router.post('/type/edit', checkLogin(progressField.session_hfy), async (req, res) => { try { let err, result; const id = req.query.id; const body = req.body; log.info(`[编辑产品类型] id=${id}, body=${JSON.stringify(body)}`); [err, result] = await c.editType(id, body); if(err){ return controlError(res, err, null);} success(res, result); }catch (e) { ServerError(res, null, e.message); } }); router.post('/type/add', checkLogin(progressField.session_hfy),async (req, res) => { try { let err, result; const body = req.body; log.info(`[新增产品类型] body=${JSON.stringify(body)}`); [err, result] = await c.addType(body); if(err){ return controlError(res, err, null);} success(res, result); }catch (e) { ServerError(res, null, e.message); } }); router.delete('/type/del', checkLogin(progressField.session_hfy), async (req, res) => { try { let err, result; const id = req.query.id; log.info(`[移除产品类型] id=${id} `); if(!id ){ paramFail(res, "id is must be two "); return; } [err, result] = await c.deleteType(id); if(err){ return controlError(res, err, null);} success(res, result); }catch (e) { ServerError(res, null, e.message); } }); /** * 获取产品信息 * @param id path 产品id */ router.get('/:id', async (req, res) => { try{ let err, result; let {id, lang} = req.params; if(!id){ paramFail(res, "id is required"); return; } id = typeTool.toNumber(id); log.info(`product info ${id}`); [err, result] = await c.getProductInfo(id); if(err){ return controlError(res, err, null);} success(res, result); }catch (e) { ServerError(res, null, e.message); } }); router.post('/edit', checkLogin(progressField.session_hfy), async (req, res) => { try{ let err, result; const body = req.body; let sub_images = body.sub_images; if(!sub_images){ log.error(`无法获取产品子图`) paramFail(res, "sub_images is required"); } log.info(`[编辑产品] body=${JSON.stringify(body)}`); [err, result] = await c.editProduct(body); if(err){ return controlError(res, err, null);} success(res, result); }catch (e) { ServerError(res, null, e.message); } }) router.post('/add', checkLogin(progressField.session_hfy), async (req, res) => { try{ let err, result; const body = req.body; let sub_images = body.sub_images; if(!sub_images){ log.error(`无法获取产品子图:${JSON.stringify(body)}`) return [ { eCode: codeMap.NotParam, eMsg: `无法获取产品图` }, null] } log.info(`[编辑产品] body=${JSON.stringify(body)}`); [err, result] = await c.addProduct(body); if(err){ return controlError(res, err, null);} success(res, result); }catch (e) { ServerError(res, null, e.message); } }) router.post('/del', checkLogin(progressField.session_hfy), async (req, res) => { try{ let err, result; const id = req.query.id; log.info(`[移除产品] id=${id} `); if(!id ){ paramFail(res, "id is must be two "); return; } [err, result] = await c.deleteProduct(id); if(err){ return controlError(res, err, null);} success(res, result); }catch (e) { ServerError(res, null, e.message); } }) module.exports = router ;