作者 赵彬吉

Merge branch 'dev' of http://47.244.231.31:8099/zhl/globalso-v6 into dev

... ... @@ -4,6 +4,8 @@ namespace App\Http\Controllers\Aside\User;
use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\User\ProjectGroupLogic;
use App\Http\Requests\Aside\User\ProjectGroupRequest;
use App\Models\ProjectGroup as ProjectGroupModel;
class ProjectGroupController extends BaseController
... ... @@ -15,4 +17,64 @@ class ProjectGroupController extends BaseController
$lists = $projectGroupModel->lists($this->map,$this->page,$this->row,$this->order);
$this->response('success',Code::SUCCESS,$lists);
}
/**
* @name :添加用户组
* @return void
* @author :liyuhang
* @method
*/
public function add(ProjectGroupRequest $request,ProjectGroupLogic $projectGroupLogic){
$request->validated();
$projectGroupLogic->group_add();
$this->response('success');
}
/**
* @name :编辑用户组
* @return void
* @author :liyuhang
* @method
*/
public function edit(ProjectGroupRequest $request,ProjectGroupLogic $projectGroupLogic){
$request->validate([
'id'=>'required'
],[
'id.required' => 'ID不能为空'
]);
$projectGroupLogic->group_edit();
$this->response('success');
}
/**
* @name :用户组详情
* @return void
* @author :liyuhang
* @method
*/
public function info(ProjectGroupLogic $projectGroupLogic){
$this->request->validate([
'id'=>'required'
],[
'id.required' => 'ID不能为空'
]);
$projectGroupLogic->group_info();
$this->success('success');
}
/**
* @name :删除用户组
* @return void
* @author :liyuhang
* @method
*/
public function del(ProjectGroupLogic $projectGroupLogic){
$this->request->validate([
'id'=>'required'
],[
'id.required' => 'ID不能为空'
]);
$projectGroupLogic->group_del();
$this->success('success');
}
}
... ...
... ... @@ -30,8 +30,8 @@ class ProjectUserController extends BaseController
* @author :liyuhang
* @method
*/
public function info(Request $request,UserLogic $userLogic){
$request->validate([
public function info(UserLogic $userLogic){
$this->request->validate([
'id'=>'required'
],[
'id.required' => 'ID不能为空'
... ... @@ -73,7 +73,7 @@ class ProjectUserController extends BaseController
* @author :liyuhang
* @method
*/
public function del(Request $request,UserLogic $userLogic){
public function del(UserLogic $userLogic){
$this->request->validate([
'id'=>['required','array'],
],[
... ...
... ... @@ -10,6 +10,7 @@ use App\Models\Ai\AiLog;
class AiCommandController extends BaseController
{
//获取文本内容
public $chat_url = 'v2/openai_chat';
/**
* @name :ai生成
... ...
... ... @@ -19,7 +19,8 @@ class BlogCategoryController extends BaseController
public function lists(BlogCategoryModel $blogCategoryModel){
//搜索条件
$this->map['project_id'] = $this->user['project_id'];
$lists = $blogCategoryModel->lists($this->map,$this->page,$this->row);
$lists = $blogCategoryModel->lists($this->map,$this->page,$this->row,$this->order,
['id','pid','name','num','status','sort','remark','created_at','updated_at']);
$this->response('success',Code::SUCCESS,$lists);
}
... ...
... ... @@ -21,7 +21,8 @@ class BlogController extends BaseController
public function lists(BlogModel $blogModel,BlogCategoryLogic $blogCategoryLogic,BlogLabelLogic $blogLabelLogic){
//搜索条件
$this->map['project_id'] = $this->user['project_id'];
$lists = $blogModel->lists($this->map,$this->page,$this->row,$this->order);
$lists = $blogModel->lists($this->map,$this->page,$this->row,$this->order,
['id','category_id','operator_id','status','created_at','label_id','updated_at','name','sort','url']);
if(!empty($lists['list'])){
foreach ($lists['list'] as $k => $v){
//获取分类名称
... ...
... ... @@ -22,7 +22,7 @@ class MailController extends BaseController
$mailModel = new MailModel();
//获取当前用户下的所有站内信
$this->map['user_list'] = ['like','%,'.$this->uid.',%'];
$this->map['status'] = $this::STATUS_ZERO;
$this->map['user_list'] = ['or',null];
$lists = $mailModel->lists($this->map,$this->page,$this->row);
if(!empty($lists['list'])){
foreach ($lists['list'] as $k => $v){
... ...
... ... @@ -20,7 +20,8 @@ class NewsCategoryController extends BaseController
public function lists(NewsCategoryModel $newsCategory){
//搜索条件
$this->map['project_id'] = $this->user['project_id'];
$lists = $newsCategory->lists($this->map,$this->page,$this->row,'sort');
$lists = $newsCategory->lists($this->map,$this->page,$this->row,$this->order,
['id','pid','name','num','status','sort','remark','created_at','updated_at']);
$this->response('success',Code::SUCCESS,$lists);
}
... ...
... ... @@ -24,7 +24,8 @@ class NewsController extends BaseController
*/
public function lists(NewsModel $news,NewsCategoryLogic $newsCategoryLogic){
$this->map['project_id'] = $this->user['project_id'];
$lists = $news->lists($this->map,$this->page,$this->row,$this->order);
$lists = $news->lists($this->map,$this->page,$this->row,$this->order,
['id','category_id','operator_id','status','created_at','updated_at','name','sort','url']);
if(!empty($lists['list'])){
foreach ($lists['list'] as $k => $v){
$v = $newsCategoryLogic->get_category_name($v);
... ...
... ... @@ -22,7 +22,7 @@ class UserController extends BaseController
public function lists(UserModel $userModel){
//TODO::搜索参数统一处理
$this->map['project_id'] = $this->user['project_id'];
$lists = $userModel->lists($this->map,$this->page,$this->row,$this->order,['id','name','mobile','created_at']);
$lists = $userModel->lists($this->map,$this->page,$this->row,$this->order,['id','name','mobile','created_at','wechat','status']);
if(empty($lists)){
$this->response('error',Code::USER_ERROR,[]);
}
... ...
... ... @@ -8,6 +8,7 @@ use Illuminate\Http\Exceptions\HttpResponseException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Intervention\Image\Facades\Image;
class ImageController
... ... @@ -173,9 +174,15 @@ class ImageController
$data[] = $hash.$filename;
}
$imageModel = new ImageModel();
$imageModel->insertAll($save_data);
$imageModel->insert($save_data);
return $data;
}
//下载
public function download($filename){
$path = Storage::path($filename);
return response()->download($path,time().rand(1,100000));
}
/**
* @name 统一返回参数
* @return JsonResponse
... ...
... ... @@ -5,6 +5,7 @@ namespace App\Http\Logic\Aside;
use App\Enums\Common\Common;
use App\Http\Logic\Logic;
use Illuminate\Support\Facades\Session;
/**
* @notes: 逻辑层基类 控制器调用 统一返回 统一抛出异常
... ... @@ -17,9 +18,12 @@ class BaseLogic extends Logic
protected $side = Common::A;
protected $user = [];
public function __construct()
{
$this->requestAll = request()->all();
$this->user = Session::get('manage');
}
}
... ...
<?php
namespace App\Http\Logic\Aside\User;
use App\Http\Logic\Aside\BaseLogic;
use App\Models\User\ProjectMenu;
class ProjectGroupLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->model = new ProjectMenu();
$this->param = $this->requestAll;
}
/**
* @name :详情
* @return void
* @author :liyuhang
* @method
*/
public function group_info(){
$info = $this->info($this->param);
return $this->success($info);
}
/**
* @name :添加
* @return void
* @author :liyuhang
* @method
*/
public function group_add(){
//查看当前用户组是否存在
$this->model->read(['name'=>$this->param['name'],'create_id'=>1]);
$rs = $this->model->add($this->param);
if($rs === false){
$this->fail('error');
}
return $this->success();
}
/**
* @name :编辑
* @return void
* @author :liyuhang
* @method
*/
public function group_edit(){
//查看当前用户组是否存在
$this->model->read(['name'=>$this->param['name'],'create_id'=>1]);
return $this->success();
}
/**
* @name :删除
* @return void
* @author :liyuhang
* @method
*/
public function group_del(){
return $this->success();
}
}
... ...
... ... @@ -22,11 +22,8 @@ class ProjectMenuLogic extends BaseLogic
* @method
*/
public function menu_info(){
$info = $this->model->read($this->param);
if($info === false){
$this->fail('当前数据不存在');
}
$this->success($info);
$info = $this->info($this->param);
return $this->success($info);
}
/**
... ... @@ -45,7 +42,7 @@ class ProjectMenuLogic extends BaseLogic
if($rs === false){
$this->fail('添加失败');
}
$this->success();
return $this->success();
}
/**
... ... @@ -60,11 +57,8 @@ class ProjectMenuLogic extends BaseLogic
if($info !== false){
$this->fail('当前菜单名称已存在');
}
$rs = $this->model->edit($this->param,['id'=>$this->param['id']]);
if($rs === false){
$this->fail('编辑失败');
}
$this->success();
$this->edit($this->param,['id'=>$this->param['id']]);
return $this->success();
}
/**
... ... @@ -74,11 +68,19 @@ class ProjectMenuLogic extends BaseLogic
* @method
*/
public function menu_del(){
$ids = $this->param['id'];
//查看当前菜单是否有子菜单
foreach ($ids as $v){
$info = $this->model->read(['pid'=>$v],['id','name']);
if($info !== false){
$this->fail('当前分类存在子分类:'.$info['name'].',不允许删除');
}
}
$this->param['id'] = ['in',$this->param['id']];
$rs = $this->model->del($this->param);
$rs = $this->del($this->param);
if($rs === false){
$this->fail('编辑失败');
}
$this->success();
return $this->success();
}
}
... ...
... ... @@ -39,7 +39,7 @@ class ProjectRoleLogic extends BaseLogic
}
}
}
$this->success($menu);
return $this->success($menu);
}
/**
* @name :详情
... ... @@ -48,11 +48,8 @@ class ProjectRoleLogic extends BaseLogic
* @method
*/
public function role_info(){
$info = $this->model->read($this->param);
if($info === false){
$this->fail('当前数据不存在');
}
$this->success($info);
$info = $this->info($this->param);
return $this->success($info);
}
/**
... ... @@ -71,7 +68,7 @@ class ProjectRoleLogic extends BaseLogic
if($rs === false){
$this->fail('添加失败');
}
$this->success();
return $this->success();
}
/**
... ... @@ -86,11 +83,8 @@ class ProjectRoleLogic extends BaseLogic
if($info !== false){
$this->fail('当前菜单名称已存在');
}
$rs = $this->model->edit($this->param,['id'=>$this->param['id']]);
if($rs === false){
$this->fail('编辑失败');
}
$this->success();
$this->edit($this->param,['id'=>$this->param['id']]);
return $this->success();
}
/**
... ... @@ -102,17 +96,15 @@ class ProjectRoleLogic extends BaseLogic
public function role_del(){
//查询当前角色下是否有用户
$userModel = new UserModel();
foreach ($this->param['id'] as $v){
$ids = $this->param['id'];
foreach ($ids as $v){
$user_info = $userModel->read(['role_id'=>$v]);
if($user_info !== false){
$this->fail('id为{'.$v.'}'.'的角色拥有用户'.$user_info['name'].',不允许删除');
}
}
$this->param['id'] = ['in',$this->param['id']];
$rs = $this->model->del($this->param);
if($rs === false){
$this->fail('编辑失败');
}
$this->success();
$this->del($this->param,$ids);
return $this->success();
}
}
... ...
... ... @@ -124,4 +124,23 @@ class BaseLogic extends Logic
return $hash.$filename;
}
/**
* @name :自增或自减
* @return bool
* @author :liyuhang
* @method
*/
public function set_num($model,$data,$type = 'add',$num = 1){
if(is_array($data)){
foreach ($data as $v){
$this->set_num($model,$v,$type,$num);
}
}
if($type == 'del'){
$model::where('id',$data)->decrement('num',$num);
}else{
$model::where('id',$data)->increment('num',$num);
}
return true;
}
}
... ...
... ... @@ -75,6 +75,9 @@ class BlogLogic extends BaseLogic
$this->param['image'] = $data;
}
$rs = $this->model->insertGetId($this->param);
//分类计数
$category_data = explode(',',trim($this->param['category_id'],','));
$this->set_num(BlogCategoryModel::class,$category_data);
RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_BLOG, $rs, $this->user['project_id']);
DB::commit();
}catch (\Exception $e){
... ... @@ -190,9 +193,35 @@ class BlogLogic extends BaseLogic
*/
public function blog_del(){
$ids = $this->param['id'];
$this->param['id'] = ['in',$this->param['id']];
$this->del($this->param,$ids);
$str = $this->get_category_id($ids);
DB::beginTransaction();
try {
if(!empty($str)){
$category_data = explode(',',$str);
$this->set_num(BlogCategoryModel::class,$category_data,'del');
$this->param['id'] = ['in',$this->param['id']];
$this->del($this->param,$ids);
}
DB::commit();
}catch (Exception $e){
DB::rollBack();
$this->fail('当前数据不存在');
}
return $this->success();
}
/**
* @param $ids
* @name :删除数据时获取所有数据的分类id
* @return void
* @author :liyuhang
* @method
*/
public function get_category_id($ids = []){
$str = '';
$list = $this->model->list(['id'=>['in',$ids]],'id',['id','category_id']);
foreach ($list as $v){
$str .= trim($v['category_id'],',').',';
}
return trim($str,',');
}
}
... ...
... ... @@ -10,6 +10,7 @@ use App\Models\News\News;
use App\Models\News\NewsCategory as NewsCategoryModel;
use App\Models\RouteMap;
use Illuminate\Support\Facades\DB;
use mysql_xdevapi\Exception;
class NewsLogic extends BaseLogic
{
... ... @@ -66,6 +67,9 @@ class NewsLogic extends BaseLogic
$this->param['image'] = $data;
}
$rs = $this->model->insertGetId($this->param);
//产品计数
$category_data = explode(',',trim($this->param['category_id'],','));
$this->set_num(NewsCategoryModel::class,$category_data);
RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_NEWS, $rs, $this->user['project_id']);
DB::commit();
}catch (\Exception $e){
... ... @@ -92,7 +96,7 @@ class NewsLogic extends BaseLogic
}
$this->param['operator_id'] = $this->user['id'];
//多个分类按逗号隔开
$this->param['category_id'] = ','.$this->param['category_id'].',';
$this->param['category_id'] = $this->param['category_id'];
DB::beginTransaction();
try {
//上传图片
... ... @@ -109,6 +113,7 @@ class NewsLogic extends BaseLogic
}
$this->param['image'] = $this->upload();
}
//设置路由
RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_NEWS, $this->param['id'], $this->user['project_id']);
$this->model->edit($this->param,['id'=>$this->param['id']]);
DB::commit();
... ... @@ -178,8 +183,36 @@ class NewsLogic extends BaseLogic
*/
public function news_del(){
$ids = $this->param['id'];
$this->param['id'] = ['in',$this->param['id']];
$this->del($this->param,$ids);
$str = $this->get_category_id($ids);
DB::beginTransaction();
try {
if(!empty($str)){
$category_data = explode(',',$str);
$this->set_num(NewsCategoryModel::class,$category_data,'del');
$this->param['id'] = ['in',$this->param['id']];
$this->del($this->param,$ids);
}
DB::commit();
}catch (Exception $e){
DB::rollBack();
$this->fail('当前数据不存在');
}
return $this->success();
}
/**
* @param $ids
* @name :删除数据时获取所有数据的分类id
* @return void
* @author :liyuhang
* @method
*/
public function get_category_id($ids){
$str = '';
$list = $this->model->list(['id'=>['in',$ids]],'id',['id','category_id']);
foreach ($list as $v){
$str .= trim($v['category_id'],',').',';
}
return trim($str,',');
}
}
... ...
<?php
namespace App\Http\Requests\Aside\User;
use Illuminate\Foundation\Http\FormRequest;
class ProjectGroupRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name'=>'required|string',
];
}
public function messages()
{
return [
'name.required'=>'名称必须填写',
];
}
}
... ...
... ... @@ -25,6 +25,8 @@ class BlogCategoryRequest extends FormRequest
{
return [
'name'=>'required|max:100',
'remark'=>'required|max:255',
'alias'=>'required|max:10',
];
}
... ... @@ -33,6 +35,10 @@ class BlogCategoryRequest extends FormRequest
return [
'name.required'=>'请填写名称',
'name.max'=>'名称最大100字',
'remark.required'=>'请填写简介',
'remark.max'=>'简介最大255字',
'remark.required'=>'请填写别名',
'remark.max'=>'别名最大10字',
];
}
}
... ...
... ... @@ -25,6 +25,8 @@ class NewsCategoryRequest extends FormRequest
{
return [
'name'=>'required|max:100',
'remark'=>'required|max:255',
'alias'=>'required|max:10',
];
}
... ... @@ -33,6 +35,10 @@ class NewsCategoryRequest extends FormRequest
return [
'name.required'=>'请填写名称',
'name.max'=>'名称最大100字',
];
'remark.required'=>'请填写简介',
'remark.max'=>'简介最大255字',
'remark.required'=>'请填写别名',
'remark.max'=>'别名最大10字',
];
}
}
... ...
... ... @@ -179,6 +179,10 @@ class Base extends Model
// in查询 ['id'=>['in',[1,2,3]]]
$query->whereIn($k, $v[1]);
break;
case 'or':
// in查询 ['id'=>['in',[1,2,3]]]
$query->orWhere($k, $v[1]);
break;
case 'no in':
// in查询 ['id'=>['not in',[1,2,3]]]
$query->whereNotIn($k, $v[1]);
... ...
... ... @@ -9,6 +9,62 @@ Route::middleware(['web'])->group(function (){ //admin用渲染默认要加上w
Route::middleware(['aloginauth'])->group(function () {
Route::get('/', [Aside\IndexController::class, 'index'])->name('admin.home.white');
Route::get('/logout', [Aside\LoginController::class, 'logout'])->name('admin.logout.white');
//会员相关
Route::prefix('user')->group(function () {
//会员管理
Route::any('/', [Aside\User\ProjectUserController::class, 'lists'])->name('admin.user_lists');
Route::any('/info', [Aside\User\ProjectUserController::class, 'info'])->name('admin.user_info');
Route::any('/add', [Aside\User\ProjectUserController::class, 'add'])->name('admin.user_add');
Route::any('/edit', [Aside\User\ProjectUserController::class, 'edit'])->name('admin.user_edit');
Route::any('/del', [Aside\User\ProjectUserController::class, 'del'])->name('admin.user_del');
//角色管理
Route::prefix('role')->group(function () {
Route::any('/', [Aside\User\ProjectRoleController::class, 'lists'])->name('admin.role_lists');
Route::any('/info', [Aside\User\ProjectRoleController::class, 'info'])->name('admin.role_info');
Route::any('/get_menu', [Aside\User\ProjectRoleController::class, 'get_menu'])->name('admin.get_menu');
Route::any('/add', [Aside\User\ProjectRoleController::class, 'add'])->name('admin.role_add');
Route::any('/edit', [Aside\User\ProjectRoleController::class, 'edit'])->name('admin.role_edit');
Route::any('/del', [Aside\User\ProjectRoleController::class, 'del'])->name('admin.role_del');
});
//栏目管理
Route::prefix('menu')->group(function () {
Route::any('/', [Aside\User\ProjectMenuController::class, 'lists'])->name('admin.menu_lists');
Route::any('/info', [Aside\User\ProjectMenuController::class, 'info'])->name('admin.menu_info');
Route::any('/add', [Aside\User\ProjectMenuController::class, 'add'])->name('admin.menu_add');
Route::any('/edit', [Aside\User\ProjectMenuController::class, 'edit'])->name('admin.menu_edit');
Route::any('/del', [Aside\User\ProjectMenuController::class, 'del'])->name('admin.menu_del');
});
//用户组
Route::prefix('group')->group(function () {
Route::any('/', [Aside\User\ProjectGroupController::class, 'lists'])->name('admin.group_lists');
Route::any('/info', [Aside\User\ProjectGroupController::class, 'info'])->name('admin.group_info');
Route::any('/add', [Aside\User\ProjectGroupController::class, 'add'])->name('admin.group_add');
Route::any('/edit', [Aside\User\ProjectGroupController::class, 'edit'])->name('admin.group_edit');
Route::any('/del', [Aside\User\ProjectGroupController::class, 'del'])->name('admin.group_del');
});
});
//ai指令
Route::prefix('ai')->group(function () {
Route::any('/', [Aside\Ai\AiCommandController::class, 'lists'])->name('admin.ai_lists');
Route::any('/info', [Aside\Ai\AiCommandController::class, 'info'])->name('admin.ai_info');
Route::any('/add', [Aside\Ai\AiCommandController::class, 'add'])->name('admin.ai_add');
Route::any('/edit', [Aside\Ai\AiCommandController::class, 'edit'])->name('admin.ai_edit');
Route::any('/del', [Aside\Ai\AiCommandController::class, 'del'])->name('admin.ai_del');
});
//站内信
Route::prefix('mail')->group(function () {
Route::any('/', [Aside\Mail\MailController::class, 'lists'])->name('admin.mail_lists');
Route::any('/info', [Aside\Mail\MailController::class, 'info'])->name('admin.mail_info');
Route::any('/add', [Aside\Mail\MailController::class, 'add'])->name('admin.mail_add');
Route::any('/edit', [Aside\Mail\MailController::class, 'edit'])->name('admin.mail_edit');
Route::any('/del', [Aside\Mail\MailController::class, 'del'])->name('admin.mail_del');
});
//管理员
Route::prefix('manage')->group(function () {
... ...