takephoto.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. 'use strict';
  2. const fs = require('fs');
  3. const Log = require('ee-core/log');
  4. const { Controller } = require('ee-core');
  5. const { getPhotoRecords,delectGoodsArts,createMainImage,getLastPhotoRecord,import_dirs,delete_all_goods_arts } = require('../api/takephoto');
  6. const { t } = require('../config/i18n');
  7. const errData = {
  8. msg : t('common.requestFailed'),
  9. code: 999
  10. }
  11. let id = 1;
  12. /**
  13. * example
  14. * @class
  15. */
  16. class takePhotoController extends Controller {
  17. constructor(ctx) {
  18. super(ctx);
  19. }
  20. /**
  21. * 所有方法接收两个参数
  22. * @param args 前端传的参数
  23. * @param event - ipc通信时才有值。详情见:控制器文档
  24. */
  25. /**
  26. * getPhotoRecords
  27. */
  28. async getPhotoRecords (params) {
  29. console.log('getPhotoRecords')
  30. try {
  31. console.log(id +'getPhotoRecords start print_time:'+new Date().toLocaleString()) // 打印当前时间
  32. const result = await getPhotoRecords(params);
  33. console.log(id+'getPhotoRecords result')
  34. console.log(id + 'getPhotoRecords result print_time:'+new Date().toLocaleString()) // 打印当前时间
  35. id++;
  36. if(result.data) return result.data
  37. return errData;
  38. } catch (error) {
  39. Log.error('获取照片记录失败:', error);
  40. return errData;
  41. }
  42. }
  43. async delectGoodsArts (params) {
  44. console.log('delectGoodsArts')
  45. try {
  46. const result = await delectGoodsArts(params);
  47. console.log('result')
  48. console.log(result)
  49. if(result.data) return result.data
  50. return errData;
  51. } catch (error) {
  52. console.log('error')
  53. Log.error('删除商品货号失败:', error);
  54. return errData;
  55. }
  56. }
  57. async createMainImage (params) {
  58. console.log('createMainImage')
  59. try {
  60. const result = await createMainImage(params);
  61. console.log('result')
  62. console.log(result)
  63. if(result.code === 0 && result.data?.main_out_path){
  64. const filePath = result.data?.main_out_path
  65. const fileBuffer = fs.readFileSync(filePath);
  66. const base64Image = fileBuffer.toString('base64');
  67. // 获取文件扩展名
  68. const extension = path.extname(filePath).toLowerCase().replace('.', '');
  69. // 根据扩展名确定 MIME 类型
  70. let mimeType = '';
  71. switch (extension) {
  72. case 'jpg':
  73. case 'jpeg':
  74. mimeType = 'image/jpeg';
  75. break;
  76. case 'png':
  77. mimeType = 'image/png';
  78. break;
  79. case 'gif':
  80. mimeType = 'image/gif';
  81. break;
  82. case 'webp':
  83. mimeType = 'image/webp';
  84. break;
  85. case 'avif':
  86. mimeType = 'image/avif';
  87. break;
  88. default:
  89. mimeType = 'application/octet-stream'; // 默认 MIME 类型
  90. break;
  91. }
  92. // 构建 data URL
  93. const dataUrl = `data:${mimeType};base64,${base64Image}`;
  94. result.data.main_out_path = dataUrl
  95. }
  96. if(result.data) return result.data
  97. return errData;
  98. } catch (error) {
  99. Log.error('创建主图失败:', error);
  100. return errData;
  101. }
  102. }
  103. async getLastPhotoRecord (params) {
  104. console.log('getLastPhotoRecord')
  105. try {
  106. const result = await getLastPhotoRecord(params);
  107. console.log('result')
  108. console.log(result)
  109. if(result.data) return result.data
  110. return errData;
  111. } catch (error) {
  112. Log.error('获取最新照片记录失败:', error);
  113. return errData;
  114. }
  115. }
  116. async import_dirs (params) {
  117. console.log('import_dirs')
  118. try {
  119. const result = await import_dirs(params);
  120. console.log('result')
  121. console.log(result)
  122. if(result.data) return result.data
  123. return { code: 0 };
  124. } catch (error) {
  125. Log.error('导入图片目录失败:', error);
  126. return errData;
  127. }
  128. }
  129. async delete_all_goods_arts () {
  130. console.log('delete_all_goods_arts')
  131. try {
  132. const result = await delete_all_goods_arts();
  133. if(result.data) return result.data
  134. return { code: 0 };
  135. } catch (error) {
  136. Log.error('删除所有货号失败:', error);
  137. return errData;
  138. }
  139. }
  140. }
  141. takePhotoController.toString = () => '[class takePhotoController]';
  142. module.exports = takePhotoController;