product.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. const d_product = require('../database/d_product');
  2. const {searchHandle} = require('../tools/searchSql');
  3. const {handle} = require('../tools/handle_cjs');
  4. const codeMap = require("../map/rcodeMap");
  5. const log = require("../logger").logger("c_product","info")
  6. const time = require("../tools/time_cjs")
  7. /**
  8. * 加载产品
  9. * @param key 产品类别
  10. * @param p 页码
  11. * @param l 每页数量
  12. * @returns {Promise<*[]>} [err,res]
  13. */
  14. async function loadProduct(key,p,l)
  15. {
  16. p = p || 1;
  17. l = l || 10;
  18. let [err,res] = await handle(d_product.loadProducts(key, p, l));
  19. if(err){
  20. return [err,null];
  21. }
  22. return [null,res];
  23. }
  24. /**
  25. * 获取产品信息
  26. * @param id 产品id
  27. * @returns {Promise<*[]>}
  28. */
  29. async function getProductInfo(id)
  30. {
  31. let [err,res] = await handle(d_product.getProductInfo(id));
  32. if(err){
  33. return [err,null];
  34. }
  35. let data = {};
  36. if(res.length){
  37. data = res[0];
  38. }else{
  39. return [
  40. {
  41. eCode:codeMap.NotFound,
  42. eMsg:`无法找到对应产品`
  43. },null]
  44. }
  45. // console.log(data);
  46. return [null,data];
  47. }
  48. async function searchProduct(type, key, p, l)
  49. {
  50. p = p || 1;
  51. l = l || 10;
  52. let _params = {
  53. }
  54. if(type !== 'all'){
  55. _params.type = type;
  56. }
  57. if(key){
  58. _params.key = key
  59. }
  60. return searchHandle(
  61. '搜索产品失败',
  62. d_product.searchProducts,
  63. _params,
  64. null,
  65. p,
  66. l);
  67. }
  68. async function searchProductByMini(type, key, p, l){
  69. p = p || 1;
  70. l = l || 10;
  71. let _params = {
  72. }
  73. if(type !== 'all'){
  74. _params.type = type;
  75. }
  76. if(key){
  77. _params.key = key
  78. }
  79. return searchHandle(
  80. '搜索产品失败',
  81. d_product.searchProductsByMini,
  82. _params,
  83. null,
  84. p,
  85. l);
  86. }
  87. // 获取产品类型
  88. async function getProductTypes()
  89. {
  90. let [err,res] = await handle(d_product.getProductTypeList());
  91. if(err){
  92. return [err,null];
  93. }
  94. return [null,res];
  95. }
  96. async function editType( id, productType)
  97. {
  98. let [err,res] = await handle(d_product.editProductType(id, productType));
  99. if(err){
  100. return [err,null];
  101. }
  102. return [null,res];
  103. }
  104. async function addType( id, productType)
  105. {
  106. // 数据校验
  107. let [err,res] = await handle(d_product.addProductType(id, productType));
  108. if(err){
  109. return [err,null];
  110. }
  111. return [null,res];
  112. }
  113. // 删除产品类型
  114. async function deleteType(id) {
  115. let err, res;
  116. // 检索产品类型下是否有产品
  117. [err, res] = await handle(d_product.getProductByTypeId(id));
  118. if (err) {
  119. // 删除失败
  120. log.error('无法找到对应产品' + err.message);
  121. return [err, null];
  122. }
  123. if (res.length > 0) {
  124. // 存在产品
  125. return [
  126. {
  127. eCode: codeMap.NotPermission,
  128. eMsg: `该类型下存在产品,无法删除, 请先移除对应产品`
  129. }, null];
  130. }
  131. [err, res] = await handle(d_product.deleteProductType(id));
  132. if (err) {
  133. log.error('删除失败' + err.message);
  134. return [err, null];
  135. }
  136. return [null,res];
  137. }
  138. module.exports = {
  139. loadProduct,
  140. getProductInfo,
  141. searchProduct,
  142. searchProductByMini,
  143. getProductTypes,
  144. editType,
  145. addType,
  146. deleteType
  147. };