d_base.js 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. const mysql = require('./mysql');
  2. const {searchSql,limitSql} = require("../tools/searchSql");
  3. const {isEmpty} = require("../tools/typeTool_cjs");
  4. const {db_base} = require("../map/dbField");
  5. const log = require("../logger").logger("d_base","info");
  6. /**
  7. * table carousel
  8. * id 主键
  9. * sort 排序
  10. * fileId 图片对应的id
  11. * type 1: 文章 2: 产品 3: 直接链接
  12. * link 文章id 产品id 链接
  13. * value 根据不同的类型的直接值, 会再前端进行转换
  14. * valueShowText 值用于提示的文字
  15. * title 标题, 用于更自定义显示
  16. * subTitle 副标题
  17. * showType 显示位置, 用于区分轮播或者展示快的区域类型, 轮播可以多个, 展示快只允许7个
  18. */
  19. /**
  20. * 获取轮播图
  21. * @returns {Promise | Promise<unknown>}
  22. */
  23. function getCarousel(searchParam = {}){
  24. let sql = `SELECT c.*,f.filePath,f.fileType,f.fileId
  25. FROM
  26. hfy_carousel as c,
  27. hfy_files as f
  28. WHERE c.fileId = f.fileId`;
  29. let values = [];
  30. sql += ` and c.showType = ${db_base.showType.carousel}`;
  31. if(!isEmpty(searchParam.state)){
  32. sql += ` and c.state = ?`;
  33. values.push(searchParam.state);
  34. }
  35. sql += ` order by c.sort asc`
  36. return mysql.pq(sql,values);
  37. }
  38. // 获取启用的轮播与展示块
  39. async function getEnableCarouselAndShowBlocks(){
  40. let sql = `SELECT c.*,f.filePath,f.fileType,f.fileId
  41. FROM
  42. hfy_carousel as c,
  43. hfy_files as f
  44. WHERE c.fileId = f.fileId`;
  45. let values = [];
  46. sql += ` and c.state = ?`;
  47. values.push(db_base.carouselState.enable);
  48. sql += ` order by c.sort asc`
  49. return mysql.pq(sql,values)
  50. }
  51. function getCarouselById(id){
  52. let sql = `SELECT c.*,f.filePath,f.fileType,f.fileId
  53. FROM
  54. hfy_carousel as c,
  55. hfy_files as f
  56. WHERE
  57. c.fileId = f.fileId
  58. and c.id = ?
  59. `;
  60. sql += ` and c.showType = ${db_base.showType.carousel}`;
  61. let values = [id];
  62. return mysql.pq(sql,values);
  63. }
  64. function addCarousel(sort,fileId,type,value,valueShowText,updateTime){
  65. let sql = `INSERT INTO hfy_carousel (sort, fileId, type, value, valueShowText, updateTime, showType)
  66. VALUES (?,?,?,?,?,?)`;
  67. return mysql.pq(sql,[sort,fileId,type,value,valueShowText,updateTime, db_base.showType.carousel]);
  68. }
  69. function deleteCarousel(id){
  70. let sql = `DELETE FROM hfy_carousel WHERE id = ? and showType = ?`;
  71. return mysql.pq(sql,[id, db_base.showType.carousel]);
  72. }
  73. function updateCarousel(id,updateParam,time){
  74. let sql = `UPDATE hfy_carousel SET `;
  75. let values = [];
  76. if(!isEmpty(updateParam.sort)){
  77. sql += ` sort = ?,`;
  78. values.push(updateParam.sort);
  79. }
  80. if(updateParam.fileId){
  81. sql += ` fileId = ?,`;
  82. values.push(updateParam.fileId);
  83. }
  84. if(!isEmpty(updateParam.type)){
  85. sql += ` type = ?,`;
  86. values.push(updateParam.type);
  87. }
  88. if(updateParam.value && updateParam.valueShowText){
  89. sql += ` value = ?,`;
  90. values.push(updateParam.value);
  91. sql += ` valueShowText = ?,`;
  92. values.push(updateParam.valueShowText);
  93. }
  94. if(!isEmpty(updateParam.state)){
  95. sql += ` state = ?,`;
  96. values.push(updateParam.state);
  97. }
  98. sql += ` updateTime = ?`;
  99. values.push(time);
  100. sql += ` WHERE id = ? and showType = ${db_base.showType.carousel} limit 1`;
  101. values.push(id);
  102. console.log(sql);
  103. console.log(values);
  104. return mysql.pq(sql,values);
  105. }
  106. // 展示块数据库操作函数
  107. /**
  108. * 获取展示块数据
  109. * @returns {Promise | Promise<unknown>}
  110. */
  111. function getShowBlocks() {
  112. let sql = `SELECT c.*,f.filePath,f.fileType,f.fileId
  113. FROM
  114. hfy_carousel as c,
  115. hfy_files as f
  116. WHERE c.fileId = f.fileId`;
  117. let values = [];
  118. sql += ` and c.showType = ${db_base.showType.showBlock}`;
  119. sql += ` order by c.sort asc`
  120. return mysql.pq(sql, values);
  121. }
  122. /**
  123. * 根据ID获取展示块
  124. * @param id 展示块ID
  125. * @returns {Promise | Promise<unknown>}
  126. */
  127. function getShowBlockById(id) {
  128. let sql = `SELECT c.*,f.filePath,f.fileType,f.fileId
  129. FROM
  130. hfy_carousel as c,
  131. hfy_files as f
  132. WHERE
  133. c.fileId = f.fileId
  134. and c.id = ?
  135. `;
  136. sql += ` and c.showType = ${db_base.showType.showBlock}`;
  137. let values = [id];
  138. return mysql.pq(sql, values);
  139. }
  140. /**
  141. * 添加展示块
  142. * @param sort 排序
  143. * @param fileId 文件ID
  144. * @param type 类型
  145. * @param value 值
  146. * @param valueShowText 显示文本
  147. * @param title 标题
  148. * @param subTitle 副标题
  149. * @param updateTime 更新时间
  150. * @returns {Promise | Promise<unknown>}
  151. */
  152. function addShowBlock(sort, fileId, type, value, valueShowText, title, subTitle, updateTime) {
  153. let sql = `INSERT INTO hfy_carousel (sort, fileId, type, value, valueShowText, title, subTitle updateTime, showType)
  154. VALUES (?,?,?,?,?,?,?,?,?)`;
  155. return mysql.pq(sql, [sort, fileId, type, value, valueShowText, updateTime, title, subTitle, db_base.showType.showBlock]);
  156. }
  157. /**
  158. * 更新展示块
  159. * @param id 展示块ID
  160. * @param updateParam 更新参数
  161. * @param time 更新时间
  162. * @returns {Promise | Promise<unknown>}
  163. */
  164. function updateShowBlock(id, updateParam, time) {
  165. let sql = `UPDATE hfy_carousel SET `;
  166. let values = [];
  167. if (!isEmpty(updateParam.sort)) {
  168. sql += ` sort = ?,`;
  169. values.push(updateParam.sort);
  170. }
  171. if (updateParam.fileId) {
  172. sql += ` fileId = ?,`;
  173. values.push(updateParam.fileId);
  174. }
  175. if (!isEmpty(updateParam.type)) {
  176. sql += ` type = ?,`;
  177. values.push(updateParam.type);
  178. }
  179. if (updateParam.value && updateParam.valueShowText) {
  180. sql += ` value = ?,`;
  181. values.push(updateParam.value);
  182. sql += ` valueShowText = ?,`;
  183. values.push(updateParam.valueShowText);
  184. }
  185. if (!isEmpty(updateParam.state)) {
  186. sql += ` state = ?,`;
  187. values.push(updateParam.state);
  188. }
  189. if (updateParam.title) {
  190. sql += ` title = ?,`;
  191. values.push(updateParam.title);
  192. }
  193. if (updateParam.subTitle) {
  194. sql += ` subTitle = ?,`;
  195. values.push(updateParam.subTitle);
  196. }
  197. sql += ` updateTime = ?`;
  198. values.push(time);
  199. sql += ` WHERE id = ? and showType = ${db_base.showType.showBlock} limit 1`;
  200. values.push(id);
  201. return mysql.pq(sql, values);
  202. }
  203. function uploadFiles(type,fileNameArr,uploadTime){
  204. let sql = `INSERT INTO hfy_files (fileType, filePath, uploadTime)
  205. VALUES ${fileNameArr.map(f=>`(?,?,?)`).join(',')}`;
  206. let values = [];
  207. for(let fileName of fileNameArr){
  208. values.push(type);
  209. values.push(fileName);
  210. values.push(`${uploadTime}`);
  211. }
  212. console.log(sql);
  213. console.log(values);
  214. return mysql.pq(sql,values);
  215. }
  216. /**
  217. * 搜索文件数据
  218. * @param type
  219. * @param _params
  220. * @param sort
  221. * @param p
  222. * @param l
  223. * @returns {*}
  224. */
  225. function loadFiles(type = 'array',_params,sort,p,l){
  226. let sql = ``;
  227. let values = [];
  228. if(isEmpty(_params)){
  229. _params = {};
  230. }
  231. if(type === 'count'){
  232. sql = `select count(*) as total `;
  233. }else {
  234. sql = `select * `;
  235. }
  236. sql += `from hfy_files as f
  237. where 1 = 1
  238. `
  239. if(_params.key){
  240. sql += ` and ( f.name like '%${_params.key}% or f.tags like '%${_params.key}%' )`
  241. }
  242. if(_params.type){
  243. sql += ` and f.fileType = ? `;
  244. values.push(_params.type - 1);
  245. }
  246. sql += ` order by f.uploadTime desc `;
  247. return searchSql(mysql.pq,type,sql,values,l,p);
  248. }
  249. function getFileById(fileId){
  250. let sql = `select * from hfy_files where fileId = ?`;
  251. return mysql.pq(sql,[fileId]);
  252. }
  253. function deleteFile(fileId){
  254. let sql = `delete from hfy_files where fileId = ? limit 1`;
  255. return mysql.pq(sql,[fileId]);
  256. }
  257. function getBaseInfo(id){
  258. let sql = `select * from hfy_basic`;
  259. if(id){
  260. sql += ` where id = ? limit 1`;
  261. return mysql.pq(sql,[id]);
  262. }
  263. return mysql.pq(sql);
  264. }
  265. function editBaseInfo(updateParam, baseId){
  266. let sql = `update hfy_basic set `;
  267. let values = [];
  268. if(!isEmpty(updateParam.company)){
  269. sql += ` company = ?,`;
  270. values.push(updateParam.company);
  271. }
  272. if(!isEmpty(updateParam.wx_qrc)){
  273. sql += ` wx_qrc = ?,`;
  274. values.push(updateParam.wx_qrc);
  275. }
  276. if(!isEmpty(updateParam.addr)){
  277. sql += ` addr = ?,`;
  278. values.push(updateParam.addr);
  279. }
  280. // 网店地址
  281. if(!isEmpty(updateParam.shop_addr)){
  282. sql += ` shop_addr = ?,`;
  283. values.push(updateParam.shop_addr);
  284. }
  285. if(!isEmpty(updateParam.tel)){
  286. sql += ` tel = ?,`;
  287. values.push(updateParam.tel);
  288. }
  289. if(!isEmpty(updateParam.fax)){
  290. sql += ` fax = ?,`;
  291. values.push(updateParam.fax);
  292. }
  293. if(!isEmpty(updateParam.email)){
  294. sql += ` email = ?,`;
  295. values.push(updateParam.email);
  296. }
  297. if(values.length === 0){
  298. return Promise.reject('没有修改任何数据')
  299. }
  300. // 尝试移除最后一个逗号
  301. sql = sql.substring(0,sql.length - 1);
  302. sql += ` where id = ? limit 1`
  303. values.push(baseId);
  304. return mysql.pq(sql,values);
  305. }
  306. function addBaseInfo(data){
  307. let sql = `insert into hfy_basic (wx_qrc, addr, tel, fax, email, shop_addr)
  308. values (?,?,?,?,?)`;
  309. let {wx_qrc, addr, tel, fax, email, shop_addr} = data;
  310. shop_addr = shop_addr || '';
  311. return mysql.pq(sql,[wx_qrc,addr,tel,fax,email, shop_addr]);
  312. }
  313. module.exports = {
  314. getCarousel,
  315. getCarouselById,
  316. addCarousel,
  317. deleteCarousel,
  318. updateCarousel,
  319. getShowBlocks,
  320. getShowBlockById,
  321. addShowBlock,
  322. updateShowBlock,
  323. getEnableCarouselAndShowBlocks,
  324. uploadFiles,
  325. loadFiles,
  326. getFileById,
  327. deleteFile,
  328. getBaseInfo,
  329. editBaseInfo,
  330. addBaseInfo
  331. }