SettingsController.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <?php
  2. namespace App\Distributor\Controllers;
  3. use App\Distributor\Repositories\DistAdminDistributor;
  4. use App\Http\Controllers\Controller;
  5. use Dcat\Admin\Layout\Column;
  6. use Dcat\Admin\Layout\Content;
  7. use Dcat\Admin\Layout\Row;
  8. use Dcat\Admin\Widgets\Form;
  9. use Illuminate\Http\Request;
  10. use Dcat\Admin\Models\Setting as SettingModel;
  11. use Dcat\Admin\Traits\HasUploadedFile;
  12. class SettingsController extends Controller
  13. {
  14. use HasUploadedFile;
  15. public function index(Content $content)
  16. {
  17. $formTab = isset($_GET['tab']) ? $_GET['tab'] : 0;
  18. if ($formTab == 0) {
  19. return $content->title(admin_trans( 'admin.settings'))
  20. ->body($this->form1());
  21. } else {
  22. return $content->title(admin_trans( 'admin.settings'))
  23. ->body($this->form2());
  24. }
  25. }
  26. /*
  27. * 域名配置
  28. */
  29. protected function form1()
  30. {
  31. exit;
  32. $distInfo = DistAdminDistributor::getInfo();
  33. $form = new \Dcat\Admin\Form();
  34. $form->title(admin_trans_label('domain'));
  35. //提交URL
  36. $form->action('/dist-settings');
  37. $form->hidden('act')->value('domain');
  38. //查分销商信息
  39. $secondaryDomain = $distInfo->secondary_domain ? $distInfo->secondary_domain : '';
  40. $customDomain = $distInfo->custom_domain ? $distInfo->custom_domain : '';
  41. $form->radio('domain_type')
  42. ->when(0, function (\Dcat\Admin\Form $form) use ($secondaryDomain) {
  43. $form->text('secondary_domain')->width(4,2)->value($secondaryDomain)->readOnly();
  44. })
  45. ->when(1, function (\Dcat\Admin\Form $form) use ($customDomain){
  46. $form->text('custom_domain')->width(4,2)->value($customDomain)->help('Please enter the domain name, such as www.example.com,and bind the domain name to the IP address '.env('DIST_SITE_IP'));
  47. })
  48. ->options([0=>admin_trans_field('secondary_domain'),1=>admin_trans_field('custom_domain')])
  49. ->value($distInfo->domain_type)
  50. ->required();
  51. //按钮
  52. $form->disableListButton();
  53. $form->disableViewCheck();
  54. $form->disableEditingCheck();
  55. $form->disableCreatingCheck();
  56. return $form;
  57. }
  58. /*
  59. * 站点配置
  60. */
  61. protected function form2()
  62. {
  63. $distInfo = DistAdminDistributor::getInfo();
  64. $form = new \Dcat\Admin\Form();
  65. $form->title(admin_trans_label('site'));
  66. //提交URL
  67. $form->action('/dist-settings');
  68. //字段
  69. $form->hidden('act')->value('site');
  70. $form->column(6, function (\Dcat\Admin\Form $form) use ($distInfo) {
  71. $form->text('site_name')->value($distInfo->site_name)->required();
  72. $form->text('seo_title')->value($distInfo->seo_title)->required();
  73. $form->text('seo_keywords')->value($distInfo->seo_keywords);
  74. $form->textarea('seo_description')->value($distInfo->seo_description);
  75. $form->image("logo")
  76. //->aspectRatio(130/50)// 设置裁剪框比例
  77. ->retainable()//禁止删OSS图
  78. ->autoUpload()
  79. ->uniqueName()
  80. ->accept(config('distributor.upload.oss_image.accept'))
  81. ->maxSize(config('distributor.upload.oss_image.max_size'))
  82. ->dir(config("distributor.upload.directory.image").'/logo')
  83. ->url('/dist-settings/upload')
  84. ->default($distInfo->logo)->width(4,2);
  85. });
  86. $form->column(6, function (\Dcat\Admin\Form $form) use ($distInfo) {
  87. $form->text('company_name')->value($distInfo->company_name);
  88. $form->text('company_address')->value($distInfo->company_address);
  89. $form->text('service_hotline')->value($distInfo->service_hotline);
  90. $form->text('dist_email',admin_trans_label('email'))->value($distInfo->dist_email);
  91. $form->text('whats_app')->value($distInfo->whats_app);
  92. $form->text('facebook')->value($distInfo->facebook);
  93. $form->text('instagram')->value($distInfo->instagram);
  94. $form->text('youtube')->value($distInfo->youtube);
  95. $form->text('linkedin')->value($distInfo->linkedin);
  96. $form->text('tiktok')->value($distInfo->tiktok);
  97. $form->text('copy_right')->value($distInfo->copy_right);
  98. });
  99. $form->disableListButton();
  100. $form->disableViewCheck();
  101. $form->disableEditingCheck();
  102. $form->disableCreatingCheck();
  103. return $form;
  104. }
  105. /*
  106. * 保存配置
  107. */
  108. public function store(Request $request) {
  109. $form = new Form();
  110. $act = $request->input('act');
  111. if ($act == 'domain') {
  112. $domainType = $request->input('domain_type');
  113. $customDomain = $request->input('custom_domain');
  114. if (!in_array($domainType, [0,1])) {
  115. return $form->response()->error('Invalid argument');
  116. }
  117. $customDomain = $this->removeHttpAndPort($customDomain);
  118. DistAdminDistributor::updateDomain($domainType,$customDomain);
  119. } else {
  120. //站点配置
  121. DistAdminDistributor::updateInfo($request->all());
  122. }
  123. return $form->response()->success(admin_trans_label('update_success'));
  124. }
  125. public function upload()
  126. {
  127. $disk = $this->disk('oss');
  128. // 判断是否是删除文件请求
  129. if ($this->isDeleteRequest()) {
  130. // 删除文件并响应
  131. //return $this->deleteFileAndResponse($disk);
  132. return $this->responseDeleted();
  133. }
  134. // 获取上传的文件
  135. $file = $this->file();
  136. // 获取上传的字段名称
  137. // $column = $this->uploader()->upload_column;
  138. $column = uniqueCode("logo");
  139. $dir = config("distributor.upload.directory.image").'/logo';
  140. $newName = $column.'.'.$file->getClientOriginalExtension();
  141. $result = $disk->putFileAs($dir, $file, $newName);
  142. $path = "{$dir}/$newName";
  143. return $result
  144. ? $this->responseUploaded($path, $disk->url($path))
  145. : $this->responseErrorMessage(admin_trans_label('upload_failed'));
  146. }
  147. private function removeHttpAndPort($url) {
  148. // 使用正则表达式去除 http:// 和 https://
  149. $url = preg_replace('#^https?://#', '', $url);
  150. // 使用正则表达式去除端口号
  151. $url = preg_replace('#:\d+/#', '/', $url);
  152. $url = preg_replace('#:\d+$#', '', $url);
  153. $url = trim($url);
  154. $url = trim($url,'/');
  155. $url = trim($url,'\\');
  156. return $url;
  157. }
  158. }