作者 赵彬吉

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

  1 +<?php
  2 +
  3 +namespace App\Console\Commands\AyrShare;
  4 +
  5 +use App\Helper\AyrShare as AyrShareHelper;
  6 +use App\Models\AyrShare\AyrShare as AyrShareModel;
  7 +use Illuminate\Console\Command;
  8 +
  9 +class ShareConfig extends Command
  10 +{
  11 + public $error = 0;
  12 + /**
  13 + * The name and signature of the console command.
  14 + *
  15 + * @var string
  16 + */
  17 + protected $signature = 'share_config';
  18 +
  19 + /**
  20 + * The console command description.
  21 + *
  22 + * @var string
  23 + */
  24 + protected $description = '更新用户Ayr_share配置';
  25 + /**
  26 + * @name :(定时执行更新用户配置)handle
  27 + * @author :lyh
  28 + * @method :post
  29 + * @time :2023/5/12 14:48
  30 + */
  31 + public function handle()
  32 + {
  33 + $ayrShareModel = new AyrShareModel();
  34 + //更新用户配置
  35 + $lists = $ayrShareModel->lists($this->map,$this->page,$this->row,'id',['id','profile_key','bind_plat_from']);
  36 + foreach ($lists['list'] as $k => $v){
  37 + if(empty($v['profile_key'])){
  38 + continue;
  39 + }
  40 + //获取当前用户配置
  41 + $ayrShareHelper = new AyrShareHelper();
  42 + $share_info = $ayrShareHelper->get_profiles_users($v['profile_key']);
  43 + if(!isset($share_info['activeSocialAccounts'])){
  44 + continue;
  45 + }
  46 + $str = json_encode($share_info['activeSocialAccounts']);
  47 + if($str != $v['bind_plat_from']){
  48 + $rs = $ayrShareModel->edit(['bind_plat_from'=>$str],['id'=>$v['id']]);
  49 + if($rs === false){
  50 + $this->error++;
  51 + }
  52 + }
  53 + }
  54 + echo $this->error;
  55 + }
  56 +}
  1 +<?php
  2 +
  3 +namespace App\Console\Commands\AyrShare;
  4 +use App\Helper\AyrShare as AyrShareHelper;
  5 +use App\Models\AyrShare\AyrRelease as AyrReleaseModel;
  6 +use Carbon\Carbon;
  7 +use App\Models\AyrShare\AyrShare as AyrShareModel;
  8 +use Illuminate\Console\Command;
  9 +
  10 +class ShareUser extends Command
  11 +{
  12 + public $error = 0;
  13 + /**
  14 + * The name and signature of the console command.
  15 + *
  16 + * @var string
  17 + */
  18 + protected $signature = 'share_user';
  19 +
  20 + /**
  21 + * The console command description.
  22 + *
  23 + * @var string
  24 + */
  25 + protected $description = '用户一周内无记录清除Ayr_share';
  26 + /**
  27 + * @name :(定时执行)handle
  28 + * @author :lyh
  29 + * @method :post
  30 + * @time :2023/5/12 14:48
  31 + */
  32 + public function handle()
  33 + {
  34 + $this->user_operator_record();
  35 + }
  36 +
  37 + /**
  38 + * @name : 检测用户是否无操作记录
  39 + * @author :lyh
  40 + * @method :post
  41 + * @time :2023/5/12 14:55
  42 + */
  43 + protected function user_operator_record(){
  44 + //获取所有ayr_share用户
  45 + $ayr_share_model = new AyrShareModel();
  46 + $ayr_share_list = $ayr_share_model->list();
  47 + foreach ($ayr_share_list as $k => $v){
  48 + //查询当前用户是否有未推送的博文
  49 + $ayr_release = new AyrReleaseModel();
  50 + $release_info = $ayr_release->read(['idempotency_key'=>['>',date('Y-m-d H:i:s',time())],'share_id'=>$v['id']]);
  51 + //有推文时,直接跳出循环
  52 + if($release_info !== false){
  53 + continue;
  54 + }
  55 + //查看用户是否在一周内有发送博客
  56 + $start_at = Carbon::now()->modify('-7 days')->toDateString();
  57 + $end_at = Carbon::now()->toDateString();
  58 + $release_info = $ayr_release->read(['created_at'=>['between',[$start_at,$end_at]]]);
  59 + //有发送博文,则跳出循环
  60 + if($release_info == false){
  61 + continue;
  62 + }
  63 + //删除用户第三方配置
  64 + $ayr_share_helper = new AyrShareHelper();
  65 + $res = $ayr_share_helper->deleted_profiles();
  66 + if($res['status'] == 'fail'){
  67 + $this->error++;
  68 + continue;
  69 + }
  70 + //更新数据库
  71 + $data = [
  72 + 'title'=>null,
  73 + 'bind_plat_from'=>null,
  74 + 'profile_key'=>null,
  75 + 'ref_id'=>null,
  76 + ];
  77 + $res = $ayr_share_model->edit($data,['id'=>$v['id']]);
  78 + if($res == false){
  79 + $this->error++;
  80 + }
  81 + }
  82 + return $this->error;
  83 + }
  84 +}
