const d_product = require('../database/d_product'); const {searchHandle} = require('../tools/searchSql'); const {handle} = require('../tools/handle_cjs'); const codeMap = require("../map/rcodeMap"); const log = require("../logger").logger("c_product","info") const time = require("../tools/time_cjs") /** * 加载产品 * @param key 产品类别 * @param p 页码 * @param l 每页数量 * @returns {Promise<*[]>} [err,res] */ async function loadProduct(key,p,l) { p = p || 1; l = l || 10; let [err,res] = await handle(d_product.loadProducts(key, p, l)); if(err){ return [err,null]; } return [null,res]; } /** * 获取产品信息 * @param id 产品id * @returns {Promise<*[]>} */ async function getProductInfo(id) { let [err,res] = await handle(d_product.getProductInfo(id)); if(err){ return [err,null]; } let data = {}; if(res.length){ data = res[0]; }else{ return [ { eCode:codeMap.NotFound, eMsg:`无法找到对应产品` },null] } // console.log(data); return [null,data]; } async function searchProduct(type, key, p, l) { p = p || 1; l = l || 10; let _params = { } if(type !== 'all'){ _params.type = type; } if(key){ _params.key = key } return searchHandle( '搜索产品失败', d_product.searchProducts, _params, null, p, l); } async function searchProductByMini(type, key, p, l){ p = p || 1; l = l || 10; let _params = { } if(type !== 'all'){ _params.type = type; } if(key){ _params.key = key } return searchHandle( '搜索产品失败', d_product.searchProductsByMini, _params, null, p, l); } // 获取产品类型 async function getProductTypes() { let [err,res] = await handle(d_product.getProductTypeList()); if(err){ return [err,null]; } return [null,res]; } async function editType( id, productType) { // 判断类别关键字是否重复 let [err,res] = await handle(d_product.getTypeByKey(productType.type_key)) if(err){ return [err,null]; } if(res.length){ return [ { eCode:codeMap.DataRepeat, eMsg:`产品类型关键字重复` },null] } [err,res] = await handle(d_product.editProductType(id, productType)); if(err){ return [err,null]; } return [null,res]; } async function addType( id, productType) { // 判断类别关键字是否重复 let [err,res] = await handle(d_product.getTypeByKey(productType.type_key)) if(err){ return [err,null]; } if(res.length){ return [ { eCode:codeMap.DataRepeat, eMsg:`产品类型关键字重复` },null] } // 数据校验 [err,res] = await handle(d_product.addProductType(id, productType)); if(err){ return [err,null]; } return [null,res]; } // 删除产品类型 async function deleteType(id) { let err, res; // 检索产品类型下是否有产品 [err, res] = await handle(d_product.getProductByTypeId(id)); if (err) { // 删除失败 log.error('[移除产品分类] 无法找到产品' + err.message); return [err, null]; } if (res.length > 0) { // 存在产品 log.warn('[移除产品分类] 存在产品,无法删除'); return [ { eCode: codeMap.NotPermission, eMsg: `该类型下存在产品,无法删除, 请先移除对应产品` }, null]; } [err, res] = await handle(d_product.deleteProductType(id)); if (err) { log.error('删除失败' + err.message); return [err, null]; } return [null,res]; } module.exports = { loadProduct, getProductInfo, searchProduct, searchProductByMini, getProductTypes, editType, addType, deleteType };