推送配置功能新增
This commit is contained in:
parent
10d5d90dd5
commit
7aa55a7c1c
@ -28,7 +28,8 @@ use app\admin\model\AdminUser;
|
|||||||
use app\admin\model\User\Users;
|
use app\admin\model\User\Users;
|
||||||
use app\admin\model\User\UsersGroup;
|
use app\admin\model\User\UsersGroup;
|
||||||
use app\admin\model\Banner;
|
use app\admin\model\Banner;
|
||||||
use app\admin\model\ContentPush;
|
use app\admin\model\ContentPush\ContentPush;
|
||||||
|
use app\admin\model\ContentPush\ContentPushSetting;
|
||||||
|
|
||||||
|
|
||||||
class YunzeradminController extends Base
|
class YunzeradminController extends Base
|
||||||
@ -737,8 +738,9 @@ class YunzeradminController extends Base
|
|||||||
}
|
}
|
||||||
Log::record('添加内容推送', 1, '', '内容推送管理');
|
Log::record('添加内容推送', 1, '', '内容推送管理');
|
||||||
return json(['code' => 0, 'msg' => '添加成功']);
|
return json(['code' => 0, 'msg' => '添加成功']);
|
||||||
|
} else {
|
||||||
|
return View::fetch();
|
||||||
}
|
}
|
||||||
return json(['code' => 1, 'msg' => '请求方法无效']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 编辑内容推送
|
// 编辑内容推送
|
||||||
@ -817,6 +819,100 @@ class YunzeradminController extends Base
|
|||||||
return json(['code' => 1, 'msg' => '请求方法无效']);
|
return json(['code' => 1, 'msg' => '请求方法无效']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//推送配置列表(渲染列表)
|
||||||
|
public function contentpushsetting()
|
||||||
|
{
|
||||||
|
if (Request::isAjax() || Request::isPost()) {
|
||||||
|
$page = intval(input('get.page', 1));
|
||||||
|
$limit = intval(input('get.limit', 10));
|
||||||
|
|
||||||
|
$query = ContentPushSetting::where('delete_time', null)
|
||||||
|
->field('id, title, value, status, sort, create_time');
|
||||||
|
|
||||||
|
$count = $query->count();
|
||||||
|
|
||||||
|
$lists = $query->order(['sort' => 'DESC', 'id' => 'DESC'])
|
||||||
|
->page($page, $limit)
|
||||||
|
->select()
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
foreach ($lists as &$item) {
|
||||||
|
$item['create_time'] = is_numeric($item['create_time']) ? date('Y-m-d H:i:s', $item['create_time']) : $item['create_time'];
|
||||||
|
}
|
||||||
|
|
||||||
|
return json([
|
||||||
|
'code' => 0,
|
||||||
|
'msg' => '获取成功',
|
||||||
|
'count' => $count,
|
||||||
|
'data' => $lists
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
return View::fetch();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//推送配置添加和编辑通用方法
|
||||||
|
public function contentpushsettingadd()
|
||||||
|
{
|
||||||
|
if (Request::isPost()) {
|
||||||
|
$params = input('post.');
|
||||||
|
$id = isset($params['id']) ? intval($params['id']) : 0;
|
||||||
|
|
||||||
|
if ($id > 0) {
|
||||||
|
// 编辑
|
||||||
|
$res = ContentPushSetting::update($params, ['id' => $id]);
|
||||||
|
if ($res === false) {
|
||||||
|
Log::record('编辑推送配置', 0, '编辑推送配置失败', '推送配置管理');
|
||||||
|
return json(['code' => 1, 'msg' => '编辑推送配置失败']);
|
||||||
|
}
|
||||||
|
Log::record('编辑推送配置', 1, '', '推送配置管理');
|
||||||
|
return json(['code' => 0, 'msg' => '编辑成功']);
|
||||||
|
} else {
|
||||||
|
// 添加
|
||||||
|
$res = ContentPushSetting::create($params);
|
||||||
|
if (!$res) {
|
||||||
|
Log::record('添加推送配置', 0, '添加推送配置失败', '推送配置管理');
|
||||||
|
return json(['code' => 1, 'msg' => '添加推送配置失败']);
|
||||||
|
}
|
||||||
|
Log::record('添加推送配置', 1, '', '推送配置管理');
|
||||||
|
return json(['code' => 0, 'msg' => '添加成功']);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$id = input('get.id', 0);
|
||||||
|
$info = [];
|
||||||
|
if ($id) {
|
||||||
|
$info = ContentPushSetting::where('id', $id)->find();
|
||||||
|
if ($info) {
|
||||||
|
$info = $info->toArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return View::fetch('', ['info' => $info]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//推送配置软删除
|
||||||
|
public function contentpushsettingdel()
|
||||||
|
{
|
||||||
|
if (Request::isPost()) {
|
||||||
|
$id = intval(input('post.id', 0));
|
||||||
|
if (!$id) {
|
||||||
|
return json(['code' => 1, 'msg' => '参数错误']);
|
||||||
|
}
|
||||||
|
$setting = ContentPushSetting::where('id', $id)->find();
|
||||||
|
if (!$setting) {
|
||||||
|
return json(['code' => 1, 'msg' => '配置不存在']);
|
||||||
|
}
|
||||||
|
$res = ContentPushSetting::where('id', $id)->update(['delete_time' => date('Y-m-d H:i:s')]);
|
||||||
|
if ($res === false) {
|
||||||
|
Log::record('删除推送配置', 0, '删除失败', '推送配置管理');
|
||||||
|
return json(['code' => 1, 'msg' => '删除失败']);
|
||||||
|
}
|
||||||
|
Log::record('删除推送配置', 1, '', '推送配置管理');
|
||||||
|
return json(['code' => 0, 'msg' => '删除成功']);
|
||||||
|
}
|
||||||
|
return json(['code' => 1, 'msg' => '请求方式错误']);
|
||||||
|
}
|
||||||
|
|
||||||
//素材中心
|
//素材中心
|
||||||
public function materialcenter()
|
public function materialcenter()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -16,7 +16,7 @@
|
|||||||
* 3. 禁止转售或分发
|
* 3. 禁止转售或分发
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace app\admin\model;
|
namespace app\admin\model\ContentPush;
|
||||||
|
|
||||||
use think\Model;
|
use think\Model;
|
||||||
|
|
||||||
34
app/admin/model/ContentPush/ContentPushSetting.php
Normal file
34
app/admin/model/ContentPush/ContentPushSetting.php
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* 商业使用授权协议
|
||||||
|
*
|
||||||
|
* Copyright (c) 2025 [云泽网]. 保留所有权利.
|
||||||
|
*
|
||||||
|
* 本软件仅供评估使用。任何商业用途必须获得书面授权许可。
|
||||||
|
* 未经授权商业使用本软件属于侵权行为,将承担法律责任。
|
||||||
|
*
|
||||||
|
* 授权购买请联系: 357099073@qq.com
|
||||||
|
* 官方网站: https://www.yunzer.cn
|
||||||
|
*
|
||||||
|
* 评估用户须知:
|
||||||
|
* 1. 禁止移除版权声明
|
||||||
|
* 2. 禁止用于生产环境
|
||||||
|
* 3. 禁止转售或分发
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace app\admin\model\ContentPush;
|
||||||
|
|
||||||
|
use think\Model;
|
||||||
|
|
||||||
|
class ContentPushSetting extends Model
|
||||||
|
{
|
||||||
|
protected $name = 'content_push_setting';
|
||||||
|
|
||||||
|
// 自动写入时间戳
|
||||||
|
protected $autoWriteTimestamp = true;
|
||||||
|
|
||||||
|
// 定义时间戳字段名
|
||||||
|
protected $createTime = 'create_time';
|
||||||
|
protected $updateTime = 'update_time';
|
||||||
|
protected $deleteTime = 'delete_time';
|
||||||
|
}
|
||||||
@ -10,6 +10,9 @@
|
|||||||
<div>
|
<div>
|
||||||
<button class="layui-btn layui-bg-blue" onclick="add()">
|
<button class="layui-btn layui-bg-blue" onclick="add()">
|
||||||
<i class="layui-icon layui-icon-add-1"></i>添加推送
|
<i class="layui-icon layui-icon-add-1"></i>添加推送
|
||||||
|
</button>
|
||||||
|
<button class="layui-btn layui-bg-blue" onclick="setting()">
|
||||||
|
<i class="layui-icon layui-icon-set-fill"></i>推送配置
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="layui-btn layui-btn-primary layui-border-blue" onclick="refresh()">
|
<button type="button" class="layui-btn layui-btn-primary layui-border-blue" onclick="refresh()">
|
||||||
<i class="layui-icon layui-icon-refresh"></i>刷新
|
<i class="layui-icon layui-icon-refresh"></i>刷新
|
||||||
@ -119,6 +122,17 @@
|
|||||||
}, 'json');
|
}, 'json');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//配置
|
||||||
|
function setting(){
|
||||||
|
layer.open({
|
||||||
|
type: 2,
|
||||||
|
title: '推送配置',
|
||||||
|
shade: 0.3,
|
||||||
|
area: ['1000px', '800px'],
|
||||||
|
content: "{$config['admin_route']}yunzeradmin/contentpushsetting"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// 刷新列表
|
// 刷新列表
|
||||||
function refresh() {
|
function refresh() {
|
||||||
layui.table.reload('contentPushTable');
|
layui.table.reload('contentPushTable');
|
||||||
|
|||||||
109
app/admin/view/yunzeradmin/contentpushsetting.php
Normal file
109
app/admin/view/yunzeradmin/contentpushsetting.php
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
{include file="public/header" /}
|
||||||
|
<div class="config-container">
|
||||||
|
<div class="config-header" style="display: flex;flex-direction: column;flex-wrap: wrap;align-items: flex-start;">
|
||||||
|
<div class="maintitle">
|
||||||
|
<i class="layui-icon layui-icon-set-fill"></i>
|
||||||
|
<span>推送配置列表</span>
|
||||||
|
</div>
|
||||||
|
<div style="display: flex;align-items: flex-start;flex-direction: column;gap: 15px;margin-bottom: 10px;">
|
||||||
|
<div>
|
||||||
|
<button class="layui-btn layui-bg-blue" onclick="addSetting()">
|
||||||
|
<i class="layui-icon layui-icon-add-1"></i>添加配置
|
||||||
|
</button>
|
||||||
|
<button type="button" class="layui-btn layui-btn-primary layui-border-blue" onclick="refreshSetting()">
|
||||||
|
<i class="layui-icon layui-icon-refresh"></i>刷新
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<table id="contentPushSettingTable" lay-filter="contentPushSettingTable"></table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/html" id="settingTableBar">
|
||||||
|
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
|
||||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
layui.use(['table', 'layer'], function () {
|
||||||
|
var table = layui.table;
|
||||||
|
var layer = layui.layer;
|
||||||
|
var $ = layui.jquery;
|
||||||
|
|
||||||
|
// 渲染表格
|
||||||
|
table.render({
|
||||||
|
elem: '#contentPushSettingTable',
|
||||||
|
url: '{$config["admin_route"]}yunzeradmin/contentpushsetting',
|
||||||
|
page: true,
|
||||||
|
cols: [[
|
||||||
|
{field: 'id', title: 'ID', width: 80, sort: true},
|
||||||
|
{field: 'title', title: '配置标题', width: 200},
|
||||||
|
{field: 'value', title: '配置值', width: 300},
|
||||||
|
{field: 'status', title: '状态', width: 100, templet: function(d){
|
||||||
|
return d.status == 1 ?
|
||||||
|
'<span class="layui-badge layui-bg-green">启用</span>' :
|
||||||
|
'<span class="layui-badge">禁用</span>';
|
||||||
|
}},
|
||||||
|
{field: 'sort', title: '排序', width: 100, sort: true},
|
||||||
|
{field: 'create_time', title: '创建时间', width: 180},
|
||||||
|
{title: '操作', width: 160, toolbar: '#settingTableBar', fixed: 'right'}
|
||||||
|
]],
|
||||||
|
limit: 10,
|
||||||
|
limits: [10, 20, 30, 50]
|
||||||
|
});
|
||||||
|
|
||||||
|
// 工具条事件
|
||||||
|
table.on('tool(contentPushSettingTable)', function(obj){
|
||||||
|
var data = obj.data;
|
||||||
|
if(obj.event === 'edit'){
|
||||||
|
editSetting(data.id);
|
||||||
|
} else if(obj.event === 'del'){
|
||||||
|
layer.confirm('确定要删除该配置吗?', function(index){
|
||||||
|
$.post('{$config["admin_route"]}yunzeradmin/contentpushsettingdel', {id: data.id}, function(res){
|
||||||
|
if(res.code == 0){
|
||||||
|
layer.msg('删除成功', {icon: 1});
|
||||||
|
table.reload('contentPushSettingTable');
|
||||||
|
} else {
|
||||||
|
layer.msg(res.msg, {icon: 2});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
layer.close(index);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 刷新
|
||||||
|
window.refreshSetting = function(){
|
||||||
|
table.reload('contentPushSettingTable');
|
||||||
|
};
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
window.addSetting = function(){
|
||||||
|
layer.open({
|
||||||
|
type: 2,
|
||||||
|
title: '添加推送配置',
|
||||||
|
area: ['800px', '600px'],
|
||||||
|
content: '{$config["admin_route"]}yunzeradmin/contentpushsettingadd',
|
||||||
|
end: function(){
|
||||||
|
table.reload('contentPushSettingTable');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
window.editSetting = function(id){
|
||||||
|
layer.open({
|
||||||
|
type: 2,
|
||||||
|
title: '编辑推送配置',
|
||||||
|
area: ['600px', '400px'],
|
||||||
|
content: '{$config["admin_route"]}yunzeradmin/contentpushsettingadd?id=' + id,
|
||||||
|
end: function(){
|
||||||
|
table.reload('contentPushSettingTable');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{include file="public/tail" /}
|
||||||
75
app/admin/view/yunzeradmin/contentpushsettingadd.php
Normal file
75
app/admin/view/yunzeradmin/contentpushsettingadd.php
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
{include file="public/header" /}
|
||||||
|
<div class="config-container">
|
||||||
|
<form class="layui-form" action="{$config['admin_route']}yunzeradmin/contentpushsettingadd" method="post" lay-filter="contentPushForm">
|
||||||
|
{if isset($info.id)}
|
||||||
|
<input type="hidden" name="id" value="{$info.id}">
|
||||||
|
{/if}
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">配置标题</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="text" name="title" required lay-verify="required" placeholder="请输入配置标题" autocomplete="off" class="layui-input" value="{$info.title|default=''}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">配置值</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<textarea name="value" placeholder="请输入配置值" class="layui-textarea" required lay-verify="required">{$info.value|default=''}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">状态</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="radio" name="status" value="1" title="启用" {if !isset($info.status) || $info.status==1}checked{/if}>
|
||||||
|
<input type="radio" name="status" value="0" title="禁用" {if isset($info.status) && $info.status==0}checked{/if}>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">排序</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="number" name="sort" value="{$info.sort|default='0'}" placeholder="请输入排序值" autocomplete="off" class="layui-input">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<button class="layui-btn" lay-submit lay-filter="contentPushForm">立即提交</button>
|
||||||
|
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
layui.use(['form', 'upload', 'layer'], function(){
|
||||||
|
var form = layui.form;
|
||||||
|
var upload = layui.upload;
|
||||||
|
var layer = layui.layer;
|
||||||
|
var $ = layui.jquery;
|
||||||
|
|
||||||
|
// 表单提交
|
||||||
|
form.on('submit(contentPushForm)', function(data){
|
||||||
|
$.ajax({
|
||||||
|
url: data.form.action,
|
||||||
|
type: 'POST',
|
||||||
|
data: data.field,
|
||||||
|
success: function(res){
|
||||||
|
if(res.code == 0){
|
||||||
|
layer.msg(res.msg, {icon: 1}, function(){
|
||||||
|
var index = parent.layer.getFrameIndex(window.name);
|
||||||
|
parent.layer.close(index);
|
||||||
|
parent.layui.table.reload('contentPushTable');
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
layer.msg(res.msg, {icon: 2});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{include file="public/tail" /}
|
||||||
Loading…
x
Reference in New Issue
Block a user