UserNotice.php 10 KB

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