Commit 718829d0 by LiuJunYi

手机关联会员

parent bd90acb0
...@@ -4,6 +4,7 @@ namespace app\api\controller; ...@@ -4,6 +4,7 @@ namespace app\api\controller;
use app\common\model\User as UserModel; use app\common\model\User as UserModel;
use app\admin\controller\Upload; use app\admin\controller\Upload;
use app\common\model\VipRelation as VipRelationModel;
class User extends Base class User extends Base
{ {
...@@ -15,8 +16,8 @@ class User extends Base ...@@ -15,8 +16,8 @@ class User extends Base
*/ */
public function token() public function token()
{ {
$uid = input('post.uid'); $uid = input('post.uid');
$user = UserModel::get($uid); $user = UserModel::get($uid);
$token = $this->usertoken($user); $token = $this->usertoken($user);
return ["code" => 0, "msg" => "成功", "token" => $token, "user" => $user]; return ["code" => 0, "msg" => "成功", "token" => $token, "user" => $user];
} }
...@@ -35,12 +36,12 @@ class User extends Base ...@@ -35,12 +36,12 @@ class User extends Base
// $signature = input("post.signature"); // $signature = input("post.signature");
// $rawData = input("post.rawData"); // $rawData = input("post.rawData");
$encryptedData = input("post.encryptedData"); $encryptedData = input("post.encryptedData");
$iv = input('post.iv'); $iv = input('post.iv');
// 获取session_key // 获取session_key
$appId = config("wxapp.appKey"); $appId = config("wxapp.appKey");
$appSecret = config("wxapp.appSecret"); $appSecret = config("wxapp.appSecret");
$wxurl = "https://api.weixin.qq.com/sns/jscode2session?appid=" . $appId . "&secret=" . $appSecret . "&js_code=" . $jscode . "&grant_type=authorization_code"; $wxurl = "https://api.weixin.qq.com/sns/jscode2session?appid=" . $appId . "&secret=" . $appSecret . "&js_code=" . $jscode . "&grant_type=authorization_code";
$response = http_get($wxurl); $response = http_get($wxurl);
if (isset($response->errcode) && $response->errcode > 0) { if (isset($response->errcode) && $response->errcode > 0) {
...@@ -50,11 +51,11 @@ class User extends Base ...@@ -50,11 +51,11 @@ class User extends Base
// session_key 和 openid // session_key 和 openid
// 过期时间2小时 7200s // 过期时间2小时 7200s
$session_key = $response->session_key; $session_key = $response->session_key;
$openid = $response->openid; $openid = $response->openid;
// 解密加密数据 // 解密加密数据
include_once VENDOR_PATH . 'aesphp/wxBizDataCrypt.php'; include_once VENDOR_PATH . 'aesphp/wxBizDataCrypt.php';
$pc = new \WXBizDataCrypt($appId, $session_key); $pc = new \WXBizDataCrypt($appId, $session_key);
$errCode = $pc->decryptData($encryptedData, $iv, $data); $errCode = $pc->decryptData($encryptedData, $iv, $data);
if ($errCode == 0) { if ($errCode == 0) {
...@@ -63,7 +64,7 @@ class User extends Base ...@@ -63,7 +64,7 @@ class User extends Base
if ($user) { if ($user) {
//更新 //更新
// 省份和城市 // 省份和城市
$user->city = $data->city; $user->city = $data->city;
$user->province = $data->province; $user->province = $data->province;
//ip //ip
$user->ip = request()->ip(); $user->ip = request()->ip();
...@@ -73,15 +74,15 @@ class User extends Base ...@@ -73,15 +74,15 @@ class User extends Base
return ["code" => 0, "msg" => "登录成功", "token" => $token, "user" => $user]; return ["code" => 0, "msg" => "登录成功", "token" => $token, "user" => $user];
} else { } else {
//第一次注册 //第一次注册
$user = new UserModel; $user = new UserModel;
$user->openid = $data->openId; $user->openid = $data->openId;
$user->nickname = $data->nickName; $user->nickname = $data->nickName;
// 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知 // 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
$user->gender = intval($data->gender); $user->gender = intval($data->gender);
$user->avatar = $data->avatarUrl; $user->avatar = $data->avatarUrl;
$user->is_vip = 0; // 0非会员 1会员 默认为非会员 $user->is_vip = 0; // 0非会员 1会员 默认为非会员
// 省份和城市 // 省份和城市
$user->city = $data->city; $user->city = $data->city;
$user->province = $data->province; $user->province = $data->province;
//ip //ip
$user->ip = request()->ip(); $user->ip = request()->ip();
...@@ -108,9 +109,9 @@ class User extends Base ...@@ -108,9 +109,9 @@ class User extends Base
*/ */
public function getPhoneNumber() public function getPhoneNumber()
{ {
$jscode = input("post.code"); $jscode = input("post.code");
$encryptedData = input("post.encryptedData"); $encryptedData = input("post.encryptedData");
$iv = input('post.iv'); $iv = input('post.iv');
if (!$jscode || !$encryptedData || !$iv) { if (!$jscode || !$encryptedData || !$iv) {
return ["code" => 1, "msg" => "参数错误"]; return ["code" => 1, "msg" => "参数错误"];
...@@ -120,57 +121,72 @@ class User extends Base ...@@ -120,57 +121,72 @@ class User extends Base
} }
// 获取session_key // 获取session_key
$appId = config("wxapp.appKey"); $appId = config("wxapp.appKey");
$appSecret = config("wxapp.appSecret"); $appSecret = config("wxapp.appSecret");
$wxurl = "https://api.weixin.qq.com/sns/jscode2session?appid=" . $appId . "&secret=" . $appSecret . "&js_code=" . $jscode . "&grant_type=authorization_code"; $wxurl = "https://api.weixin.qq.com/sns/jscode2session?appid=" . $appId . "&secret=" . $appSecret . "&js_code=" . $jscode . "&grant_type=authorization_code";
$response = http_get($wxurl); $response = http_get($wxurl);
// session_key 和 openid // session_key 和 openid
// 过期时间2小时 7200s // 过期时间2小时 7200s
$session_key = $response->session_key; $session_key = $response->session_key;
$openid = $response->openid; $openid = $response->openid;
// 解密加密数据 // 解密加密数据
include_once VENDOR_PATH . 'aesphp/wxBizDataCrypt.php'; include_once VENDOR_PATH . 'aesphp/wxBizDataCrypt.php';
$pc = new \WXBizDataCrypt($appId, $session_key); $pc = new \WXBizDataCrypt($appId, $session_key);
$errCode = $pc->decryptData($encryptedData, $iv, $data); $errCode = $pc->decryptData($encryptedData, $iv, $data);
if ($errCode == 0) { if ($errCode == 0) {
$data = json_decode($data); $data = json_decode($data);
$phone = $data->purePhoneNumber; $phone = $data->purePhoneNumber;
$hidephone = substr_replace($phone, '****', 3, 4); $hidephone = substr_replace($phone, '****', 3, 4);
$user = UserModel::get($this->userinfo[0]); $user = UserModel::get($this->userinfo[0]);
$onlyPhone = UserModel::get(['id'=>['neq',$this->userinfo[0]],'phone'=>$phone]); $onlyPhone = UserModel::get(['id' => ['neq', $this->userinfo[0]], 'phone' => $phone]);
if($onlyPhone){ if ($onlyPhone) {
return ["code" => 1, "msg" => "该手机号已注册"]; return ["code" => 1, "msg" => "该手机号已注册"];
} }
$user->phone = $phone; $user->phone = $phone;
$user->save(); $user->save();
$result = ['phone' => $phone, 'hidephone' => $hidephone]; $result = ['phone' => $phone, 'hidephone' => $hidephone];
return ["code" => 0, "msg" => "获取成功", 'data' => $result]; //关联VIP
$is_relation = $this->vipRelation($phone);
return ["code" => 0, "msg" => "获取成功", 'data' => $result,'is_relation'=>$is_relation];
} else { } else {
return ["code" => 1, "msg" => "微信数据解密失败,请重试!"]; return ["code" => 1, "msg" => "微信数据解密失败,请重试!"];
} }
} }
public function vipRelation($phone)
{
//先查询最新的是否有未关联的这个手机号
$relation = VipRelationModel::get(['mobile' => $phone, 'is_relation' => 0]);
if (!$relation) {
return false;
}
UserModel::where('phone', $phone)->update(['is_vip' => 1, 'vip_endtime' => $relation['vip_expire']]);
$relation->is_relation = 1;
$relation->save();
return true;
}
public function index() public function index()
{ {
//用户UID //用户UID
$uid = $this->userinfo[0]; $uid = $this->userinfo[0];
$user = UserModel::get($uid); $user = UserModel::get($uid);
if(!$user){ if (!$user) {
return ['code'=>1,'msg'=>'用户不存在']; return ['code' => 1, 'msg' => '用户不存在'];
} }
//过期时间 //过期时间
if($user['is_vip']){ if ($user['is_vip']) {
if(strtotime($user['vip_endtime'])>time()){ if (strtotime($user['vip_endtime']) > time()) {
$user['vip_endtime_str'] = '剩余'.ceil((strtotime($user['vip_endtime'])-time())/86400).'天'; $user['vip_endtime_str'] = '剩余' . ceil((strtotime($user['vip_endtime']) - time()) / 86400) . '天';
}else{ } else {
$user['vip_endtime_str'] = '已到期'; $user['vip_endtime_str'] = '已到期';
} }
}else{ } else {
$user['vip_endtime_str'] = ''; $user['vip_endtime_str'] = '';
} }
$user['hidephone'] = substr_replace($user['phone'], '****', 3, 4); $user['hidephone'] = substr_replace($user['phone'], '****', 3, 4);
...@@ -188,7 +204,7 @@ class User extends Base ...@@ -188,7 +204,7 @@ class User extends Base
public function update() public function update()
{ {
//用户ID //用户ID
$uid = $this->userinfo[0]; $uid = $this->userinfo[0];
$user = UserModel::get($uid); $user = UserModel::get($uid);
//可选更新 //可选更新
...@@ -209,12 +225,11 @@ class User extends Base ...@@ -209,12 +225,11 @@ class User extends Base
*/ */
public function userCollections() public function userCollections()
{ {
$uid = $this->userinfo[0]; $uid = $this->userinfo[0];
$p = input('post.p/d', 1); $p = input('post.p/d', 1);
$page = input('post.page/d', 8); $page = input('post.page/d', 8);
$list = collection(UserModel::get($uid)->project()->page($p, $page)->select()); $list = collection(UserModel::get($uid)->project()->page($p, $page)->select());
...@@ -222,8 +237,8 @@ class User extends Base ...@@ -222,8 +237,8 @@ class User extends Base
return ['code' => 1, 'msg' => '没有更多']; return ['code' => 1, 'msg' => '没有更多'];
} }
$list = $list->visible(['id', 'title', 'poster', 'sign_limits', 'night_num', 'tags', 'price', 'vip_price', 'type', 'location', 'latitude', 'longitude'])->append(['sign_endtime_str']); $list = $list->visible(['id', 'title', 'poster', 'sign_limits', 'night_num', 'tags', 'price', 'vip_price', 'type', 'location', 'latitude', 'longitude'])->append(['sign_endtime_str']);
return ['code'=>0,'msg'=>'success','data'=>$list]; return ['code' => 0, 'msg' => 'success', 'data' => $list];
} }
/** /**
...@@ -234,7 +249,7 @@ class User extends Base ...@@ -234,7 +249,7 @@ class User extends Base
*/ */
public function uploadAvatar() public function uploadAvatar()
{ {
$file = request()->file('avatar'); $file = request()->file('avatar');
$upload = new Upload(); $upload = new Upload();
$result = $upload->sava($file); $result = $upload->sava($file);
if ($result['error'] == 1) { if ($result['error'] == 1) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment