Commit 718829d0 by LiuJunYi

手机关联会员

parent bd90acb0
......@@ -4,6 +4,7 @@ namespace app\api\controller;
use app\common\model\User as UserModel;
use app\admin\controller\Upload;
use app\common\model\VipRelation as VipRelationModel;
class User extends Base
{
......@@ -15,8 +16,8 @@ class User extends Base
*/
public function token()
{
$uid = input('post.uid');
$user = UserModel::get($uid);
$uid = input('post.uid');
$user = UserModel::get($uid);
$token = $this->usertoken($user);
return ["code" => 0, "msg" => "成功", "token" => $token, "user" => $user];
}
......@@ -35,12 +36,12 @@ class User extends Base
// $signature = input("post.signature");
// $rawData = input("post.rawData");
$encryptedData = input("post.encryptedData");
$iv = input('post.iv');
$iv = input('post.iv');
// 获取session_key
$appId = config("wxapp.appKey");
$appId = config("wxapp.appKey");
$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);
if (isset($response->errcode) && $response->errcode > 0) {
......@@ -50,11 +51,11 @@ class User extends Base
// session_key 和 openid
// 过期时间2小时 7200s
$session_key = $response->session_key;
$openid = $response->openid;
$openid = $response->openid;
// 解密加密数据
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);
if ($errCode == 0) {
......@@ -63,7 +64,7 @@ class User extends Base
if ($user) {
//更新
// 省份和城市
$user->city = $data->city;
$user->city = $data->city;
$user->province = $data->province;
//ip
$user->ip = request()->ip();
......@@ -73,15 +74,15 @@ class User extends Base
return ["code" => 0, "msg" => "登录成功", "token" => $token, "user" => $user];
} else {
//第一次注册
$user = new UserModel;
$user->openid = $data->openId;
$user = new UserModel;
$user->openid = $data->openId;
$user->nickname = $data->nickName;
// 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
$user->gender = intval($data->gender);
$user->avatar = $data->avatarUrl;
$user->is_vip = 0; // 0非会员 1会员 默认为非会员
// 省份和城市
$user->city = $data->city;
$user->city = $data->city;
$user->province = $data->province;
//ip
$user->ip = request()->ip();
......@@ -108,9 +109,9 @@ class User extends Base
*/
public function getPhoneNumber()
{
$jscode = input("post.code");
$jscode = input("post.code");
$encryptedData = input("post.encryptedData");
$iv = input('post.iv');
$iv = input('post.iv');
if (!$jscode || !$encryptedData || !$iv) {
return ["code" => 1, "msg" => "参数错误"];
......@@ -120,57 +121,72 @@ class User extends Base
}
// 获取session_key
$appId = config("wxapp.appKey");
$appId = config("wxapp.appKey");
$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);
// session_key 和 openid
// 过期时间2小时 7200s
$session_key = $response->session_key;
$openid = $response->openid;
$openid = $response->openid;
// 解密加密数据
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);
if ($errCode == 0) {
$data = json_decode($data);
$phone = $data->purePhoneNumber;
$data = json_decode($data);
$phone = $data->purePhoneNumber;
$hidephone = substr_replace($phone, '****', 3, 4);
$user = UserModel::get($this->userinfo[0]);
$onlyPhone = UserModel::get(['id'=>['neq',$this->userinfo[0]],'phone'=>$phone]);
if($onlyPhone){
$user = UserModel::get($this->userinfo[0]);
$onlyPhone = UserModel::get(['id' => ['neq', $this->userinfo[0]], 'phone' => $phone]);
if ($onlyPhone) {
return ["code" => 1, "msg" => "该手机号已注册"];
}
$user->phone = $phone;
$user->save();
$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 {
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()
{
//用户UID
$uid = $this->userinfo[0];
$user = UserModel::get($uid);
if(!$user){
return ['code'=>1,'msg'=>'用户不存在'];
$uid = $this->userinfo[0];
$user = UserModel::get($uid);
if (!$user) {
return ['code' => 1, 'msg' => '用户不存在'];
}
//过期时间
if($user['is_vip']){
if(strtotime($user['vip_endtime'])>time()){
$user['vip_endtime_str'] = '剩余'.ceil((strtotime($user['vip_endtime'])-time())/86400).'天';
}else{
if ($user['is_vip']) {
if (strtotime($user['vip_endtime']) > time()) {
$user['vip_endtime_str'] = '剩余' . ceil((strtotime($user['vip_endtime']) - time()) / 86400) . '天';
} else {
$user['vip_endtime_str'] = '已到期';
}
}else{
} else {
$user['vip_endtime_str'] = '';
}
$user['hidephone'] = substr_replace($user['phone'], '****', 3, 4);
......@@ -188,7 +204,7 @@ class User extends Base
public function update()
{
//用户ID
$uid = $this->userinfo[0];
$uid = $this->userinfo[0];
$user = UserModel::get($uid);
//可选更新
......@@ -209,12 +225,11 @@ class User extends Base
*/
public function userCollections()
{
$uid = $this->userinfo[0];
$p = input('post.p/d', 1);
$uid = $this->userinfo[0];
$p = input('post.p/d', 1);
$page = input('post.page/d', 8);
$list = collection(UserModel::get($uid)->project()->page($p, $page)->select());
......@@ -222,8 +237,8 @@ class User extends Base
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']);
return ['code'=>0,'msg'=>'success','data'=>$list];
return ['code' => 0, 'msg' => 'success', 'data' => $list];
}
/**
......@@ -234,7 +249,7 @@ class User extends Base
*/
public function uploadAvatar()
{
$file = request()->file('avatar');
$file = request()->file('avatar');
$upload = new Upload();
$result = $upload->sava($file);
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