takephoto.js 3.5 KB

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