getInfo( [ ['username|mobile|email', '=', $data['username']], ['password', '=', data_md5($data['password'])], ['site_id', '=', $data['site_id']], ['is_delete', '=', 0] ], 'member_id, username, nickname, mobile, email, status,last_login_time' ); if (empty($info)) { return $this->error('', 'USERNAME_OR_PASSWORD_ERROR'); } elseif ($info['status'] == 0) { return $this->error('', 'MEMBER_IS_LOCKED'); } else { //更新登录时间 model("member")->update([ 'login_time' => time(), 'last_login_time' => time(), 'login_ip' => request()->ip(), 'login_type' => $data['app_type'] ?? '', 'login_type_name' => $data['app_type_name'] ?? '', ], [['member_id', '=', $info['member_id']]]); //执行登录奖励 event("MemberLogin", ['member_id' => $info['member_id'], 'site_id' => $data['site_id']], true); $register=new Register(); $data['uid']=$info['member_id']; //用户第三方信息刷新 $register->BindOpenid($data); return $this->success($info); } } /*** * 第三方登录 * @param $data * @param int $site_id */ public function ThirdLogin($data,$site_id) { $where=[ ['uni_fans.site_id','=',$site_id], ['uni_fans.open_id','=',$data['openid']], ]; $unionid=''; if(isset($data['unionid']) && $data['unionid']){ $unionid=$data['unionid']; $where=[ ['uni_fans.unionid','=',$unionid] ]; } $info = UniFans::where($where)->field('open_id,app_type,unionid,nickname,headimg')->withJoin('bindMember')->find(); if (empty($info)) { $register = new Register(); $config = new Config(); //会员不存在 第三方自动注册开启 未开启绑定手机 则进行自动注册 $reg_config = $config->getRegisterConfig($site_id)[ 'data' ][ 'value' ]; if ($reg_config['third_party'] && !$reg_config[ 'bind_mobile' ]) { $register_res = $register->authRegister($data); if ($register_res[ 'code' ] >= 0) { $memberInfo=Member::where('member_id','=',$register_res[ 'data' ])->withoutField('password,pay_password')->find(); $memberInfo['site_id']=$site_id; $memberInfo['app_type']=$data['app_type']; $memberInfo['is_register']=1; $loginInfo=$memberInfo; $loginInfo['site_id']=$site_id; $loginInfo['app_type']=$data['app_type']; $loginInfo['openid']=$data['openid']; $loginInfo['unionid']=$unionid; event("MemberLogin", $loginInfo, true); return $memberInfo; }else{ return $this->error('', 'MEMBER_NOT_EXIST'); } }else if($reg_config[ 'bind_mobile' ]){ $data['code']=-1; $data['bind_mobile']=1; return $data; }else{ return $this->error('MEMBER_NOT_EXIST'); } } elseif ($info['bindMember']['status'] == 0) { return $this->error('', 'MEMBER_IS_LOCKED'); } else { $info->hidden(['bindMember'=>['password','pay_password']]); $info->bindMember->save([ 'last_login_ip'=> $info->bindMember->login_ip, 'last_login_type'=>$info->bindMember->login_type, 'last_login_time'=>$info->bindMember->login_time, 'login_time' => time(), 'login_type' =>$data['app_type'], 'login_ip' => request()->ip(), ]); $info=$info->toArray(); $loginInfo=$info['bindMember']; $loginInfo['site_id']=$site_id; $loginInfo['app_type']=$info['app_type']; $memberInfo=$loginInfo; $loginInfo['openid']=$info['open_id']; $loginInfo['unionid']=$info['unionid']; if($unionid){ $register = new Register(); $data['uid']= $memberInfo['member_id']; $data['site_id']= $site_id; $data['headimg']= $info['headimg']; $register->BindOpenid($data); } event("MemberLogin", $loginInfo, true); return $memberInfo; } } /** * 用户登录 * @param unknown $data 必然传输username */ public function mobileLogin($data) { //必然传输usern $info = model("member")->getInfo( [ ['mobile', '=', $data['mobile']], ['site_id', '=', $data['site_id']], ['is_delete','=',0] ], 'member_id,username, nickname, mobile, email, status,last_login_time' ); if (empty($info)) { return $this->error('', 'MEMBER_NOT_EXIST'); } elseif ($info['status'] == 0) { return $this->error('', 'MEMBER_IS_LOCKED'); } else { //更新登录时间 model("member")->update([ 'login_time' => time(), 'last_login_time' => time(), 'login_ip' => request()->ip(), 'login_type' => $data['app_type'] ?? '', 'login_type_name' => $data['app_type_name'] ?? '', ], [['member_id', '=', $info['member_id']]]); event("MemberLogin", ['member_id' => $info['member_id'], 'site_id' => $data['site_id']], true); //用户第三方信息刷新 // $this->refreshAuth($info['member_id'], $data); return $this->success($info); } } /** * 登录动态码 * @param $data */ public function loginCode($data) { //发送短信 $sms_model = new Sms(); $var_parse = array( "code" => $data["code"], ); $data["sms_account"] = $data["mobile"] ?? '';//手机号 $data["var_parse"] = $var_parse; $sms_result = $sms_model->sendMessage($data); if ($sms_result["code"] < 0) return $sms_result; return $this->success(); } /** * 登录通知 * @param $data * @return array|mixed|void */ public function loginSuccess($data) { $member_model = new Member(); $member_info_result = $member_model->getMemberInfo([["member_id", "=", $data["member_id"]]], "username,mobile,email,reg_time,last_login_type,login_time"); $member_info = $member_info_result["data"]; //发送短信 $sms_model = new Sms(); $name = $member_info["username"] == '' ? $member_info["mobile"] : $member_info["username"]; $var_parse = array( "name" => replaceSpecialChar($name),//验证码 ); $data["sms_account"] = $member_info["mobile"] ?? '';//手机号 $data["var_parse"] = $var_parse; $sms_result = $sms_model->sendMessage($data); // if($sms_result["code"] < 0) // return $sms_result; //发送模板消息 $wechat_model = new WechatMessage(); $data["openid"] = $member_info["wechat_openid"]; // if(!empty($member_info["username"])){ // $user_account = $member_info["username"]; // }else{ // if(!empty($member_info["mobile"])){ // $user_account = $member_info["mobile"]; // }else{ // $user_account = $member_info["email"]; // } // } $data["template_data"] = [ 'keyword1' => !empty($member_info["username"]) ? $member_info["username"] : $member_info["mobile"], 'keyword2' => '登录成功', 'keyword3' => time_to_date($member_info["login_time"]), ]; $data["page"] = ''; $wechat_model->sendMessage($data); return $this->success(); } }