SystemNotice.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?php
  2. namespace app\admin\controller\setting;
  3. use app\admin\controller\AuthController;
  4. use service\FormBuilder as Form;
  5. use app\admin\model\system\SystemAdmin;
  6. use app\admin\model\system\SystemNotice as NoticeModel;
  7. use service\JsonService;
  8. use service\UtilService;
  9. use think\Request;
  10. use think\Url;
  11. /**
  12. * 管理员消息通知 控制器
  13. * Class SystemNotice
  14. * @package app\admin\controller\system
  15. */
  16. class SystemNotice extends AuthController
  17. {
  18. public function index(){
  19. $this->assign(NoticeModel::page(function($notice){
  20. $notice->push_admin_name = !empty($notice->push_admin) ? implode(',',SystemAdmin::where('id','IN',$notice->push_admin)->column('real_name')) : '';
  21. }));
  22. return $this->fetch();
  23. }
  24. public function create()
  25. {
  26. $f = array();
  27. $f[] = Form::input('title','通知标题');
  28. $f[] = Form::input('type','通知类型');
  29. $f[] = Form::frameInputOne('icon','图标',Url::build('admin/widget.widgets/icon',array('fodder'=>'icon')))->icon('ionic');
  30. $f[] = Form::input('template','通知模板');
  31. $f[] = Form::input('table_title','通知数据')->type('textarea')->placeholder('数据1-key1,数据2-key2');
  32. $f[] = Form::select('push_admin','通知管理员')->setOptions(function(){
  33. $list = SystemAdmin::getOrdAdmin('real_name,id')?:[];
  34. $options = [];
  35. foreach ($list as $admin){
  36. $options[] = ['label'=>$admin['real_name'],'value'=>$admin['id']];
  37. }
  38. return $options;
  39. })->multiple(1);
  40. $f[] = Form::radio('status','状态',1)->options([['label'=>'开启','value'=>1],['label'=>'关闭','value'=>0]]);
  41. $form = Form::make_post_form('添加通知模板',$f,Url::build('save'));
  42. $this->assign(compact('form'));
  43. return $this->fetch('public/form-builder');
  44. }
  45. public function save(Request $request)
  46. {
  47. $data = UtilService::postMore([
  48. 'title', 'type', 'icon', 'template','table_title',
  49. ['push_admin', []], ['status', 0]
  50. ], $request);
  51. $data['push_admin'] = array_unique(array_filter($data['push_admin']));
  52. if (!$data['template']) return $this->failed('请填写通知模板');
  53. if (!$data['title']) return $this->failed('请输入模板标题');
  54. if (!$data['type']) return $this->failed('请输入模板类型');
  55. if (NoticeModel::set($data))
  56. return $this->successful('添加通知成功');
  57. else
  58. return $this->failed('添加失败!');
  59. }
  60. /**编辑通知模板
  61. * @param $id
  62. * @return mixed|void
  63. */
  64. public function edit($id)
  65. {
  66. $data = NoticeModel::get($id);
  67. if(!$data) return JsonService::fail('数据不存在!');
  68. $data->tableTitle = implode(',',array_map(function($value){
  69. return $value['title'].'-'.$value['key'];
  70. },$data->table_title));
  71. $data->tableTitleStr = implode(',',array_map(function($value){
  72. return $value['title'].'-'.$value['key'];
  73. },$data->table_title));
  74. $f = array();
  75. $f[] = Form::input('title','通知标题',$data->title);
  76. $f[] = Form::input('type','通知类型',$data->type);
  77. $f[] = Form::frameInputOne('icon','图标',Url::build('admin/widget.widgets/icon',array('fodder'=>'icon')),$data->icon)->icon('ionic');
  78. $f[] = Form::input('template','通知模板',$data->template);
  79. $f[] = Form::input('table_title','通知数据',$data->tableTitleStr)->type('textarea')->placeholder('数据1-key1,数据2-key2');
  80. $f[] = Form::select('push_admin','通知管理员',$data->push_admin)->setOptions(function(){
  81. $list = SystemAdmin::getOrdAdmin('real_name,id')?:[];
  82. $options = [];
  83. foreach ($list as $admin){
  84. $options[] = ['label'=>$admin['real_name'],'value'=>$admin['id']];
  85. }
  86. return $options;
  87. })->multiple(1);
  88. $f[] = Form::radio('status','状态',$data->status)->options([['label'=>'开启','value'=>1],['label'=>'关闭','value'=>0]]);
  89. $form = Form::make_post_form('编辑通知模板',$f,Url::build('update',array('id'=>$id)));
  90. $this->assign(compact('form'));
  91. return $this->fetch('public/form-builder');
  92. }
  93. public function update(Request $request, $id)
  94. {
  95. $data = UtilService::postMore([
  96. 'title','type','icon','template','table_title',
  97. ['push_admin',[]],['status',0]
  98. ],$request);
  99. $data['push_admin'] = array_unique(array_filter($data['push_admin']));
  100. if(!$data['template']) return $this->failed('请填写通知模板');
  101. if(!$data['title']) return $this->failed('请输入模板标题');
  102. if(!$data['type']) return $this->failed('请输入模板类型');
  103. NoticeModel::edit($data,$id);
  104. return $this->successful('修改成功!');
  105. }
  106. /**
  107. * 删除指定资源
  108. *
  109. * @param int $id
  110. * @return \think\Response
  111. */
  112. public function delete($id)
  113. {
  114. $res = NoticeModel::del($id);
  115. if(!$res)
  116. return $this->failed(('删除失败,请稍候再试!'));
  117. else
  118. return $this->successful('删除成功!');
  119. }
  120. public function message($type = 'all')
  121. {
  122. return $this->fetch();
  123. }
  124. }