UserService.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?php
  2. namespace App\Services;
  3. use App\Http\Params\ProblemParam;
  4. use App\Models\PaymentLogModel;
  5. use App\Models\UserBlacklistModel;
  6. use App\Models\UserLookModel;
  7. use App\Models\UserProblemModel;
  8. use App\Models\VipModel;
  9. use PHPUnit\Util\Exception;
  10. use function Symfony\Component\Translation\t;
  11. class UserService
  12. {
  13. /**
  14. * 问题反馈
  15. */
  16. public function problem(ProblemParam $param){
  17. if(empty($param->content)){
  18. throw new Exception("请输入问题");
  19. }
  20. $ins = array();
  21. $ins['user_id'] = $param->user_id;
  22. $ins['content'] = htmlspecialchars($param->content);
  23. $ins['img_url'] = json_encode($param->img_url);
  24. $ins['status'] = $param->status;
  25. UserProblemModel::query()->create($ins);
  26. return true;
  27. }
  28. /**
  29. * 看过我
  30. */
  31. public function looked_me($param){
  32. $res = UserLookModel::query()
  33. ->with(['user'=>function($query){
  34. $query->select('id','sex','is_vip','tencent_im_user_id');
  35. },'user_info'])
  36. ->where('look_id',$param['user_id'])
  37. ->paginate(request('perPage',20));
  38. return $res;
  39. }
  40. /**
  41. * 购买vip
  42. */
  43. public function buy_vip($param){
  44. if(empty($param['id'])){
  45. throw new Exception("参数错误");
  46. }
  47. if(!$vip_info = VipModel::query()->where('id',$param['id'])->first()){
  48. throw new Exception("VIP不存在");
  49. }
  50. $ins = array();
  51. $ins['order_no'] = create_order_number();
  52. $ins['user_id'] = $param['user_id'];
  53. $ins['price'] = $vip_info['price'];
  54. $ins['status'] = 0;
  55. $ins['content'] = json_encode($vip_info);
  56. $ins['type'] = 1;
  57. $ins['payment'] = $param['payment'];
  58. if(!PaymentLogModel::query()->create($ins)){
  59. throw new Exception("插入订单失败");
  60. }
  61. $pay_param = [
  62. 'out_trade_no' => $ins['order_no'],
  63. 'body' => '购买VIP',
  64. 'total_fee' => $ins['price'],
  65. 'payment' => $ins['payment'],
  66. ];
  67. return PayService::pay($pay_param);
  68. }
  69. /**
  70. * 黑名单
  71. */
  72. public function black_list(){
  73. $user = auth('api')->user();
  74. $res = UserBlacklistModel::query()
  75. ->leftJoin('users_info','users_blacklist.black_id','=','users_info.user_id')
  76. ->select(['users_blacklist.id','users_info.user_id','users_info.avatar','users_info.nickname'])
  77. ->where('users_blacklist.user_id','=',$user->id)
  78. ->paginate(request('prePage',20));
  79. return $res;
  80. }
  81. /**
  82. * 移除黑名单
  83. */
  84. public function del_black($id){
  85. if(empty($id)){
  86. throw new Exception("参数错误");
  87. }
  88. $user = auth('api')->user();
  89. if(!$black = UserBlacklistModel::query()->where(['id'=>$id,'user_id'=>$user->id])->first()){
  90. throw new Exception("对方不在你的黑名单中");
  91. }
  92. $black->delete();
  93. return true;
  94. }
  95. /**
  96. * 设置隐身和通知开关
  97. */
  98. public function online_status($request){
  99. $user = auth('api')->user();
  100. if(isset($request->online)&&!empty($request->online)){
  101. $user->online = $request->online;
  102. $user->save();
  103. }
  104. if(isset($request->notice_status)&&!empty($request->notice_status)){
  105. $user->notice_status = $request->notice_status;
  106. $user->save();
  107. }
  108. return ['online'=>$user->online,'notice_status'=>$user->notice_status];
  109. }
  110. }