SettingsController.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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. return $content->title(admin_trans( 'admin.settings'))
  18. ->body(
  19. <<<HTML
  20. <div class="card">{$this->form()->render()}</div>
  21. HTML
  22. );
  23. }
  24. protected function form()
  25. {
  26. $distInfo = DistAdminDistributor::getInfo();
  27. $form = new Form();
  28. $form->tab('domain', function (Form $form) use ($distInfo) {
  29. //查分销商信息
  30. $secondaryDomain = $distInfo->secondary_domain ? $distInfo->secondary_domain : '';
  31. $customDomain = $distInfo->custom_domain ? $distInfo->custom_domain : '';
  32. $form->radio('domain_type')
  33. ->when(0, function (Form $form) use ($secondaryDomain) {
  34. $form->text('secondary_domain')->width(4,2)->value($secondaryDomain)->readOnly();
  35. })
  36. ->when(1, function (Form $form) use ($customDomain){
  37. $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'));
  38. })
  39. ->options([0=>admin_trans_field('secondary_domain'),1=>admin_trans_field('custom_domain')])
  40. ->value($distInfo->domain_type)
  41. ->required();
  42. });
  43. $form->tab('site', function (Form $form) use ($distInfo) {
  44. $form->image("logo")
  45. ->autoUpload()
  46. ->uniqueName()
  47. ->accept(config('distributor.upload.oss_image.accept'))
  48. ->maxSize(config('distributor.upload.oss_image.max_size'))
  49. ->dir(config("distributor.upload.directory.image").'/logo')
  50. ->url('/dist-settings/upload')
  51. ->default($distInfo->logo);
  52. $form->text('site_name')->value($distInfo->site_name)->required();
  53. $form->text('company_name')->value($distInfo->company_name)->required();
  54. $form->text('company_address')->value($distInfo->company_address);
  55. $form->text('contact_number')->value($distInfo->contact_number);
  56. $form->text('service_hotline')->value($distInfo->service_hotline);
  57. $form->text('whats_app')->value($distInfo->whats_app);
  58. $form->text('seo_title')->value($distInfo->seo_title)->required();
  59. $form->text('seo_keywords')->value($distInfo->seo_keywords);
  60. $form->textarea('seo_description')->value($distInfo->seo_description);
  61. });
  62. return $form;
  63. }
  64. /*
  65. * 保存配置
  66. */
  67. public function store(Request $request) {
  68. $form = new Form();
  69. $domainType = $request->input('domain_type');
  70. $customDomain = $request->input('custom_domain');
  71. if (!in_array($domainType, [0,1])) {
  72. return $form->response()->error('Invalid argument');
  73. }
  74. if ($domainType == 1) {
  75. if (str_starts_with($customDomain,env('TOP_DOMAIN'))) {
  76. return $form->response()->error('Error in domain format');
  77. }
  78. if (!isDomainOnly($customDomain)) {
  79. return $form->response()->error('Error in domain format');
  80. }
  81. }
  82. DistAdminDistributor::updateDomain($domainType,$customDomain);
  83. //站点配置
  84. DistAdminDistributor::updateInfo($request->all());
  85. return $form->response()->success('Success');
  86. }
  87. public function upload()
  88. {
  89. $disk = $this->disk('oss');
  90. // 判断是否是删除文件请求
  91. if ($this->isDeleteRequest()) {
  92. // 删除文件并响应
  93. //return $this->deleteFileAndResponse($disk);
  94. return $this->responseDeleted();
  95. }
  96. // 获取上传的文件
  97. $file = $this->file();
  98. // 获取上传的字段名称
  99. // $column = $this->uploader()->upload_column;
  100. $column = uniqueCode("logo");
  101. $dir = config("distributor.upload.directory.image").'/logo';
  102. $newName = $column.'.'.$file->getClientOriginalExtension();
  103. $result = $disk->putFileAs($dir, $file, $newName);
  104. $path = "{$dir}/$newName";
  105. return $result
  106. ? $this->responseUploaded($path, $disk->url($path))
  107. : $this->responseErrorMessage('文件上传失败');
  108. }
  109. }