| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- <?php
- namespace console\controllers;
- use common\enums\RedisKeyEnum;
- use common\enums\StatusEnum;
- use common\models\backend\Admin;
- use common\models\mall\Mall;
- use common\models\mall\MallAddons;
- use yii\console\Controller;
- use yii\console\ExitCode;
- use Yii;
- class InitController extends Controller
- {
- public function actionIndex(){
- //读取插件目录
- $dir = Yii::getAlias('@addons').DIRECTORY_SEPARATOR;
- $sql_files = [];
- $addons = [];
- if(false != ($handle = opendir($dir))){
- $i = 0;
- while(false !== ($file = readdir($handle))) {
- if ($file === '.git' || $file === '.svn' || $file === '.' || $file === '..') {
- continue;
- }
- $fullPath = "$dir/$file";
- $sql_name = $fullPath.'/install.sql';
- if (is_dir($fullPath) && file_exists($sql_name)) {
- $sql_files[] = $sql_name;
- }
- if(is_dir($fullPath)){
- $addons[] = $file;
- }
- }
- //关闭句柄
- closedir($handle);
- }
- $cache = Yii::$app->cache;
- $exist = $cache->get('install_addons_sql');
- if(!$exist){
- foreach ($sql_files as $sql){
- Yii::$app->services->upgrade->importsql($sql);
- }
- $cache->set('install_addons_sql',1);
- }
- //echo implode($addons,',');
- echo implode(',',$addons);
- }
- /**
- * 检测插件状态
- */
- public function actionAddonsCache(){
- $dir = \Yii::getAlias('@addons').DIRECTORY_SEPARATOR;
- $addons = [];
- if(false != ($handle = opendir($dir))){
- $i = 0;
- while(false !== ($file = readdir($handle))) {
- if ($file === '.git' || $file === '.svn' || $file === '.' || $file === '..') {
- continue;
- }
- $fullPath = "$dir/$file";
- if(is_dir($fullPath)){
- $addons[] = $file;
- }
- }
- //关闭句柄
- closedir($handle);
- }
- $no_install_addons = MallAddons::find()->where(['status' => 1])->andWhere( ['not in', 'addons_name', $addons])->asArray()->all();
- print_r($no_install_addons);
- foreach($no_install_addons as $value){
- $addons_name = $value['addons_name'];
- $mall_id = $value['mall_id'];
- $cache = Yii::$app->cache;
- $cache_key = RedisKeyEnum::suffix(RedisKeyEnum::ADDONS_INSTALL, $addons_name . $mall_id,true);
- $cache->delete($cache_key);
- // 删除redis中有效的商城
- $redisKey = RedisKeyEnum::suffix(RedisKeyEnum::ADDONS_INSTALL_ARR, ':' . $mall_id,true);
- Yii::$app->redis->zrem($redisKey, $addons_name);
- MallAddons::deleteAll(['id' => $value['id']]);
- }
- }
- public function actionTest($addons){
- error_reporting(E_ERROR);
- $addons = explode(',',$addons);
- $dir = Yii::getAlias('@addons').DIRECTORY_SEPARATOR;
- $now_addons = [];
- if(false != ($handle = opendir($dir))){
- $i = 0;
- while(false !== ($file = readdir($handle))) {
- if ($file === '.git' || $file === '.svn' || $file === '.' || $file === '..') {
- continue;
- }
- $fullPath = "$dir/$file";
- if(is_dir($fullPath)){
- $now_addons[] = $file;
- }
- }
- //关闭句柄
- closedir($handle);
- }
- $arr = array_diff($now_addons,$addons);
- echo PHP_EOL.implode(' ',$arr).PHP_EOL;
- }
- /**
- * 初始化商城数据
- * @Author: lun
- * @DateTime: 2023/8/26 0026 17:26
- * @Copyright: copyright (c) 2021 广东七件事集团
- */
- public function actionQimall()
- {
- try {
- // 获取初始化文件
- $file = Yii::getAlias('@webpath') . '/qimall-init.sql';
- if (file_exists($file) == false) throw new \Exception('初始化sql文件不存在');
- $res = Yii::$app->services->upgrade->importsql($file);
- if ($res == true) {
- if (@unlink($file) == false) throw new \Exception('初始化文件删除失败');
- }
- echo '操作成功';
- return ExitCode::OK;
- } catch (\Exception $e) {
- Yii::error($e->getMessage());
- return ExitCode::UNSPECIFIED_ERROR;
- }
- }
- }
|