Merge branch 'dev' of http://47.244.231.31:8099/zhl/globalso-v6 into dev
正在显示
18 个修改的文件
包含
242 行增加
和
227 行删除
| 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 | +} |
app/Console/Commands/AyrShare/ShareUser.php
0 → 100644
| 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' => '上级选择错误', |
app/Http/Requests/Scene.php
已删除
100644 → 0
| 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'); |
-
请 注册 或 登录 后发表评论