Update WechatService.php

This commit is contained in:
邹景立 2021-09-16 11:07:38 +08:00
parent 038363d008
commit 109ddcc6a7

View File

@ -16,6 +16,7 @@
namespace app\wechat\service; namespace app\wechat\service;
use think\admin\Exception;
use think\admin\extend\JsonRpcClient; use think\admin\extend\JsonRpcClient;
use think\admin\Service; use think\admin\Service;
use think\admin\storage\LocalStorage; use think\admin\storage\LocalStorage;
@ -97,15 +98,16 @@ class WechatService extends Service
*/ */
public static function __callStatic(string $name, array $arguments) public static function __callStatic(string $name, array $arguments)
{ {
[$type, $class, $classname] = static::parseName($name); [$type, $base, $class] = static::parseName($name);
if ("{$type}{$class}" !== $name) { if ("{$type}{$base}" !== $name) {
throw new \think\admin\Exception("抱歉,实例 {$name}符合规则!"); throw new Exception("抱歉,实例 {$name}符合规则!");
} }
if (sysconf('wechat.type') === 'api' || $type === 'WePay') { if (sysconf('wechat.type') === 'api' || $type === 'WePay') {
if ($type === 'ThinkService') { if (class_exists($class)) {
throw new \think\admin\Exception("抱歉,接口模式不能实例 {$classname} 对象!"); return new $class(static::instance()->getConfig());
} else {
throw new Exception("抱歉,接口模式无法实例 {$class} 对象!");
} }
return new $classname(static::instance()->getConfig());
} else { } else {
[$appid, $appkey] = [sysconf('wechat.thr_appid'), sysconf('wechat.thr_appkey')]; [$appid, $appkey] = [sysconf('wechat.thr_appid'), sysconf('wechat.thr_appkey')];
$data = ['class' => $name, 'appid' => $appid, 'time' => time(), 'nostr' => uniqid()]; $data = ['class' => $name, 'appid' => $appid, 'time' => time(), 'nostr' => uniqid()];
@ -125,8 +127,8 @@ class WechatService extends Service
{ {
foreach (['WeChat', 'WeMini', 'WeOpen', 'WePay', 'ThinkService'] as $type) { foreach (['WeChat', 'WeMini', 'WeOpen', 'WePay', 'ThinkService'] as $type) {
if (strpos($name, $type) === 0) { if (strpos($name, $type) === 0) {
[, $class] = explode($type, $name); [, $base] = explode($type, $name);
return [$type, $class, "\\{$type}\\{$class}"]; return [$type, $base, "\\{$type}\\{$base}"];
} }
} }
return ['-', '-', $name]; return ['-', '-', $name];
@ -161,7 +163,7 @@ class WechatService extends Service
{ {
$type = strtolower(sysconf('wechat.type')); $type = strtolower(sysconf('wechat.type'));
if (in_array($type, ['api', 'thr'])) return $type; if (in_array($type, ['api', 'thr'])) return $type;
throw new \think\admin\Exception('请在后台配置微信对接授权模式'); throw new Exception('请在后台配置微信对接授权模式');
} }
/** /**
@ -246,7 +248,7 @@ class WechatService extends Service
} elseif ((empty($isfull) && !empty($openid)) || (!empty($isfull) && !empty($openid) && !empty($userinfo))) { } elseif ((empty($isfull) && !empty($openid)) || (!empty($isfull) && !empty($openid) && !empty($userinfo))) {
return ['openid' => $openid, 'fansinfo' => $userinfo]; return ['openid' => $openid, 'fansinfo' => $userinfo];
} else { } else {
throw new \think\admin\Exception('Query params [rcode] not find.'); throw new Exception('Query params [rcode] not find.');
} }
} else { } else {
$result = static::ThinkServiceConfig()->oauth($this->app->session->getId(), $source, $isfull); $result = static::ThinkServiceConfig()->oauth($this->app->session->getId(), $source, $isfull);