Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
backend
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
亲子游项目
backend
Commits
718829d0
Commit
718829d0
authored
Dec 12, 2018
by
LiuJunYi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
手机关联会员
parent
bd90acb0
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
54 additions
and
39 deletions
+54
-39
application/api/controller/User.php
+54
-39
No files found.
application/api/controller/User.php
View file @
718829d0
...
...
@@ -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
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment