WxShopController.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <?php
  2. namespace App\Admin\Controllers\Shop;
  3. use App\Admin\Actions\Grid\Shop\ShopExamineAction;
  4. use App\Admin\Actions\Grid\Shop\ShopGuaranteeAction;
  5. use App\Models\Shop\WxShop;
  6. use App\Wen\Utils\Settings;
  7. use Dcat\Admin\Admin;
  8. use Dcat\Admin\Form;
  9. use Dcat\Admin\Grid;
  10. use Dcat\Admin\Show;
  11. use Dcat\Admin\Http\Controllers\AdminController;
  12. use Illuminate\Http\Request;
  13. class WxShopController extends AdminController
  14. {
  15. public function shops(Request $request)
  16. {
  17. $q = $request->get('q');
  18. $admin_user = Admin::user();
  19. if($admin_user->isAdministrator()){
  20. return WxShop::where('shop_name', 'like', "%$q%")->orWhere('id', (int)$q)->orWhere('user_id', (int)$q)->paginate(null, ['id', 'shop_name as text']);
  21. }else{
  22. if(_empty_($admin_user->uid)){
  23. return WxShop::where('shop_name', 'like', "%$q%")->orWhere('id', (int)$q)->orWhere('user_id', (int)$q)->paginate(null, ['id', 'shop_name as text']);
  24. }else{
  25. return WxShop::where('user_id', $admin_user->uid)->where('shop_name', 'like', "%$q%")->orWhere('id', (int)$q)->orWhere('user_id', (int)$q)->orWhere('user_id', (int)$q)->paginate(null, ['id', 'shop_name as text']);
  26. }
  27. }
  28. }
  29. /**
  30. * Make a grid builder.
  31. *
  32. * @return Grid
  33. */
  34. protected function grid()
  35. {
  36. return Grid::make(new WxShop(), function (Grid $grid) {
  37. $grid->model()->orderBy('id', 'desc');
  38. $grid->quickSearch(['id','user_id','user.user_name'])->placeholder('搜索店铺ID,用户ID,用户名字...')->width(50);
  39. $grid->column('id')->sortable();
  40. $grid->column('users', '头像')->display(function ($v) {
  41. return '<img src="' . ($this->user['user_avatar'] ?? Settings::get('img_default', 'https://img.mini.minisns.cn/icons/dafault.png')) . '" style="border-radius:50px;width:30px;" />';
  42. })->width('50px');
  43. $grid->column('user')->display(function ($v) {
  44. if($v && $v['user_name']){
  45. return '<a target="_blank" href="'.admin_url('users?id='.$v['id']).'">'.$v['user_name'].'</a>' ?? '用户已删除';
  46. }
  47. return '用户已删除';
  48. })->width('100px');
  49. $grid->column('shop_classifys');
  50. $grid->column('margin_rest')->display(function ($v){
  51. return '<a href="'.admin_url('shop/guarantee?shop_id='.$this->id).'" target="_blank">¥'.$v.'</a>';
  52. });
  53. $grid->column('logo');
  54. $grid->column('name');
  55. $grid->column('introduce');
  56. // $grid->column('country');
  57. // $grid->column('province');
  58. // $grid->column('city');
  59. // $grid->column('district');
  60. $grid->column('business_license_image');
  61. // $grid->column('phone');
  62. // $grid->column('wechat');
  63. // $grid->column('qq');
  64. $grid->column('head_name');
  65. $grid->column('head_photo');
  66. $grid->column('head_id_card_a');
  67. $grid->column('head_id_card_b');
  68. $grid->column('supplement');
  69. $grid->column('status')->using([0=>'审核中', 1=>'审核通过',2=>'审核拒绝', 3=> '系统惩罚下线', 4 => '管理员惩罚下线', 5=> '店主关停'])->display(function ($v){
  70. if($v == '审核中'){
  71. if($this->margin_rest >= $this->margin_least){
  72. return '待审核';
  73. }else{
  74. return '待缴纳保证金';
  75. }
  76. }
  77. return $v;
  78. })->label([0=>'pink', 1 => 'primary', 2=> 'red', 3=>'grey', 4=>'grey', 5=>'grey']);
  79. $grid->column('refuse_reason');
  80. $grid->column('created_at')->sortable();
  81. // $grid->column('updated_at')->sortable();
  82. $grid->filter(function (Grid\Filter $filter) {
  83. $filter->equal('id');
  84. });
  85. $grid->header(function ($collection) {
  86. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;display: inline-block;margin-top: 20px;">重要:请确保后台拥有“商家”角色,并且建议给商家配置基础权限,除了基础权限,别的也不用配,需要我先适配<a style="color: red;" target="_blank" href="https://img.mini.minisns.cn/images/page/enterprise.png">请看教程</a></div>';
  87. });
  88. // 禁止后台新建店铺
  89. $grid->disableCreateButton();
  90. $grid->disableViewButton();
  91. $grid->disableEditButton();
  92. $grid->disableDeleteButton();
  93. $grid->disableBatchActions();
  94. $grid->actions(function (Grid\Displayers\Actions $actions) {
  95. $actions->append((new ShopExamineAction())->setKey($this->id));
  96. $actions->append((new ShopGuaranteeAction())->setKey($this->id));
  97. });
  98. });
  99. }
  100. /**
  101. * Make a show builder.
  102. *
  103. * @param mixed $id
  104. *
  105. * @return Show
  106. */
  107. protected function detail($id)
  108. {
  109. return Show::make($id, new WxShop(), function (Show $show) {
  110. $show->field('id');
  111. $show->field('user_id');
  112. $show->column('shop_classifys');
  113. $show->column('margin_rest');
  114. $show->field('logo');
  115. $show->field('name');
  116. $show->field('introduce');
  117. $show->field('country');
  118. $show->field('province');
  119. $show->field('city');
  120. $show->field('district');
  121. $show->field('business_license_image');
  122. $show->field('phone');
  123. $show->field('wechat');
  124. $show->field('qq');
  125. $show->field('head_name');
  126. $show->field('head_photo');
  127. $show->field('head_id_card_a');
  128. $show->field('head_id_card_b');
  129. $show->field('supplement');
  130. $show->field('status');
  131. $show->field('refuse_reason');
  132. $show->field('created_at');
  133. $show->field('updated_at');
  134. });
  135. }
  136. /**
  137. * Make a form builder.
  138. *
  139. * @return Form
  140. */
  141. protected function form()
  142. {
  143. return Form::make(new WxShop(), function (Form $form) {
  144. $form->display('id');
  145. $form->select('user_id')->options(function ($id) {
  146. $user = \App\Models\User\WxUser::find($id);
  147. if ($user) {
  148. return [$user->id => $user->user_name];
  149. }
  150. })->ajax('select/users')->required();
  151. $form->text('logo');
  152. $form->text('name')->required();
  153. $form->textarea('introduce');
  154. $form->text('country');
  155. $form->text('province');
  156. $form->text('city');
  157. $form->text('district');
  158. $form->text('business_license_image');
  159. $form->text('phone');
  160. $form->text('wechat');
  161. $form->text('qq');
  162. $form->text('head_name');
  163. $form->text('head_photo');
  164. $form->text('head_id_card_a');
  165. $form->text('head_id_card_b');
  166. $form->textarea('supplement');
  167. $form->radio('status')->options([0=>'审核中', 1=>'审核通过',2=>'审核拒绝', 3=> '系统惩罚下线', 4 => '管理员惩罚下线'])->when(2, function (Form $form){
  168. $form->textarea('refuse_reason');
  169. });
  170. $form->display('created_at');
  171. $form->display('updated_at');
  172. $form->deleting(function (Form $form){
  173. global $__MINI_GLOBAL_TENANT_ID__;
  174. if($__MINI_GLOBAL_TENANT_ID__ > 0){
  175. return $form->response()->error('权限不足,不可以删除其他分站对象');
  176. }
  177. });
  178. });
  179. }
  180. }