SchoolPhysicalExamination/application/DeviceEnter/controller/Wechat.php

79 lines
3.0 KiB
PHP

<?php
namespace app\DeviceEnter\controller;
use think\Db;
class Wechat extends Base{
// 品川科技蓝牙工具的小程序信息
private $app_id = 'wx02bd10b0ee5c329f'; // 微信小程序的AppID
private $app_secret = 'c36a7398acc405d6e18d5dae903bc289'; // 微信小程序的AppSecret
public function login(){
try {
// 你的业务逻辑
if(count(input('post.')) > 0){
$data = input('post.');
}
if(!array_key_exists('code', $data)){
// return $this->msg(10001,'');
return $this->msg(10001,'code is miss');
}
// 校验参数
if (empty($data['code'])) {
return $this->msg(10001,'code is miss.');
}
$code = $data['code'];
$config = [
'app_id' => $this->app_id,
'app_secret' => $this->app_secret,
];
$url = "https://api.weixin.qq.com/sns/jscode2session?appid={$config['app_id']}&secret={$config['app_secret']}&js_code={$code}&grant_type=authorization_code";
$result = file_get_contents($url);
$data = json_decode($result, true);
if (isset($data['errcode'])) {
// return json(['code' => 500, 'msg' => '获取openid失败:'.$data['errmsg']]);
return $this->msg(10002,'获取openid失败:'.$data['errmsg']);
}
$device_enter = Db::connect('device_enter_db');
$user_find = $device_enter->table('device_user')->where(['openid'=>$data['openid']])->find();
if($user_find){
return $this->msg(['token' => $user_find['token']]);
}else{
$token = md5($data['openid']);
$user_result = $device_enter->table('device_user')
->insert([
'openid'=>$data['openid'],
'token'=>$token,
'create_time'=>date('Y-m-d H:i:s')
]);
if($user_result){
return $this->msg(['token' => $token]);
}
}
} catch (\Exception $e) {
// 捕获异常
$logContent["flie"] = $e->getFile();
$logContent["line"] = $e->getLine();
$logContent['all_content'] = "异常信息:\n";
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
$logContent['all_content'] .= "方法: " . __METHOD__ . "\n";
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
$this->record_api_log($data, $logContent, null);
return $this->msg(99999);
}
}
}