Просмотр исходного кода

新增替换域名工具命令

liaofei 2 лет назад
Родитель
Сommit
34667f317f
2 измененных файлов с 80 добавлено и 2 удалено
  1. 3 2
      crmeb/config/console.php
  2. 77 0
      crmeb/crmeb/command/Util.php

+ 3 - 2
crmeb/config/console.php

@@ -14,13 +14,14 @@
 // +----------------------------------------------------------------------
 return [
     // 执行用户(Windows下无效)
-    'user'     => null,
+    'user' => null,
     // 指令定义
     'commands' => [
         'workerman' => \crmeb\command\Workerman::class,
         'timer' => \crmeb\command\Timer::class,
         'make:business' => \crmeb\command\Business::class,
         'make:dao' => \crmeb\command\Dao::class,
-        'make:service'=>\crmeb\command\Service::class,
+        'make:service' => \crmeb\command\Service::class,
+        'util' => \crmeb\command\Util::class
     ],
 ];

+ 77 - 0
crmeb/crmeb/command/Util.php

@@ -0,0 +1,77 @@
+<?php
+
+namespace crmeb\command;
+
+
+use crmeb\exceptions\AdminException;
+use think\console\Command;
+use think\console\Input;
+use think\console\input\Argument;
+use think\console\input\Option;
+use think\console\Output;
+use think\facade\Config;
+use think\facade\Db;
+
+class Util extends Command
+{
+    protected function configure()
+    {
+        $this->setName('util')
+            ->addArgument('type', Argument::REQUIRED, '类型replace')
+            ->addOption('h', null, Option::VALUE_REQUIRED, '替换成当前域名')
+            ->addOption('u', null, Option::VALUE_REQUIRED, '替换的域名')
+            ->setDescription('工具类');
+    }
+
+    protected function execute(Input $input, Output $output)
+    {
+        $type = $input->getArgument('type');
+
+        switch ($type) {
+            case 'replace':
+                $host = $input->getOption('h');
+                $url = $input->getOption('u');
+                if (!$host) {
+                    return $output->error('缺少替换域名');
+                }
+                if (!$url) {
+                    return $output->error('缺少替换的域名');
+                }
+                $this->replaceSiteUrl($host, $url);
+                break;
+        }
+
+        $output->info('执行成功');
+    }
+
+    protected function replaceSiteUrl(string $url, string $siteUrl)
+    {
+        $siteUrlJosn = str_replace('http://', 'http:\\\/\\\/', $siteUrl);
+        $valueJosn = str_replace('http://', 'http:\\\/\\\/', $url);
+        $prefix = Config::get('database.connections.' . Config::get('database.default') . '.prefix');
+        $sql = [
+            "UPDATE `{$prefix}system_attachment` SET `att_dir` = replace(att_dir ,'{$siteUrl}','{$url}'),`satt_dir` = replace(satt_dir ,'{$siteUrl}','{$url}')",
+            "UPDATE `{$prefix}store_product` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`slider_image` = replace(slider_image ,'{$siteUrlJosn}','{$valueJosn}')",
+            "UPDATE `{$prefix}store_product_attr_value` SET `image` = replace(image ,'{$siteUrl}','{$url}')",
+            "UPDATE `{$prefix}store_seckill` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
+            "UPDATE `{$prefix}store_combination` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
+            "UPDATE `{$prefix}store_bargain` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
+            "UPDATE `{$prefix}system_config` SET `value` = replace(value ,'{$siteUrlJosn}','{$valueJosn}')",
+            "UPDATE `{$prefix}article_category` SET `image` = replace(`image` ,'{$siteUrl}','{$url}')",
+            "UPDATE `{$prefix}article` SET `image_input` = replace(`image_input` ,'{$siteUrl}','{$url}')",
+            "UPDATE `{$prefix}article_content` SET `content` = replace(`content` ,'{$siteUrl}','{$url}')",
+            "UPDATE `{$prefix}store_category` SET `pic` = replace(`pic` ,'{$siteUrl}','{$url}')",
+            "UPDATE `{$prefix}system_group_data` SET `value` = replace(value ,'{$siteUrlJosn}','{$valueJosn}')",
+            "UPDATE `{$prefix}store_product_description` SET `description`= replace(description,'{$siteUrl}','{$url}')"
+        ];
+        return Db::transaction(function () use ($sql) {
+            try {
+                foreach ($sql as $item) {
+                    Db::execute($item);
+                }
+            } catch (\Throwable $e) {
+                throw new AdminException(400612, ['msg' => $e->getMessage()]);
+            }
+        });
+    }
+}