Util.php 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace crmeb\command;
  3. use crmeb\exceptions\AdminException;
  4. use think\console\Command;
  5. use think\console\Input;
  6. use think\console\input\Argument;
  7. use think\console\input\Option;
  8. use think\console\Output;
  9. use think\facade\Config;
  10. use think\facade\Db;
  11. class Util extends Command
  12. {
  13. protected function configure()
  14. {
  15. $this->setName('util')
  16. ->addArgument('type', Argument::REQUIRED, '类型replace')
  17. ->addOption('h', null, Option::VALUE_REQUIRED, '替换成当前域名')
  18. ->addOption('u', null, Option::VALUE_REQUIRED, '替换的域名')
  19. ->setDescription('工具类');
  20. }
  21. protected function execute(Input $input, Output $output)
  22. {
  23. $type = $input->getArgument('type');
  24. switch ($type) {
  25. case 'replace':
  26. $host = $input->getOption('h');
  27. $url = $input->getOption('u');
  28. if (!$host) {
  29. return $output->error('缺少替换域名');
  30. }
  31. if (!$url) {
  32. return $output->error('缺少替换的域名');
  33. }
  34. $this->replaceSiteUrl($host, $url);
  35. break;
  36. }
  37. $output->info('执行成功');
  38. }
  39. protected function replaceSiteUrl(string $url, string $siteUrl)
  40. {
  41. $siteUrlJosn = str_replace('http://', 'http:\\\/\\\/', $siteUrl);
  42. $valueJosn = str_replace('http://', 'http:\\\/\\\/', $url);
  43. $prefix = Config::get('database.connections.' . Config::get('database.default') . '.prefix');
  44. $sql = [
  45. "UPDATE `{$prefix}system_attachment` SET `att_dir` = replace(att_dir ,'{$siteUrl}','{$url}'),`satt_dir` = replace(satt_dir ,'{$siteUrl}','{$url}')",
  46. "UPDATE `{$prefix}store_product` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`slider_image` = replace(slider_image ,'{$siteUrlJosn}','{$valueJosn}')",
  47. "UPDATE `{$prefix}store_product_attr_value` SET `image` = replace(image ,'{$siteUrl}','{$url}')",
  48. "UPDATE `{$prefix}store_seckill` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
  49. "UPDATE `{$prefix}store_combination` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
  50. "UPDATE `{$prefix}store_bargain` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
  51. "UPDATE `{$prefix}system_config` SET `value` = replace(value ,'{$siteUrlJosn}','{$valueJosn}')",
  52. "UPDATE `{$prefix}article_category` SET `image` = replace(`image` ,'{$siteUrl}','{$url}')",
  53. "UPDATE `{$prefix}article` SET `image_input` = replace(`image_input` ,'{$siteUrl}','{$url}')",
  54. "UPDATE `{$prefix}article_content` SET `content` = replace(`content` ,'{$siteUrl}','{$url}')",
  55. "UPDATE `{$prefix}store_category` SET `pic` = replace(`pic` ,'{$siteUrl}','{$url}')",
  56. "UPDATE `{$prefix}system_group_data` SET `value` = replace(value ,'{$siteUrlJosn}','{$valueJosn}')",
  57. "UPDATE `{$prefix}store_product_description` SET `description`= replace(description,'{$siteUrl}','{$url}')"
  58. ];
  59. return Db::transaction(function () use ($sql) {
  60. try {
  61. foreach ($sql as $item) {
  62. Db::execute($item);
  63. }
  64. } catch (\Throwable $e) {
  65. throw new AdminException(400612, ['msg' => $e->getMessage()]);
  66. }
  67. });
  68. }
  69. }