NoticeService.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. namespace App\Services;
  3. use App\Models\DynamicZanModel;
  4. use App\Models\UserBlacklistModel;
  5. use App\Models\UserLikeModel;
  6. use App\Models\UserSystemMessageModel;
  7. use Illuminate\Support\Facades\DB;
  8. use PHPUnit\Util\Exception;
  9. use function Symfony\Component\Translation\t;
  10. class NoticeService
  11. {
  12. /**
  13. * 获取消息列表
  14. */
  15. public function get_notice_list(){
  16. }
  17. /**
  18. * 获取喜欢列表
  19. */
  20. public function get_like_list($param){
  21. $query = UserLikeModel::query();
  22. //不看拉黑用户
  23. $black_list = UserBlacklistModel::query()
  24. ->where('user_id',$param['user_id'])
  25. ->orWhere('black_id',$param['user_id'])
  26. ->select(['black_id'])
  27. ->get()
  28. ->toArray();
  29. $ids = array_column($black_list,'black_id');
  30. $ids[]= $param['user_id'];
  31. if($param['type']==1){
  32. //我喜欢
  33. $query = $query->leftJoin('users','users_like.like_id','=','users.id')
  34. ->leftJoin('users_info','users_like.like_id','=','users_info.user_id')
  35. ->where('users_like.user_id',$param['user_id'])
  36. ->where('users.is_distory',0)
  37. ->whereNotIn('users_like.like_id',$ids)
  38. ->select(['users_like.id','users_like.user_id','users_like.like_id','users_like.atime','users.sex','users.is_vip','users.tencent_im_user_id','users_info.nickname','users_info.avatar','users_info.birthday','users_info.work','users_info.height','users_info.weight']);
  39. }else{
  40. //喜欢我
  41. $query = $query->leftJoin('users','users_like.user_id','=','users.id')
  42. ->leftJoin('users_info','users_like.user_id','=','users_info.user_id')
  43. ->where('users_like.like_id',$param['user_id'])
  44. ->where('users.is_distory',0)
  45. ->whereNotIn('users_like.user_id',$ids)
  46. ->select(['users_like.id','users_like.user_id','users_like.like_id','users_like.atime','users.sex','users.is_vip','users.tencent_im_user_id','users_info.nickname','users_info.avatar','users_info.birthday','users_info.work','users_info.height','users_info.weight']);
  47. //清除喜欢我未读状态
  48. UserLikeModel::query()->where(['like_id'=>$param['user_id'],'status'=>0])->update(['status'=>1]);
  49. }
  50. $query = $query->orderByDesc('id')
  51. ->paginate(request('perPage',20));
  52. $query = $query->toArray();
  53. foreach ($query['data'] as $k=>$v){
  54. $query['data'][$k]['distance'] = 0; //计算距离
  55. $query['data'][$k]['age'] = !empty($v['birthday'])?birthday($v['birthday']):0;
  56. }
  57. return $query;
  58. }
  59. /**
  60. * 获取点赞列表
  61. */
  62. public function get_zan_list($param){
  63. //不看拉黑用户
  64. $black_list = UserBlacklistModel::query()
  65. ->where('user_id',$param['user_id'])
  66. ->orWhere('black_id',$param['user_id'])
  67. ->select(['black_id'])
  68. ->get()
  69. ->toArray();
  70. $ids = array_column($black_list,'black_id');
  71. $ids[]= $param['user_id'];
  72. $query = DynamicZanModel::query();
  73. if($param['type']==1){
  74. //他赞了我
  75. $query = $query
  76. ->leftJoin('dynamic','dynamic_zan.dynamic_id','=','dynamic.id')
  77. ->leftJoin('users','dynamic_zan.user_id','=','users.id')
  78. ->leftJoin('users_info','dynamic_zan.user_id','=','users_info.user_id')
  79. ->where('dynamic.user_id',$param['user_id'])
  80. ->where('users.is_distory',0)
  81. ->whereNotIn('dynamic_zan.user_id',$ids)
  82. ->select(['dynamic_zan.id','dynamic_zan.atime','dynamic_zan.user_id','dynamic.content','dynamic.img_url','users.sex','users.is_vip','users.tencent_im_user_id','users_info.nickname','users_info.avatar','users_info.birthday','users_info.work','users_info.height','users_info.weight']);
  83. //清除他赞了我未读状态
  84. DynamicZanModel::query()->with(['dynamic'])->where('status','=',0)->whereHas('dynamic',function ($query)use($param){
  85. $query->where('user_id',$param['user_id'])->select('id','user_id','content','img_url');
  86. })->update(['status'=>1]);
  87. }else{
  88. //我赞了他
  89. $query = $query
  90. ->leftJoin('dynamic','dynamic_zan.dynamic_id','=','dynamic.id')
  91. ->leftJoin('users','dynamic.user_id','=','users.id')
  92. ->leftJoin('users_info','dynamic.user_id','=','users_info.user_id')
  93. ->where('dynamic_zan.user_id',$param['user_id'])
  94. ->where('users.is_distory',0)
  95. ->whereNotIn('dynamic.user_id',$ids)
  96. ->select(['dynamic_zan.id','dynamic_zan.atime','dynamic.user_id','dynamic.content','dynamic.img_url','users.sex','users.is_vip','users.tencent_im_user_id','users_info.nickname','users_info.avatar','users_info.birthday','users_info.work','users_info.height','users_info.weight']);
  97. }
  98. $query = $query->orderByDesc('id')
  99. ->paginate(request('perPage',20));
  100. $query = $query->toArray();
  101. foreach ($query['data'] as $k=>$v){
  102. $query['data'][$k]['atime'] = uc_time_ago(strtotime($v['atime']));
  103. $query['data'][$k]['img_url'] = $v['img_url']=='[]'? null :json_decode($v['img_url'],true);
  104. $query['data'][$k]['age'] = !empty($v['birthday'])?birthday($v['birthday']):0;
  105. }
  106. return $query;
  107. }
  108. /**
  109. * 删除消息
  110. */
  111. public function del_message($id){
  112. if(empty($id)){
  113. throw new Exception("参数错误");
  114. }
  115. $user = auth('api')->user();
  116. if(!$message = UserSystemMessageModel::query()->where(['id'=>$id,'user_id'=>$user->id])->find($id)){
  117. throw new Exception("消息不存在");
  118. }
  119. $message->is_delete = 1;
  120. $message->save();
  121. return true;
  122. }
  123. }