InitController.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <?php
  2. namespace console\controllers;
  3. use common\enums\RedisKeyEnum;
  4. use common\enums\StatusEnum;
  5. use common\models\backend\Admin;
  6. use common\models\mall\Mall;
  7. use common\models\mall\MallAddons;
  8. use yii\console\Controller;
  9. use yii\console\ExitCode;
  10. use Yii;
  11. class InitController extends Controller
  12. {
  13. public function actionIndex(){
  14. //读取插件目录
  15. $dir = Yii::getAlias('@addons').DIRECTORY_SEPARATOR;
  16. $sql_files = [];
  17. $addons = [];
  18. if(false != ($handle = opendir($dir))){
  19. $i = 0;
  20. while(false !== ($file = readdir($handle))) {
  21. if ($file === '.git' || $file === '.svn' || $file === '.' || $file === '..') {
  22. continue;
  23. }
  24. $fullPath = "$dir/$file";
  25. $sql_name = $fullPath.'/install.sql';
  26. if (is_dir($fullPath) && file_exists($sql_name)) {
  27. $sql_files[] = $sql_name;
  28. }
  29. if(is_dir($fullPath)){
  30. $addons[] = $file;
  31. }
  32. }
  33. //关闭句柄
  34. closedir($handle);
  35. }
  36. $cache = Yii::$app->cache;
  37. $exist = $cache->get('install_addons_sql');
  38. if(!$exist){
  39. foreach ($sql_files as $sql){
  40. Yii::$app->services->upgrade->importsql($sql);
  41. }
  42. $cache->set('install_addons_sql',1);
  43. }
  44. //echo implode($addons,',');
  45. echo implode(',',$addons);
  46. }
  47. /**
  48. * 检测插件状态
  49. */
  50. public function actionAddonsCache(){
  51. $dir = \Yii::getAlias('@addons').DIRECTORY_SEPARATOR;
  52. $addons = [];
  53. if(false != ($handle = opendir($dir))){
  54. $i = 0;
  55. while(false !== ($file = readdir($handle))) {
  56. if ($file === '.git' || $file === '.svn' || $file === '.' || $file === '..') {
  57. continue;
  58. }
  59. $fullPath = "$dir/$file";
  60. if(is_dir($fullPath)){
  61. $addons[] = $file;
  62. }
  63. }
  64. //关闭句柄
  65. closedir($handle);
  66. }
  67. $no_install_addons = MallAddons::find()->where(['status' => 1])->andWhere( ['not in', 'addons_name', $addons])->asArray()->all();
  68. print_r($no_install_addons);
  69. foreach($no_install_addons as $value){
  70. $addons_name = $value['addons_name'];
  71. $mall_id = $value['mall_id'];
  72. $cache = Yii::$app->cache;
  73. $cache_key = RedisKeyEnum::suffix(RedisKeyEnum::ADDONS_INSTALL, $addons_name . $mall_id,true);
  74. $cache->delete($cache_key);
  75. // 删除redis中有效的商城
  76. $redisKey = RedisKeyEnum::suffix(RedisKeyEnum::ADDONS_INSTALL_ARR, ':' . $mall_id,true);
  77. Yii::$app->redis->zrem($redisKey, $addons_name);
  78. MallAddons::deleteAll(['id' => $value['id']]);
  79. }
  80. }
  81. public function actionTest($addons){
  82. error_reporting(E_ERROR);
  83. $addons = explode(',',$addons);
  84. $dir = Yii::getAlias('@addons').DIRECTORY_SEPARATOR;
  85. $now_addons = [];
  86. if(false != ($handle = opendir($dir))){
  87. $i = 0;
  88. while(false !== ($file = readdir($handle))) {
  89. if ($file === '.git' || $file === '.svn' || $file === '.' || $file === '..') {
  90. continue;
  91. }
  92. $fullPath = "$dir/$file";
  93. if(is_dir($fullPath)){
  94. $now_addons[] = $file;
  95. }
  96. }
  97. //关闭句柄
  98. closedir($handle);
  99. }
  100. $arr = array_diff($now_addons,$addons);
  101. echo PHP_EOL.implode(' ',$arr).PHP_EOL;
  102. }
  103. /**
  104. * 初始化商城数据
  105. * @Author: lun
  106. * @DateTime: 2023/8/26 0026 17:26
  107. * @Copyright: copyright (c) 2021 广东七件事集团
  108. */
  109. public function actionQimall()
  110. {
  111. try {
  112. // 获取初始化文件
  113. $file = Yii::getAlias('@webpath') . '/qimall-init.sql';
  114. if (file_exists($file) == false) throw new \Exception('初始化sql文件不存在');
  115. $res = Yii::$app->services->upgrade->importsql($file);
  116. if ($res == true) {
  117. if (@unlink($file) == false) throw new \Exception('初始化文件删除失败');
  118. }
  119. echo '操作成功';
  120. return ExitCode::OK;
  121. } catch (\Exception $e) {
  122. Yii::error($e->getMessage());
  123. return ExitCode::UNSPECIFIED_ERROR;
  124. }
  125. }
  126. }