Files
cursoradminapiformjifengqiang/app/manager/view/package_callback/index.html
2025-02-10 10:39:00 +08:00

232 lines
9.1 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.

{extend name="../../admin/view/main"}
{block name="content"}
<!-- 操作指南开始 -->
<div class="think-box-shadow" style="margin-bottom: 15px; padding: 15px;">
<h3 class="layui-inline" style="margin-right: 15px;">回传配置指南</h3>
<button class="layui-btn layui-btn-sm" id="showGuide">展开/收起</button>
<div class="guide-content layui-hide" style="margin-top: 10px;">
<div class="layui-card">
<div class="layui-card-body">
<div class="layui-elem-quote" style="border-left: 5px solid #009688;">
<h4>基本说明:</h4>
<p>本页面用于管理事件回传配置,支持变量替换功能,可以灵活配置回传地址。</p>
</div>
<div class="layui-elem-quote" style="border-left: 5px solid #FFB800;">
<h4>支持的变量:</h4>
<ol>
<li><code>{package_name}</code> - 应用包名com.example.app</li>
<li><code>{event_name}</code> - 事件名称install, register</li>
<li><code>{event_time}</code> - 事件发生时间格式YYYY-MM-DD HH:mm:ss</li>
<li><code>{gaid}</code> - 广告ID</li>
<li><code>{network_name}</code> - 网络名称AppsFlyer, Kochava</li>
</ol>
</div>
<div class="layui-elem-quote" style="border-left: 5px solid #FF5722;">
<h4>配置示例:</h4>
<ol>
<li>基础URLhttp://api.example.com/callback</li>
<li>
完整示例http://api.example.com/callback?package={package_name}&event={event_name}&time={event_time}&gaid={gaid}&network={network_name}
</li>
<li>实际回传时,花括号中的变量会被替换为实际值</li>
<li>所有特殊字符会自动进行URL编码</li>
</ol>
</div>
<div class="layui-elem-quote" style="border-left: 5px solid #01AAED;">
<h4>注意事项:</h4>
<ol>
<li>变量名称必须使用大括号{}包裹,且区分大小写</li>
<li>同一个包名下不能配置重复的事件名称</li>
<li>回传地址必须以http://或https://开头</li>
<li>建议在测试环境验证回传地址的正确性</li>
<li>可以通过状态开关临时停用某个回传配置</li>
</ol>
</div>
</div>
</div>
</div>
</div>
<!-- 操作指南结束 -->
<!-- 表单搜索区域 -->
<div class="think-box-shadow">
<div class="layui-row">
<div class="layui-col-md11">
<form class="layui-form layui-form-pane form-search" action="">
<div class="layui-form-item layui-inline">
<label class="layui-form-label">包名</label>
<div class="layui-input-inline">
<input name="package_name" placeholder="请输入包名" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">事件名称</label>
<div class="layui-input-inline">
<input name="event_name" placeholder="请输入事件名称" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">状态</label>
<div class="layui-input-inline">
<select name="status" lay-search>
<option value="">所有状态</option>
<option value="1">启用</option>
<option value="0">停用</option>
</select>
</div>
</div>
<div class="layui-form-item layui-inline">
<button class="layui-btn layui-btn-primary" lay-submit lay-filter="search_form">
<i class="layui-icon">&#xe615;</i> 搜 索
</button>
</div>
</form>
</div>
<div class="layui-col-md1 text-right">
<!--{if auth("add")}-->
<button class='layui-btn layui-btn-normal' data-modal='{:url("add")}'
data-title="添加回传配置">
<i class="layui-icon layui-icon-add-circle"></i> 添加事件
</button>
<!--{/if}-->
</div>
</div>
</div>
<!-- 数据表格区域 -->
<div class="think-box-shadow">
<table class="layui-table" id="CallbackTable" data-url="{:url('get_list')}"
data-target-search="form.form-search"></table>
</div>
<!-- 数据操作工具条模板 -->
<script type="text/html" id="toolbar">
<!--{if auth("edit")}-->
<a class="layui-btn layui-btn-sm" data-modal="{:url('edit')}?id={{d.id}}" data-title="编辑回传配置">
<i class="layui-icon layui-icon-edit"></i> 编辑
</a>
<!--{/if}-->
<!--{if auth("remove")}-->
<a class="layui-btn layui-btn-sm layui-btn-danger" data-action="{:url('remove')}" data-value="id#{{d.id}}"
data-confirm="确定要删除此配置吗?">
<i class="layui-icon layui-icon-delete"></i> 删除
</a>
<!--{/if}-->
</script>
<!-- 数据状态切换模板 -->
<script type="text/html" id="statusTpl">
<!--{if auth("state")}-->
<input type="checkbox" value="{{d.id}}" lay-skin="switch" lay-text="启用|停用" lay-filter="status"
{{d.status>0?'checked':''}}>
<!--{else}-->
{{d.status ? '<b class="color-green">启用</b>' : '<b class="color-red">停用</b>'}}
<!--{/if}-->
</script>
{/block}
{block name="script"}
<script>
$(function () {
let table; // 定义表格变量
// 初始化表格组件
table = $('#CallbackTable').layTable({
url: '{:url("get_list")}',
method: 'get',
even: true,
page: true,
limit: 15,
limits: [10, 15, 20, 25, 50, 100],
cols: [[
{field: 'id', title: 'ID', width: 80, align: 'center'},
{field: 'package_name', title: '包名', minWidth: 200},
{field: 'event_name', title: '事件名称', minWidth: 150},
{field: 'callback_url', title: '回传地址', minWidth: 300},
{field: 'status', title: '状态', width: 100, align: 'center', templet: '#statusTpl'},
{field: 'create_at', title: '创建时间', width: 180, align: 'center'},
{title: '操作', toolbar: '#toolbar', width: 180, align: 'center', fixed: 'right'}
]],
text: {
none: '暂无回传配置数据'
}
});
// 数据状态切换操作
form.on('switch(status)', function (obj) {
$.ajax({
url: '{:url("state")}',
type: 'POST',
data: {
id: obj.value,
status: obj.elem.checked ? 1 : 0
},
dataType: 'json',
success: function (res) {
if (res.code === 1) {
layer.msg(res.info, {icon: 1});
// 仅重载表格数据
table.reload('CallbackTable', {
page: {
curr: $(".layui-laypage-em").next().html() // 保持在当前页
}
});
} else {
layer.msg(res.info, {icon: 2});
// 状态切换失败回滚switch状态
obj.elem.checked = !obj.elem.checked;
form.render('checkbox');
}
},
error: function () {
layer.msg('操作失败,请重试', {icon: 2});
// 发生错误时也回滚switch状态
obj.elem.checked = !obj.elem.checked;
form.render('checkbox');
}
});
});
// 操作指南展开/收起
$('#showGuide').on('click', function () {
$('.guide-content').toggleClass('layui-hide');
});
});
</script>
<style>
/* 操作指南样式 */
.guide-content .layui-elem-quote {
margin: 10px 0;
padding: 15px;
background-color: #f8f8f8;
}
.guide-content h4 {
margin-bottom: 10px;
font-weight: bold;
}
.guide-content code {
padding: 2px 4px;
background-color: #f1f1f1;
border-radius: 3px;
color: #333;
font-family: Consolas, monospace;
}
.guide-content ol li {
margin: 5px 0;
color: #666;
}
</style>
{/block}