UpgradeJob.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\jobs;
  12. use app\services\system\log\SystemFileMd5Services;
  13. use app\services\system\UpgradeServices;
  14. use crmeb\basic\BaseJobs;
  15. use crmeb\traits\QueueTrait;
  16. use think\facade\Log;
  17. /**
  18. * 升级包
  19. * Class UpgradeJob
  20. * @package app\jobs
  21. */
  22. class UpgradeJob extends BaseJobs
  23. {
  24. use QueueTrait;
  25. /**
  26. * 下载
  27. * @param $seq
  28. * @param $url
  29. * @param $filePath
  30. * @param $filename
  31. * @param $timeout
  32. * @return bool
  33. */
  34. public function download($seq, $url, $filePath, $filename, $timeout): bool
  35. {
  36. try {
  37. /** @var UpgradeServices $services */
  38. $services = app()->make(UpgradeServices::class);
  39. $services->download($seq, $url, $filePath, $filename, $timeout);
  40. } catch (\Exception $e) {
  41. Log::error('升级包下载失败,失败原因:' . $e->getMessage());
  42. }
  43. return true;
  44. }
  45. /**
  46. * 数据库备份
  47. * @param $token
  48. * @return bool
  49. */
  50. public function databaseBackup($token): bool
  51. {
  52. try {
  53. /** @var UpgradeServices $services */
  54. $services = app()->make(UpgradeServices::class);
  55. $services->databaseBackup($token);
  56. } catch (\Exception $e) {
  57. Log::error('数据库备份失败,失败原因:' . $e->getMessage());
  58. }
  59. return true;
  60. }
  61. /**
  62. * 项目备份
  63. * @param $token
  64. * @return bool
  65. */
  66. public function projectBackup($token): bool
  67. {
  68. try {
  69. /** @var UpgradeServices $services */
  70. $services = app()->make(UpgradeServices::class);
  71. $services->projectBackup($token);
  72. } catch (\Exception $e) {
  73. Log::error('项目备份失败,失败原因:' . $e->getMessage());
  74. }
  75. return true;
  76. }
  77. /**
  78. * 覆盖项目文件
  79. * @param $token
  80. * @return bool
  81. */
  82. public function coverageProject($token): bool
  83. {
  84. try {
  85. /** @var UpgradeServices $services */
  86. $services = app()->make(UpgradeServices::class);
  87. $services->coverageProject($token);
  88. } catch (\Exception $e) {
  89. Log::error('覆盖项目失败,失败原因:' . $e->getMessage());
  90. // 失败时也要设置状态,避免无限循环
  91. \crmeb\services\CacheService::set($token . '_coverage_project', -1, 86400);
  92. \crmeb\services\CacheService::set($token . 'upgrade_status', -1, 86400);
  93. \crmeb\services\CacheService::set($token . 'upgrade_status_tip', '覆盖项目失败: ' . $e->getMessage(), 86400);
  94. }
  95. return true;
  96. }
  97. /**
  98. * 检查文件MD5
  99. * @param $token
  100. * @return bool
  101. * @author wuhaotian
  102. * @email 442384644@qq.com
  103. * @date 2026/2/26
  104. */
  105. public function checkFileMd5($token)
  106. {
  107. try {
  108. /** @var SystemFileMd5Services $services */
  109. $services = app()->make(SystemFileMd5Services::class);
  110. $data = $services->checkFile();
  111. \crmeb\services\CacheService::set($token . '_check_md5_file', $data, 86400);
  112. \crmeb\services\CacheService::set($token . '_check_md5_status', empty($data) ? 2 : 1, 86400);
  113. } catch (\Exception $e) {
  114. Log::error('检查文件MD5失败,失败原因:' . $e->getMessage());
  115. }
  116. return true;
  117. }
  118. }