Message.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use think\Db;
  5. /**
  6. * 消息
  7. */
  8. class Message extends Api
  9. {
  10. protected $noNeedLogin = [];
  11. protected $noNeedRight = ['*'];
  12. //个人消息全部改为已读
  13. public function message_read(){
  14. Db::startTrans();
  15. //读取即为已读
  16. $map = [
  17. 'user_id' => $this->auth->id,
  18. 'status' => 0,
  19. ];
  20. $rs = Db::name('message')->where($map)->update(['status'=>1]);
  21. if($rs === false){
  22. Db::rollback();
  23. $this->error('操作失败');
  24. }
  25. //系统消息
  26. //全部未读
  27. $rs = Db::name('user_messagesys')->where('user_id',$this->auth->id)->delete();
  28. if($rs === false){
  29. Db::rollback();
  30. $this->error('操作失败');
  31. }
  32. //循环全部已读
  33. $list = Db::name('message_sys')->column('id');
  34. if(!empty($list)){
  35. $newall = [];
  36. foreach($list as $key => $msg_id){
  37. $newall[] = [
  38. 'user_id' => $this->auth->id,
  39. 'msg_id' => $msg_id,
  40. ];
  41. }
  42. if(!empty($newall)){
  43. $rs = Db::name('user_messagesys')->insertAll($newall);
  44. if($rs === false){
  45. Db::rollback();
  46. $this->error('操作失败');
  47. }
  48. }
  49. }
  50. Db::commit();
  51. $this->success();
  52. }
  53. //我的个人消息列表
  54. public function mylist(){
  55. $list = Db::name('message')
  56. ->field('message.*,user.nickname,user.avatar,topic_dongtai.images')
  57. ->join('user','user.id = message.user_id','LEFT')
  58. ->join('topic_dongtai','topic_dongtai.id = message.dt_id','LEFT')
  59. ->where('message.to_user_id',$this->auth->id)
  60. ->autopage()->order('message.id desc')->select();
  61. if(!empty($list)){
  62. foreach($list as $key => $value){
  63. $dongtai_image = explode(',',$value['images']);
  64. $value['dongtai_image'] = isset($dongtai_image[0]) ? localpath_to_netpath($dongtai_image[0]) : '';
  65. if($value['infotype'] == 'dongtai_answer'){
  66. $value['content'] = Db::name('topic_dongtai_answer')->where('id',$value['infotype_id'])->value('content');
  67. }
  68. $value['createtime_text'] = get_last_time($value['createtime']);
  69. $list[$key] = $value;
  70. }
  71. }
  72. //读取即为已读
  73. $map = [
  74. 'to_user_id' => $this->auth->id,
  75. 'status' => 0,
  76. ];
  77. Db::name('message')->where($map)->update(['status'=>1]);
  78. $this->success('success',$list);
  79. }
  80. }