content)){ throw new Exception("请输入问题"); } $ins = array(); $ins['user_id'] = $param->user_id; $ins['content'] = htmlspecialchars($param->content); $ins['img_url'] = json_encode($param->img_url); $ins['status'] = $param->status; UserProblemModel::query()->create($ins); return true; } /** * 看过我 */ public function looked_me($param){ $res = UserLookModel::query() ->with(['user'=>function($query){ $query->select('id','sex','is_vip','tencent_im_user_id'); },'user_info']) ->where('look_id',$param['user_id']) ->paginate(request('perPage',20)); return $res; } /** * 购买vip */ public function buy_vip($param){ if(empty($param['id'])){ throw new Exception("参数错误"); } if(!$vip_info = VipModel::query()->where('id',$param['id'])->first()){ throw new Exception("VIP不存在"); } $ins = array(); $ins['order_no'] = create_order_number(); $ins['user_id'] = $param['user_id']; $ins['price'] = $vip_info['price']; $ins['status'] = 0; $ins['content'] = json_encode($vip_info); $ins['type'] = 1; $ins['payment'] = $param['payment']; if(!PaymentLogModel::query()->create($ins)){ throw new Exception("插入订单失败"); } $pay_param = [ 'out_trade_no' => $ins['order_no'], 'body' => '购买VIP', 'total_fee' => $ins['price'], 'payment' => $ins['payment'], ]; return PayService::pay($pay_param); } /** * 黑名单 */ public function black_list(){ $user = auth('api')->user(); $res = UserBlacklistModel::query() ->leftJoin('users_info','users_blacklist.black_id','=','users_info.user_id') ->select(['users_blacklist.id','users_info.user_id','users_info.avatar','users_info.nickname']) ->where('users_blacklist.user_id','=',$user->id) ->paginate(request('prePage',20)); return $res; } /** * 移除黑名单 */ public function del_black($id){ if(empty($id)){ throw new Exception("参数错误"); } $user = auth('api')->user(); if(!$black = UserBlacklistModel::query()->where(['id'=>$id,'user_id'=>$user->id])->first()){ throw new Exception("对方不在你的黑名单中"); } $black->delete(); return true; } /** * 设置隐身和通知开关 */ public function online_status($request){ $user = auth('api')->user(); if(isset($request->online)){ $user->online = $request->online; $user->save(); } if(isset($request->notice_status)){ $user->notice_status = $request->notice_status; $user->save(); } return ['online'=>$user->online,'notice_status'=>$user->notice_status]; } /** * 获取邀请福利信息 */ public function invite_info(){ $user = auth('api')->user(); $res['ycode'] = $user->ycode; $res['code_url'] = "https://".$_SERVER['HTTP_HOST'].'/h5/reg.html?invoce='.$user->ycode; //总邀请用户 $res['total_user'] =User::query()->where(['pid'=>$user->id])->count(); //待领取天数 $res['unclaimed'] = UserInviteLog::query()->where(['user_id'=>$user->id,'status'=>0])->sum('day'); //累计领取天数 $res['total_day'] = UserInviteLog::query()->where(['user_id'=>$user->id,'status'=>1])->sum('day'); //奖励规则 $res['rule'] = DB::table("document")->where(['id'=>4])->value('content'); return $res; } /** * 获取邀请用户列表 * @param $requset */ public function get_invite_list(){ $user = auth('api')->user(); $list = User::query() ->where(['users.pid'=>$user->id]) ->leftJoin('users_info','users.id','=','users_info.user_id') ->select(['users.id','users.created_at','users.is_vip','users_info.nickname']) ->orderBy('id','desc') ->paginate(request('prePage',10)); $list = $list->toArray(); foreach ($list['data'] as $k=>$v){ $list['data'][$k]['created_at'] = date('Y/m/d',strtotime($v['created_at'])); } return $list; } /** * 领取会员天数 */ public function receive_day(){ $user = auth('api')->user(); $day = UserInviteLog::query()->where(['user_id'=>$user->id,'status'=>0])->sum('day'); if($day>0){ UserInviteLog::query()->where(['user_id'=>$user->id,'status'=>0])->update(['status'=>1]); if($user->is_vip==0){ $user->is_vip = 1; $user->save(); } //变更vip记录 $user_vip_log = UserVipLogModel::query()->where(['user_id'=>$user->id])->first(); if(!$user_vip_log){ UserVipLogModel::query()->create([ 'user_id'=>$user->id, 'status'=>1, 'day'=>$day, 'end_day'=> date("Y-m-d H:i:s",strtotime("+".$day." day")), ]); }elseif($user_vip_log->status==1){ $user_vip_log->end_day = date("Y-m-d H:i:s",strtotime($user_vip_log->end_day."+".$day." day")); $user_vip_log->save(); }elseif ($user_vip_log->status==0){ $user_vip_log->end_day = date("Y-m-d H:i:s",strtotime("+".$day." day")); $user_vip_log->status = 1; $user_vip_log->save(); } }else{ throw new Exception("暂无可领取天数"); } return true; } }