feat: 项目基础框架+配置+Kernel

This commit is contained in:
testadmin
2026-04-29 05:35:00 +08:00
parent 6ce7adcbfb
commit 9a6151fce3
5082 changed files with 437062 additions and 0 deletions
@@ -0,0 +1,64 @@
@extends('manages.layadmin')
@section('page-head')
@endsection
@section('page-content')
<div class="layui-fluid" id="LAY-app-message">
<div class="layui-card">
<div class="layui-card-header">权限列表</div>
<div class="layui-card-body layui-text">
<div class="clt-auth-btns" style="margin-bottom: 10px;">
<button class="layui-btn layui-btn-sm" data-events="add">添加权限</button>
</div>
<table class="layui-table" id="list" lay-filter="list"></table>
</div>
</div>
</div>
@endsection
@section('scripts')
<script type="text/html" id="status">
<input type="checkbox" name="status" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="status" @{{ d.status == 1 ? 'checked' : '' }}>
</script>
<script>
layui.use(['table','form'], function(){
var $ = layui.$, admin = layui.admin, table = layui.table, element = layui.element,form = layui.form;
//第一个实例
table.render({
elem: '#list'
,url: '{{url('admin/level_list')}}' //数据接口
,page: true //开启分页
,id:'mobileSearch'
,height: 'full-100'
,cols: [[ //表头
{field: 'id', title: 'ID', minWidth:80, sort: true}
,{field: 'name', title: '名称', minWidth:80}
,{field: 'fill_currency', title: '充币数量', minWidth:80}
,{field: 'direct_drive_count', title: '直推数量', minWidth:80}
,{field: 'direct_drive_price', title: '直推金额', minWidth:80}
,{field: 'max_algebra', title: '最大代数', minWidth:80}
,{field: 'level', title: '级别', minWidth:80}
,{title:'操作',minWidth:100,toolbar: '#barDemo'}
]]
});
//添加权限页面
var events = {
add: function(){
alert(222)
layer.open({
type: 2,
content: '/manages/auth/add',
area: ['90%', '90%'],
maxmin: true
});
},
};
});
</script>
@endsection
@@ -0,0 +1,189 @@
@extends('manages.layadmin')
@section('page-head')
@endsection
@section('page-content')
<style>
.layui-card{
overflow: hidden;
}
.charts-block{
width: 100%;
height: 200px;
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
}
.charts-block .charts-wrap{
width: 30px;
height: 235px;
overflow: hidden;
display: flex;
justify-content: center;
}
.charts-block .charts-box{
width: 30px;
height: 100%;
background-color: #ffcece;
/*background-image: linear-gradient(#e66465, #aa9fbe);*/
border-radius: 4px 4px 0 0;
}
.charts-block h3{
font-size: 12px;
color: #999;
/*font-weight: bold;*/
padding-bottom: 10px;
}
.charts-block .charts-num{
padding: 10px 0;
font-size: 14px;
color: red;
}
</style>
<div class="layui-content-wrapper">
<div class="layui-fluid">
<div class="layui-row layui-col-space15">
<div class="layui-col-md12">
<div class="layui-row layui-col-space15">
<div class="layui-col-md12">
<div class="layui-card" style="margin-left: 10px">
<div class="layui-card-header">信息统计</div>
<div class="layui-card-body">
<div class="layui-carousel layadmin-carousel layadmin-backlog">
<div>
<ul class="layui-row layui-col-space10">
<li class="layui-col-xs4">
<a href="javascript:;" class="layadmin-backlog-body" style="text-align: center">
<h3>今日用户</h3>
<p><cite>{{@$data['today_user']}}</cite></p>
</a>
</li>
<li class="layui-col-xs4">
<a href="javascript:;" class="layadmin-backlog-body" style="text-align: center">
<h3>总用户</h3>
<p><cite>{{@$data['all_user']}}</cite></p>
</a>
</li>
<li class="layui-col-xs4">
<a href="javascript:;" class="layadmin-backlog-body" style="text-align: center">
<h3>今日提现数量</h3>
<p><cite>{{@$data['today_withdraw_count']}}</cite></p>
</a>
</li>
<li class="layui-col-xs4">
<a href="javascript:;" class="layadmin-backlog-body" style="text-align: center">
<h3>今日提现金额</h3>
<p><cite>{{@$data['today_withdraw_amount']}}</cite></p>
</a>
</li>
<li class="layui-col-xs4">
<a href="javascript:;" class="layadmin-backlog-body" style="text-align: center">
<h3>今日充值数量</h3>
<p><cite>{{@$data['today_charge_count']}}</cite></p>
</a>
</li>
<li class="layui-col-xs4">
<a href="javascript:;" class="layadmin-backlog-body" style="text-align: center">
<h3>今日充值金额</h3>
<p><cite>{{@$data['today_charge_amount']}}</cite></p>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="layui-card" style="margin-left: 10px; margin-top: 30px;">
<div class="layui-card-body">
<div class="layui-carousel layadmin-carousel layadmin-backlog">
<div>
<ul class="layui-row layui-col-space10">
<li class="layui-col-xs2">
<div class="charts-block">
<h3>今日用户</h3>
<div class="charts-wrap">
<div class="charts-box" style="height: {{@$data['today_user'] / (@$data['all_user'] + @$data['today_user'] + @$data['today_withdraw_count'] + @$data['today_withdraw_amount'] + @$data['today_charge_count'] + @$data['today_charge_amount']) * 200 }}px">
</div>
</div>
<div class="charts-num">{{@$data['today_user']}}</div>
</div>
</li>
<li class="layui-col-xs2">
<div class="charts-block">
<h3>总用户</h3>
<div class="charts-wrap">
<div class="charts-box" style="height: {{@$data['all_user'] / (@$data['all_user'] + @$data['today_user'] + @$data['today_withdraw_count'] + @$data['today_withdraw_amount'] + @$data['today_charge_count'] + @$data['today_charge_amount']) * 200 }}px">
</div>
</div>
<div class="charts-num">{{@$data['all_user']}}</div>
</div>
</li>
<li class="layui-col-xs2">
<div class="charts-block">
<h3>今日提现数量</h3>
<div class="charts-wrap">
<div class="charts-box" style="height: {{@$data['today_withdraw_count'] / (@$data['all_user'] + @$data['today_user'] + @$data['today_withdraw_count'] + @$data['today_withdraw_amount'] + @$data['today_charge_count'] + @$data['today_charge_amount']) * 200 }}px"></div>
</div>
<div class="charts-num">{{@$data['today_withdraw_count']}}</div>
</div>
</li>
<li class="layui-col-xs2">
<div class="charts-block">
<h3>今日提现金额</h3>
<div class="charts-wrap">
<div class="charts-box" style="height: {{@$data['today_withdraw_amount'] / (@$data['all_user'] + @$data['today_user'] + @$data['today_withdraw_count'] + @$data['today_withdraw_amount'] + @$data['today_charge_count'] + @$data['today_charge_amount']) * 200 }}px"></div>
</div>
<div class="charts-num">{{@$data['today_withdraw_amount']}}</div>
</div>
</li>
<li class="layui-col-xs2">
<div class="charts-block">
<h3>今日充值数量</h3>
<div class="charts-wrap">
<div class="charts-box" style="height: {{@$data['today_charge_count'] / (@$data['all_user'] + @$data['today_user'] + @$data['today_withdraw_count'] + @$data['today_withdraw_amount'] + @$data['today_charge_count'] + @$data['today_charge_amount']) * 200 }}px"></div>
</div>
<div class="charts-num">{{@$data['today_charge_count']}}</div>
</div>
</li>
<li class="layui-col-xs2">
<div class="charts-block">
<h3>今日充值金额</h3>
<div class="charts-wrap">
<div class="charts-box" style="height: {{@$data['today_charge_amount'] / (@$data['all_user'] + @$data['today_user'] + @$data['today_withdraw_count'] + @$data['today_withdraw_amount'] + @$data['today_charge_count'] + @$data['today_charge_amount']) * 200 }}px"></div>
</div>
<div class="charts-num">{{@$data['today_charge_amount']}}</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,230 @@
@extends('manages.layadmin')
@section('title', '交易所管理系统')
@section('page-head')
@endsection
@section('page-content')
<div id="LAY_app">
<div class="layui-layout layui-layout-admin">
<div class="layui-header">
<ul class="layui-nav layui-layout-left">
<li class="layui-nav-item layadmin-flexible" lay-unselect>
<a href="javascript:;" layadmin-event="flexible" title="侧边伸缩">
<i class="layui-icon layui-icon-shrink-right" id="LAY_app_flexible"></i>
</a>
</li>
<li class="layui-nav-item" lay-unselect>
<a href="javascript:;" layadmin-event="refresh" title="刷新">
<i class="layui-icon layui-icon-refresh-3"></i>
</a>
</li>
</ul>
<ul class="layui-nav layui-layout-right" lay-filter="layadmin-layout-right" style="padding-right: 20px">
<li class="layui-nav-item layui-hide-xs" lay-unselect>
<a href="javascript:;" layadmin-event="theme">
<i class="layui-icon layui-icon-theme"></i>
</a>
</li>
<li class="layui-nav-item layui-hide-xs" lay-unselect>
<a href="javascript:;" layadmin-event="note">
<i class="layui-icon layui-icon-note"></i>
</a>
</li>
<li class="layui-nav-item layui-hide-xs" lay-unselect>
<a href="javascript:;" layadmin-event="fullscreen">
<i class="layui-icon layui-icon-screen-full"></i>
</a>
</li>
<li class="layui-nav-item" lay-unselect >
<a href="javascript:;">
<cite>{{@$username}}</cite>
</a>
<dl class="layui-nav-child">
{{-- <dd><a lay-href="/agent/set_info">基本资料</a></dd>--}}
{{-- <dd><a lay-href="/agent/set_password">修改密码</a></dd>--}}
{{-- <hr>--}}
<dd layadmin-event="logout" style="text-align: center;"><a>退出</a></dd>
</dl>
</li>
</ul>
</div>
<div class="layui-side layui-side-menu">
<div class="layui-side-scroll">
<div class="layui-logo">
<span>内容管理系统</span>
</div>
<ul class="layui-nav layui-nav-tree" lay-shrink="all" id="LAY-system-side-menu" lay-filter="layadmin-system-side-menu">
@foreach($menus as $vo)
<li data-name="{{@$vo['module']}}" class="layui-nav-item">
<a href="javascript:;" lay-tips="{{@$vo['module']}}" lay-direction="2">
<i class="layui-icon {{@$vo['icon']}}"></i>
<cite>{{@$vo['name']}}</cite>
</a>
@if(isset($vo['children']))
<dl class="layui-nav-child">
@foreach($vo['children'] as $v)
<dd data-name="console">
<a lay-href="/{{@$v['action']}}">{{@$v['name']}}</a>
</dd>
@endforeach
</dl>
@endif
</li>
@endforeach
</ul>
</div>
</div>
<div class="layadmin-pagetabs" id="LAY_app_tabs">
<div class="layui-icon layadmin-tabs-control layui-icon-prev" layadmin-event="leftPage"></div>
<div class="layui-icon layadmin-tabs-control layui-icon-next" layadmin-event="rightPage"></div>
<div class="layui-icon layadmin-tabs-control layui-icon-down">
<ul class="layui-nav layadmin-tabs-select" lay-filter="layadmin-pagetabs-nav">
<li class="layui-nav-item" lay-unselect>
<a href="javascript:;"></a>
<dl class="layui-nav-child layui-anim-fadein">
<dd layadmin-event="closeThisTabs"><a href="javascript:;">关闭当前标签页</a></dd>
<dd layadmin-event="closeOtherTabs"><a href="javascript:;">关闭其它标签页</a></dd>
<dd layadmin-event="closeAllTabs"><a href="javascript:;">关闭全部标签页</a></dd>
</dl>
</li>
</ul>
</div>
<div class="layui-tab" lay-unauto lay-allowClose="true" lay-filter="layadmin-layout-tabs">
<ul class="layui-tab-title" id="LAY_app_tabsheader">
<li lay-id="" lay-attr="" class="layui-this"><i class="layui-icon layui-icon-home"></i></li>
</ul>
</div>
</div>
<div class="layui-body" id="LAY_app_body">
<div class="layadmin-tabsbody-item layui-show">
<iframe src="/manages/console" frameborder="0" class="layadmin-iframe"></iframe>
</div>
</div>
<div class="layadmin-body-shade" layadmin-event="shade"></div>
</div>
</div>
@endsection
@section('scripts')
<script>
var bbjy = '{{URL("static/audio/bbjy.mp3")}}';
var hyjy = '{{URL("static/audio/hyjy.mp3")}}';
var qqjy = '{{URL("static/audio/qqjy.mp3")}}';
var sblc = '{{URL("static/audio/sblc.mp3")}}';
var xbsg = '{{URL("static/audio/xbsg.mp3")}}';
var cz = '{{URL("static/audio/cz.mp3")}}';
var sfrz = '{{URL("static/audio/sfrz.mp3")}}';
var tksq = '{{URL("static/audio/tksq.mp3")}}';
var hyzc = '{{URL("static/audio/hyzc.mp3")}}';
var zywk = '{{URL("static/audio/zywk.mp3")}}';
var nft = '{{URL("static/audio/nft.mp3")}}';
var pay_success = '{{URL("static/audio/pay_success.mp3")}}';
var tips_url = '{{url('admin/tips/tips')}}';
// 订单轮询
setInterval(function () {
setTimeout(function (){
$.ajax({
url:tips_url + '?type=3',
type:'GET',
data:{},
dataType:'JSON',
success:function(res){
if (res.code == 100){
layer.msg("您有新的订单,请及时处理", {time: 3000, shift: 5,offset:"tc"});
var audio = new Audio(qqjy);
audio.play();
}
}
});
}, 15000);
setTimeout(function (){
$.ajax({
url:tips_url + '?type=6',
type:'GET',
data:{},
dataType:'JSON',
success:function(res){
if (res.code == 100){
layer.msg("您有新的充值订单,请及时处理", {time: 3000, shift: 5,offset:"tc"});
var audio = new Audio(cz);
audio.play();
}
}
});
}, 15000);
setTimeout(function (){
$.ajax({
url:tips_url + '?type=7',
type:'GET',
data:{},
dataType:'JSON',
success:function(res){
if (res.code == 100){
layer.msg("您有新的身份认证,请及时处理", {time: 3000, shift: 5,offset:"tc"});
var audio = new Audio(sfrz);
audio.play();
}
}
});
}, 15000);
setTimeout(function(){
$.ajax({
url:tips_url + '?type=8',
type:'GET',
data:{},
dataType:'JSON',
success:function(res){
if (res.code == 100){
layer.msg("您有新的提现申请,请及时处理", {time: 3000, shift: 5,offset:"tc"});
var audio = new Audio(tksq);
audio.play();
}
}
});
}, 15000);
setTimeout(function (){
$.ajax({
url:tips_url + '?type=99',
type:'GET',
data:{},
dataType:'JSON',
success:function(res){
if (res.code == 100){
layer.msg("支付通道有新订单成功,请及时处理", {time: 3000, shift: 5,offset:"tc"});
var audio = new Audio(pay_success);
audio.play();
}
}
});
}, 15000);
},30000);
</script>
@endsection
@@ -0,0 +1,35 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>@yield('title')</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="/layuiadmin/style/admin.css" media="all">
@yield('page-head')
</head>
<body class="">
@yield('page-content')
</body>
<script src="/layuiadmin/layui/layui.js"></script>
<script>
/^http(s*):\/\//.test(location.href) || alert('请先部署到 localhost 下再访问');
</script>
<script>
layui.config({
version: true //一般用于更新模块缓存,默认不开启。设为true即让浏览器不缓存。也可以设为一个固定的值,如:201610
,debug: true //用于开启调试模式,默认false,如果设为true,则JS模块的节点会保留在页面
,base: '/manages/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use('index');
</script>
@yield('scripts')
</html>
@@ -0,0 +1,39 @@
<style>
.layui-side-menu{
background-color: #fff;
}
</style>
<div class="layui-side layui-side-menu">
<div class="layui-side-scroll">
<div class="layui-logo" lay-href="/manages/index">
<span>交易所管理系统</span>
</div>
<ul class="layui-nav layui-nav-tree" lay-shrink="all" id="LAY-system-side-menu" lay-filter="layadmin-system-side-menu">
@foreach($menus as $vo)
@if($vo['menustatus']==1)
<li data-name="{{@$vo['name']}}" class="layui-nav-item">
<a href="javascript:;" lay-tips="{{@$vo['title']}}" lay-direction="2">
<i class="layui-icon {{@$vo['icon']}}"></i>
<cite>{{@$vo['title']}}</cite>
</a>
@if(isset($vo['children']))
<dl class="layui-nav-child">
@foreach($vo['children'] as $v)
@if($v['menustatus']==1)
<dd data-name="console">
<a lay-href="{{@$v['url']}}">{{@$v['title']}}</a>
</dd>
@endif
@endforeach
</dl>
@endif
</li>
@endif
@endforeach
</ul>
</div>
</div>
@@ -0,0 +1,211 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>交易所管理系统</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="/layuiadmin/style/admin.css" media="all">
<link rel="stylesheet" href="/layuiadmin/style/login.css" media="all">
<style>
html, body {
position:fixed;
top:0px;
left:0px;
height:100%;
width:100%;
/*Fallback if gradeints don't work */
background: #141e6e;
/*Linear gradient... */
background:
radial-gradient(
at center, #0075c3, #000b61
);
}
.apImgTitle {
position: fixed;
width: 42%;
left: 30%;
top: 30%;
}
.apTitle {
font-size: 40px;
color: #fff;
position: fixed;
top: 32%;
width: 100%;
text-align: center;
}
.logcon {
position: fixed;
width: 100%;
top: 47%;
text-align: center;
}
.logcon input {
padding: 10px 15px;
border-radius: 3px;
border: none;
margin-right: 10px;
width: 220px;
}
.logcon button {
padding: 7px 20px 10px 20px;
border: none;
background: #fff;
border-radius: 3px;
}
.logcon button:hover {
cursor: pointer;
}
canvas {
display: block;
vertical-align: bottom;
}
#particles-js {
width: 100%;
height: 100%;
background-size: cover;
background-position: 50% 50%;
background-repeat: no-repeat;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}
.login-in{
background: #fff;
width: 750px;
margin: 0 auto;
box-sizing: border-box;
border-radius: 6px;
border: 1px solid #614bf8;
display: flex;
border: 1px solid #333;
display: flex;
justify-content: space-between;
box-shadow: 0px 5px 16px 7px rgba(0, 0, 0, .2);
}
.login-in .pic{
width: 375px;
height: 300px;
}
.layadmin-user-login-main{
background: #fff;
width: 375px;
margin: 0 auto;
box-sizing: border-box;
/*padding: 40px;*/
border-radius: 6px;
/*border: 1px solid #614bf8;*/
}
.login-btn{
background: #3c21f7;
}
</style>
</head>
<body>
<div class="layadmin-user-login layadmin-user-display-show" id="LAY-user-login" style="display: none;">
<div id="particles-js" style="display: flex;align-items: center;justify-content: center">
<canvas class="particles-js-canvas-el" style="width: 100%; height: 100%;" width="472" height="625"></canvas>
</div>
<div class="login-in">
<div class="pic">
<img src="/layuiadmin/layui/images/new/bg_share.png">
</div>
<div class="layadmin-user-login-main">
<div class="layadmin-user-login-box layadmin-user-login-header">
<h2>内容管理后台</h2>
</div>
<div class="layadmin-user-login-box layadmin-user-login-body layui-form">
<div class="layui-form-item">
<label class="layadmin-user-login-icon layui-icon layui-icon-username" for="LAY-user-login-username"></label>
<input type="text" name="username" id="LAY-user-login-username" lay-verify="required" placeholder="用户名" class="layui-input">
</div>
<div class="layui-form-item">
<label class="layadmin-user-login-icon layui-icon layui-icon-password" for="LAY-user-login-password"></label>
<input type="password" name="password" id="LAY-user-login-password" lay-verify="required" placeholder="密码" class="layui-input">
</div>
<div class="layui-form-item" style="display:none">
<div class="layui-row">
<div class="layui-col-xs7">
<label class="layadmin-user-login-icon layui-icon layui-icon-vercode" for="LAY-user-login-vercode"></label>
<input type="text" name="vercode" id="LAY-user-login-vercode" placeholder="图形验证码" class="layui-input">
</div>
<div class="layui-col-xs5">
<div style="margin-left: 10px;">
<img src="https://www.oschina.net/action/user/captcha" class="layadmin-user-login-codeimg" id="LAY-user-get-vercode">
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid login-btn" lay-submit lay-filter="LAY-user-login-submit"> </button>
</div>
</div>
</div>
</div>
</div>
<script src="/layuiadmin/layui/layui.js"></script>
<!--<script src="/layuiadmin/layui/bg1.js"></script>-->
<!--<script src="/layuiadmin/layui/bg2.js"></script>-->
<script>
// $(document).ready(function () {
// if (window != top) {
// top.location.href = location.href;
// }
// });
layui.config({
base: '/manages/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'user'], function(){
var $ = layui.$
,setter = layui.setter
,admin = layui.admin
,form = layui.form
,router = layui.router()
,search = router.search;
form.render();
//提交
form.on('submit(LAY-user-login-submit)', function(obj){
//请求登入接口
admin.req({
url: '/manages/login'
,type: 'POST'
,data: obj.field
,done: function (res) {
layer.msg(res.msg, {icon: 1, time: 1000}, function () {
location.href = '/manages/index'; //
});
}
});
});
});
</script>
</body>
</html>