@@ -22,6 +22,7 @@ class Kernel extends ConsoleKernel @@ -22,6 +22,7 @@ class Kernel extends ConsoleKernel
22 $schedule->command('rank_data_indexed_pages')->weeklyOn(1, '01:00')->withoutOverlapping(1); // 排名数据-页面收录,每周一凌晨执行一次 22 $schedule->command('rank_data_indexed_pages')->weeklyOn(1, '01:00')->withoutOverlapping(1); // 排名数据-页面收录,每周一凌晨执行一次
23 $schedule->command('rank_data_recomm_domain')->weeklyOn(1, '01:00')->withoutOverlapping(1); // 排名数据-引荐域名,每周一凌晨执行一次 23 $schedule->command('rank_data_recomm_domain')->weeklyOn(1, '01:00')->withoutOverlapping(1); // 排名数据-引荐域名,每周一凌晨执行一次
24 $schedule->command('rank_data_week')->weeklyOn(1, '01:00')->withoutOverlapping(1); // 排名数据,每周一凌晨执行一次 24 $schedule->command('rank_data_week')->weeklyOn(1, '01:00')->withoutOverlapping(1); // 排名数据,每周一凌晨执行一次
  25 + $schedule->command('share_user')->dailyAt('01:00')->withoutOverlapping(1); // 清除用户ayr_share数据,每天凌晨1点执行一次
