WxMpMessageReplyController.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?php
  2. namespace App\Admin\Controllers\Mp;
  3. use App\Admin\Actions\Extensions\Mp\MpMaterialButton;
  4. use App\Admin\Actions\Extensions\Mp\MpMessageButton;
  5. use App\Admin\Renderable\Mp\MpMessageRender;
  6. use App\Admin\Repositories\Mp\WxMpMessageReply;
  7. use App\Models\Mp\WxMpMessage;
  8. use App\Wen\Utils\AdminUtils;
  9. use Dcat\Admin\Actions\Action;
  10. use Dcat\Admin\Form;
  11. use Dcat\Admin\Grid;
  12. use Dcat\Admin\Show;
  13. use Dcat\Admin\Http\Controllers\AdminController;
  14. class WxMpMessageReplyController extends AdminController
  15. {
  16. protected $type_options = [
  17. 1 => '全匹配',
  18. 2 => '输入词包含触发词',
  19. 3 => '触发词包含输入词'
  20. ];
  21. protected $type_labels = [
  22. 1 => 'green',
  23. 2 => 'yellow',
  24. 3 => 'orange'
  25. ];
  26. /**
  27. * Make a grid builder.
  28. *
  29. * @return Grid
  30. */
  31. protected function grid()
  32. {
  33. return Grid::make(new WxMpMessageReply(), function (Grid $grid) {
  34. $grid->model()->orderBy('order', 'desc')->orderBy('id', 'desc');
  35. $grid->column('id')->sortable();
  36. $grid->column('word');
  37. $grid->column('type')->using($this->type_options)->label($this->type_labels);
  38. $grid->column('mp_message_id');
  39. $grid->column('order')->editable()->sortable();
  40. $grid->column('status')->switch();
  41. $grid->filter(function (Grid\Filter $filter) {
  42. $filter->equal('id');
  43. });
  44. $grid->tools([
  45. new MpMessageButton(),
  46. new MpMaterialButton()
  47. ]);
  48. });
  49. }
  50. /**
  51. * Make a show builder.
  52. *
  53. * @param mixed $id
  54. *
  55. * @return Show
  56. */
  57. protected function detail($id)
  58. {
  59. return Show::make($id, new WxMpMessageReply(), function (Show $show) {
  60. $show->field('id');
  61. $show->field('word');
  62. $show->field('type');
  63. $show->field('mp_message_id');
  64. $show->field('order');
  65. $show->field('status');
  66. });
  67. }
  68. /**
  69. * Make a form builder.
  70. *
  71. * @return Form
  72. */
  73. protected function form()
  74. {
  75. return Form::make(new WxMpMessageReply(), function (Form $form) {
  76. $form->display('id');
  77. $form->html(function (){
  78. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;">特殊触发词:<br/>event_subscribe: 关注后触发</div>';
  79. }, '');
  80. $form->textarea('word')->required();
  81. $form->radio('type')->options($this->type_options)->default(1);
  82. $form->multipleSelectTable('mp_message_id')
  83. ->title('圈子列表')
  84. ->max(2)
  85. ->from(MpMessageRender::make())
  86. ->model(WxMpMessage::class, 'id', 'id', 'selectTable:WxMpMessageReplyController:mp_message_id')
  87. ->help('仅能选择一个,<a href="'.admin_url('mp_message').'" target="_blank">管理消息库 >> </a>')->required()->saving(function ($mp_message_id) {
  88. if(is_array($mp_message_id)){
  89. $mp_message_id = implode(',', $mp_message_id);
  90. }
  91. $mp_message_id = AdminUtils::_multipleSelectTable_order_process('selectTable:formPageMineTrait:app_sign_day_task', $mp_message_id);
  92. if(strpos($mp_message_id, ',') !== false){
  93. $mp_message_id = str_replace(['0,', '0, '], '', $mp_message_id);
  94. $mp_message_id_arr = explode(',', $mp_message_id);
  95. if(count($mp_message_id_arr) > 0 && $mp_message_id_arr[0] > 0){
  96. $mp_message_id = $mp_message_id_arr[0];
  97. }
  98. }
  99. return (int)($mp_message_id);
  100. });
  101. $form->number('order');
  102. $form->switch('status')->default(1);
  103. $form->deleting(function (Form $form){
  104. global $__MINI_GLOBAL_TENANT_ID__;
  105. if($__MINI_GLOBAL_TENANT_ID__ > 0){
  106. return $form->response()->error('权限不足,不可以删除其他分站对象');
  107. }
  108. });
  109. });
  110. }
  111. }