用户绑定微信号
This commit is contained in:
@@ -11,6 +11,9 @@ use PHPMailer\PHPMailer\PHPMailer;
|
||||
use think\Response;
|
||||
use app\index\model\UserMessage;
|
||||
use app\index\model\SystemNotice;
|
||||
use Endroid\QrCode\QrCode;
|
||||
use Endroid\QrCode\Writer\PngWriter;
|
||||
|
||||
|
||||
class UserController extends BaseController
|
||||
{
|
||||
@@ -217,43 +220,43 @@ class UserController extends BaseController
|
||||
}
|
||||
|
||||
// 微信授权回调
|
||||
public function wechatCallback()
|
||||
{
|
||||
$code = $this->request->get('code');
|
||||
if (!$code) {
|
||||
return json(['code' => 0, 'msg' => '微信授权失败']);
|
||||
}
|
||||
// public function wechatCallback()
|
||||
// {
|
||||
// $code = $this->request->get('code');
|
||||
// if (!$code) {
|
||||
// return json(['code' => 0, 'msg' => '微信授权失败']);
|
||||
// }
|
||||
|
||||
try {
|
||||
// 这里应该调用微信API获取用户信息
|
||||
// 示例代码,实际使用时需要替换为真实的微信API调用逻辑
|
||||
// $wechatUser = getWechatUserInfo($code);
|
||||
// try {
|
||||
// // 这里应该调用微信API获取用户信息
|
||||
// // 示例代码,实际使用时需要替换为真实的微信API调用逻辑
|
||||
// // $wechatUser = getWechatUserInfo($code);
|
||||
|
||||
// 模拟获取到的微信用户信息
|
||||
$wechatUser = [
|
||||
'openid' => 'test_openid_' . time(),
|
||||
'nickname' => '微信用户',
|
||||
'avatar' => ''
|
||||
];
|
||||
// // 模拟获取到的微信用户信息
|
||||
// $wechatUser = [
|
||||
// 'openid' => 'test_openid_' . time(),
|
||||
// 'nickname' => '微信用户',
|
||||
// 'avatar' => ''
|
||||
// ];
|
||||
|
||||
// 检查用户是否已注册
|
||||
$user = Users::where('openid', $wechatUser['openid'])->find();
|
||||
if ($user) {
|
||||
// 已注册,直接登录
|
||||
session('user_id', $user->id);
|
||||
return json(['code' => 1, 'msg' => '登录成功']);
|
||||
}
|
||||
// // 检查用户是否已注册
|
||||
// $user = Users::where('openid', $wechatUser['openid'])->find();
|
||||
// if ($user) {
|
||||
// // 已注册,直接登录
|
||||
// session('user_id', $user->id);
|
||||
// return json(['code' => 1, 'msg' => '登录成功']);
|
||||
// }
|
||||
|
||||
// 未注册,返回注册所需信息
|
||||
return json([
|
||||
'code' => 2,
|
||||
'msg' => '需要注册',
|
||||
'data' => $wechatUser
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
return json(['code' => 0, 'msg' => '微信授权失败:' . $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
// // 未注册,返回注册所需信息
|
||||
// return json([
|
||||
// 'code' => 2,
|
||||
// 'msg' => '需要注册',
|
||||
// 'data' => $wechatUser
|
||||
// ]);
|
||||
// } catch (\Exception $e) {
|
||||
// return json(['code' => 0, 'msg' => '微信授权失败:' . $e->getMessage()]);
|
||||
// }
|
||||
// }
|
||||
|
||||
// 发送邮箱验证码
|
||||
public function sendEmailCode()
|
||||
@@ -356,6 +359,7 @@ class UserController extends BaseController
|
||||
$user->phone = $data['phone'] ?? '';
|
||||
$user->sex = $data['sex'] ?? 0;
|
||||
$user->qq = $data['qq'] ?? '';
|
||||
$user->wechat = $data['wechat'] ?? '';
|
||||
$user->update_time = time();
|
||||
|
||||
if ($user->save()) {
|
||||
@@ -691,4 +695,43 @@ class UserController extends BaseController
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//生成二维码绑定微信
|
||||
public function qrcode()
|
||||
{
|
||||
// 检查用户是否登录
|
||||
if (!cookie('user_account')) {
|
||||
return json(['code'=> -1,'msg'=> '请先登录']);
|
||||
}
|
||||
|
||||
// 获取当前用户信息
|
||||
$user = Users::where('account', cookie('user_account'))->find();
|
||||
if (!$user) {
|
||||
return json(['code' => -1, 'msg' => '用户信息获取失败']);
|
||||
}
|
||||
|
||||
// 假设这里生成一个唯一的绑定标识,例如使用用户ID和时间戳组合
|
||||
$bindToken = md5($user->id . time());
|
||||
|
||||
// 生成实际的绑定 URL
|
||||
$domain = $this->request->domain();
|
||||
$bindUrl = "{$domain}/wechat_bind?token={$bindToken}";
|
||||
|
||||
// 将绑定标识存入缓存,设置有效期,例如30分钟
|
||||
cache('wechat_bind_token_' . $user->id, $bindToken, 1800);
|
||||
|
||||
try {
|
||||
// 创建二维码实例
|
||||
$qrCode = QrCode::create($bindUrl);
|
||||
$writer = new PngWriter();
|
||||
|
||||
// 生成二维码图片
|
||||
$result = $writer->write($qrCode);
|
||||
$qrCodeDataUri = $result->getDataUri();
|
||||
|
||||
return json(['code' => 0, 'msg' => '二维码生成成功', 'data' => ['qrcode_url' => $qrCodeDataUri]]);
|
||||
} catch (\Exception $e) {
|
||||
return json(['code' => -1, 'msg' => '二维码生成失败: ' . $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user