MailQueueController.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <?php
  2. namespace App\Admin\Controllers\System;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\EmailBatch;
  5. use App\Models\EmailQueue;
  6. use Encore\Admin\Controllers\HasResourceActions;
  7. use Encore\Admin\Form;
  8. use Encore\Admin\Grid;
  9. use Encore\Admin\Layout\Content;
  10. use Encore\Admin\Show;
  11. use Illuminate\Support\Facades\Input;
  12. class MailQueueController extends Controller
  13. {
  14. use HasResourceActions;
  15. /**
  16. * Index interface.
  17. *
  18. * @param Content $content
  19. * @return Content
  20. */
  21. public function index(Content $content)
  22. {
  23. return $content
  24. ->header('邮件营销')
  25. ->description('')
  26. ->body($this->grid());
  27. }
  28. /**
  29. * Show interface.
  30. *
  31. * @param mixed $id
  32. * @param Content $content
  33. * @return Content
  34. */
  35. public function show($id, Content $content)
  36. {
  37. return $content
  38. ->header('邮件营销')
  39. ->description('详细')
  40. ->body($this->detail($id));
  41. }
  42. /**
  43. * Edit interface.
  44. *
  45. * @param mixed $id
  46. * @param Content $content
  47. * @return Content
  48. */
  49. public function edit($id, Content $content)
  50. {
  51. return $content
  52. ->header('邮件营销')
  53. ->description('编辑')
  54. ->body($this->form()->edit($id));
  55. }
  56. /**
  57. * Create interface.
  58. *
  59. * @param Content $content
  60. * @return Content
  61. */
  62. public function create(Content $content)
  63. {
  64. return $content
  65. ->header('邮件营销')
  66. ->description('创建')
  67. ->body($this->createForm());
  68. }
  69. /**
  70. * Make a grid builder.
  71. *
  72. * @return Grid
  73. */
  74. protected function grid()
  75. {
  76. $grid = new Grid(new EmailQueue);
  77. $grid->id('ID');
  78. $grid->m_status('状态')->display(function ($m_status) {
  79. switch ($m_status) {
  80. case 1:
  81. $m_status = '发送成功';
  82. break;
  83. case 2:
  84. $m_status = '等待发送';
  85. break;
  86. case 3:
  87. $m_status = '发送失败';
  88. break;
  89. default:
  90. $m_status = '等待发送';
  91. break;
  92. }
  93. return $m_status;
  94. });
  95. $grid->m_address('收件地址');
  96. $grid->m_subject('邮件主题');
  97. $grid->m_sendtime('发送时间');
  98. $grid->m_body('邮件内容');
  99. $grid->created_at('添加时间');
  100. $grid->updated_at('更新时间');
  101. $grid->filter(function ($filter) {
  102. $filter->equal('m_status', '状态')->select([
  103. 1 => '发送成功',
  104. 2 => '等待发送',
  105. 3 => '发送失败',
  106. ]);
  107. $filter->equal('m_address', '收件地址');
  108. $filter->like('m_subject', '邮件主题');
  109. });
  110. $grid->tools(function ($tools) {
  111. $tools->append('<a class="btn btn-sm btn-primary" href="" title="批量添加"><i class="fa fa-save"></i><span class="hidden-xs"> 批量添加</span></a>');
  112. });
  113. return $grid;
  114. }
  115. /**
  116. * Make a show builder.
  117. *
  118. * @param mixed $id
  119. * @return Show
  120. */
  121. protected function detail($id)
  122. {
  123. $show = new Show(EmailQueue::findOrFail($id));
  124. $show->id('ID');
  125. $show->created_at('添加时间');
  126. $show->updated_at('更新时间');
  127. return $show;
  128. }
  129. /**
  130. * Make a form builder.
  131. *
  132. * @return Form
  133. */
  134. protected function form()
  135. {
  136. $form = new Form(new EmailQueue);
  137. $form->display('ID');
  138. $form->display('添加时间');
  139. $form->display('更新时间');
  140. return $form;
  141. }
  142. protected function createForm()
  143. {
  144. $form = new Form(new EmailQueue);
  145. $form->email('m_address', '收件人')->rules([
  146. 'required',
  147. ]);
  148. $form->text('m_subject', '邮件标题')->rules([
  149. 'required',
  150. ]);
  151. $form->editor('m_body', '邮件内容')->rules([
  152. 'required',
  153. ]);
  154. $form->tools(function (Form\Tools $tools) {
  155. $tools->disableDelete();
  156. $tools->disableView();
  157. });
  158. $form->disableReset();
  159. return $form;
  160. }
  161. /**
  162. * Store a newly created resource in storage.
  163. *
  164. * @return mixed
  165. */
  166. public function store()
  167. {
  168. return $this->createForm()->store();
  169. }
  170. public function emailAdd(Content $content)
  171. {
  172. $form = new \Encore\Admin\Widgets\Form();
  173. $form->action('');
  174. $form->radio('accept_member', '收件会员')->options([0=>'不限',1=>'企业会员',2=>'个人会员'])->default(0);
  175. $form->radio('accept_type', '筛选条件')->options([0=>'不限',1=>'一周未登录',2=>'一月未登录'])->default(0);
  176. $form->text('m_subject', '邮件标题');
  177. $form->editor('m_body', '邮件内容');
  178. $form->disableReset();
  179. return $content
  180. ->header('邮件营销')
  181. ->description('批量添加')
  182. ->body(view('admin.email.email_queue')->with(['content'=>$form])->render());
  183. }
  184. public function emailCreated()
  185. {
  186. $data = Input::all();
  187. if ($data['m_subject']==null||$data['m_body']==null) {
  188. admin_error('失败', '信息补充完整');
  189. return back();
  190. }
  191. unset($data['_token']);
  192. $MailBatch = EmailBatch::where(['accept_member'=>$data['accept_member'],'accept_type'=>$data['accept_type']])->first();
  193. if ($MailBatch) {
  194. $res = EmailBatch::where(['accept_member'=>$data['accept_member'],'accept_type'=>$data['accept_type']])->update($data);
  195. } else {
  196. $res = EmailBatch::create($data);
  197. }
  198. if ($res) {
  199. admin_success('成功', '更新成功');
  200. } else {
  201. admin_error('失败', '更新失败');
  202. }
  203. return back();
  204. }
  205. }