25 } 26 }
26 27
27 /** 28 /**
@@ -68,7 +68,7 @@ zFePUMXy1bFghAfzNKlrc5XgH4ixeeMh3cDtU97K @@ -68,7 +68,7 @@ zFePUMXy1bFghAfzNKlrc5XgH4ixeeMh3cDtU97K
68 public function deleted_profiles($data){ 68 public function deleted_profiles($data){
69 $param = [ 69 $param = [
70 'title'=>$data['title'], 70 'title'=>$data['title'],
71 -// 'profileKey'=>$this->profile_key, 71 + 'profileKey'=>$data['profileKey'],
72 ]; 72 ];
73 $url = $this->path.'/api/profiles/profile'; 73 $url = $this->path.'/api/profiles/profile';
74 return $this->http_click('delete',$url,$param); 74 return $this->http_click('delete',$url,$param);
@@ -4,8 +4,6 @@ namespace App\Http\Controllers\Aside; @@ -4,8 +4,6 @@ namespace App\Http\Controllers\Aside;
4 4
5 use App\Enums\Common\Code; 5 use App\Enums\Common\Code;
6 use App\Http\Controllers\Controller; 6 use App\Http\Controllers\Controller;
7 -use App\Http\Requests\Aside\Template\TemplateRequest;  
8 -use App\Http\Requests\Scene;  
9 use Illuminate\Http\JsonResponse; 7 use Illuminate\Http\JsonResponse;
10 use Illuminate\Http\Request; 8 use Illuminate\Http\Request;
11 use Illuminate\Http\Exceptions\HttpResponseException; 9 use Illuminate\Http\Exceptions\HttpResponseException;
@@ -159,17 +157,6 @@ class BaseController extends Controller @@ -159,17 +157,6 @@ class BaseController extends Controller
159 } 157 }
160 158
161 159
162 - /**  
163 - * 验证  
164 - * @param $c  
165 - * @param $scene  
166 - * @return array  
167 - * @author:dc  
168 - * @time 2023/5/11 14:56  
169 - */  
170 - protected final function verify($c,$scene=null){  
171 - return app($c)->setScene($scene?:Scene::$CREATE)->validated();  
172 - }  
173 160
174 161
175 162
@@ -5,7 +5,6 @@ namespace App\Http\Controllers\Aside; @@ -5,7 +5,6 @@ namespace App\Http\Controllers\Aside;
5 use App\Enums\Common\Code; 5 use App\Enums\Common\Code;
6 use App\Http\Logic\Aside\Template\TemplateLogic; 6 use App\Http\Logic\Aside\Template\TemplateLogic;
7 use App\Http\Requests\Aside\Template\TemplateRequest; 7 use App\Http\Requests\Aside\Template\TemplateRequest;
8 -use App\Http\Requests\Scene;  
9 use App\Models\Template\ATemplate; 8 use App\Models\Template\ATemplate;
10 use App\Models\Template\ATemplateHtml; 9 use App\Models\Template\ATemplateHtml;
11 use Illuminate\Validation\Rule; 10 use Illuminate\Validation\Rule;
@@ -39,8 +38,8 @@ class TemplateController extends BaseController @@ -39,8 +38,8 @@ class TemplateController extends BaseController
39 * @author:dc 38 * @author:dc
40 * @time 2023/5/4 16:19 39 * @time 2023/5/4 16:19
41 */ 40 */
42 - public function edit(){  
43 - $this->save(Scene::$UPDATE); 41 + public function edit(TemplateRequest $request){
  42 + $this->save($request->validated());
44 } 43 }
45 44
46 /** 45 /**
@@ -48,8 +47,8 @@ class TemplateController extends BaseController @@ -48,8 +47,8 @@ class TemplateController extends BaseController
48 * @author:dc 47 * @author:dc
49 * @time 2023/5/5 9:30 48 * @time 2023/5/5 9:30
50 */ 49 */
51 - public function insert(){  
52 - $this->save(Scene::$CREATE); 50 + public function insert(TemplateRequest $request){
  51 + $this->save($request->validated());
53 } 52 }
54 53
55 54
@@ -62,11 +61,7 @@ class TemplateController extends BaseController @@ -62,11 +61,7 @@ class TemplateController extends BaseController
62 * @author:dc 61 * @author:dc
63 * @time 2023/5/11 10:13 62 * @time 2023/5/11 10:13
64 */ 63 */
65 - private function save($scene){  
66 -  
67 -  
68 - $data = $this->verify(TemplateRequest::class,$scene);  
69 - 64 + private function save($data){
70 65
71 TemplateLogic::instance()->save($data); 66 TemplateLogic::instance()->save($data);
72 67
@@ -22,10 +22,22 @@ class AyrShareController extends BaseController @@ -22,10 +22,22 @@ class AyrShareController extends BaseController
22 * @method :post 22 * @method :post
23 * @time :2023/5/5 16:06 23 * @time :2023/5/5 16:06
24 */ 24 */
25 - public function lists(AyrShareModel $ayrShareModel){ 25 + public function lists(AyrShareModel $ayrShareModel,AyrShareLogic $ayrShareLogic){
26 //授权配置列表 26 //授权配置列表
27 $share_list = $ayrShareModel->platforms; 27 $share_list = $ayrShareModel->platforms;
28 - $lists = $ayrShareModel->lists($this->map,$this->page,$this->row,'id',['id','name','bind_plat_from','operator_id','created_at','updated_at']); 28 + $lists = $ayrShareModel->lists($this->map,$this->page,$this->row,'id',['id','name','title','profile_key','bind_plat_from','operator_id','created_at','updated_at']);
  29 + foreach ($lists['list'] as $k => $v){
  30 + if(!empty($v['profile_key'])){
  31 + $ayrShareHelper = new AyrShareHelper();
  32 + $share_info = $ayrShareHelper->get_profiles_users($v['profile_key']);
  33 + if(isset($share_info['activeSocialAccounts'])){
  34 + $str = json_encode($share_info['activeSocialAccounts']);
  35 + if($str != $v['bind_plat_from']){
  36 + $ayrShareLogic->ayr_share_edit(['bind_plat_from'=>$str]);
  37 + }
  38 + }
  39 + }
  40 + }
29 $lists['share_list'] = $share_list; 41 $lists['share_list'] = $share_list;
30 $this->response('列表',Code::SUCCESS,$lists); 42 $this->response('列表',Code::SUCCESS,$lists);
31 } 43 }
@@ -70,7 +70,7 @@ class BaseController extends Controller @@ -70,7 +70,7 @@ class BaseController extends Controller
70 $this->map['status'] = $v; 70 $this->map['status'] = $v;
71 break; 71 break;
72 case "category_id": 72 case "category_id":
73 - $this->map['category_id'] = $v; 73 + $this->map['category_id'] = ['like','%,'.$v.',%'];;
74 break; 74 break;
75 case "name": 75 case "name":
76 $this->map['name'] = ['like','%'.$v.'%']; 76 $this->map['name'] = ['like','%'.$v.'%'];
@@ -85,7 +85,7 @@ class BaseController extends Controller @@ -85,7 +85,7 @@ class BaseController extends Controller
85 case "end_at": 85 case "end_at":
86 if(!empty($v)){ 86 if(!empty($v)){
87 $this->_btw[1] = $v; 87 $this->_btw[1] = $v;
88 - $this->map['updated_at'] = ['between', $this->_btw]; 88 + $this->map['created_at'] = ['between', $this->_btw];
89 } 89 }
90 break; 90 break;
91 default: 91 default:
@@ -120,9 +120,10 @@ class BlogController extends BaseController @@ -120,9 +120,10 @@ class BlogController extends BaseController
120 */ 120 */
121 public function status(BlogLogic $blogLogic){ 121 public function status(BlogLogic $blogLogic){
122 $this->request->validate([ 122 $this->request->validate([
123 - 'id'=>['required'], 123 + 'id'=>['required','array'],
124 ],[ 124 ],[
125 'id.required' => 'ID不能为空', 125 'id.required' => 'ID不能为空',
  126 + 'id.array' => 'ID为数组',
126 ]); 127 ]);
127 $blogLogic->blog_status(); 128 $blogLogic->blog_status();
128 //TODO::写入日志 129 //TODO::写入日志
@@ -4,6 +4,8 @@ namespace App\Http\Controllers\Bside; @@ -4,6 +4,8 @@ namespace App\Http\Controllers\Bside;
4 4
5 5
6 use App\Enums\Common\Code; 6 use App\Enums\Common\Code;
  7 +use App\Http\Logic\Bside\Nav\NavLogic;
  8 +use App\Http\Requests\Bside\Nav\NavRequest;
7 use App\Models\BNav; 9 use App\Models\BNav;
8 10
9 /** 11 /**
@@ -16,42 +18,6 @@ use App\Models\BNav; @@ -16,42 +18,6 @@ use App\Models\BNav;
16 class NavController extends BaseController 18 class NavController extends BaseController
17 { 19 {
18 20
19 - /**  
20 - * 验证规则  
21 - * @var array[]  
22 - */  
23 - private $verify = [  
24 - 'role' => [  
25 - 'pid' => ['required','integer','gte:0'],  
26 - 'name' => ['required','max:100'],  
27 - 'location' => ['required','in:header,footer'],  
28 - 'url' => ['required','max:200'],  
29 - 'status' => ['required','in:0,1'],  
30 - 'target' => ['required','in:0,1'],  
31 - 'sort' => ['required','integer','gte:0']  
32 - ],  
33 - 'message' => [  
34 - 'pid.required' => '上级选择错误',  
35 - 'pid.gte' => '上级选择错误',  
36 - 'pid.integer' => '上级选择错误',  
37 - 'name.required' => '名称必须',  
38 - 'name.max' => '名称不能超过100个字符',  
39 - 'location.required' => '位置选择错误',  
40 - 'location.in' => '位置选择错误',  
41 - 'url.required' => '链接必须',  
42 - 'url.max' => '链接不能超过200个字符',  
43 - 'status.required' => '状态选择错误',  
44 - 'status.in' => '状态必须是显示/隐藏',  
45 - 'target.required' => '打开方式必须',  
46 - 'target.in' => '打开方式选择错误',  
47 - 'sort.required' => '排序必须',  
48 - 'sort.integer' => '排序必须是一个数字',  
49 - 'sort.gte' => '排序必须大于等于0',  
50 - ],  
51 - 'attr' => [  
52 -  
53 - ]  
54 - ];  
55 21
56 /** 22 /**
57 * 列表数据 23 * 列表数据
@@ -62,46 +28,13 @@ class NavController extends BaseController @@ -62,46 +28,13 @@ class NavController extends BaseController
62 */ 28 */
63 public function index(){ 29 public function index(){
64 30
65 - $isTree = $this->param['tree']??false;  
66 - // 显示位置  
67 - $location = $this->param['location']??'';  
68 -  
69 - $lists = BNav::_all($this->user['project_id'],$location)->toArray();  
70 31
71 - if($isTree){  
72 - $lists = list_to_tree($lists);  
73 - }  
74 -  
75 - return $this->success($lists); 32 + return $this->success(NavLogic::instance()->list());
76 33
77 } 34 }
78 35
79 36
80 37
81 - /**  
82 - * 创建导航栏  
83 - * @author:dc  
84 - * @time 2023/5/8 16:39  
85 - */  
86 - public function create(){  
87 - return $this->save();  
88 - }  
89 -  
90 -  
91 - /**  
92 - * 修改  
93 - * @return \Illuminate\Http\JsonResponse  
94 - * @throws \Illuminate\Validation\ValidationException  
95 - * @throws \Psr\Container\ContainerExceptionInterface  
96 - * @throws \Psr\Container\NotFoundExceptionInterface  
97 - * @author:dc  
98 - * @time 2023/5/8 17:06  
99 - */  
100 - public function update(){  
101 - $this->verify['role']['id'] = ['required','integer','gt:0'];  
102 - $this->verify['message']['id.gt'] = $this->verify['message']['id.integer'] = $this->verify['message']['id.required'] = '编辑导航数据不存在';  
103 - return $this->save();  
104 - }  
105 38
106 /** 39 /**
107 * 新增修改 40 * 新增修改
@@ -112,33 +45,11 @@ class NavController extends BaseController @@ -112,33 +45,11 @@ class NavController extends BaseController
112 * @author:dc 45 * @author:dc
113 * @time 2023/5/8 17:06 46 * @time 2023/5/8 17:06
114 */ 47 */
115 - private function save(){  
116 - $data = $this->validate(request() ,$this->verify['role'],$this->verify['message']);  
117 -  
118 - if($data['pid']){  
119 - // 验证是否存在上级  
120 - $all = BNav::_all($this->user['project_id'],$data['location']);  
121 - if(!$all->where('id',$data['pid'])->count()){  
122 - return $this->response('上级栏目不存在',Code::SYSTEM_ERROR);  
123 - }  
124 - // 上级不允许是自己的下级  
125 - if(!empty($data['id'])){  
126 - $all = list_to_tree($all->toArray(),$data['id']);  
127 - $all = tree_to_list($all);  
128 - if(in_array($data['pid'],array_column($all,'id'))){  
129 - return $this->response('上级栏目不允许为本身的下级',Code::SYSTEM_ERROR);  
130 - }  
131 - }  
132 - }  
133 -  
134 - // 保存  
135 - $id = BNav::_save($this->user['project_id'],$data,$data['id']??0);  
136 -  
137 - if($id===-1){  
138 - return $this->response('导航菜单不存在',Code::SYSTEM_ERROR);  
139 - }  
140 -  
141 - return $this->success(BNav::_find($this->user['project_id'],$id,true)); 48 + public function save(NavRequest $request){
  49 + $data = $request->validated();
  50 +
  51 + return $this->success(NavLogic::instance()->save($data));
  52 +
142 } 53 }
143 54
144 55
@@ -148,23 +59,14 @@ class NavController extends BaseController @@ -148,23 +59,14 @@ class NavController extends BaseController
148 * @author:dc 59 * @author:dc
149 * @time 2023/5/9 9:20 60 * @time 2023/5/9 9:20
150 */ 61 */
151 - public function delete(){  
152 - $id = $this->param['id']??0;  
153 - $data = BNav::_find($this->user['project_id'],$id);  
154 -  
155 - if(empty($data)){  
156 - return $this->response('导航菜单不存在',Code::SYSTEM_ERROR);  
157 - } 62 + public function delete(NavRequest $request){
158 63
159 64
160 - if(BNav::isChild($data['id'],$this->user['project_id'])){  
161 - return $this->response('存在下级无法删除',Code::SYSTEM_ERROR);  
162 - } 65 + $id = $request->validated()['id'];
163 66
  67 + NavLogic::instance()->delete($id);
164 68
165 - if($data->delete()){  
166 - return $this->response('删除成功',Code::SUCCESS);  
167 - } 69 + return $this->response('删除成功');
168 70
169 } 71 }
170 72
@@ -10,6 +10,7 @@ use App\Http\Logic\Bside\News\NewsLogic; @@ -10,6 +10,7 @@ use App\Http\Logic\Bside\News\NewsLogic;
10 use App\Http\Requests\Bside\News\NewsRequest; 10 use App\Http\Requests\Bside\News\NewsRequest;
11 use App\Models\News\News as NewsModel; 11 use App\Models\News\News as NewsModel;
12 use Illuminate\Http\Request; 12 use Illuminate\Http\Request;
  13 +use Illuminate\Support\Facades\DB;
13 14
14 /** 15 /**
15 * @name:新闻管理 16 * @name:新闻管理
@@ -118,9 +119,10 @@ class NewsController extends BaseController @@ -118,9 +119,10 @@ class NewsController extends BaseController
118 */ 119 */
119 public function status(NewsLogic $newsLogic){ 120 public function status(NewsLogic $newsLogic){
120 $this->request->validate([ 121 $this->request->validate([
121 - 'id'=>['required'], 122 + 'id'=>['required','array'],
122 ],[ 123 ],[
123 'id.required' => 'ID不能为空', 124 'id.required' => 'ID不能为空',
  125 + 'id.array' => 'ID为数组',
124 ]); 126 ]);
125 $newsLogic->news_status(); 127 $newsLogic->news_status();
126 //TODO::写入日志 128 //TODO::写入日志
@@ -83,7 +83,6 @@ class FileController @@ -83,7 +83,6 @@ class FileController
83 header('Status: 206 Partial Content'); 83 header('Status: 206 Partial Content');
84 header('Accept-Ranges: bytes'); 84 header('Accept-Ranges: bytes');
85 header('Content-Range: bytes ' . $start . '-' . $end . '/' . $size); 85 header('Content-Range: bytes ' . $start . '-' . $end . '/' . $size);
86 -  
87 // 读取部分内容并发送响应 86 // 读取部分内容并发送响应
88 $file = fopen($path, 'rb'); 87 $file = fopen($path, 'rb');
89 fseek($file, $start); 88 fseek($file, $start);
1 <?php 1 <?php
2 2
3 -namespace App\Http\Logic\Bside; 3 +namespace App\Http\Logic\Bside\Nav;
4 4
5 -use App\Helper\Arr; 5 +
  6 +use App\Enums\Common\Code;
  7 +use App\Http\Logic\Bside\BaseLogic;
6 use App\Models\BNav; 8 use App\Models\BNav;
7 -use App\Models\Inquiry; 9 +
8 10
9 /** 11 /**
10 * @author:dc 12 * @author:dc
@@ -21,6 +23,52 @@ class NavLogic extends BaseLogic @@ -21,6 +23,52 @@ class NavLogic extends BaseLogic
21 $this->model = new BNav(); 23 $this->model = new BNav();
22 } 24 }
23 25
  26 + /**
  27 + * @return array
  28 + * @author:dc
  29 + * @time 2023/5/12 9:23
  30 + */
  31 + public function list(){
  32 + $where = [];
  33 + if(!empty($this->param['location'])){
  34 + $where[] = ['location','=',$this->param['location']];
  35 + }
  36 +
  37 + $lists = $this->getList($where,['sort'=>'asc'],['*'],false);
  38 +
  39 + $isTree = $this->param['tree']??false;
  40 +
  41 + if($isTree){
  42 + $lists = list_to_tree($lists);
  43 + }
  44 +
  45 + return $lists;
  46 + }
  47 +
  48 +
  49 + public function save($data)
  50 + {
  51 + if($data['pid']){
  52 + // 验证是否存在上级
  53 + $all = BNav::_all($this->user['project_id'],$data['location']);
  54 + if(!$all->where('id',$data['pid'])->count()){
  55 + $this->fail('上级栏目不存在');
  56 + }
  57 + // 上级不允许是自己的下级
  58 + if(!empty($data['id'])){
  59 + $all = list_to_tree($all->toArray(),$data['id']);
  60 + $all = tree_to_list($all);
  61 + if(in_array($data['pid'],array_column($all,'id'))){
  62 + $this->fail('上级栏目不允许为本身的下级');
  63 + }
  64 + }
  65 + }
  66 +
  67 + // 保存
  68 + $id = parent::save($data);
  69 +
  70 + return $this->getInfo($id['id']);
  71 + }
24 72
25 /** 73 /**
26 * @param $ids 74 * @param $ids
@@ -33,7 +81,7 @@ class NavLogic extends BaseLogic @@ -33,7 +81,7 @@ class NavLogic extends BaseLogic
33 public function delete($ids,$map = []) 81 public function delete($ids,$map = [])
34 { 82 {
35 if(BNav::isChild($ids,$this->user['project_id'])){ 83 if(BNav::isChild($ids,$this->user['project_id'])){
36 - $this->fail('存在下级无法删除','B_NAV_DELETE_CHILD'); 84 + $this->fail('存在下级无法删除');
37 } 85 }
38 86
39 return parent::delete($ids,$map); // TODO: Change the autogenerated stub 87 return parent::delete($ids,$map); // TODO: Change the autogenerated stub
@@ -2,7 +2,6 @@ @@ -2,7 +2,6 @@
2 2
3 namespace App\Http\Requests\Aside\Template; 3 namespace App\Http\Requests\Aside\Template;
4 4
5 -use App\Http\Requests\Scene;  
6 use Illuminate\Foundation\Http\FormRequest; 5 use Illuminate\Foundation\Http\FormRequest;
7 use Illuminate\Validation\Rule; 6 use Illuminate\Validation\Rule;
8 7
@@ -14,7 +13,6 @@ use Illuminate\Validation\Rule; @@ -14,7 +13,6 @@ use Illuminate\Validation\Rule;
14 */ 13 */
15 class TemplateRequest extends FormRequest 14 class TemplateRequest extends FormRequest
16 { 15 {
17 -// use Scene;  
18 16
19 /** 17 /**
20 * Determine if the user is authorized to make this request. 18 * Determine if the user is authorized to make this request.
@@ -44,9 +42,9 @@ class TemplateRequest extends FormRequest @@ -44,9 +42,9 @@ class TemplateRequest extends FormRequest
44 ]; 42 ];
45 43
46 // 更新场景 44 // 更新场景
47 -// if(!$this->isScene(Scene::$CREATE)){  
48 -// unset($rule['id']);  
49 -// } 45 + if(!$this->is('a/template/insert')){
  46 + unset($rule['id']);
  47 + }
50 48
51 return $rule; 49 return $rule;
52 } 50 }
@@ -2,7 +2,6 @@ @@ -2,7 +2,6 @@
2 2
3 namespace App\Http\Requests\Bside\Nav; 3 namespace App\Http\Requests\Bside\Nav;
4 4
5 -use App\Http\Requests\Scene;  
6 use Illuminate\Foundation\Http\FormRequest; 5 use Illuminate\Foundation\Http\FormRequest;
7 6
8 /** 7 /**
@@ -14,7 +13,6 @@ use Illuminate\Foundation\Http\FormRequest; @@ -14,7 +13,6 @@ use Illuminate\Foundation\Http\FormRequest;
14 */ 13 */
15 class NavRequest extends FormRequest 14 class NavRequest extends FormRequest
16 { 15 {
17 - use Scene;  
18 16
19 /** 17 /**
20 * Determine if the user is authorized to make this request. 18 * Determine if the user is authorized to make this request.
@@ -44,12 +42,12 @@ class NavRequest extends FormRequest @@ -44,12 +42,12 @@ class NavRequest extends FormRequest
44 ]; 42 ];
45 43
46 // 修改 44 // 修改
47 - if($this->isScene(static::$UPDATE)){ 45 + if($this->is('b/nav/update')){
48 $rule['id'] = ['required','integer']; 46 $rule['id'] = ['required','integer'];
49 } 47 }
50 48
51 // 删除 49 // 删除
52 - if($this->isScene(static::$DELETE)){ 50 + if($this->is('b/nav/delete')){
53 $rule = ['id' => ['required','integer']]; 51 $rule = ['id' => ['required','integer']];
54 } 52 }
55 53
@@ -59,8 +57,8 @@ class NavRequest extends FormRequest @@ -59,8 +57,8 @@ class NavRequest extends FormRequest
59 public function messages() 57 public function messages()
60 { 58 {
61 return [ 59 return [
62 - 'id.required' => '编辑导航数据不存在',  
63 - 'id.integer' => '编辑导航数据不存在', 60 + 'id.required' => '数据不存在',
  61 + 'id.integer' => '数据不存在',
64 'pid.required' => '上级选择错误', 62 'pid.required' => '上级选择错误',
65 'pid.gte' => '上级选择错误', 63 'pid.gte' => '上级选择错误',
66 'pid.integer' => '上级选择错误', 64 'pid.integer' => '上级选择错误',
1 -<?php  
2 -  
3 -namespace App\Http\Requests;  
4 -  
5 -/**  
6 - * @author:dc  
7 - * @time 2023/5/11 14:49  
8 - * Class Scene  
9 - * @package App\Http\Requests  
10 - */  
11 -trait Scene {  
12 -  
13 - /**  
14 - * 更新场景  
15 - */  
16 - static $UPDATE = 1;  
17 -  
18 - /**  
19 - * 创建场景  
20 - */  
21 - static $CREATE = 0;  
22 -  
23 - /**  
24 - * 删除场景  
25 - */  
26 - static $DELETE = -1;  
27 -  
28 -  
29 - private $scene;  
30 -  
31 -  
32 - /**  
33 - * @param $scene  
34 - * @return $this  
35 - * @author:dc  
36 - * @time 2023/5/11 17:14  
37 - */  
38 - public function setScene($scene){  
39 - var_dump($scene);  
40 - $this->scene = $scene;  
41 -  
42 - return $this;  
43 - }  
44 -  
45 -  
46 - /**  
47 - * @return mixed  
48 - */  
49 - public function getScene()  
50 - {  
51 - return $this->scene;  
52 - }  
53 -  
54 -  
55 - /**  
56 - * @param $scene  
57 - * @return bool  
58 - * @author:dc  
59 - * @time 2023/5/11 17:14  
60 - */  
61 - public function isScene($scene){  
62 - return $this->scene === $scene;  
63 - }  
64 -  
65 -}  
@@ -194,6 +194,7 @@ class Base extends Model @@ -194,6 +194,7 @@ class Base extends Model
194 case 'between': 194 case 'between':
195 // in查询 ['id'=>['between',[create1,create2]]] 195 // in查询 ['id'=>['between',[create1,create2]]]
196 $query->whereBetween($k, $v[1]); 196 $query->whereBetween($k, $v[1]);
  197 + break;
197 case 'not between': 198 case 'not between':
198 // not between查询 ['created_at'=>['not between',['xxx', 'xxx]]] 199 // not between查询 ['created_at'=>['not between',['xxx', 'xxx]]]
199 $query->whereNotBetween($k, $v[1]); 200 $query->whereNotBetween($k, $v[1]);
@@ -225,9 +225,6 @@ Route::middleware(['bloginauth'])->group(function () { @@ -225,9 +225,6 @@ Route::middleware(['bloginauth'])->group(function () {
225 }); 225 });
226 }); 226 });
227 227
228 -  
229 -  
230 -  
231 // 模板 228 // 模板
232 Route::prefix('template')->group(function () { 229 Route::prefix('template')->group(function () {
233 Route::get('/', [\App\Http\Controllers\Bside\TemplateController::class, 'index'])->name('bside_template'); 230 Route::get('/', [\App\Http\Controllers\Bside\TemplateController::class, 'index'])->name('bside_template');
@@ -248,8 +245,8 @@ Route::middleware(['bloginauth'])->group(function () { @@ -248,8 +245,8 @@ Route::middleware(['bloginauth'])->group(function () {
248 // 导航栏编辑 245 // 导航栏编辑
249 Route::prefix('nav')->group(function () { 246 Route::prefix('nav')->group(function () {
250 Route::get('/', [\App\Http\Controllers\Bside\NavController::class, 'index'])->name('bside_nav'); 247 Route::get('/', [\App\Http\Controllers\Bside\NavController::class, 'index'])->name('bside_nav');
251 - Route::post('/create', [\App\Http\Controllers\Bside\NavController::class, 'create'])->name('bside_nav_create');  
252 - Route::post('/update', [\App\Http\Controllers\Bside\NavController::class, 'update'])->name('bside_nav_update'); 248 + Route::post('/create', [\App\Http\Controllers\Bside\NavController::class, 'save'])->name('bside_nav_create');
  249 + Route::post('/update', [\App\Http\Controllers\Bside\NavController::class, 'save'])->name('bside_nav_update');
253 Route::delete('/delete', [\App\Http\Controllers\Bside\NavController::class, 'delete'])->name('bside_nav_delete'); 250 Route::delete('/delete', [\App\Http\Controllers\Bside\NavController::class, 'delete'])->name('bside_nav_delete');
254 }); 251 });
255 252
@@ -261,7 +258,6 @@ Route::middleware(['bloginauth'])->group(function () { @@ -261,7 +258,6 @@ Route::middleware(['bloginauth'])->group(function () {
261 258
262 259
263 }); 260 });
264 -  
265 //无需登录验证的路由组 261 //无需登录验证的路由组
266 Route::group([], function () { 262 Route::group([], function () {
267 Route::any('/login', [\App\Http\Controllers\Bside\ComController::class, 'login'])->name('login'); 263 Route::any('/login', [\App\Http\Controllers\Bside\ComController::class, 'login'])->name('login');