UserNotice.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. <?php
  2. namespace app\admin\controller\user;
  3. use app\admin\controller\AuthController;
  4. use service\FormBuilder as Form;
  5. use service\JsonService;
  6. use service\UtilService as Util;
  7. use service\JsonService as Json;
  8. use think\Request;
  9. use think\Url;
  10. use app\admin\model\user\UserNotice as UserNoticeModel;
  11. use app\admin\model\user\UserNoticeSee as UserNoticeSeeModel;
  12. use app\admin\model\wechat\WechatUser as UserModel;
  13. /**
  14. * 用户通知
  15. * Class UserNotice
  16. * @package app\admin\controller\user
  17. */
  18. class UserNotice extends AuthController
  19. {
  20. /**
  21. * 显示资源列表
  22. *
  23. * @return \think\Response
  24. */
  25. public function index()
  26. {
  27. if($this->request->isAjax()){
  28. $where=Util::getMore([
  29. ['page',1],
  30. ['limit',20]
  31. ]);
  32. return Json::successlayui(UserNoticeModel::getList($where));
  33. }else{
  34. return $this->fetch();
  35. }
  36. }
  37. /**
  38. * 显示创建资源表单页.
  39. *
  40. * @return \think\Response
  41. */
  42. public function create(){
  43. $f = array();
  44. $f[] = Form::input('user','发送人','系统管理员');
  45. $f[] = Form::input('title','通知标题');
  46. $f[] = Form::input('content','通知内容')->type('textarea');
  47. $f[] = Form::radio('type','消息类型',1)->options([['label'=>'系统消息','value'=>1],['label'=>'用户通知','value'=>2]]);
  48. $form = Form::make_post_form('添加用户通知',$f,Url::build('save'));
  49. $this->assign(compact('form'));
  50. return $this->fetch('public/form-builder');
  51. }
  52. /**
  53. * 保存新建的资源
  54. *
  55. * @param \think\Request $request
  56. * @return \think\Response
  57. */
  58. public function save(Request $request){
  59. $params = $request->post();
  60. if(!$params["user"])return Json::fail('请输入发送人!');
  61. if(!$params["title"])return Json::fail('请输入通知标题!');
  62. if(!$params["content"])return Json::fail('请输入通知内容!');
  63. if($params["type"] == 2){
  64. $uids = UserModel::order('uid desc')->column("uid");
  65. $params["uid"] = count($uids) > 0 ? ",".implode(",",$uids)."," : "";
  66. }
  67. $params["add_time"] = time();
  68. UserNoticeModel::set($params);
  69. return Json::successful('添加成功!');
  70. }
  71. /**
  72. * 显示编辑资源表单页.
  73. *
  74. * @param int $id
  75. * @return \think\Response
  76. */
  77. public function edit($id)
  78. {
  79. $notice = UserNoticeModel::get($id);
  80. if(!$notice) return Json::fail('数据不存在!');
  81. $f = array();
  82. $f[] = Form::input('user','发送人',$notice["user"]);
  83. $f[] = Form::input('title','通知标题',$notice["title"]);
  84. $f[] = Form::input('content','通知内容',$notice["content"])->type('textarea');
  85. $f[] = Form::radio('type','消息类型',$notice["type"])->options([['label'=>'系统消息','value'=>1],['label'=>'用户通知','value'=>2]]);
  86. $form = Form::make_post_form('编辑通知',$f,Url::build('update',["id"=>$id]),2);
  87. $this->assign(compact('form'));
  88. return $this->fetch('public/form-builder');
  89. }
  90. /**
  91. * 保存新建的资源
  92. *
  93. * @param \think\Request $request
  94. * @return \think\Response
  95. */
  96. public function update(Request $request,$id)
  97. {
  98. $params = $request->post();
  99. if(!$params["user"])return Json::fail('请输入发送人!');
  100. if(!$params["title"])return Json::fail('请输入通知标题!');
  101. if(!$params["content"])return Json::fail('请输入通知内容!');
  102. UserNoticeModel::edit($params,$id);
  103. return Json::successful('修改成功!');
  104. }
  105. /**
  106. * 删除指定资源
  107. *
  108. * @param int $id
  109. * @return \think\Response
  110. */
  111. public function send($id)
  112. {
  113. UserNoticeModel::edit(array("is_send"=>1,"send_time"=>time()),$id);
  114. return Json::successful('发送成功!');
  115. }
  116. /**
  117. * 删除指定资源
  118. *
  119. * @param int $id
  120. * @return \think\Response
  121. */
  122. public function delete($id)
  123. {
  124. if(!UserNoticeModel::del($id))
  125. return Json::fail(UserNoticeModel::getErrorInfo('删除失败,请稍候再试!'));
  126. else
  127. return Json::successful('删除成功!');
  128. }
  129. /**
  130. * 查询发送信息的用户资源
  131. *
  132. * @param int $id
  133. * @return \think\Response
  134. */
  135. public function user($id){
  136. $notice = UserNoticeModel::get($id)->toArray();
  137. $model = new UserModel;
  138. $model = $model::alias('A');
  139. $model = $model->field('A.*');
  140. if($notice["type"] == 2){
  141. if($notice["uid"] != ""){
  142. $uids = explode(",",$notice["uid"]);
  143. array_splice($uids,0,1);
  144. array_splice($uids,count($uids)-1,1);
  145. $model = $model->where("A.uid","in",$uids);
  146. }else{
  147. $model = $model->where("A.uid",$notice['uid']);
  148. }
  149. $model->order('A.uid desc');
  150. }else{
  151. $model = $model->join('__USER_NOTICE_SEE__ B','A.uid = B.uid','RIGHT');
  152. $model = $model->where("B.nid",$notice['id']);
  153. $model->order('B.add_time desc');
  154. }
  155. $this->assign(UserModel::page($model,function($item,$key) use ($notice){
  156. $item["is_see"] = UserNoticeSeeModel::where("uid",$item["uid"])->where("nid",$notice["id"])->count() > 0 ? 1 : 0;
  157. }));
  158. $this->assign(compact('notice'));
  159. return $this->fetch();
  160. }
  161. /**
  162. * 添加发送信息的用户
  163. *
  164. * @param \think\Request $request
  165. * @return \think\Response
  166. */
  167. public function user_create($id){
  168. $where = Util::getMore([
  169. ['nickname',''],
  170. ['data',''],
  171. ],$this->request);
  172. $this->assign('where',$where);
  173. $this->assign(UserModel::systemPage($where));
  174. $this->assign(['title'=>'添加发送用户','save'=>Url::build('user_save',array('id'=>$id))]);
  175. return $this->fetch();
  176. }
  177. /**
  178. * 保存新建的资源
  179. *
  180. * @param \think\Request $request
  181. * @return \think\Response
  182. */
  183. public function user_save(Request $request,$id){
  184. $notice = UserNoticeModel::get($id)->toArray();
  185. if(!$notice) return Json::fail('通知信息不存在!');
  186. if($notice["type"] == 1) return Json::fail('系统通知不能管理用户!');
  187. //查找当前选中的uid
  188. $params = $request->post();
  189. if(isset($params["search"])){
  190. $model = new UserModel;
  191. if($params['search']['nickname'] !== '') $model = $model->where('nickname','LIKE',"%".$params['search']['nickname']."%");
  192. if($params['search']['data'] !== ''){
  193. list($startTime,$endTime) = explode(' - ',$params['search']['data']);
  194. $model = $model->where('add_time','>',strtotime($startTime));
  195. $model = $model->where('add_time','<',strtotime($endTime));
  196. }
  197. $model = $model->order('uid desc');
  198. $uids = $model->column("uid");
  199. }else{
  200. $uids = $params["checked_menus"];
  201. }
  202. if(count($uids) <= 0)return Json::fail('请选择要添加的用户!');
  203. //合并原来和现在的uid
  204. if($notice["uid"] != ""){
  205. $now_uids = explode(",",$notice["uid"]);
  206. array_splice($now_uids,0,1);
  207. array_splice($now_uids,count($now_uids)-1,1);
  208. $now_uids = array_merge($now_uids,$uids);
  209. }else{
  210. $now_uids = $uids;
  211. }
  212. //编辑合并之后的uid
  213. $res_uids = UserModel::where("uid","in",$now_uids)->order('uid desc')->column("uid");
  214. UserNoticeModel::edit(array("uid"=>",".implode(",",$res_uids).","),$notice["id"]);
  215. return Json::successful('添加成功!');
  216. }
  217. /**
  218. * 删除指定资源
  219. *
  220. * @param int $id
  221. * @return \think\Response
  222. */
  223. public function user_delete($id,$uid)
  224. {
  225. $notice = UserNoticeModel::get($id)->toArray();
  226. if(!$notice) return Json::fail('通知信息不存在!');
  227. if($notice["type"] == 1) return Json::fail('系统通知不能管理用户!');
  228. if($notice["uid"] != ""){
  229. $res_uids = explode(",",$notice["uid"]);
  230. array_splice($res_uids,0,1);
  231. array_splice($res_uids,count($res_uids)-1,1);
  232. }
  233. array_splice($res_uids,array_search($uid,$res_uids),1);
  234. $value = count($res_uids) > 0 ? ",".implode(",",$res_uids)."," : "";
  235. UserNoticeModel::edit(array("uid"=>$value),$notice["id"]);
  236. return Json::successful('删除成功!');
  237. }
  238. /**
  239. * 删除指定的资源
  240. *
  241. * @param \think\Request $request
  242. * @return \think\Response
  243. */
  244. public function user_select_delete(Request $request,$id){
  245. $params = $request->post();
  246. if(count($params["checked_menus"]) <= 0)return Json::fail('删除数据不能为空!');
  247. $notice = UserNoticeModel::get($id)->toArray();
  248. if(!$notice) return Json::fail('通知信息不存在!');
  249. $res_uids = explode(",",$notice["uid"]);
  250. array_splice($res_uids,0,1);
  251. array_splice($res_uids,count($res_uids)-1,1);
  252. foreach ($params["checked_menus"] as $key => $value) {
  253. array_splice($res_uids,array_search($value,$res_uids),1);
  254. }
  255. $value = count($res_uids) > 0 ? ",".implode(",",$res_uids)."," : "";
  256. UserNoticeModel::edit(array("uid"=>$value),$notice["id"]);
  257. return Json::successful('删除成功!');
  258. }
  259. /**
  260. * @param $id
  261. * @return mixed
  262. */
  263. public function notice($id){
  264. $where = Util::getMore([
  265. ['title',''],
  266. ],$this->request);
  267. $nickname = UserModel::where('uid','IN',$id)->column('uid,nickname');
  268. $this->assign('where',$where);
  269. $this->assign('uid',$id);
  270. $this->assign('nickname',implode(',',$nickname));
  271. $this->assign(UserNoticeModel::getUserList($where));
  272. return $this->fetch();
  273. }
  274. /**
  275. * 给指定用户发送站内信息
  276. * @param $id
  277. */
  278. public function send_user($id = 0,$uid = '')
  279. {
  280. if(!$id || $uid == '') return JsonService::fail('参数错误');
  281. $uids = UserNoticeModel::where(['id'=>$id])->value('uid');
  282. $uid = rtrim($uids,',').",".$uid.",";
  283. UserNoticeModel::edit(array("send_time"=>time(),'uid'=>$uid),$id);
  284. return Json::successful('发送成功!');
  285. }
  286. }