SystemNotice.php 5.3 KB

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