WxTenantController.php 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Admin\Actions\Extensions\Tenant\MainSiteMetaButton;
  4. use App\Admin\Actions\Extensions\Tenant\PayModelCodeButton1;
  5. use App\Admin\Actions\Extensions\Tenant\PayModelCodeButton2;
  6. use App\Admin\Actions\Extensions\Tenant\PayModelCodeButton3;
  7. use App\Admin\Actions\Extensions\Tenant\PayModelCodeButton4;
  8. use App\Admin\Actions\Extensions\Tenant\TenantMetaButton;
  9. use App\Admin\Actions\Extensions\Tenant\TenantUrlReplaceButton;
  10. use App\Admin\Actions\Grid\Tenant\TenantShareAction;
  11. use App\Admin\Repositories\WxTenant;
  12. use App\Jobs\UnpreparedSqlExecute;
  13. use App\Models\System\ChinaArea;
  14. use App\Wen\Utils\StrUtils;
  15. use Dcat\Admin\Form;
  16. use Dcat\Admin\Grid;
  17. use Dcat\Admin\Show;
  18. use Dcat\Admin\Http\Controllers\AdminController;
  19. use Dcat\Admin\Widgets\Metrics\Card;
  20. class WxTenantController extends AdminController
  21. {
  22. /**
  23. * Make a grid builder.
  24. *
  25. * @return Grid
  26. */
  27. protected function grid()
  28. {
  29. return Grid::make(new WxTenant(), function (Grid $grid) {
  30. $grid->quickSearch(['tenant_id', 'name', 'short', 'desc'])->placeholder('搜索分站ID,名字,简称,描述等...')->width(30);
  31. $grid->model()->orderBy('order', 'desc');
  32. $grid->column('tenant_id')->sortable();
  33. $grid->column('order')->editable()->sortable();
  34. $grid->column('name')->editable();
  35. $grid->column('short')->editable();
  36. $grid->column('logo')->image('', 50, 50);
  37. $grid->column('desc')->editable();
  38. $grid->column('is_hot', '热门')->switch();
  39. $grid->column('status')->select([0=>'在运营', 1=>'关闭']);
  40. $grid->column('auth', '授权')->display(function (){
  41. global $__MINI_GLOBAL_TENANTS_ARR__;
  42. if(in_array($this->tenant_id, $__MINI_GLOBAL_TENANTS_ARR__)){
  43. return '<span style="color: violet;">已授权</span>';
  44. }else{
  45. return '未授权';
  46. }
  47. });
  48. $grid->column('tip')->display('查看')->expand(function ($v) {
  49. $input = $this->tip;
  50. if (empty($input)) {
  51. return '';
  52. }
  53. $card = Card::make(view('admin/system/log', compact('input')));
  54. return $card;
  55. });
  56. $grid->column('bg_url', '后台')->display(function (){
  57. if(env('APP_IS_MULTI_SITE', 0) > 0) {
  58. if (!_empty_($this->add_city) && $this->add_city > 0 && _empty_($this->city)) {
  59. $city_name = ChinaArea::where('code', $this->add_city)->value('name');
  60. if ($city_name) {
  61. if (StrUtils::endsWith($city_name, '市')) {
  62. $city_name = str_replace('市', '', $city_name);
  63. }
  64. if (StrUtils::endsWith($city_name, '自治区')) {
  65. $city_name = str_replace('自治区', '', $city_name);
  66. }
  67. if (StrUtils::endsWith($city_name, '自治州')) {
  68. $city_name = str_replace('自治州', '', $city_name);
  69. }
  70. if (StrUtils::endsWith($city_name, '盟')) {
  71. $city_name = str_replace('盟', '', $city_name);
  72. }
  73. if (StrUtils::endsWith($city_name, '直辖市')) {
  74. $city_name = str_replace('直辖市', '', $city_name);
  75. }
  76. if ($city_name != '市辖区') {
  77. \App\Models\WxTenant::where('tenant_id', $this->tenant_id)->update(['city' => $city_name]);
  78. }
  79. }
  80. }
  81. }
  82. if($this->tenant_id > 0){
  83. return '<a href="'.(admin_base_path().'_'.$this->tenant_id).'" target="_blank">后台入口</a>';
  84. }
  85. return '';
  86. });
  87. $grid->column('created_at')->sortable();
  88. // $grid->column('updated_at')
  89. $grid->filter(function (Grid\Filter $filter) {
  90. $filter->equal('tenant_id');
  91. });
  92. $grid->tools([
  93. new MainSiteMetaButton(),
  94. new TenantMetaButton(),
  95. new TenantUrlReplaceButton(),
  96. new PayModelCodeButton1(),
  97. new PayModelCodeButton2(),
  98. new PayModelCodeButton3(),
  99. new PayModelCodeButton4()
  100. ]);
  101. $grid->actions(function (Grid\Displayers\Actions $actions) {
  102. $actions->append((new TenantShareAction())->setKey($this->tenant_id));
  103. });
  104. // $grid->disableDeleteButton();
  105. // $grid->disableBatchDelete();
  106. $grid->header(function ($collection) {
  107. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;display: inline-block;margin-top: 20px;">
  108. 活动: 鼓励更多朋友参与进mini的代理,你每成交一个代理授权,将会获得大礼包之一(礼包1:三个分站授权+50模块代金卷)(礼包2:150模块代金劵),我做这些不是为了赚多少钱,只是希望mini可以存在的时间更长一点,不要某一天突然消失在互联网,这是互利共赢的事情。</div>';
  109. });
  110. });
  111. }
  112. /**
  113. * Make a show builder.
  114. *
  115. * @param mixed $id
  116. *
  117. * @return Show
  118. */
  119. protected function detail($id)
  120. {
  121. return Show::make($id, new WxTenant(), function (Show $show) {
  122. $show->field('tenant_id');
  123. $show->field('order');
  124. $show->field('name');
  125. $show->field('short');
  126. $show->field('logo');
  127. $show->field('desc');
  128. $show->field('status');
  129. $show->field('tip');
  130. $show->field('add_province');
  131. $show->field('add_city');
  132. $show->field('add_district');
  133. $show->field('add_longitude');
  134. $show->field('add_latitude');
  135. $show->field('created_at');
  136. $show->field('updated_at');
  137. });
  138. }
  139. /**
  140. * Make a form builder.
  141. *
  142. * @return Form
  143. */
  144. protected function form()
  145. {
  146. return Form::make(new WxTenant(), function (Form $form) {
  147. $form->html(function () {
  148. return '<div style="background-color: #efe8d9; color: #dea550; padding: 10px;">提示: 新增分站的时候,提示保存失败,你可以返回到列表,其实已经新增成功了,这个问题后面修复,不影响啥。</div>';
  149. }, '');
  150. if($form->isCreating()){
  151. $form->text('tenant_id')->required()->help('不可与已有的重复');
  152. }else{
  153. $form->display('tenant_id')->help('分站一旦创建,ID不允许修改');
  154. }
  155. $form->number('order');
  156. $form->text('name')->required();
  157. $form->text('short');
  158. $form->image('logo')->url('files/uploads')->uniqueName()->autoUpload();
  159. $form->text('desc');
  160. $form->radio('status')->options([0=>'运营中', '关闭'])->default(0);
  161. $form->switch('is_hot', '热门')->options([0=>'否', 1=>'是'])->default(0);
  162. $form->textarea('tip');
  163. if(__system_is_model_enable('weiwait', 'dcat-distpicker')){
  164. try{
  165. $form->distpicker(['add_province', 'add_city', 'add_district'], '地址')
  166. // ->deitail('add_detail') // 使用地址详细
  167. ->coordinate(['add_longitude', 'add_latitude']) // 使用经度纬度坐标
  168. ->height(800); // 设置地图高度 默认300
  169. // ->disableMap(); // 关闭地图
  170. }catch (\Exception $e){
  171. UnpreparedSqlExecute::dispatch('china_areas');
  172. $form->html(function () {
  173. return '<div style="color: #ffffff; padding: 10px; display: inline-block; background-color: black; border-radius: 5px;">如果你看到这个提示,请等5s钟后,刷新浏览器,如果该提示还在,请联系群主</div>';
  174. }, '');
  175. }
  176. }else{
  177. $form->html(function () {
  178. return '<div style="color: #ffffff; padding: 10px; display: inline-block; background-color: black; border-radius: 5px;">!!! 请去<a href="'.admin_url('extension').'" target="_blank">扩展模块</a>,启用:《坐标拾取》模块</div>';
  179. }, '');
  180. }
  181. $form->display('created_at');
  182. $form->display('updated_at');
  183. $form->deleting(function (Form $form){
  184. global $__MINI_GLOBAL_TENANT_ID__;
  185. if($__MINI_GLOBAL_TENANT_ID__ > 0){
  186. return $form->response()->error('权限不足,不可以删除其他分站对象');
  187. }
  188. if($form->getKey() === 0 || $form->getKey() == 999){
  189. return $form->response()->error('不能删除0和999!');
  190. }
  191. });
  192. });
  193. }
  194. }