uploader = new TencentCosUploader($config); } /** * 微信授权,登录接口 */ public function login() { try { $code = request()->param("code", ''); if (empty($code)) { return $this->renderError('请求参数错误'); } $click_id = request()->header('clickid'); $wxServer = new \app\common\server\Wx($this->app); $user_base = $wxServer->getOpenid($code); $openid = $user_base['openid']; $user = null; $wx_unionid = null; if ($user_base['unionid'] != null && $user_base['unionid'] != '') { $wx_unionid = $user_base['unionid']; $user = User::getInfo(['unionid' => $wx_unionid]); } if ($user == null) { $user = User::getInfo(['openid' => $openid]); } // return $this->renderSuccess("登录成功", $user); if ($user) { if ($user['click_id'] != $click_id) { $res[] = User::where(['id' => $user['id']])->update(['click_id' => $click_id]); } //设置unionId if ($wx_unionid && !empty($wx_unionid)) { $unionid = $user['unionid']; if ($unionid == null || empty($unionid)) { $user['unionid'] = $wx_unionid; // User::update($user); $user->save(); } } #token时间戳 $time = time(); #token字符串 $token_num = getRandStr(10); #加密token $account_token = user_md5($user['id'] . $token_num . $time); #更新账号信息 $last_login_ip1 = request()->ip(); $result = $this->ip_location($last_login_ip1); $ip_province = ''; $ip_city = ''; $ip_adcode = ''; if ($result) { $ip_province = $result['province']; $ip_city = $result['city']; $ip_adcode = $result['adcode']; } else { } $res[] = UserAccount::where(['user_id' => $user['id']])->update([ 'account_token' => $account_token, 'token_num' => $token_num, 'token_time' => $time, 'last_login_time' => $time, 'last_login_ip' => ip2long(request()->ip()), 'last_login_ip1' => $last_login_ip1, 'ip_adcode' => $ip_adcode, 'ip_province' => $ip_province, 'ip_city' => $ip_city, ]); return $this->renderSuccess("登录成功", $account_token); } else { $nickname = request()->param('nickname', ''); $headimg = request()->param('headimg', ''); if (!$nickname) { return $this->renderError('请求参数错误!'); } $pid = 0; $pid_pid = request()->param('pid', 0); if ($pid_pid > 0) { log::info("获取推荐人id" . $pid_pid); } $randx = rand(1000, 9999); if ($nickname == "微信用户") { $nickname = $nickname . $randx; } $identicon = new \Identicon\Identicon(); $imageData = $identicon->getImageData($openid . $nickname); $uploadResult = $this->uploader->uploadFile($imageData, "storage/users/icon/default/" . $randx . ".png"); $headimg = $uploadResult['full_url']; if ($pid_pid) { $pid_info = User::where('id', '=', $pid_pid)->value("id"); if ($pid_info) { log::info("获取推荐人id" . $pid_info); $pid = $pid_info; } } Db::startTrans(); $res[] = $user_id = User::insertGetId([ 'openid' => $openid, 'nickname' => $nickname, 'headimg' => $headimg, 'pid' => $pid, 'addtime' => time(), 'click_id' => $click_id, 'unionid' => $wx_unionid, ]); $time = time(); #token字符串 $token_num = getRandStr(10); #加密token $account_token = user_md5($user_id . $token_num . $time); #更新账号信息 $last_login_ip1 = request()->ip(); $result = $this->ip_location($last_login_ip1); $ip_province = ''; $ip_city = ''; $ip_adcode = ''; if ($result) { $ip_province = $result['province']; $ip_city = $result['city']; $ip_adcode = $result['adcode']; } else { } $res[] = UserAccount::insert([ 'user_id' => $user_id, 'account_token' => $account_token, 'token_num' => $token_num, 'token_time' => $time, 'last_login_time' => $time, 'last_login_ip' => ip2long(request()->ip()), 'last_login_ip1' => $last_login_ip1, 'ip_adcode' => $ip_adcode, 'ip_province' => $ip_province, 'ip_city' => $ip_city, ]); #记录登录日志 #推荐成功之后获取一张抽奖券 #配置 $rule = getConfig('base'); $draw_people_num = $rule['draw_people_num']; if (!empty($pid)) { $num = 0; $num = ProfitDraw::where(['type' => 5, 'user_id' => $pid, 'share_uid' => $user_id])->count(); if (bccomp("$num", "$draw_people_num") < 0) { #可以获得一张抽奖券 $res[] = User::changeDraw($pid, 1, 5, '获得一张抽奖券', $user_id); } } if (resCheck($res)) { Db::commit(); return $this->renderSuccess("登录成功", $account_token); } else { Db::rollback(); return $this->renderError("登录失败"); } } } catch (\Exception $e) { Log::error('错误信息' . $e->getMessage()); Log::error('错误行数' . $e->getLine()); } } /** * 微信授权 */ public function h5login() { try { $code = request()->param("code", ''); if (empty($code)) { return $this->renderError('请求参数错误'); } $click_id = request()->header('clickid'); $wxServer = new \app\common\server\WechatOfficialAccount($this->app); $user_base = $wxServer->getAccessToken($code); // $user_base_info = $wxServer->getUserInfo($user_base); $retrieved_openid = $user_base['openid']; $openid = $retrieved_openid; $user = null; if ($user_base['unionid'] != null && $user_base['unionid'] != '') { $unionid = $user_base['unionid']; $user = User::getInfo(['unionid' => $unionid]); if ($user != null) { // $user if ($user['gzh_openid'] == null || $user['gzh_openid'] != $retrieved_openid) { $user['gzh_openid'] = $retrieved_openid; $user->save(); } } } if ($user == null) { $user = User::getInfo(['openid' => $openid]); } // return $this->renderSuccess("登录成功", $user); if ($user) { if ($user['click_id'] != $click_id) { $res[] = User::where(['id' => $user['id']])->update(['click_id' => $click_id]); } #token时间戳 $time = time(); #token字符串 $token_num = getRandStr(10); #加密token $account_token = user_md5($user['id'] . $token_num . $time); #更新账号信息 $last_login_ip1 = request()->ip(); $result = $this->ip_location($last_login_ip1); $ip_province = ''; $ip_city = ''; $ip_adcode = ''; if ($result) { $ip_province = $result['province']; $ip_city = $result['city']; $ip_adcode = $result['adcode']; } else { } $res[] = UserAccount::where(['user_id' => $user['id']])->update([ 'account_token' => $account_token, 'token_num' => $token_num, 'token_time' => $time, 'last_login_time' => $time, 'last_login_ip' => ip2long(request()->ip()), 'last_login_ip1' => $last_login_ip1, 'ip_adcode' => $ip_adcode, 'ip_province' => $ip_province, 'ip_city' => $ip_city, ]); return $this->renderSuccess("登录成功", $account_token); } else { $userinfo = $wxServer->getUserInfo($user_base); $nickname = $userinfo['nickname']; $headimg = $userinfo['headimgurl']; if (!$nickname || !$headimg) { return $this->renderError('请求参数错误!'); } $pid = 0; $pid_pid = request()->param('pid', 0); if ($pid_pid > 0) { log::info("获取推荐人id" . $pid_pid); } if ($pid_pid) { $pid_info = User::where('id', '=', $pid_pid)->value("id"); if ($pid_info) { log::info("获取推荐人id" . $pid_info); $pid = $pid_info; } } Db::startTrans(); $res[] = $user_id = User::insertGetId([ 'openid' => $openid, 'nickname' => $nickname, 'headimg' => $headimg, 'pid' => $pid, 'addtime' => time(), 'click_id' => $click_id ]); $time = time(); #token字符串 $token_num = getRandStr(10); #加密token $account_token = user_md5($user_id . $token_num . $time); #更新账号信息 $last_login_ip1 = request()->ip(); $result = $this->ip_location($last_login_ip1); $ip_province = ''; $ip_city = ''; $ip_adcode = ''; if ($result) { $ip_province = $result['province']; $ip_city = $result['city']; $ip_adcode = $result['adcode']; } else { } $res[] = UserAccount::insert([ 'user_id' => $user_id, 'account_token' => $account_token, 'token_num' => $token_num, 'token_time' => $time, 'last_login_time' => $time, 'last_login_ip' => ip2long(request()->ip()), 'last_login_ip1' => $last_login_ip1, 'ip_adcode' => $ip_adcode, 'ip_province' => $ip_province, 'ip_city' => $ip_city, ]); #记录登录日志 #推荐成功之后获取一张抽奖券 #配置 $rule = getConfig('base'); $draw_people_num = $rule['draw_people_num']; if (!empty($pid)) { $num = 0; $num = ProfitDraw::where(['type' => 5, 'user_id' => $pid, 'share_uid' => $user_id])->count(); if (bccomp("$num", "$draw_people_num") < 0) { #可以获得一张抽奖券 $res[] = User::changeDraw($pid, 1, 5, '获得一张抽奖券', $user_id); } } if (resCheck($res)) { Db::commit(); return $this->renderSuccess("登录成功", $account_token); } else { Db::rollback(); return $this->renderError("登录失败"); } } } catch (\Exception $e) { Log::error('错误信息' . $e->getMessage()); Log::error('错误行数' . $e->getLine()); return $this->renderError('非法请求'); } } public function ip_location($last_login_ip) { if ($last_login_ip) { $url = "https://restapi.amap.com/v3/ip?key=6a46ad822120e393956e89d498e8c40b&ip=" . "$last_login_ip" . ""; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); curl_close($ch); $result = json_decode($result, true); if ($result['status'] == '1') { return $result; } else { return false; } } else { return false; } } /** * 绑定手机号 */ public function login_bind_mobile() { $user = $this->getUser(); $user_id = $user['id']; $code = request()->param("code", ''); $wxServer = new \app\common\server\Wx($this->app); $mobile = $wxServer->getMobile($code); // return $this->renderError($mobile,[$mobile,$code]); Db::startTrans(); $res = []; // $res[] = User::where(['id' => $user['id']])->update([ // 'mobile' => $mobile, // 'update_time' => time(), // ]); $user_mobile = User::where(['mobile' => $mobile])->find(); if ($user_mobile) { $old_user_account = UserAccount::where(['user_id' => $user_id])->find(); #修改openid $res[] = User::where(['id' => $user_mobile['id']]) ->update([ 'openid' => $user['openid'], // 'nickname' => $user['nickname'], // 'headimg' => $user['headimg'], ]); #修改token $res[] = UserAccount::where(['user_id' => $user_mobile['id']])->update([ 'account_token' => $old_user_account['account_token'], 'token_num' => $old_user_account['token_num'], 'token_time' => $old_user_account['token_time'], 'last_login_time' => $old_user_account['last_login_time'], 'last_login_ip' => $old_user_account['last_login_ip'], ]); #修改 $res[] = User::where(['id' => $user['id']])->delete(); $res[] = UserAccount::where(['user_id' => $user_id])->delete(); // $res[] = UserAccount::where(['user_id' => $user['id']])->update([ // 'token_time' => time(), // ]); } else { $res[] = User::where(['id' => $user['id']])->update([ 'mobile' => $mobile, 'update_time' => time(), ]); } if (resCheck($res)) { Db::commit(); return $this->renderSuccess("绑定成功2"); } else { Db::rollback(); return $this->renderSuccess("绑定成功3"); } } /** * 绑定手机号 */ public function login_bind_mobile_h5() { $user = $this->getUser(); $user_id = $user['id']; $mobile = request()->param("mobile", ''); Db::startTrans(); $res = []; $res[] = User::where(['id' => $user_id])->update([ 'mobile' => $mobile, 'update_time' => time(), ]); if (resCheck($res)) { Db::commit(); return $this->renderSuccess("绑定成功2"); } else { Db::rollback(); return $this->renderSuccess("绑定成功3"); } } /** * * * @return mixed */ public function getAccessTokenOffiaccountSign() { $wxServer = new \app\common\server\WechatOfficialAccount($this->app); $url = request()->param("url", ''); $data = $wxServer->getAccessTokenOffiaccountSign($url); return $this->renderSuccess('', $data); } public function test() { $account_token['token'] = "77f6358084be8d5545747911e7f9d5ad5644a114"; $account_token['logintype'] = "2"; return $this->renderSuccess("登录成功", $account_token); } public function test1() { $share_image = getConfig("base")['share_image']; $public_path = dirname($_SERVER['SCRIPT_FILENAME']); $poster_bg = $public_path . $share_image; // var_dump($poster_bg); // $rule = getConfig('base'); // $draw_people_num = $rule['draw_people_num']; // $user_id = 31; // $pid = 24; // if(!empty($pid)){ // $num = 0; // $num = ProfitDraw::where(['type'=>5,'user_id'=>$pid])->count(); // if(bccomp("$num","$draw_people_num") < 0){ // #可以获得一张抽奖券 // $res= User::changeDraw($pid, 1,5 , '获得一张抽奖券',$user_id); // var_dump($res); // } // } // log::info($res); } }