Files
coruna-lab/resources/views/admin/system/settings.blade.php
T
2026-08-15 23:05:51 +08:00

156 lines
7.0 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@extends('admin.content')
@section('title', '系统设置')
@section('content')
<div class="layui-card">
<div class="layui-card-header">系统设置</div>
<div class="layui-card-body">
<form class="layui-form" lay-filter="LAY-settings-form" id="LAY-settings-form">
<fieldset class="layui-elem-field layui-field-title">
<legend>Telegram Bot</legend>
</fieldset>
<div class="layui-form-item">
<label class="layui-form-label">Bot Token</label>
<div class="layui-input-block">
<input type="text" name="telegram_bot_token" class="layui-input" autocomplete="off"
value="{{ $form['telegram.bot_token'] }}">
<div class="layui-form-mid layui-word-aux" id="LAY-telegram-bot-name">
@if($botUsername)
当前 Bot:<b>{{ $botUsername }}</b>
@if($botInviteUrl)
· <a href="{{ $botInviteUrl }}" target="_blank" rel="noopener">邀请进群</a>
@endif
@else
保存 Token 后会通过 Telegram getMe 自动识别 @用户名,无需手填。
@endif
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Chat ID</label>
<div class="layui-input-block">
<div style="display:flex;gap:8px;align-items:center;max-width:640px;">
<input type="text" name="telegram_owner_chat_id" class="layui-input" autocomplete="off"
value="{{ $form['telegram.owner_chat_id'] }}" placeholder="官方通知群 chat_id" style="flex:1;">
<button type="button" class="layui-btn layui-btn-primary" id="LAY-telegram-test" style="flex-shrink:0;">测试推送</button>
</div>
<div class="layui-form-mid layui-word-aux" id="LAY-telegram-chat-hint">
@if($botUsername)
请邀请 <b>{{ $botUsername }}</b> 进群(进群后 Bot 会回复 Chat ID),再填到这里。全站共用这一个 Bot;代理单独推送只需在「代理用户」里填 Chat ID。
@else
全站共用这一个 Bot。此处为官方通知群;代理单独推送只需在「代理用户」里填 Chat ID。保存 Token 后会提示要邀请哪个 Bot。
@endif
</div>
</div>
</div>
<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">
<textarea name="panel_admin_hosts" class="layui-textarea" rows="3"
placeholder="多行或逗号分隔,如:admin.example.com">{{ $form['panel.admin_hosts'] }}</textarea>
<div class="layui-form-mid layui-word-aux">留空不限制;填写后仅这些 Host 可打开 /admin(其它域名 404)。也可设 .env CORUNA_ADMIN_HOSTS</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">运营后台</label>
<div class="layui-input-block">
<textarea name="panel_agent_hosts" class="layui-textarea" rows="3"
placeholder="多行或逗号分隔,如:agent.example.com">{{ $form['panel.agent_hosts'] }}</textarea>
<div class="layui-form-mid layui-word-aux">留空不限制;填写后仅这些 Host 可打开 /user(其它域名 404)。也可设 .env CORUNA_AGENT_HOSTS</div>
</div>
</div>
<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">
<textarea name="channels_domains" class="layui-textarea" rows="4"
placeholder="多行或逗号分隔,如:cdn1.example.com&#10;cdn2.example.com">{{ $form['channels.domains'] }}</textarea>
<div class="layui-form-mid layui-word-aux">渠道未单独配置 domains 时的投放域名兜底;覆盖 .env 的 CORUNA_LAB_CHANNEL_DOMAINS。API/上报域名请用 CORUNA_REPORTING_DOMAINS</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">代理渠道上限</label>
<div class="layui-input-block">
<input type="number" min="1" max="100" name="channels_max_per_agent" class="layui-input"
value="{{ $form['channels.max_per_agent'] }}" style="max-width:160px;">
<div class="layui-form-mid layui-word-aux">每个代理用户最多可拥有的渠道链接数(官方不限)</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="LAY-settings-save">保存配置</button>
</div>
</div>
</form>
</div>
</div>
@endsection
@push('scripts')
<script>
layui.use(['form', 'layer'], function () {
var form = layui.form, layer = layui.layer, $ = layui.$;
var token = @json(csrf_token());
form.on('submit(LAY-settings-save)', function (data) {
$.ajax({
url: @json(route('admin.system.settings.update')),
method: 'POST',
data: Object.assign({}, data.field, { _token: token }),
success: function (res) {
layer.msg(res.msg || (res.code === 0 ? '已保存' : '失败'));
if (res.code === 0 && res.data) {
var name = res.data.bot_username || '';
var url = res.data.bot_invite_url || '';
if (name) {
var invite = url ? ' · <a href="' + url + '" target="_blank" rel="noopener">邀请进群</a>' : '';
$('#LAY-telegram-bot-name').html('当前 Bot:<b>' + name + '</b>' + invite);
$('#LAY-telegram-chat-hint').html('请邀请 <b>' + name + '</b> 进群(进群后 Bot 会回复 Chat ID),再填到这里。全站共用这一个 Bot;代理单独推送只需在「代理用户」里填 Chat ID。');
} else {
$('#LAY-telegram-bot-name').text('保存 Token 后会通过 Telegram getMe 自动识别 @用户名,无需手填。');
}
}
},
error: function (xhr) {
layer.msg((xhr.responseJSON && xhr.responseJSON.message) || '保存失败');
}
});
return false;
});
$('#LAY-telegram-test').on('click', function () {
var $btn = $(this);
if ($btn.prop('disabled')) return;
$btn.prop('disabled', true);
$.ajax({
url: @json(route('admin.system.settings.telegramTest')),
method: 'POST',
data: {
_token: token,
chat_id: $('input[name=telegram_owner_chat_id]').val(),
bot_token: $('input[name=telegram_bot_token]').val()
},
success: function (res) {
layer.msg(res.msg || (res.code === 0 ? '已发送' : '失败'));
},
error: function (xhr) {
layer.msg((xhr.responseJSON && xhr.responseJSON.message) || '测试失败');
},
complete: function () {
$btn.prop('disabled', false);
}
});
});
});
</script>
@endpush