bills_permissionController.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. /**标准清单操作相关
  2. * Created by Zhong on 2017/8/2.
  3. */
  4. let billsController = require("./bills_lib_controllers");
  5. import baseController from "../../common/base/base_controller";
  6. import fs from 'fs';
  7. import path from 'path';
  8. import multiparty from 'multiparty';
  9. const uuidV1 = require('uuid/v1');
  10. const shareDir = 'public/share/images';
  11. const imgTriggers = ['billsRecharge', 'rationExplanation', 'rationRuleText'];
  12. class billsPermContr extends baseController{
  13. getCurrentUniqId(req, res){
  14. billsController.getCurrentUniqId(req, res);
  15. }
  16. getBills(req, res){
  17. billsController.getBills(req, res);
  18. }
  19. createBills(req, res){
  20. billsController.createBills(req, res);
  21. }
  22. updatePNId(req, res){
  23. billsController.updatePNId(req, res);
  24. }
  25. upMove(req, res){
  26. billsController.upMove(req, res);
  27. }
  28. downMove(req, res){
  29. billsController.downMove(req, res);
  30. }
  31. upLevel(req, res){
  32. billsController.upLevel(req, res);
  33. }
  34. downLevel(req, res){
  35. billsController.downLevel(req, res);
  36. }
  37. updateBills(req, res){
  38. billsController.updateBills(req, res);
  39. }
  40. updateSectionInfo(req, res){
  41. billsController.updateSectionInfo(req, res);
  42. }
  43. updateBillsArr(req, res){
  44. billsController.updateBillsArr(req, res);
  45. }
  46. removeTotal(req, res){
  47. billsController.removeTotal(req, res);
  48. }
  49. updateSerialNo(req, res){
  50. billsController.updateSerialNo(req, res);
  51. }
  52. pasteBills(req, res){
  53. billsController.pasteBills(req, res);
  54. }
  55. updateRecharge(req, res){
  56. billsController.updateRecharge(req, res);
  57. }
  58. pasteRel(req, res){
  59. billsController.pasteRel(req, res);
  60. }
  61. deleteBills(req, res){
  62. billsController.deleteBills(req, res);
  63. }
  64. isUsed(req, res){
  65. billsController.isUsed(req, res);
  66. }
  67. /*
  68. *上传图片
  69. * */
  70. uploadImg(req, res){
  71. let uploadDir = path.join(req.app.locals.rootDir, shareDir);
  72. let form = new multiparty.Form({uploadDir: uploadDir});
  73. form.parse(req, async function(err, fields, files){
  74. try {
  75. const file = typeof files.file !== 'undefined' ? files.file[0] : null;
  76. if(err || !file) {
  77. throw '上传失败';
  78. }
  79. //触发上传图片的地方
  80. const trigger = typeof fields.trigger !== 'undefined' && fields.trigger.length > 0 ? fields.trigger[0] : null;
  81. if (!trigger || !imgTriggers.includes(trigger)) {
  82. throw '该操作没有上传权限'
  83. }
  84. //根据触发源放置文件到相关文件夹
  85. let triggerPath = path.join(uploadDir, trigger);
  86. if (!fs.existsSync(triggerPath)) {
  87. fs.mkdirSync(triggerPath);
  88. }
  89. //文件后缀
  90. let px = file.originalFilename.split('.').pop();
  91. //时间戳重命名图片并移动文件
  92. let newFileName = Date.now() + '.' + px;
  93. if (fs.existsSync(newPath)) {
  94. newFileName += uuidV1();
  95. }
  96. let newPath = path.join(triggerPath, newFileName);
  97. fs.renameSync(file.path, newPath);
  98. //返回图片域名后的url
  99. res.json({error: 0, data: `${shareDir}/${trigger}/${newFileName}`, message: 'success'});
  100. } catch (err) {
  101. console.log(err);
  102. res.json({error: 1, data: null, message: err});
  103. }
  104. });
  105. }
  106. /*
  107. * 删除图片
  108. * */
  109. delImg(req, res){
  110. try {
  111. let data = JSON.parse(req.body.data),
  112. trigger = data.trigger,
  113. url = data.url;
  114. if (!imgTriggers.includes(trigger)) {
  115. throw '该操作没有权限';
  116. }
  117. //拼接完整的删除路径
  118. let delUrl = path.join(req.app.locals.rootDir, url);
  119. fs.unlinkSync(delUrl);
  120. res.json({error: 0, data: null, message: 'success'});
  121. } catch(err) {
  122. res.json({error: 1, data: null, message: err});
  123. }
  124. }
  125. /*
  126. * 根据页码加载图片
  127. * 返回总页码和当前页码的图片信息
  128. * */
  129. loadImgs(req, res){
  130. try {
  131. let data = JSON.parse(req.body.data),
  132. trigger = data.trigger,
  133. page = data.page;
  134. if (!imgTriggers.includes(trigger)) {
  135. throw '该操作没有权限';
  136. }
  137. //每页显示的图片数
  138. const perImgs = 3;
  139. //总的图片信息
  140. let triggerPath = path.join(req.app.locals.rootDir, shareDir, trigger);
  141. if (!fs.existsSync(triggerPath)) {
  142. fs.mkdirSync(triggerPath);
  143. }
  144. let allImgs = fs.readdirSync(triggerPath);
  145. //将图片按照时间排序,降序
  146. allImgs.sort(function (a, b) {
  147. let aV = a.split('.')[0],
  148. bV = b.split('.')[0];
  149. if(aV > bV) {
  150. return -1;
  151. } else if(aV < bV) {
  152. return 1;
  153. }
  154. return 0;
  155. });
  156. let pageCount = Math.ceil(allImgs.length / perImgs) || 1;
  157. //当前页图片信息
  158. let startIdx = (page - 1) * perImgs,
  159. endIdx = startIdx + 3,
  160. currentPageArr = allImgs.slice(startIdx, endIdx),
  161. currentImgsUrl = [];
  162. for (let img of currentPageArr){
  163. currentImgsUrl.push(`${shareDir}/${trigger}/${img}`);
  164. }
  165. res.json({error: 0, data: {pageCount: pageCount, currentImgsUrl: currentImgsUrl}, message: 'success'});
  166. } catch (err) {
  167. console.log(err);
  168. res.json({error: 1, data: {pageCount: 1, currentImgsUrl: []}, message: err});
  169. }
  170. }
  171. }
  172. export default billsPermContr;