User.php
4.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<?php
namespace app\api\controller;
use app\common\controller\Api;
use app\common\library\Ems;
use app\common\library\Sms;
use fast\Http;
use fast\Random;
use think\Config;
use think\Db;
use think\Validate;
/**
* 会员接口
*/
class User extends Api
{
protected $noNeedLogin = ['third'];
protected $noNeedRight = '*';
public function _initialize()
{
parent::_initialize();
if (!Config::get('fastadmin.usercenter')) {
$this->error(__('User center already closed'));
}
}
/**
* 会员中心
* @ApiReturn (
* data:{
* nickname 昵称
* avatar 头像
* pay 待支付
* wait_send 待发货
* wait_collect 待收货
* wait_comment 待评价
* }
* )
*/
public function index()
{
$data = [];
$data['nickname'] = $this->auth->nickname;
$data['avatar'] = cdnurl($this->auth->avatar,true);
$data['mobile'] = $this->auth->mobile;
$data['pay'] = Db::name('litestore_order')->where('user_id',$this->auth->id)->where('pay_status','10')->count();
$data['wait_send'] = Db::name('litestore_order')->where('user_id',$this->auth->id)->where('freight_status','10')->count();
$data['wait_collect'] = Db::name('litestore_order')->where('user_id',$this->auth->id)->where('receipt_status','10')->count();
$data['wait_comment'] = Db::name('litestore_order')->where('user_id',$this->auth->id)->where('receipt_status','20')->count();
$this->success('会员中心', ['welcome' => $this->auth->nickname]);
}
/**
* 修改会员个人信息
*
* @ApiMethod (POST)
* @param string $avatar 头像地址
* @param string $mobile 联系方式
* @param string $nickname 昵称
*/
public function profile()
{
$user = $this->auth->getUser();
$mobile = $this->request->post('mobile');
$nickname = $this->request->post('nickname');
$avatar = $this->request->post('avatar', '', 'trim,strip_tags,htmlspecialchars');
if ($mobile) {
$user->mobile = $mobile;
}
if ($nickname) {
$user->nickname = $nickname;
}
if ($avatar) {
$user->avatar = $avatar;
}
$user->save();
$this->success();
}
/**
* 第三方登录
*
* @ApiMethod (POST)
* @param string $code Code码
* @param string $nickname 微信昵称
* @param string $avatar 微信头像
*/
public function third()
{
$code = $this->request->post('code');
$nickname = $this->request->post('nickname');
$avatar = $this->request->post('avatar');
if (!$code || !$nickname || !$avatar){
$this->error('后台所需参数缺失请完善参数');
}
$param = [];
$param['js_code'] = $code;
$param['grant_type'] = 'authorization_code';
$param['secret'] = Config::get('site.secret');
$param['appid'] = Config::get('site.appid');
$wxapi = Http::get('https://api.weixin.qq.com/sns/jscode2session',$param);//请求openid
$wxapi = json_decode($wxapi,true);
if (isset($wxapi['errcode'])){
$this->error($wxapi['errmsg']);
}
$third = new \app\api\model\Third();
$userid = $third->where('openid',$wxapi['openid'])->value('user_id');
if ($userid){
$this->auth->direct($userid);
$this->success('登录成功',['token'=>$this->auth->getToken(),'user_type'=>$this->auth->user_type]);
}else{
$userid = $this->auth->register($nickname,'','','',['avatar'=>$avatar]);
if ($userid){
$third->save(['openid'=>$wxapi['openid'],'user_id'=>$userid]);
$this->success('登录成功',['token'=>$this->auth->getToken(),'user_type'=>$this->auth->user_type]);
}else{
$this->error('注册失败');
}
}
}
/**
* @ApiTitle (用户协议)
* @ApiMethod (POST)
* @ApiReturn ({
'code':'1',
'msg':'用户协议'
'data':'富文本'
})
*/
public function userAgreement()
{
$this->success('用户协议', Config::get('site.user_agreement'));
}
/**
* @ApiTitle (隐私协议)
* @ApiMethod (POST)
* @ApiReturn ({
'code':'1',
'msg':'隐私协议'
'data':'富文本'
})
*/
public function privacyAgreement()
{
$this->success('隐私协议', Config::get('site.privacy_agreement'));
}
}