批量提交

This commit is contained in:
2025-04-25 17:27:26 +08:00
parent 9a51adf2e8
commit 1a6fc7af64
64 changed files with 6208 additions and 276 deletions
+180
View File
@@ -0,0 +1,180 @@
<?php
/**
* 后台管理系统-管理员
*/
namespace app\admin\controller;
use app\AppApi;
use think\facade\Db;
use think\facade\View;
use think\facade\Cookie;
use think\facade\Config;
use app\admin\model\YzAdminConfig;
use think\exception\HttpResponseException;
use think\facade\Request;
use think\facade\Route;
class Base{
public $adminId = null;
public $config = [];
public $aUser = [];
public function __construct(){
date_default_timezone_set('PRC');
# 获取配置
$YzAdminConfig = new YzAdminConfig();
$this->config = $YzAdminConfig->getAll();
# 获取账户,账户判断
$this->adminId = Cookie::get('admin_id');
if(empty($this->adminId)){
header('Location:'.$this->config['admin_route'].'Login/index');
exit;
}
$this->aUser = Db::table('yz_admin_user')->where('uid',$this->adminId)->find();
if (empty($this->aUser)) {
Cookie::delete('admin_id');
$this->error('管理员账户不存在');
}
if ($this->aUser['status'] != 1) {
Cookie::delete('admin_id');
$this->error('管理员已被禁用');
}
# 获取用户组权限
$group = Db::table('yz_admin_user_group')->where(['group_id'=>$this->aUser['group_id']])->find();
if(empty($group)){
$this->error('对不起,您没有权限');
}
# 获取当前链接,查询是否有权限
$controller = request()->controller();
$action = request()->action();
$key = $controller.'/'.$action;
// // 演示站专用
// if(Request::isPost()){
// if(
// $key == 'Yunzer/configvalue' ||
// $key == 'Yunzer/configadd' ||
// $key == 'Yunzer/configedit' ||
// $key == 'Yunzer/configdel' ||
// $key == 'Yunzer/menuadd' ||
// $key == 'Yunzer/menuedit' ||
// $key == 'Yunzer/menudel' ||
// $key == 'Yunzer/buttonadd' ||
// $key == 'Yunzer/buttonedit' ||
// $key == 'Yunzer/buttondel' ||
// $key == 'Yunzeradmin/groupadd' ||
// $key == 'Yunzeradmin/groupedit' ||
// $key == 'Yunzeradmin/groupdel' ||
// $key == 'Yunzeradmin/useradd' ||
// $key == 'Yunzeradmin/useredit' ||
// $key == 'Yunzeradmin/userdel' ||
// $key == 'Yunzeradmin/admininfo' ||
// $key == 'Yunzeradmin/test_add' ||
// $key == 'Yunzeradmin/test_edit' ||
// $key == 'Yunzeradmin/test_static_add' ||
// $key == 'Yunzeradmin/test_static_edit' ||
// $key == 'Index/upload_img' ||
// $key == 'Index/upload_img_s' ||
// $key == 'Index/upload_imgs_kin'
// ){
// $this->returnCode(1,'演示站,不能操作');
// }
// }
// // 演示站专用
// if($key == 'Index/index' || $key == 'Index/welcome'){
// }else{
// $aMenu = Db::table('yz_admin_sys_menu')->where('src',$key)->find();
// if(empty($aMenu)){
// $this->error('对不起,您访问的功能不存在');
// }
// $rights = json_decode($group['rights']);
// if(!in_array($aMenu['smid'],$rights)){
// $this->error('对不起,您没有权限');
// }
// }
View::assign([
'aUser' => $this->aUser,
'config' => $this->config
]);
}
/**
* 返回json对象
*/
protected function returnCode($code,$data=[],$count=10){
header('Content-type:application/json');
if($code == 0){
$arr = array(
'code'=>$code,
'msg'=>'成功',
'count'=> $count,
'data' => $data
);
}else if($code >= 1 && $code <= 100){
$arr = array(
'code' => $code,
'msg' => $data
);
}else{
$appapi = new AppApi();
$arr = array(
'code'=>$code,
'msg'=>$appapi::errorTip($code)
);
}
echo json_encode($arr);
if($code != 0){
exit;
}
}
/**
* 操作成功跳转的快捷方法
* @access protected
* @param mixed $msg 提示信息
* @return void
*/
protected function success($msg = '')
{
$result = [
'code' => 1,
'msg' => $msg
];
$type = $this->getResponseType();
if ($type == 'html'){
$response = view(Config::get('app.dispatch_success_tmpl'), $result);
} else if ($type == 'json') {
$response = json($result);
}
throw new HttpResponseException($response);
}
/**
* 操作错误跳转的快捷方法
* @access protected
* @param mixed $msg 提示信息
* @return void
*/
protected function error($msg = '')
{
$result = [
'code' => 0,
'msg' => $msg
];
$response = view(Config::get('app.dispatch_error_tmpl'), $result);
throw new HttpResponseException($response);
}
/**
* 获取当前的response 输出类型
* @access protected
* @return string
*/
protected function getResponseType()
{
return Request::isJson() || Request::isAjax() ? 'json' : 'html';
}
}
+201 -12
View File
@@ -1,17 +1,206 @@
<?php
/**
* 后台管理系统-首页
*/
namespace app\admin\controller;
use app\admin\controller\Base;
use think\facade\Db;
use think\facade\View;
use think\facade\Env;
use think\facade\Config;
use app\BaseController;
class Index extends Base{
# 首页
public function index(){
$menus = [];
$menu = [];
$where = ['group_id'=>$this->aUser['group_id']];
$role = Db::table('yz_admin_user_group')->where($where)->find();
if($role){
$role['rights'] = (isset($role['rights']) && $role['rights']) ? json_decode($role['rights'],true) : [];
}
if($role['rights']){
$where = [
['smid','in',implode(',',$role['rights']) ],
['status','=',1]
];
// 获取所有菜单
$menus = Db::table('yz_admin_sys_menu')->order('type,sort desc')->where($where)->select()->toArray();
// 构建树形结构菜单
$menuTree = [];
$menuMap = [];
// 先将所有菜单项映射到一个关联数组中
foreach($menus as $item){
$item['children'] = [];
$menuMap[$item['smid']] = $item;
}
// 构建树形结构
foreach($menus as $item){
if($item['parent_id'] == 0){
// 顶级菜单
$menuTree[$item['smid']] = &$menuMap[$item['smid']];
}else{
// 子菜单,添加到父菜单的children数组中
if(isset($menuMap[$item['parent_id']])){
$menuMap[$item['parent_id']]['children'][] = &$menuMap[$item['smid']];
}
}
}
$menu = $menuTree;
}
View::assign([
'role' => $role,
'menu' => $menu
]);
return View::fetch();
}
# 欢迎页面
public function welcome(){
View::assign([
'time' => date('Y-m-d',$_SERVER['REQUEST_TIME']),
]);
return View::fetch();
}
class Index extends BaseController
{
public function index()
{
return '<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} a{color:#2E5CD5;cursor: pointer;text-decoration: none} a:hover{text-decoration:underline; } body{ background: #fff; font-family: "Century Gothic","Microsoft yahei"; color: #333;font-size:18px;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.6em; font-size: 42px }</style><div style="padding: 24px 48px;"> <h1>:) </h1><p> ThinkPHP V' . \think\facade\App::version() . '<br/><span style="font-size:30px;">16载初心不改 - 你值得信赖的PHP框架 Admin模块</span></p><span style="font-size:25px;">[ V6.0 版本由 <a href="https://www.yisu.com/" target="yisu">亿速云</a> 独家赞助发布 ]</span></div><script type="text/javascript" src="https://e.topthink.com/Public/static/client.js"></script><think id="ee9b1aa918103c4fc"></think>';
}
/**
* 保存附件信息到数据库
* @param string $name 文件名
* @param int $type 附件类型
* @param int $size 文件大小
* @param string $src 文件路径
* @return int 附件ID
*/
private function saveAttachment($name, $type, $size, $src) {
$data = [
'name' => $name,
'type' => $type,
'size' => $size,
'src' => $src,
'create_time' => time(),
'update_time' => time()
];
return Db::table('yz_attachments')->insertGetId($data);
}
public function hello($name = 'ThinkPHP6')
{
return 'hello,' . $name;
}
}
# 图片上传
public function upload_img(){
// 获取上传的文件
$file = request()->file();
$files = request()->file('file');
// 检查是否有文件上传
if(empty($file)){
return json(['code'=>1, 'msg'=>'没有文件上传'])->send();
}
try {
// 验证上传的文件
validate([
'image'=>'filesize:10240|fileExt:jpg,png,gif,jpeg'
])->check($file);
// 存储文件到public磁盘的uploads目录
$info = \think\facade\Filesystem::disk('public')->putFile('uploads', $files);
// 处理文件路径,统一使用正斜杠
$info = str_replace("\\", "/", $info);
$img = '/storage/'.$info;
// 保存附件信息
$fileName = $files->getOriginalName();
$fileSize = $files->getSize();
$attachmentId = $this->saveAttachment($fileName, 1, $fileSize, $img);
// 返回成功信息
return json([
'code' => 0,
'data' => $img,
'url' => $this->config['admin_domain'].$img,
'attachment_id' => $attachmentId
])->send();
} catch (\think\exception\ValidateException $e) {
// 捕获验证异常并返回错误信息
return json(['code'=>1, 'msg'=>$e->getMessage()])->send();
} catch (\Exception $e) {
// 捕获其他异常
return json(['code'=>1, 'msg'=>'上传失败:'.$e->getMessage()])->send();
}
}
# 富文本图片上传
public function upload_imgs(){
$file = request()->file();
$files = request()->file('file');
if(empty($file)){
return json(['code'=>1, 'msg'=>'没有文件上传'])->send();
}
try {
validate(['image'=>'filesize:10240|fileExt:jpg,png,gif,jpeg'])->check($file);
$info = \think\facade\Filesystem::disk('public')->putFile('uploads', $files);
// 处理文件路径
$info = str_replace("\\", "/", $info);
$img = '/storage/'.$info;
// 保存附件信息
$fileName = $files->getOriginalName();
$fileSize = $files->getSize();
$attachmentId = $this->saveAttachment($fileName, 2, $fileSize, $img);
return json([
'code' => 0,
'data' => [
'src' => $img,
'attachment_id' => $attachmentId
]
])->send();
} catch (\think\exception\ValidateException $e) {
return json(['code'=>1, 'msg'=>$e->getMessage()])->send();
}
}
# 富文本图片上传
public function upload_imgs_kin(){
$file = request()->file();
$files = request()->file('imgFile');
if(empty($file)){
return json(['error'=>1, 'message'=>'没有文件上传'])->send();
}
try {
validate(['image'=>'filesize:10240|fileExt:jpg,png,gif,jpeg'])->check($file);
$info = \think\facade\Filesystem::disk('public')->putFile('uploads', $files);
// 处理文件路径
$info = str_replace("\\", "/", $info);
$img = '/storage/'.$info;
// 保存附件信息
$fileName = $files->getOriginalName();
$fileSize = $files->getSize();
$attachmentId = $this->saveAttachment($fileName, 3, $fileSize, $img);
return json([
'error' => 0,
'url' => $img,
'attachment_id' => $attachmentId
])->send();
} catch (\think\exception\ValidateException $e) {
return json(['error'=>1, 'message'=>$e->getMessage()])->send();
}
}
# 清除缓存
public function clear(){
$a = delete_dir_file(Env::get('runtime_path').'cache/');
$b = delete_dir_file(Env::get('runtime_path').'temp/');
if ($a || $b) {
$this->returnCode(0);
} else {
$this->returnCode('91000006');
}
}
}
+104
View File
@@ -0,0 +1,104 @@
<?php
/**
* 后台管理系统-登录
*/
namespace app\admin\controller;
use think\App;
use app\AppApi;
use think\facade\Db;
use think\facade\View;
use think\facade\Cookie;
use think\facade\Request;
use app\admin\model\YzAdminConfig;
class Login
{
public function index()
{
# 获取配置
$YzAdminConfig = new YzAdminConfig();
$this->config = $YzAdminConfig->getAll();
View::assign([
'config' => $this->config
]);
return View::fetch();
}
public function login()
{
if (Request::isPost()) {
$account = trim(input('post.account'));
if (empty($account)) {
$this->returnCode('90000001');
}
$pattern = "/^([0-9A-Za-z-_.]+)@([0-9a-z]+.[a-z]{2,3}(.[a-z]{2})?)$/i";
if (!preg_match($pattern, $account)) {
$this->returnCode('90000006');
}
$password = trim(input('post.password'));
if (empty($password)) {
$this->returnCode(1, '密码不能为空');
}
$code = trim(input('post.code'));
if ($code == '') {
$this->returnCode(1, '验证码不能为空');
}
if (!captcha_check($code)) {
$this->returnCode(1, '验证码错误');
}
$aUser = Db::table('yz_admin_user')->where('account', $account)->find();
if (empty($aUser)) {
$this->returnCode('90000029');
}
if ($aUser['status'] != 1) {
$this->returnCode('90000030');
}
if ($aUser['password'] != md5($password)) {
$this->returnCode('90000031');
}
$remember = input('post.remember');
if (!empty($remember)) {
Cookie::set('admin_id', $aUser['uid'], 60 * 60 * 24 * 7);
Cookie::set('admin_name', $aUser['name'], 60 * 60 * 24 * 7);
} else {
Cookie::set('admin_id', $aUser['uid']);
Cookie::set('admin_name', $aUser['name']);
}
Db::table('yz_admin_user')->where('uid', $aUser['uid'])->update(
['login_count' => $aUser['login_count'] + 1, 'update_time' => time()]
);
$this->returnCode(0, [], '登陆成功');
}
}
public function logout()
{
Cookie::delete('admin_id');
Cookie::delete('admin_name');
$this->returnCode(0, [], '退出成功');
}
protected function returnCode($code, $data = [], $msg = '')
{
header('Content-type:application/json');
if ($code == 0) {
$arr = array(
'code' => $code,
'msg' => $msg,
'data' => $data
);
} else if ($code == 1) {
$arr = array(
'code' => 1,
'msg' => $data
);
} else {
$appapi = new AppApi();
$arr = array(
'code' => $code,
'msg' => $appapi::errorTip($code)
);
}
echo json_encode($arr);
if ($code != 0) {
exit;
}
}
}
+345
View File
@@ -0,0 +1,345 @@
<?php
/**
* 后台管理系统-核心功能
*/
namespace app\admin\controller;
use app\admin\controller\Base;
use think\facade\Db;
use think\facade\View;
use think\facade\Request;
use app\admin\model\YzAdminConfig;
class Yunzer extends Base{
# 菜单列表
public function menuinfo(){
$lists = Db::table('yz_admin_sys_menu')->where('parent_id',0)->order('sort DESC,smid DESC')->select();
View::assign([
'lists' => $lists
]);
return View::fetch();
}
# 菜单添加
public function menuadd(){
$req = request();
if($req->isPost()){
$data['label'] = trim(input('post.label'));
if(empty($data['label'])){
View::returnCode('90000009');
}
$data['icon_class'] = trim(input('post.icon_class'));
$data['sort'] = (int)trim(input('post.sort'));
$data['status'] = (int)trim(input('post.status'));
$data['type'] = (int)trim(input('post.type',0));
if($data['type'] == 1){
$data['src'] = trim(input('post.src1'));
if(empty($data['src'])){
$this->returnCode('90000012');
}
}else if($data['type'] == 2){
$data['src'] = trim(input('post.src2'));
if(empty($data['src'])){
$this->returnCode('90000013');
}
}else{
$data['src'] = '';
}
// 保存用户
$res = Db::table('yz_admin_sys_menu')->insert($data);
if(!$res){
$this->returnCode('91000001');
}
$this->returnCode(0);
}else{
$iconfont = Db::table('yz_z_iconfont')->where('status',1)->select();
View::assign([
'iconfont' => $iconfont
]);
return View::fetch();
}
}
# 菜单修改
public function menuedit(){
$req = request();
if($req->isPost()){
$smid = (int)input('post.smid');
$data['label'] = trim(input('post.label'));
if(!$data['label']){
$this->returnCode('90000009');
}
$data['icon_class'] = trim(input('post.icon_class'));
$data['sort'] = (int)trim(input('post.sort'));
$data['status'] = (int)trim(input('post.status'));
$data['type'] = (int)trim(input('post.type',0));
if($data['type'] == 1){
$data['src'] = trim(input('post.src1'));
if(empty($data['src'])){
$this->returnCode('90000012');
}
}else if($data['type'] == 2){
$data['src'] = trim(input('post.src2'));
if(empty($data['src'])){
$this->returnCode('90000013');
}
}else{
$data['src'] = '';
}
// 保存用户
$res = Db::table('yz_admin_sys_menu')->where('smid',$smid)->update($data);
if(!$res){
$this->returnCode('91000002');
}
$this->returnCode(0);
}else{
$smid = (int)input('get.smid');
$lists = Db::table('yz_admin_sys_menu')->where('smid',$smid)->find();
$iconfont = Db::table('yz_z_iconfont')->where('status',1)->select();
View::assign([
'lists' => $lists,
'iconfont' => $iconfont
]);
return View::fetch();
}
}
# 菜单删除
public function menudel(){
$smid = (int)input('post.smid');
$count = Db::table('yz_admin_sys_menu')->where('parent_id',$smid)->count();
if($count > 0){
$this->returnCode('90000010');
}
$res = Db::table('yz_admin_sys_menu')->where('smid',$smid)->delete();
if(empty($res)){
$this->returnCode('91000003');
}
$this->returnCode(0);
}
# 按钮管理
public function buttoninfo(){
$smid = (int)input('get.smid');
$lists = Db::table('yz_admin_sys_menu')->where('parent_id',$smid)->order('sort DESC')->select()->toArray();
if(!empty($lists)){
foreach($lists as &$v){
switch ($v['type']) {
case 0:
$v['type_name'] = '顶级菜单';
break;
case 1:
$v['type_name'] = '内部跳转';
break;
case 2:
$v['type_name'] = '超链接';
break;
default:
$v['type_name'] = '未规划类型';
break;
}
}
}
View::assign([
'lists' => $lists,
'smid' => $smid
]);
return View::fetch();
}
# 按钮添加
public function buttonadd(){
$req = request();
if($req->isPost()){
$smid = (int)input('post.smid');
$data['label'] = trim(input('post.label'));
if(!$data['label']){
$this->returnCode('90000015');
}
$data['icon_class'] = trim(input('post.icon_class'));
$data['sort'] = (int)trim(input('post.sort'));
$data['status'] = (int)trim(input('post.status'));
$data['type'] = (int)trim(input('post.type'));
if(empty($data['type'])){
$this->returnCode('90000011');
}
if($data['type'] == 1){
$data['src'] = trim(input('post.src1'));
if(empty($data['src'])){
$this->returnCode('90000012');
}
}else if($data['type'] == 2){
$data['src'] = trim(input('post.src2'));
if(empty($data['src'])){
$this->returnCode('90000013');
}
}
$data['parent_id'] = $smid;
$res = Db::table('yz_admin_sys_menu')->insert($data);
if(!$res){
$this->returnCode('91000001');
}
$this->returnCode(0);
}else{
$smid = (int)input('get.smid');
$iconfont = Db::table('yz_z_iconfont')->where('status',1)->select();
View::assign([
'smid' => $smid,
'iconfont' => $iconfont
]);
return View::fetch();
}
}
# 按钮修改
public function buttonedit(){
$req = request();
if($req->isPost()){
$smid = (int)input('post.smid');
$data['label'] = trim(input('post.label'));
if(!$data['label']){
$this->returnCode('90000015');
}
$data['icon_class'] = trim(input('post.icon_class'));
$data['sort'] = (int)trim(input('post.sort'));
$data['status'] = (int)trim(input('post.status'));
$data['type'] = (int)trim(input('post.type'));
if(empty($data['type'])){
$this->returnCode('90000011');
}
if($data['type'] == 1){
$data['src'] = trim(input('post.src1'));
if(empty($data['src'])){
$this->returnCode('90000012');
}
}else if($data['type'] == 2){
$data['src'] = trim(input('post.src2'));
if(empty($data['src'])){
$this->returnCode('90000013');
}
}
$res = Db::table('yz_admin_sys_menu')->where('smid',$smid)->update($data);
if(!$res){
$this->returnCode('91000002');
}
$this->returnCode(0);
}else{
$smid = (int)input('get.smid');
$lists = Db::table('yz_admin_sys_menu')->where('smid',$smid)->find();
$iconfont = Db::table('yz_z_iconfont')->where('status',1)->select();
View::assign([
'lists' => $lists,
'iconfont' => $iconfont
]);
return View::fetch();
}
}
# 按钮删除
public function buttondel(){
$smid = (int)input('post.smid');
$res = Db::table('yz_admin_sys_menu')->where('smid',$smid)->delete();
if(empty($res)){
$this->returnCode('91000003');
}
$this->returnCode(0);
}
# 配置列表
public function configlist(){
$req = request();
if($req->isPost()){
$page = (int)input('post.page',1);
$limit = (int)input('post.limit',$this->config['admin_page']);
$count = Db::table('yz_admin_config')->count();
$lists = Db::table('yz_admin_config')->page($page,$limit)->order('config_sort DESC,config_id DESC')->select();
$this->returnCode(0,$lists,$count);
}else{
return View::fetch();
}
}
# 配置添加
public function configadd(){
$req = request();
if($req->isPost()){
$data['config_name'] = trim(input('post.config_name'));
if(empty($data['config_name'])){
$this->returnCode(1,'请输入关键词');
}
$data['config_info'] = trim(input('post.config_info'));
if(empty($data['config_info'])){
$this->returnCode(1,'请输入作用');
}
$data['config_type'] = trim(input('post.config_type'));
$data['config_desc'] = trim(input('post.config_desc'));
$data['config_status'] = trim(input('post.config_status'));
$data['config_sort'] = trim(input('post.config_sort'));
$res = Db::table('yz_admin_config')->insert($data);
if(empty($res)){
$this->returnCode('91000001');
}
$this->returnCode(0);
}else{
return View::fetch();
}
}
# 配置修改
public function configedit(){
$req = request();
if($req->isPost()){
$config_id = (int)input('post.config_id');
if(empty($config_id)){
$this->returnCode(1,'请选择一条数据');
}
$data['config_name'] = trim(input('post.config_name'));
if(empty($data['config_name'])){
$this->returnCode(1,'请输入关键词');
}
$data['config_info'] = trim(input('post.config_info'));
if(empty($data['config_info'])){
$this->returnCode(1,'请输入作用');
}
$data['config_type'] = trim(input('post.config_type'));
$data['config_desc'] = trim(input('post.config_desc'));
$data['config_status'] = trim(input('post.config_status'));
$data['config_sort'] = trim(input('post.config_sort'));
$res = Db::table('yz_admin_config')->where('config_id',$config_id)->update($data);
if(empty($res)){
$this->returnCode('91000002');
}
$this->returnCode(0);
}else{
$config_id = (int)input('get.config_id');
$find = Db::table('yz_admin_config')->where('config_id',$config_id)->find();
View::assign([
'find' => $find
]);
return View::fetch();
}
}
# 配置删除
public function configdel(){
$config_id = (int)input('post.config_id');
if(empty($config_id)){
$this->returnCode(1,'请选择一条数据');
}
$res = Db::table('yz_admin_config')->where('config_id',$config_id)->delete();
if(empty($res)){
$this->returnCode('91000003');
}
$this->returnCode(0);
}
# 配置值
public function configvalue(){
$req = request();
if($req->isPost()){
$post = input('post.');
if(empty($post)){
$this->returnCode(1,'数据不能为空');
}
$oConfig = new YzAdminConfig();
$updateAll = $oConfig->updateAll($post);
if(empty($updateAll)){
$this->returnCode('91000002');
}
$this->returnCode(0);
}else{
$lists = Db::table('yz_admin_config')->order('config_sort DESC,config_id')->select();
View::assign([
'lists' => $lists
]);
return View::fetch();
}
}
}
+262
View File
@@ -0,0 +1,262 @@
<?php
namespace app\admin\controller;
use app\admin\controller\Base;
use think\facade\Db;
use think\facade\View;
use think\facade\Request;
class Yunzeradmin extends Base{
public function groupinfo(){
$group = Db::table('yz_admin_user_group')->select();
View::assign([
'group' => $group
]);
return View::fetch();
}
public function groupadd(){
if(Request::isPost()){
$data['group_name'] = trim(input('post.group_name'));
if(!$data['group_name']){
$this->returnCode('90000008');
}
$data['status'] = (int)trim(input('post.status'));
$data['create_time'] = time();
$menus = input('post.menu/a');
if($menus){
$data['rights'] = json_encode(array_keys($menus));
}
$res = Db::table('yz_admin_user_group')->insert($data);
if(!$res){
$this->returnCode('91000001');
}
$this->returnCode(0);
}else{
$menus = Db::table('yz_admin_sys_menu')->order('type,sort desc')->where('status','=',1)->select();
$menu = [];
// 先处理所有父菜单
foreach($menus as $menus_v){
if($menus_v['parent_id'] == 0){
$menu[$menus_v['smid']] = $menus_v;
$menu[$menus_v['smid']]['children'] = []; // 初始化 children 数组
}
}
// 再处理子菜单
foreach($menus as $menus_v){
if($menus_v['parent_id'] != 0 && isset($menu[$menus_v['parent_id']])){
$menu[$menus_v['parent_id']]['children'][] = $menus_v;
}
}
View::assign([
'menus' => $menu
]);
return View::fetch();
}
}
public function groupedit(){
if(Request::isPost()){
$group_id = (int)trim(input('post.group_id'));
$data['group_name'] = trim(input('post.group_name'));
if(!$data['group_name']){
$this->returnCode('90000008');
}
$data['status'] = (int)trim(input('post.status'));
$menus = input('post.menu/a');
if($menus){
$data['rights'] = json_encode(array_keys($menus));
}else{
$data['rights'] = '';
}
$res = Db::table('yz_admin_user_group')->where('group_id',$group_id)->update($data);
if(!$res){
$this->returnCode('91000002');
}
$this->returnCode(0);
}else{
$group_id = (int)input('get.group_id');
$group = Db::table('yz_admin_user_group')->where('group_id',$group_id)->find();
if($group && $group['rights']){
$group['rights'] = json_decode($group['rights']);
}
$menus = Db::table('yz_admin_sys_menu')->order('type,sort desc')->where('status','=',1)->select();
$menu = [];
// 先处理所有父菜单
foreach($menus as $menus_v){
if($menus_v['parent_id'] == 0){
$menu[$menus_v['smid']] = $menus_v;
$menu[$menus_v['smid']]['children'] = []; // 初始化 children 数组
}
}
// 再处理子菜单
foreach($menus as $menus_v){
if($menus_v['parent_id'] != 0 && isset($menu[$menus_v['parent_id']])){
$menu[$menus_v['parent_id']]['children'][] = $menus_v;
}
}
View::assign([
'group' => $group,
'menus' => $menu
]);
return View::fetch();
}
}
public function groupdel(){
$group_id = (int)input('post.group_id');
$res = Db::table('yz_admin_user_group')->where('group_id',$group_id)->delete();
if(empty($res)){
$this->returnCode('91000003');
}
$this->returnCode(0);
}
public function userinfo(){
$lists = Db::table('yz_admin_user')->select();
$group = [];
$groups = Db::table('yz_admin_user_group')->select();
foreach ($groups as $key => $value) {
$group[$value['group_id']] = $value;
}
View::assign([
'lists' => $lists,
'group' => $group
]);
return View::fetch();
}
public function useradd(){
if(Request::isPost()){
$data['account'] = trim(input('post.account'));
if(empty($data['account'])){
$this->returnCode('90000001');
}
$pattern = "/^([0-9A-Za-z-_.]+)@([0-9a-z]+.[a-z]{2,3}(.[a-z]{2})?)$/i";
if(!preg_match($pattern,$data['account'])){
$this->returnCode('90000006');
}
$item = Db::table('yz_admin_user')->where('account',$data['account'])->find();
if($item){
$this->returnCode('90000007');
}
$data['name'] = trim(input('post.name'));
$data['phone'] = trim(input('post.phone'));
$data['qq'] = (int)trim(input('post.qq'));
$data['group_id'] = (int)input('post.group_id');
$data['sex'] = (int)(input('post.sex'));
$data['status'] = (int)(input('post.status'));
$password = trim(input('post.password'));
if(empty($data['name'])){
$this->returnCode('90000002');
}
if(empty($data['phone'])){
$this->returnCode('90000003');
}
if(empty($data['group_id'])){
$this->returnCode('90000004');
}
if(empty($password)){
$this->returnCode('90000005');
}else{
$data['password'] = md5($password);
}
$data['create_time'] = time();
$data['update_time'] = time();
$res = Db::table('yz_admin_user')->insert($data);
if(!$res){
$this->returnCode('91000001');
}
$this->returnCode(0);
}else{
$group = [];
$groups = Db::table('yz_admin_user_group')->select();
foreach ($groups as $key => $value) {
$group[$value['group_id']] = $value;
}
View::assign([
'group' => $group
]);
return View::fetch();
}
}
# 修改管理员
public function useredit(){
if(Request::isPost()){
$uid = (int)trim(input('post.uid'));
$data['name'] = trim(input('post.name'));
$data['phone'] = trim(input('post.phone'));
$data['qq'] = (int)trim(input('post.qq'));
$data['group_id'] = (int)input('post.group_id');
$data['sex'] = (int)(input('post.sex'));
$data['status'] = (int)(input('post.status'));
if(empty($data['name'])){
$this->returnCode('90000002');
}
if(empty($data['phone'])){
$this->returnCode('90000003');
}
if(empty($data['group_id'])){
$this->returnCode('90000004');
}
// 保存用户
$res = Db::table('yz_admin_user')->where('uid',$uid)->update($data);
if(!$res){
$this->returnCode('91000002');
}
$this->returnCode(0);
}else{
$uid = (int)input('get.uid');
// 加载管理员
$lists = Db::table('yz_admin_user')->where('uid',$uid)->find();
// 加载角色
$group = [];
$groups = Db::table('yz_admin_user_group')->select();
foreach ($groups as $key => $value) {
$group[$value['group_id']] = $value;
}
View::assign([
'lists' => $lists,
'group' => $group
]);
return View::fetch();
}
}
# 删除管理员
public function userdel(){
$uid = (int)input('post.uid');
$res = Db::table('yz_admin_user')->where('uid',$uid)->delete();
if(empty($res)){
$this->returnCode('91000003');
}
$this->returnCode(0);
}
# 管理员信息
public function admininfo(){
if(Request::isPost()){
$find = Db::table('yz_admin_user')->where('uid',$this->adminId)->find();
if(empty($find)){
$this->returnCode(1,'当前账户不存在');
}
$data['name'] = trim(input('post.name'));
$data['phone'] = trim(input('post.phone'));
$data['qq'] = (int)trim(input('post.qq'));
$data['sex'] = (int)(input('post.sex'));
if(empty($data['name'])){
$this->returnCode('90000002');
}
if(empty($data['phone'])){
$this->returnCode('90000003');
}
// 保存用户
$res = Db::table('yz_admin_user')->where('uid',$this->adminId)->update($data);
if(!$res){
$this->returnCode('91000002');
}
$this->returnCode(0);
}else{
return View::fetch();
}
}
}
+167
View File
@@ -0,0 +1,167 @@
<?php
namespace app\admin\controller;
use app\admin\controller\Base;
use think\facade\Db;
use think\facade\View;
use think\facade\Request;
class Yunzertest extends Base{
public function icon_list(){
$lists = Db::table('yz_z_iconfont')->where('status','=',1)->select();
View::assign([
'lists' => $lists
]);
return View::fetch();
}
public function test_list(){
if(Request::isPost()){
$count = Db::table('yz_z_test')->count();
$page = (int)input('post.page',1);
$limit = (int)input('post.limit',10);
$lists = Db::table('yz_z_test')->order('test_id DESC')->page($page,$limit)->select()->each(function($item, $key){
if($item['test_reference'] == 1){
$item['test_reference'] = '开启';
}else{
$item['test_reference'] = '关闭';
}
$item['test_time'] = date('Y-m-d H:i:s',$item['test_time']);
return $item;
});
$this->returnCode(0,$lists,$count);
}else{
return View::fetch();
}
}
public function test_add(){
if(Request::isPost()){
$data['test_input'] = input('post.test_input');
$data['test_reference'] = input('post.test_reference');
$data['test_time'] = input('post.test_time');
if(!empty($data['test_time'])){
$data['test_time'] = strtotime($data['test_time']);
}
$data['test_data'] = input('post.test_data');
$data['test_datatime'] = input('post.test_datatime');
$data['test_img'] = input('post.test_img');
$data['test_rich_baidu'] = input('post.test_rich_baidu');
$data['test_url'] = input('post.test_url');
$insert = Db::table('yz_z_test')->insert($data);
if(empty($insert)){
$this->returnCode('91000001');
}
$this->returnCode(0);
}else{
return View::fetch();
}
}
public function test_edit(){
if(Request::isPost()){
$test_id = input('post.test_id');
$data['test_input'] = input('post.test_input');
$data['test_reference'] = input('post.test_reference');
$data['test_time'] = input('post.test_time');
if(!empty($data['test_time'])){
$data['test_time'] = strtotime($data['test_time']);
}
$data['test_data'] = input('post.test_data');
$data['test_datatime'] = input('post.test_datatime');
$data['test_img'] = input('post.test_img');
$data['test_rich'] = input('post.test_rich');
$data['test_rich_baidu'] = input('post.test_rich_baidu');
$data['test_url'] = input('post.test_url');
$update = Db::table('yz_z_test')->where('test_id',$test_id)->update($data);
if(empty($update)){
$this->returnCode('91000002');
}
$this->returnCode(0);
}else{
$test_id = input('get.test_id');
$find = Db::table('yz_z_test')->where('test_id',$test_id)->find();
if(!empty($find)){
$find['test_time'] = date('Y-m-d H:i:s',$find['test_time']);
}
View::assign([
'find' => $find
]);
return View::fetch();
}
}
public function test_del(){
$test_id = (int)input('post.test_id');
$res = Db::table('yz_z_test')->where('test_id',$test_id)->delete();
if(empty($res)){
$this->returnCode('91000003');
}
$this->returnCode(0);
}
public function test_static_list(){
$lists = Db::table('yz_z_test')
->order('test_id DESC')
->paginate();
View::assign([
'lists' => $lists
]);
return View::fetch();
}
public function test_static_add(){
if(Request::isPost()){
$data['test_input'] = input('post.test_input');
$data['test_reference'] = input('post.test_reference');
$data['test_time'] = input('post.test_time');
if(!empty($data['test_time'])){
$data['test_time'] = strtotime($data['test_time']);
}
$data['test_data'] = input('post.test_data');
$data['test_datatime'] = input('post.test_datatime');
$data['test_img'] = input('post.test_img');
$data['test_rich_baidu'] = input('post.test_rich_baidu');
$data['test_url'] = input('post.test_url');
$insert = Db::table('yz_z_test')->insert($data);
if(empty($insert)){
$this->returnCode('91000001');
}
$this->returnCode(0);
}else{
return View::fetch();
}
}
public function test_static_edit(){
if(Request::isPost()){
$test_id = input('post.test_id');
$data['test_input'] = input('post.test_input');
$data['test_reference'] = input('post.test_reference');
$data['test_time'] = input('post.test_time');
if(!empty($data['test_time'])){
$data['test_time'] = strtotime($data['test_time']);
}
$data['test_data'] = input('post.test_data');
$data['test_datatime'] = input('post.test_datatime');
$data['test_img'] = input('post.test_img');
$data['test_rich'] = input('post.test_rich');
$data['test_rich_baidu'] = input('post.test_rich_baidu');
$data['test_url'] = input('post.test_url');
$update = Db::table('yz_z_test')->where('test_id',$test_id)->update($data);
if(empty($update)){
$this->returnCode('91000002');
}
$this->returnCode(0);
}else{
$test_id = input('get.test_id');
$find = Db::table('yz_z_test')->where('test_id',$test_id)->find();
if(!empty($find)){
$find['test_time'] = date('Y-m-d H:i:s',$find['test_time']);
if(!empty($find['test_img'])){
$find['test_img_s'] = explode(';',$find['test_img']);
}
}
View::assign([
'find' => $find
]);
return View::fetch();
}
}
}