推送更新
This commit is contained in:
parent
46e5333864
commit
47cfb7dcaf
@ -9,6 +9,7 @@ use app\admin\model\AdminSysMenu;
|
||||
use app\admin\model\AdminUserGroup;
|
||||
use app\admin\model\AdminUser;
|
||||
use app\admin\model\Banner;
|
||||
use app\admin\model\ContentPush;
|
||||
|
||||
|
||||
class YunzeradminController extends Base
|
||||
@ -451,4 +452,147 @@ class YunzeradminController extends Base
|
||||
}
|
||||
return json(['code' => 1, 'msg' => '请求方法无效']);
|
||||
}
|
||||
|
||||
//内容推送
|
||||
public function contentpush()
|
||||
{
|
||||
return View::fetch();
|
||||
}
|
||||
|
||||
// 内容推送列表
|
||||
public function contentpushlist()
|
||||
{
|
||||
if (Request::isGet()) {
|
||||
$page = intval(input('post.page', 1));
|
||||
$limit = intval(input('post.limit', 10));
|
||||
|
||||
$query = ContentPush::where('delete_time', null)
|
||||
->field('id, title, type, status, sort, create_time, update_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'];
|
||||
$item['update_time'] = is_numeric($item['update_time']) ? date('Y-m-d H:i:s', $item['update_time']) : $item['update_time'];
|
||||
}
|
||||
|
||||
return json([
|
||||
'code' => 0,
|
||||
'msg' => '',
|
||||
'count' => $count,
|
||||
'data' => $lists
|
||||
]);
|
||||
}
|
||||
return json(['code' => 1, 'msg' => '请求方法无效']);
|
||||
}
|
||||
|
||||
// 添加内容推送
|
||||
public function contentpushadd()
|
||||
{
|
||||
if (Request::isPost()) {
|
||||
$data = [
|
||||
'title' => input('post.title'),
|
||||
'content' => input('post.content'),
|
||||
'image' => input('post.image'),
|
||||
'url' => input('post.url'),
|
||||
'type' => input('post.type', 1),
|
||||
'status' => input('post.status', 1),
|
||||
'sort' => input('post.sort', 0),
|
||||
'create_time' => time()
|
||||
];
|
||||
|
||||
$res = ContentPush::insert($data);
|
||||
if (!$res) {
|
||||
Log::record('添加内容推送', 0, '添加内容推送失败', '内容推送管理');
|
||||
return json(['code' => 1, 'msg' => '添加内容推送失败']);
|
||||
}
|
||||
Log::record('添加内容推送', 1, '', '内容推送管理');
|
||||
return json(['code' => 0, 'msg' => '添加成功']);
|
||||
}
|
||||
return json(['code' => 1, 'msg' => '请求方法无效']);
|
||||
}
|
||||
|
||||
// 编辑内容推送
|
||||
public function contentpushedit()
|
||||
{
|
||||
if (Request::isPost()) {
|
||||
$id = input('post.id');
|
||||
if (empty($id)) {
|
||||
Log::record('编辑内容推送', 0, 'ID不能为空', '内容推送管理');
|
||||
return json(['code' => 1, 'msg' => 'ID不能为空']);
|
||||
}
|
||||
|
||||
$data = [
|
||||
'title' => input('post.title'),
|
||||
'content' => input('post.content'),
|
||||
'image' => input('post.image'),
|
||||
'url' => input('post.url'),
|
||||
'type' => input('post.type', 1),
|
||||
'status' => input('post.status', 1),
|
||||
'sort' => input('post.sort', 0),
|
||||
'update_time' => time()
|
||||
];
|
||||
|
||||
$res = ContentPush::where('id', $id)->update($data);
|
||||
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 contentpushdel()
|
||||
{
|
||||
if (Request::isPost()) {
|
||||
$id = input('post.id');
|
||||
if (empty($id)) {
|
||||
Log::record('删除内容推送', 0, 'ID不能为空', '内容推送管理');
|
||||
return json(['code' => 1, 'msg' => 'ID不能为空']);
|
||||
}
|
||||
|
||||
$res = ContentPush::where('id', $id)->update(['delete_time' => time()]);
|
||||
if (!$res) {
|
||||
Log::record('删除内容推送', 0, '删除内容推送失败', '内容推送管理');
|
||||
return json(['code' => 1, 'msg' => '删除内容推送失败']);
|
||||
}
|
||||
Log::record('删除内容推送', 1, '', '内容推送管理');
|
||||
return json(['code' => 0, 'msg' => '删除成功']);
|
||||
}
|
||||
return json(['code' => 1, 'msg' => '请求方法无效']);
|
||||
}
|
||||
|
||||
// 修改内容推送状态
|
||||
public function contentpushstatus()
|
||||
{
|
||||
if (Request::isPost()) {
|
||||
$id = input('post.id');
|
||||
$status = input('post.status');
|
||||
|
||||
if (empty($id)) {
|
||||
Log::record('修改内容推送状态', 0, 'ID不能为空', '内容推送管理');
|
||||
return json(['code' => 1, 'msg' => 'ID不能为空']);
|
||||
}
|
||||
|
||||
$res = ContentPush::where('id', $id)->update(['status' => $status]);
|
||||
if ($res === false) {
|
||||
Log::record('修改内容推送状态', 0, '更新状态失败', '内容推送管理');
|
||||
return json(['code' => 1, 'msg' => '更新状态失败']);
|
||||
}
|
||||
Log::record('修改内容推送状态', 1, '', '内容推送管理');
|
||||
return json(['code' => 0, 'msg' => '更新成功']);
|
||||
}
|
||||
return json(['code' => 1, 'msg' => '请求方法无效']);
|
||||
}
|
||||
}
|
||||
17
app/admin/model/ContentPush.php
Normal file
17
app/admin/model/ContentPush.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
namespace app\admin\model;
|
||||
|
||||
use think\Model;
|
||||
|
||||
class ContentPush extends Model
|
||||
{
|
||||
protected $name = 'content_push';
|
||||
|
||||
// 自动写入时间戳
|
||||
protected $autoWriteTimestamp = true;
|
||||
|
||||
// 定义时间戳字段名
|
||||
protected $createTime = 'create_time';
|
||||
protected $updateTime = 'update_time';
|
||||
protected $deleteTime = 'delete_time';
|
||||
}
|
||||
135
app/admin/view/yunzeradmin/contentpush.php
Normal file
135
app/admin/view/yunzeradmin/contentpush.php
Normal file
@ -0,0 +1,135 @@
|
||||
{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-notice"></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="add()">
|
||||
<i class="layui-icon layui-icon-add-1"></i>添加推送
|
||||
</button>
|
||||
<button type="button" class="layui-btn layui-btn-primary layui-border-blue" onclick="refresh()">
|
||||
<i class="layui-icon layui-icon-refresh"></i>刷新
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table id="contentPushTable" lay-filter="contentPushTable"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
layui.use(['table', 'layer'], function () {
|
||||
var table = layui.table;
|
||||
var layer = layui.layer;
|
||||
var $ = layui.jquery;
|
||||
|
||||
// 初始化表格
|
||||
table.render({
|
||||
elem: '#contentPushTable',
|
||||
url: '{$config["admin_route"]}yunzeradmin/contentpushlist',
|
||||
page: true,
|
||||
cols: [[
|
||||
{field: 'id', title: 'ID', width: 80, sort: true},
|
||||
{field: 'title', title: '标题', width: 200},
|
||||
{field: 'type', title: '类型', width: 100, templet: function(d){
|
||||
return d.type == 1 ? '普通推送' : '重要推送';
|
||||
}},
|
||||
{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: 200, toolbar: '#tableBar', fixed: 'right'}
|
||||
]],
|
||||
limit: 10,
|
||||
limits: [10, 20, 30, 50]
|
||||
});
|
||||
|
||||
// 监听工具条
|
||||
table.on('tool(contentPushTable)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'edit'){
|
||||
edit(data.id);
|
||||
} else if(obj.event === 'del'){
|
||||
del(data.id);
|
||||
} else if(obj.event === 'status'){
|
||||
changeStatus(data.id, data.status);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 添加
|
||||
function add() {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '添加内容推送',
|
||||
shade: 0.3,
|
||||
area: ['800px', '600px'],
|
||||
content: "{$config['admin_route']}yunzeradmin/contentpushadd"
|
||||
});
|
||||
}
|
||||
|
||||
// 编辑
|
||||
function edit(id) {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '编辑内容推送',
|
||||
shade: 0.3,
|
||||
area: ['800px', '600px'],
|
||||
content: "{$config['admin_route']}yunzeradmin/contentpushedit?id=" + id
|
||||
});
|
||||
}
|
||||
|
||||
// 删除
|
||||
function del(id) {
|
||||
layer.confirm('确定要删除这条推送吗?', {
|
||||
icon: 3,
|
||||
btn: ['确定', '取消']
|
||||
}, function () {
|
||||
$.post("{$config['admin_route']}yunzeradmin/contentpushdel", { 'id': id }, function (res) {
|
||||
if (res.code > 0) {
|
||||
layer.msg(res.msg, { icon: 2 });
|
||||
} else {
|
||||
layer.msg(res.msg, { icon: 1 });
|
||||
layui.table.reload('contentPushTable');
|
||||
}
|
||||
}, 'json');
|
||||
});
|
||||
}
|
||||
|
||||
// 修改状态
|
||||
function changeStatus(id, status) {
|
||||
var newStatus = status == 1 ? 0 : 1;
|
||||
$.post("{$config['admin_route']}yunzeradmin/contentpushstatus", {
|
||||
'id': id,
|
||||
'status': newStatus
|
||||
}, function (res) {
|
||||
if (res.code > 0) {
|
||||
layer.msg(res.msg, { icon: 2 });
|
||||
} else {
|
||||
layer.msg(res.msg, { icon: 1 });
|
||||
layui.table.reload('contentPushTable');
|
||||
}
|
||||
}, 'json');
|
||||
}
|
||||
|
||||
// 刷新列表
|
||||
function refresh() {
|
||||
layui.table.reload('contentPushTable');
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- 表格操作列模板 -->
|
||||
<script type="text/html" id="tableBar">
|
||||
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del">删除</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="status">状态</a>
|
||||
</script>
|
||||
|
||||
{include file="public/tail" /}
|
||||
113
app/admin/view/yunzeradmin/contentpushadd.php
Normal file
113
app/admin/view/yunzeradmin/contentpushadd.php
Normal file
@ -0,0 +1,113 @@
|
||||
{include file="public/header" /}
|
||||
<div class="config-container">
|
||||
<form class="layui-form" action="{$config['admin_route']}yunzeradmin/contentpushsave" method="post" lay-filter="contentPushForm">
|
||||
<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">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">推送内容</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea name="content" placeholder="请输入推送内容" class="layui-textarea" required lay-verify="required"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">推送图片</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="image" id="image" placeholder="请上传推送图片" autocomplete="off" class="layui-input">
|
||||
<button type="button" class="layui-btn" id="uploadImage">
|
||||
<i class="layui-icon"></i>上传图片
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">跳转链接</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="url" placeholder="请输入跳转链接" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">推送类型</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="type" value="1" title="普通推送" checked>
|
||||
<input type="radio" name="type" value="2" title="重要推送">
|
||||
</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="启用" checked>
|
||||
<input type="radio" name="status" value="0" title="禁用">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">排序</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" name="sort" value="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;
|
||||
|
||||
// 图片上传
|
||||
upload.render({
|
||||
elem: '#uploadImage',
|
||||
url: '{$config["admin_route"]}yunzeradmin/upload',
|
||||
accept: 'images',
|
||||
acceptMime: 'image/*',
|
||||
done: function(res){
|
||||
if(res.code == 0){
|
||||
$('#image').val(res.data.src);
|
||||
layer.msg('上传成功');
|
||||
} else {
|
||||
layer.msg('上传失败');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 表单提交
|
||||
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" /}
|
||||
108
app/admin/view/yunzeradmin/contentpushedit.php
Normal file
108
app/admin/view/yunzeradmin/contentpushedit.php
Normal file
@ -0,0 +1,108 @@
|
||||
{include file="public/header" /}
|
||||
<div class="config-container">
|
||||
<form class="layui-form" action="{$config['admin_route']}yunzeradmin/contentpushsave" method="post" lay-filter="contentPushForm">
|
||||
<input type="hidden" name="id" value="{$info.id}">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">推送标题</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="title" value="{$info.title}" required lay-verify="required" placeholder="请输入推送标题" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">推送内容</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea name="content" placeholder="请输入推送内容" class="layui-textarea" required lay-verify="required">{$info.content}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">推送图片</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="image" id="image" value="{$info.image}" placeholder="请上传推送图片" autocomplete="off" class="layui-input">
|
||||
<button type="button" class="layui-btn" id="uploadImage">
|
||||
<i class="layui-icon"></i>上传图片
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">跳转链接</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="url" value="{$info.url}" placeholder="请输入跳转链接" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">推送类型</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="type" value="1" title="普通推送" {if $info.type==1}checked{/if}>
|
||||
<input type="radio" name="type" value="2" title="重要推送" {if $info.type==2}checked{/if}>
|
||||
</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 $info.status==1}checked{/if}>
|
||||
<input type="radio" name="status" value="0" title="禁用" {if $info.status==0}checked{/if}>
|
||||
</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;
|
||||
|
||||
// 图片上传
|
||||
upload.render({
|
||||
elem: '#uploadImage',
|
||||
url: '{$config["admin_route"]}yunzeradmin/upload',
|
||||
accept: 'images',
|
||||
acceptMime: 'image/*',
|
||||
done: function(res){
|
||||
if(res.code == 0){
|
||||
$('#image').val(res.data.src);
|
||||
layer.msg('上传成功');
|
||||
} else {
|
||||
layer.msg('上传失败');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 表单提交
|
||||
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