mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-06-21 19:22:45 +08:00
增加公众号自定义菜单
This commit is contained in:
parent
9db288c406
commit
0902fa35a7
@ -80,7 +80,7 @@ class UpgradeTask extends Task
|
|||||||
$redis->del($statsKey);
|
$redis->del($statsKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "start reset metadata..." . PHP_EOL;
|
echo "end reset metadata..." . PHP_EOL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -328,9 +328,9 @@ class SettingController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Route("/wechat", name="admin.setting.wechat")
|
* @Route("/wechat/oa", name="admin.setting.wechat_oa")
|
||||||
*/
|
*/
|
||||||
public function wechatAction()
|
public function wechatOaAction()
|
||||||
{
|
{
|
||||||
$settingService = new SettingService();
|
$settingService = new SettingService();
|
||||||
|
|
||||||
@ -340,7 +340,7 @@ class SettingController extends Controller
|
|||||||
|
|
||||||
$data = $this->request->getPost();
|
$data = $this->request->getPost();
|
||||||
|
|
||||||
$settingService->updateWechatSettings($section, $data);
|
$settingService->updateWechatOASettings($section, $data);
|
||||||
|
|
||||||
return $this->jsonSuccess(['msg' => '更新配置成功']);
|
return $this->jsonSuccess(['msg' => '更新配置成功']);
|
||||||
|
|
||||||
@ -348,6 +348,7 @@ class SettingController extends Controller
|
|||||||
|
|
||||||
$oa = $settingService->getWechatOASettings();
|
$oa = $settingService->getWechatOASettings();
|
||||||
|
|
||||||
|
$this->view->pick('setting/wechat_oa');
|
||||||
$this->view->setVar('oa', $oa);
|
$this->view->setVar('oa', $oa);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ use App\Services\Mail\Test as TestMailService;
|
|||||||
use App\Services\MyStorage as StorageService;
|
use App\Services\MyStorage as StorageService;
|
||||||
use App\Services\Sms\Test as TestSmsService;
|
use App\Services\Sms\Test as TestSmsService;
|
||||||
use App\Services\Vod as VodService;
|
use App\Services\Vod as VodService;
|
||||||
|
use App\Services\Wechat as WechatService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @RoutePrefix("/admin/test")
|
* @RoutePrefix("/admin/test")
|
||||||
@ -54,6 +55,24 @@ class TestController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Post("/wechat/oa", name="admin.test.wechat_oa")
|
||||||
|
*/
|
||||||
|
public function wechatOaAction()
|
||||||
|
{
|
||||||
|
$wechatService = new WechatService();
|
||||||
|
|
||||||
|
$oa = $wechatService->getOfficialAccount();
|
||||||
|
|
||||||
|
$result = $oa->qrcode->temporary('foo', 86400);
|
||||||
|
|
||||||
|
if (isset($result['ticket'])) {
|
||||||
|
return $this->jsonSuccess(['msg' => '接口返回成功']);
|
||||||
|
} else {
|
||||||
|
return $this->jsonError(['msg' => '接口返回失败,请检查相关配置']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Get("/live/push", name="admin.test.live_push")
|
* @Get("/live/push", name="admin.test.live_push")
|
||||||
*/
|
*/
|
||||||
|
@ -759,9 +759,9 @@ class AuthNode extends Service
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
'id' => '5-1-13',
|
'id' => '5-1-13',
|
||||||
'title' => '微信平台',
|
'title' => '微信公众号',
|
||||||
'type' => 'menu',
|
'type' => 'menu',
|
||||||
'route' => 'admin.setting.wechat',
|
'route' => 'admin.setting.wechat_oa',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
@ -5,6 +5,7 @@ namespace App\Http\Admin\Services;
|
|||||||
use App\Caches\Setting as SettingCache;
|
use App\Caches\Setting as SettingCache;
|
||||||
use App\Repos\Setting as SettingRepo;
|
use App\Repos\Setting as SettingRepo;
|
||||||
use App\Repos\Vip as VipRepo;
|
use App\Repos\Vip as VipRepo;
|
||||||
|
use App\Services\Wechat as WechatService;
|
||||||
|
|
||||||
class Setting extends Service
|
class Setting extends Service
|
||||||
{
|
{
|
||||||
@ -63,6 +64,26 @@ class Setting extends Service
|
|||||||
|
|
||||||
$oa['notify_url'] = $oa['notify_url'] ?: kg_full_url(['for' => 'home.wechat.oa.notify']);
|
$oa['notify_url'] = $oa['notify_url'] ?: kg_full_url(['for' => 'home.wechat.oa.notify']);
|
||||||
|
|
||||||
|
$oa['menu'] = json_decode($oa['menu'], true);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构造一个3*5的二维树形菜单
|
||||||
|
*/
|
||||||
|
for ($i = 0; $i < 3; $i++) {
|
||||||
|
if (!isset($oa['menu'][$i])) {
|
||||||
|
$oa['menu'][$i] = ['name' => sprintf('菜单%s', $i + 1)];
|
||||||
|
}
|
||||||
|
for ($j = 0; $j < 5; $j++) {
|
||||||
|
if (!isset($oa['menu'][$i]['children'][$j])) {
|
||||||
|
$oa['menu'][$i]['children'][$j] = [
|
||||||
|
'type' => 'view',
|
||||||
|
'name' => '',
|
||||||
|
'url' => '',
|
||||||
|
];;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $oa;
|
return $oa;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -171,15 +192,39 @@ class Setting extends Service
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateWechatSettings($section, $settings)
|
public function updateWechatOASettings($section, $settings)
|
||||||
{
|
{
|
||||||
if ($section == 'wechat.oa') {
|
if (!empty($settings['notice_template'])) {
|
||||||
if (isset($settings['notice_template'])) {
|
$settings['notice_template'] = kg_json_encode($settings['notice_template']);
|
||||||
$settings['notice_template'] = kg_json_encode($settings['notice_template']);
|
}
|
||||||
|
|
||||||
|
$buttons = [];
|
||||||
|
|
||||||
|
if (!empty($settings['menu'])) {
|
||||||
|
foreach ($settings['menu'] as $i => $top) {
|
||||||
|
$buttons[$i]['name'] = !empty($top['name']) ? $top['name'] : sprintf('菜单%s', $i + 1);
|
||||||
|
if (!empty($top['url'])) {
|
||||||
|
$buttons[$i]['url'] = $top['url'];
|
||||||
|
$buttons[$i]['type'] = 'view';
|
||||||
|
}
|
||||||
|
foreach ($top['children'] as $j => $sub) {
|
||||||
|
if (!empty($sub['name']) && !empty($sub['url'])) {
|
||||||
|
$buttons[$i]['sub_button'][$j]['name'] = $sub['name'];
|
||||||
|
$buttons[$i]['sub_button'][$j]['url'] = $sub['url'];
|
||||||
|
$buttons[$i]['sub_button'][$j]['type'] = 'view';
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
$settings['menu'] = kg_json_encode($settings['menu']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->updateSettings($section, $settings);
|
$this->updateSettings($section, $settings);
|
||||||
|
|
||||||
|
if (!empty($buttons)) {
|
||||||
|
$service = new WechatService();
|
||||||
|
$oa = $service->getOfficialAccount();
|
||||||
|
$oa->menu->create($buttons);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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,104 +1,24 @@
|
|||||||
{% set notice_template = oa.notice_template|json_decode %}
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.wechat'}) }}">
|
{% block content %}
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">开启</label>
|
<div class="layui-tab layui-tab-brief">
|
||||||
<div class="layui-input-block">
|
<ul class="layui-tab-title kg-tab-title">
|
||||||
<input type="radio" name="enabled" value="1" title="是" {% if oa.enabled == "1" %}checked="checked"{% endif %}>
|
<li class="layui-this">基本设置</li>
|
||||||
<input type="radio" name="enabled" value="0" title="否" {% if oa.enabled == "0" %}checked="checked"{% endif %}>
|
<li class="layui">模板消息</li>
|
||||||
|
<li class="layui">自定义菜单</li>
|
||||||
|
</ul>
|
||||||
|
<div class="layui-tab-content">
|
||||||
|
<div class="layui-tab-item layui-show">
|
||||||
|
{{ partial('setting/wechat_oa_basic') }}
|
||||||
|
</div>
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
{{ partial('setting/wechat_oa_notice') }}
|
||||||
|
</div>
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
{{ partial('setting/wechat_oa_menu') }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">App ID</label>
|
{% endblock %}
|
||||||
<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">Notify Url</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="wechat.oa">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
|
||||||
<legend>模板配置</legend>
|
|
||||||
</fieldset>
|
|
||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.wechat'}) }}">
|
|
||||||
<table class="layui-table kg-table layui-form">
|
|
||||||
<colgroup>
|
|
||||||
<col width="12%">
|
|
||||||
<col width="40%">
|
|
||||||
<col>
|
|
||||||
</colgroup>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>名称</th>
|
|
||||||
<th>模板编号</th>
|
|
||||||
<th></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>登录成功通知</td>
|
|
||||||
<td><input class="layui-input" type="text" name="notice_template[account_login]" value="{{ notice_template.account_login }}" lay-verify="required"></td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>购买成功提醒</td>
|
|
||||||
<td><input class="layui-input" type="text" name="notice_template[order_finish]" value="{{ notice_template.order_finish }}" lay-verify="required"></td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>退款成功通知</td>
|
|
||||||
<td><input class="layui-input" type="text" name="notice_template[refund_finish]" value="{{ notice_template.refund_finish }}" lay-verify="required"></td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>课程直播提醒</td>
|
|
||||||
<td><input class="layui-input" type="text" name="notice_template[live_begin]" value="{{ notice_template.live_begin }}" lay-verify="required"></td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>咨询结果通知</td>
|
|
||||||
<td><input class="layui-input" type="text" name="notice_template[consult_reply]" value="{{ notice_template.consult_reply }}" lay-verify="required"></td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<br>
|
|
||||||
<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="wechat.oa">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
66
app/Http/Admin/Views/setting/wechat_oa_basic.volt
Normal file
66
app/Http/Admin/Views/setting/wechat_oa_basic.volt
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.wechat_oa'}) }}">
|
||||||
|
<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">Notify Url</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="wechat.oa">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.wechat_oa'}) }}">
|
||||||
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
|
<legend>接口测试</legend>
|
||||||
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">请求方法</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="file" value="qrcode/create" readonly="readonly">
|
||||||
|
</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>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
42
app/Http/Admin/Views/setting/wechat_oa_menu.volt
Normal file
42
app/Http/Admin/Views/setting/wechat_oa_menu.volt
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.wechat_oa'}) }}">
|
||||||
|
<table class="layui-table kg-table layui-form">
|
||||||
|
<colgroup>
|
||||||
|
<col width="15%">
|
||||||
|
<col width="20%">
|
||||||
|
<col>
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>层级</th>
|
||||||
|
<th>名称</th>
|
||||||
|
<th>链接</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for i,top in oa.menu %}
|
||||||
|
<tr>
|
||||||
|
<td>├──</td>
|
||||||
|
<td><input class="layui-input" type="text" name="menu[{{ i }}][name]" value="{{ top.name }}" placeholder="一级菜单最多4个汉字" lay-verify="required"></td>
|
||||||
|
<td><input class="layui-input" type="text" name="menu[{{ i }}][url]" value="{{ top.url }}" placeholder="网页链接"></td>
|
||||||
|
</tr>
|
||||||
|
{% for j,sub in top.children %}
|
||||||
|
<tr>
|
||||||
|
<td><span style="padding: 0 15px;"></span>├──</td>
|
||||||
|
<td><input class="layui-input" type="text" name="menu[{{ i }}][children][{{ j }}][name]" value="{{ sub.name }}" placeholder="二级菜单最多7个汉字"></td>
|
||||||
|
<td><input class="layui-input" type="text" name="menu[{{ i }}][children][{{ j }}][url]" value="{{ sub.url }}" placeholder="网页链接"></td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<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="wechat.oa">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
47
app/Http/Admin/Views/setting/wechat_oa_notice.volt
Normal file
47
app/Http/Admin/Views/setting/wechat_oa_notice.volt
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
{% set notice_template = oa.notice_template|json_decode %}
|
||||||
|
|
||||||
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.wechat_oa'}) }}">
|
||||||
|
<table class="layui-table kg-table layui-form">
|
||||||
|
<colgroup>
|
||||||
|
<col width="15%">
|
||||||
|
<col>
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>模板名称</th>
|
||||||
|
<th>模板编号</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>登录成功通知</td>
|
||||||
|
<td><input class="layui-input" type="text" name="notice_template[account_login]" value="{{ notice_template.account_login }}" lay-verify="required"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>购买成功提醒</td>
|
||||||
|
<td><input class="layui-input" type="text" name="notice_template[order_finish]" value="{{ notice_template.order_finish }}" lay-verify="required"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>退款成功通知</td>
|
||||||
|
<td><input class="layui-input" type="text" name="notice_template[refund_finish]" value="{{ notice_template.refund_finish }}" lay-verify="required"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>课程直播提醒</td>
|
||||||
|
<td><input class="layui-input" type="text" name="notice_template[live_begin]" value="{{ notice_template.live_begin }}" lay-verify="required"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>咨询结果通知</td>
|
||||||
|
<td><input class="layui-input" type="text" name="notice_template[consult_reply]" value="{{ notice_template.consult_reply }}" lay-verify="required"></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<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="wechat.oa">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
68
db/migrations/20210106112717_data_202101061830.php
Normal file
68
db/migrations/20210106112717_data_202101061830.php
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
use Phinx\Migration\AbstractMigration;
|
||||||
|
|
||||||
|
final class Data202101061830 extends AbstractMigration
|
||||||
|
{
|
||||||
|
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
$menu = [
|
||||||
|
[
|
||||||
|
'name' => '菜单1',
|
||||||
|
'url' => '',
|
||||||
|
'children' => [
|
||||||
|
[
|
||||||
|
'type' => 'view',
|
||||||
|
'name' => '菜单1-1',
|
||||||
|
'url' => 'https://gitee.com/koogua'
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => '菜单2',
|
||||||
|
'url' => '',
|
||||||
|
'children' => [
|
||||||
|
[
|
||||||
|
'type' => 'view',
|
||||||
|
'name' => '菜单2-1',
|
||||||
|
'url' => 'https://gitee.com/koogua'
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => '菜单3',
|
||||||
|
'url' => '',
|
||||||
|
'children' => [
|
||||||
|
[
|
||||||
|
'type' => 'view',
|
||||||
|
'name' => '菜单3-1',
|
||||||
|
'url' => 'https://gitee.com/koogua'
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
$rows = [
|
||||||
|
[
|
||||||
|
'section' => 'wechat.oa',
|
||||||
|
'item_key' => 'menu',
|
||||||
|
'item_value' => json_encode($menu),
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->table('kg_setting')->insert($rows)->save();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
$this->getQueryBuilder()
|
||||||
|
->delete('kg_setting')
|
||||||
|
->where(['section' => 'wechat.oa', 'item_key' => 'menu'])
|
||||||
|
->execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -30,8 +30,9 @@ layui.use(['jquery', 'form', 'element', 'layer', 'dropdown'], function () {
|
|||||||
404: function () {
|
404: function () {
|
||||||
layer.msg('资源不存在', {icon: 2, anim: 6});
|
layer.msg('资源不存在', {icon: 2, anim: 6});
|
||||||
},
|
},
|
||||||
500: function () {
|
500: function (xhr) {
|
||||||
layer.msg('服务器内部错误', {icon: 2, anim: 6});
|
var res = JSON.parse(xhr.responseText);
|
||||||
|
layer.msg(res.msg, {icon: 2, anim: 6});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user