id.'">'.$city->name.'';
}
return response($city_options);
}
/*未读通知数目*/
public function unreadNotifications()
{
$total = Notification::where('to_user_id','=',Auth()->user()->id)->where('is_read','=',0)->count();
$response = '';
if( $total > 0 ){
if($total > 99){
$total = '99+' ;
}
$response = ''.$total.'';
}
return response($response);
}
public function unreadMessages()
{
$total = Message::where('to_user_id','=',Auth()->user()->id)->where('is_read','=',0)->where("to_deleted","<>",1)->where("from_deleted","<>",1)->count();
$response = '';
if( $total > 0 ){
if($total > 99){
$total = '99+' ;
}
$response = ''.$total.'';
}
return response($response);
}
public function loadTags(Request $request)
{
$word = $request->input('word');
$tags = [];
if( strlen($word) > 10 ){
return response()->json($tags);
}
$type = $request->input('type','all');
if(!$word){
$tags = Taggable::hottest($type,10);
}else{
$tags = Tag::where('name','like',$word.'%')->take(10)->get();
}
$selectTags = [];
foreach ($tags as $tag){
$selectTag = [];
$selectTag['id'] = $tag->name;
$selectTag['text'] = $tag->name;
$selectTags[] = $selectTag;
}
return response()->json($selectTags);
}
public function loadUsers(Request $request)
{
$word = $request->input('word');
$users = User::where('id','<>',$request->user()->id)->where('name','like',"$word%")->take(10)->get();
$users->map(function($user){
$user->avatar = get_user_avatar($user->id);
$user->coins = $user->userData->coins;
$user->answers = $user->userData->answers;
$user->followers = $user->userData->followers;
});
return response()->json($users->toArray());
}
public function loadInviteUsers(Request $request)
{
$questionId = $request->input('question_id',0);
$question = Question::find($questionId);
if(!$question){
return $this->ajaxError(10004,'notFund');
}
$tags = $question->tags()->get();
$tagIds = array_pluck($tags,"id");
if(!$tagIds){
return $this->ajaxError(10004,'noData');
}
$word = $request->input('word','');
if(trim($word)){
$users = User::where('id','<>',$request->user()->id)->where('name','like',"$word%")->take(10)->get();
$users->map(function($user) use($tagIds,$question) {
$user->tag_name = '';
$user->tag_answers = 0;
$userTag = UserTag::where("user_id","=",$user->id)->whereIn("tag_id",$tagIds)->orderBy("answers","desc")->orderBy("created_at","desc")->first();
if($userTag){
$tag = Tag::find($userTag->tag_id);
if($tag){
$user->tag_name = $tag->name;
}
$user->tag_answers = $userTag->answers;
}
$user->avatar = get_user_avatar($user->id);
$user->url = route('auth.space.index',['user_id'=>$user->user_id]);
$user->isInvited = 0;
});
}else{
$invitations = $question->invitations()->get();
$invitedUserIds = array_pluck($invitations,'user_id');
$userTags = UserTag::whereIn("tag_id",$tagIds)->whereNotIn("user_id",$invitedUserIds)->orderBy("answers","desc")->orderBy("supports","desc")->select("user_id","tag_id","answers","supports")->take(16)->groupBy("user_id")->get();
$users = [];
foreach($userTags as $userTag){
$user = User::find($userTag->user_id);
if(!$user){
continue;
}
$user->tag_name = '';
$user->tag_answers = 0;
$tag = Tag::find($userTag->tag_id);
if($tag){
$user->tag_name = $tag->name;
}
$user->tag_answers = $userTag->answers;
$user->avatar = get_user_avatar($userTag->user_id);
$user->url = route('auth.space.index',['user_id'=>$userTag->user_id]);
$user->isInvited = 0;
$users[] = $user;
}
}
return $this->ajaxSuccess($users);
}
public function sendSmsCode(Request $request){
if($request->isMethod('post')){
$validateRules['code'] = 'required|captcha';
$validator = Validator::make($request->all(),$validateRules);
if($validator->fails()){
return $this->ajaxError(10003,'验证码错误');
}
$mobile = $request->input('mobile','');
if(!is_mobile($mobile)){
return $this->ajaxError(10004,'手机号格式码错误');
}
$sendType = $request->input('send_type','');
if($request->user() && $sendType=='bind'){ //绑定手机号绑定处理
/*黑名单校验*/
if( $request->user()->status == -1 ){
return $this->ajaxError(10011,'你无权进行该操作');
}
/*避免重复发送短信校验*/
if($request->user()->mobile == $mobile && $request->user()->userData->mobile_status==1){
return $this->ajaxError(10008,'您的手机号已绑定,不能重复绑定');
}
/*已注册手机号校验*/
if(User::where("mobile","=",$mobile)->where("id","<>",$request->user()->id)->count() > 0){
return $this->ajaxError(10009,'该手机号已注册,不能重复绑定');
}
}
if( $sendType =='register' && User::where("mobile","=",$mobile)->count() > 0){ //注册发送处理
return $this->ajaxError(10011,'该手机号已注册,不能重复注册');
}else if($sendType =='findPassword' && User::where("mobile","=",$mobile)->count() == 0){ //找回密码处理
return $this->ajaxError(10011,'该手机号不存在,请核实');
}
/*次数限制*/
$sendTimes = $this->counter('send_sms_counter_'.$mobile);
if($sendTimes > config('tipask.sms_limit_times',10)){
return $this->ajaxError(10005,'短信验证码发送数量已超出当日最大限制,请明天再试');
}
if(!SmsService::sendSmsCode($mobile)){
return $this->ajaxError(10006,'短信发送失败,请稍后再试');
}
$this->counter('send_sms_counter_'.$mobile,1);
return $this->ajaxSuccess("success");
}
return $this->ajaxError(10007,"请求错误");
}
}