mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-06-26 20:52:44 +08:00
commit
a0e68f312c
@ -21,6 +21,17 @@ class Controller extends \Phalcon\Mvc\Controller
|
|||||||
|
|
||||||
public function beforeExecuteRoute(Dispatcher $dispatcher)
|
public function beforeExecuteRoute(Dispatcher $dispatcher)
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* demo分支拒绝数据提交
|
||||||
|
*/
|
||||||
|
if ($this->isNotSafeRequest()) {
|
||||||
|
$dispatcher->forward([
|
||||||
|
'controller' => 'public',
|
||||||
|
'action' => 'forbidden',
|
||||||
|
]);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->isNotSafeRequest()) {
|
if ($this->isNotSafeRequest()) {
|
||||||
$this->checkHttpReferer();
|
$this->checkHttpReferer();
|
||||||
$this->checkCsrfToken();
|
$this->checkCsrfToken();
|
||||||
|
@ -327,29 +327,4 @@ class SettingController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @Route("/wechat", name="admin.setting.wechat")
|
|
||||||
*/
|
|
||||||
public function wechatAction()
|
|
||||||
{
|
|
||||||
$settingService = new SettingService();
|
|
||||||
|
|
||||||
if ($this->request->isPost()) {
|
|
||||||
|
|
||||||
$section = $this->request->getPost('section', 'string');
|
|
||||||
|
|
||||||
$data = $this->request->getPost();
|
|
||||||
|
|
||||||
$settingService->updateSettings($section, $data);
|
|
||||||
|
|
||||||
return $this->jsonSuccess(['msg' => '更新配置成功']);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
$oa = $settingService->getWeChatOASettings();
|
|
||||||
|
|
||||||
$this->view->setVar('oa', $oa);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -750,12 +750,6 @@ class AuthNode extends Service
|
|||||||
'type' => 'menu',
|
'type' => 'menu',
|
||||||
'route' => 'admin.setting.oauth',
|
'route' => 'admin.setting.oauth',
|
||||||
],
|
],
|
||||||
[
|
|
||||||
'id' => '5-1-13',
|
|
||||||
'title' => '微信公众平台',
|
|
||||||
'type' => 'menu',
|
|
||||||
'route' => 'admin.setting.wechat',
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
@ -57,16 +57,6 @@ class Setting extends Service
|
|||||||
return $wxpay;
|
return $wxpay;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getWeChatOASettings()
|
|
||||||
{
|
|
||||||
$oa = $this->getSettings('wechat.oa');
|
|
||||||
|
|
||||||
$oa['auth_url'] = $oa['auth_url'] ?: kg_full_url(['for' => 'home.wechat.oa.auth_callback']);
|
|
||||||
$oa['notify_url'] = $oa['notify_url'] ?: kg_full_url(['for' => 'home.wechat.oa.notify_callback']);
|
|
||||||
|
|
||||||
return $oa;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getVipSettings()
|
public function getVipSettings()
|
||||||
{
|
{
|
||||||
$vipRepo = new VipRepo();
|
$vipRepo = new VipRepo();
|
||||||
@ -97,8 +87,16 @@ class Setting extends Service
|
|||||||
|
|
||||||
$result = [];
|
$result = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* demo分支过滤敏感数据
|
||||||
|
*/
|
||||||
if ($items->count() > 0) {
|
if ($items->count() > 0) {
|
||||||
foreach ($items as $item) {
|
foreach ($items as $item) {
|
||||||
|
$case1 = preg_match('/(id|auth|key|secret|password|pwd)$/', $item->item_key);
|
||||||
|
$case2 = $this->dispatcher->getControllerName() == 'setting';
|
||||||
|
if ($case1 && $case2) {
|
||||||
|
$item->item_value = '***';
|
||||||
|
}
|
||||||
$result[$item->item_key] = $item->item_value;
|
$result[$item->item_key] = $item->item_value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
{% extends 'templates/main.volt' %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
|
|
||||||
<div class="layui-tab layui-tab-brief">
|
|
||||||
<ul class="layui-tab-title kg-tab-title">
|
|
||||||
<li class="layui-this">公众号</li>
|
|
||||||
</ul>
|
|
||||||
<div class="layui-tab-content">
|
|
||||||
<div class="layui-tab-item layui-show">
|
|
||||||
{{ partial('setting/wechat_oa') }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% endblock %}
|
|
@ -1,53 +0,0 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.wechat'}) }}">
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">开启公众号</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="radio" name="enabled" value="1" title="是" {% if oa.enabled == "1" %}checked="checked"{% endif %}>
|
|
||||||
<input type="radio" name="enabled" value="0" title="否" {% if oa.enabled == "0" %}checked="checked"{% endif %}>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">App ID</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="app_id" value="{{ oa.app_id }}" lay-verify="required">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">App Secret</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="app_secret" value="{{ oa.app_secret }}" lay-verify="required">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">App Token</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="app_token" value="{{ oa.app_token }}" lay-verify="required">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">Aes Key</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="aes_key" value="{{ oa.aes_key }}" lay-verify="required">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">授权回调地址</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="oauth_url" value="{{ oa.auth_url }}" lay-verify="required">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">通知回调地址</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="notify_url" value="{{ oa.notify_url }}" lay-verify="required">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label"></label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
<input type="hidden" name="section" value="oauth.weixin">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
@ -23,5 +23,11 @@
|
|||||||
{% block include_js %}{% endblock %}
|
{% block include_js %}{% endblock %}
|
||||||
{% block inline_js %}{% endblock %}
|
{% block inline_js %}{% endblock %}
|
||||||
|
|
||||||
|
{% set site = setting('site') %}
|
||||||
|
|
||||||
|
{% if site['analytics_enabled'] == 1 %}
|
||||||
|
{{ site['analytics_script'] }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,40 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Home\Controllers;
|
|
||||||
|
|
||||||
use App\Http\Home\Services\WeChatOfficialAccount as WeChatOAService;
|
|
||||||
use App\Traits\Response as ResponseTrait;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @RoutePrefix("/wechat/oa")
|
|
||||||
*/
|
|
||||||
class WeChatOfficialAccountController extends \Phalcon\Mvc\Controller
|
|
||||||
{
|
|
||||||
|
|
||||||
use ResponseTrait;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Get("/notify", name="home.wechat.oa.verify")
|
|
||||||
*/
|
|
||||||
public function verifyAction()
|
|
||||||
{
|
|
||||||
$service = new WeChatOAService();
|
|
||||||
|
|
||||||
$app = $service->getOfficialAccount();
|
|
||||||
|
|
||||||
$response = $app->server->serve();
|
|
||||||
|
|
||||||
$response->send();
|
|
||||||
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Post("/notify", name="home.wechat.oa.notify")
|
|
||||||
*/
|
|
||||||
public function notifyAction()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Home\Services;
|
|
||||||
|
|
||||||
use App\Services\WeChat as WeChatService;
|
|
||||||
|
|
||||||
class WeChatOfficialAccount extends Service
|
|
||||||
{
|
|
||||||
|
|
||||||
public function getOfficialAccount()
|
|
||||||
{
|
|
||||||
$service = new WeChatService();
|
|
||||||
|
|
||||||
return $service->getOfficialAccount();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,79 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Models;
|
|
||||||
|
|
||||||
use Phalcon\Mvc\Model\Behavior\SoftDelete;
|
|
||||||
|
|
||||||
class WeChatSubscribe extends Model
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 主键编号
|
|
||||||
*
|
|
||||||
* @var int
|
|
||||||
*/
|
|
||||||
public $id;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户编号
|
|
||||||
*
|
|
||||||
* @var int
|
|
||||||
*/
|
|
||||||
public $user_id;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 开放ID
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $open_id;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除标识
|
|
||||||
*
|
|
||||||
* @var int
|
|
||||||
*/
|
|
||||||
public $deleted;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建时间
|
|
||||||
*
|
|
||||||
* @var int
|
|
||||||
*/
|
|
||||||
public $create_time;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新时间
|
|
||||||
*
|
|
||||||
* @var int
|
|
||||||
*/
|
|
||||||
public $update_time;
|
|
||||||
|
|
||||||
public function getSource(): string
|
|
||||||
{
|
|
||||||
return 'kg_wechat_subscribe';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function initialize()
|
|
||||||
{
|
|
||||||
parent::initialize();
|
|
||||||
|
|
||||||
$this->addBehavior(
|
|
||||||
new SoftDelete([
|
|
||||||
'field' => 'deleted',
|
|
||||||
'value' => 1,
|
|
||||||
])
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function beforeCreate()
|
|
||||||
{
|
|
||||||
$this->create_time = time();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function beforeUpdate()
|
|
||||||
{
|
|
||||||
$this->update_time = time();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,59 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Services;
|
|
||||||
|
|
||||||
use EasyWeChat\Factory;
|
|
||||||
use Phalcon\Logger\Adapter\File as FileLogger;
|
|
||||||
|
|
||||||
class WeChat extends Service
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var FileLogger
|
|
||||||
*/
|
|
||||||
protected $logger;
|
|
||||||
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
$this->logger = $this->getLogger('wechat');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getOfficialAccount()
|
|
||||||
{
|
|
||||||
$settings = $this->getSettings('wechat.oa');
|
|
||||||
|
|
||||||
$config = [
|
|
||||||
'app_id' => $settings['app_id'],
|
|
||||||
'secret' => $settings['app_secret'],
|
|
||||||
'token' => $settings['app_token'],
|
|
||||||
'aes_key' => $settings['aes_key'],
|
|
||||||
'log' => $this->getLogOptions(),
|
|
||||||
];
|
|
||||||
|
|
||||||
return Factory::officialAccount($config);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function getLogOptions()
|
|
||||||
{
|
|
||||||
$config = $this->getConfig();
|
|
||||||
|
|
||||||
$default = $config->get('env') == ENV_DEV ? 'dev' : 'prod';
|
|
||||||
|
|
||||||
return [
|
|
||||||
'default' => $default,
|
|
||||||
'channels' => [
|
|
||||||
'dev' => [
|
|
||||||
'driver' => 'daily',
|
|
||||||
'path' => log_path('wechat.log'),
|
|
||||||
'level' => 'debug',
|
|
||||||
],
|
|
||||||
'prod' => [
|
|
||||||
'driver' => 'daily',
|
|
||||||
'path' => log_path('wechat.log'),
|
|
||||||
'level' => 'info',
|
|
||||||
],
|
|
||||||
]
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -20,8 +20,7 @@
|
|||||||
"aferrandini/phpqrcode": "1.0.1",
|
"aferrandini/phpqrcode": "1.0.1",
|
||||||
"xiaochong0302/ip2region": "^1.0",
|
"xiaochong0302/ip2region": "^1.0",
|
||||||
"robmorgan/phinx": "^0.12",
|
"robmorgan/phinx": "^0.12",
|
||||||
"lcobucci/jwt": "^3.3",
|
"lcobucci/jwt": "^3.3"
|
||||||
"overtrue/wechat": "^4.2"
|
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"odan/phinx-migrations-generator": "^5.1",
|
"odan/phinx-migrations-generator": "^5.1",
|
||||||
|
764
composer.lock
generated
764
composer.lock
generated
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user