formShopTrait.php 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <?php
  2. namespace App\Admin\Controllers\Traits\WxSettingTraits;
  3. use App\Admin\Renderable\BannerRender;
  4. use App\Admin\Renderable\IconRender;
  5. use App\Admin\Renderable\QuestionRender;
  6. use App\Admin\Renderable\Shop\ShopNoticeRender;
  7. use App\Admin\Renderable\ShopGoodsRender;
  8. use App\Models\Shop\WxShopClassify;
  9. use App\Models\Shop\WxShopGoods;
  10. use App\Models\Shop\WxShopNotice;
  11. use App\Models\WxClause;
  12. use App\Models\WxIcon;
  13. use App\Models\WxQuestion;
  14. use App\Models\WxSlideshow;
  15. use App\Wen\Utils\AdminUtils;
  16. use App\Wen\Utils\FieldUtils;
  17. use App\Wen\Utils\GatewayUtils;
  18. use App\Wen\Utils\Settings;
  19. use App\Wen\Utils\SiteUtils;
  20. use Dcat\Admin\Form\NestedForm;
  21. use Dcat\Admin\Layout\Content;
  22. use Dcat\Admin\Widgets\Form;
  23. use Illuminate\Http\Request;
  24. use Illuminate\Support\Facades\Cache;
  25. trait formShopTrait{
  26. public function index_shop(Content $content)
  27. {
  28. return $content->title('商城相关页面配置')
  29. // ->body($this->buildPreviewButton())
  30. // ->body($this->newline())
  31. ->body(
  32. <<<HTML
  33. <div class="card">{$this->form_shop()->render()}</div>
  34. HTML
  35. );
  36. }
  37. protected function form_shop(){
  38. $form = new Form();
  39. $form->confirm('您确定要提交表单吗?', 'content');
  40. $form->disableResetButton();
  41. $form->tab('详情', function (Form $form) {
  42. $form->html(function () {
  43. return '';
  44. }, '<b>一、自营商城客服(App)</b>');
  45. $form->html(function () {
  46. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;">1、小程序使用微信小程序客服(你可以在微信公众平台找到客服配置,把自己的微信号配置成客服,就可以收到客户的消息提醒)<br/>2、App客服可自定义跳转类型,推荐的是企业微信客服</div>';
  47. }, '');
  48. $form->radio('app_shop_servicer_target_type', '跳转类型')->options(FieldUtils::getUrlTypes())->default(Settings::get('app_shop_servicer_target_type', 0));
  49. $form->text('app_shop_servicer_target_id', '跳转id')->default(Settings::get('app_shop_servicer_target_id', ''));
  50. });
  51. $form->tab('好物页面', function (Form $form) {
  52. $form->html(function () {
  53. return '<a href="https://img.mini.minisns.cn/images/hbx/shop_preview.png" target="_blank">点击查看,这里设置的是什么地方</a>';
  54. }, '');
  55. $form->html(function () {
  56. return '';
  57. }, '<b>一、轮播图</b>');
  58. $form->multipleSelectTable('app_shop_banner', '轮播图')
  59. ->title('轮播图库')
  60. ->max(10)
  61. ->from(BannerRender::make())
  62. ->model(WxSlideshow::class, 'id', 'id', 'selectTable:formMiniTrait:app_shop_banner')
  63. ->help('<a href="'.admin_url('slideshow').'" target="_blank">运营管理-轮播图中心</a><a href="https://doc.minisns.cn/doc/70/" target="_blank" style="color: red;">(ps:如何控制顺序?)&nbsp;</a>')->default(Settings::get('app_shop_banner', '30,32'));
  64. $form->html(function () {
  65. return '';
  66. }, '<b>二、商城通知</b>');
  67. $form->multipleSelectTable('app_shop_notice', '商城通知')
  68. ->title('商城通知')
  69. ->max(10)
  70. ->from(ShopNoticeRender::make())
  71. ->model(WxShopNotice::class, 'id', 'title', 'selectTable:formShopTrait:app_shop_notice')
  72. ->help('<a href="'.admin_url('shop/notice').'" target="_blank">管理商城通知>></a><a href="https://doc.minisns.cn/doc/70/" target="_blank" style="color: red;">(ps:如何控制顺序?)&nbsp;</a>')
  73. ->default(Settings::get('app_shop_notice', ''));
  74. $form->html(function () {
  75. return '';
  76. }, '<b>三、格子菜单</b>');
  77. $form->multipleSelectTable('app_shop_nav_', '格子菜单')
  78. ->title('图标库')
  79. ->max(10)
  80. ->from(IconRender::make())
  81. ->model(WxIcon::class, 'id', 'name', 'selectTable:formShopTrait:app_shop_nav_')
  82. ->help('这里尽量用图标,才可以适配暗黑模式, <a href="'.admin_url('settings/icons').'" target="_blank">管理图标库>></a><a href="https://doc.minisns.cn/doc/70/" target="_blank" style="color: red;">(ps:如何控制顺序?)&nbsp;</a>')
  83. ->default(Settings::get('app_shop_nav_', ''));
  84. $form->html(function () {
  85. return '';
  86. }, '<b>四、手风琴</b>');
  87. $form->radio('is_app_shop_accordion', '手风琴')->options([0=>'否', 1=>'是'])->when(1, function (Form $form){
  88. $form->multipleSelectTable('app_shop_accordion_goods', '展示商品')
  89. ->title('商品库')
  90. ->max(6)
  91. ->from(ShopGoodsRender::make())
  92. ->model(WxShopGoods::class, 'id', 'id')->default(Settings::get('app_shop_accordion_goods', ''));
  93. })->default(Settings::get('is_app_shop_accordion', 0));
  94. $form->html(function () {
  95. return '';
  96. }, '<b>五、热销榜单</b>');
  97. $form->radio('is_app_shop_hot_list', '热销榜单')->options([0=>'否', 1=>'是'])->when(1, function (Form $form){
  98. $form->multipleSelect('app_shop_hot_list_classify', '选择商品分类')->options(WxShopClassify::pluck('name', 'id'))->default(Settings::get('app_shop_hot_list_classify', []));
  99. })->default(Settings::get('is_app_shop_hot_list', 0));
  100. });
  101. $form->tab('店铺申请', function (Form $form) {
  102. $form->html(function () {
  103. return '';
  104. }, '<b>一、协议</b>');
  105. $form->select('app_shop_apply_clause', '商家服务协议')->options(WxClause::pluck('title', 'id'))->help('<a href="'.admin_url('clause').'" target="_blank">进入条款管理</a>')->default(Settings::get('app_shop_apply_clause', 0));
  106. $form->html(function () {
  107. return '';
  108. }, '<b>一、店铺申请</b>');
  109. $form->checkbox('app_shop_apply_type_open', '开放的类型')->options([1=> '个人店', 2=> '个体户', 3=>'企业店', 4=>'旗舰店/专卖店'])->help('目前只能开放个人类型,该配置不会生效')->default(Settings::get('app_shop_apply_type_open', '1,2,3,4'));
  110. $form->html(function () {
  111. return '';
  112. }, '<b>三、常见问题</b>');
  113. $form->multipleSelectTable('app_shop_apply_questions', '常见问题')
  114. ->title('帮助问题库')
  115. ->max(10)
  116. ->from(QuestionRender::make())
  117. ->model(WxQuestion::class, 'id', 'title', 'selectTable:formShopTrait:app_shop_apply_questions')
  118. ->help('<a href="'.admin_url('qa/question').'" target="_blank">用户管理-帮助</a>')
  119. ->default(Settings::get('app_shop_apply_questions', ''));
  120. });
  121. $form->action('settings/action/shop');
  122. return $form;
  123. }
  124. public function shop(Request $request){
  125. SiteUtils::forget_config_data();
  126. Settings::set('app_shop_servicer_target_type', $request->input('app_shop_servicer_target_type'), true);
  127. Settings::set('app_shop_servicer_target_id', $request->input('app_shop_servicer_target_id'), true);
  128. Settings::set('app_shop_apply_questions', AdminUtils::_multipleSelectTable_order_process('selectTable:formShopTrait:app_shop_apply_questions', $request->input('app_shop_apply_questions')), true);
  129. Settings::set('app_shop_banner', AdminUtils::_multipleSelectTable_order_process('selectTable:formMiniTrait:app_shop_banner', $request->input('app_shop_banner')) , true);
  130. Settings::set('app_shop_nav_', AdminUtils::_multipleSelectTable_order_process('selectTable:formShopTrait:app_shop_nav_', $request->input('app_shop_nav_')) , true);
  131. Settings::set('app_shop_notice', AdminUtils::_multipleSelectTable_order_process('selectTable:formShopTrait:app_shop_notice', $request->input('app_shop_notice')) , true);
  132. Settings::set('is_app_shop_accordion', $request->input('is_app_shop_accordion'), true);
  133. Settings::set('is_app_shop_hot_list', $request->input('is_app_shop_hot_list'), true);
  134. Settings::set('app_shop_accordion_goods', $request->input('app_shop_accordion_goods'), true);
  135. Settings::set('app_shop_hot_list_classify', $request->input('app_shop_hot_list_classify'), true);
  136. Settings::set('app_shop_apply_clause', $request->input('app_shop_apply_clause'), true);
  137. $__global_config_version__ = Settings::get('__global_config_version__', 1) + 1;
  138. Settings::set('__global_config_version__', $__global_config_version__);
  139. GatewayUtils::success('all', 13, [ 'version' => $__global_config_version__, 'file' => basename(__FILE__) ]);
  140. return $this->response()->success('成功!');
  141. }
  142. }