作者 lyh

gx

<?php
namespace App\Http\Controllers\Bside;
namespace App\Http\Controllers\Bside\BCom;
use App\Enums\Common\Code;
use App\Helper\Translate;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\User\UserLogic;
use App\Http\Logic\Bside\User\UserLoginLogic;
use App\Models\Project\Project;
use App\Models\Project\Project as ProjectModel;
use App\Models\Service\Service;
use App\Models\SmsLog;
use App\Models\User\ProjectMenu as ProjectMenuModel;
use App\Models\User\ProjectRole as ProjectRoleModel;
use App\Models\User\User;
use App\Models\User\User as UserModel;
use App\Utils\EncryptUtils;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Mrgoon\AliSms\AliSms;
/***
* 当前为公共类 所有方法均不需要验证登录token
* 当前为公共类
*/
class ComController extends BaseController
{
/**
* @name :管理员登录
* @author :liyuhang
* @method
*/
public function login(){
$this->request->validate([
'mobile'=>['required', 'regex:/^1[3-9]\d{9}$/'],
'password'=>['required'],
],[
'mobile.required'=>'电话号码必须填写',
'password.required'=>'内容必须填写',
'mobile.regex' => '请输入正确的手机号码',
]);
$userLogic = new UserLoginLogic();
$res = $userLogic->login();
$this->response('请求成功',Code::SUCCESS,$res);
}
/**
* 根据CODE自动登录
* @author zbj
* @date 2023/7/25
*/
public function autologin(UserLoginLogic $logic, EncryptUtils $encrypt)
{
$serviceSettingModel = new Service();
$info = $serviceSettingModel->read(['type'=>4]);
if($info === false){
$this->response('当前访问地址不存在',Code::USER_ERROR);
}
$data = $encrypt->unlock_url($this->param['code'], $info['values']);
$data = json_decode($data, true);
if(!isset($data['project_id']) && !isset($data['user_id'])){
$this->response('无效Code',Code::USER_ERROR);
}
$res = $logic->autologin($data);
$this->response('请求成功',Code::SUCCESS, $res);
}
/**
* @name :获取当前用户权限菜单列表
* @author :liyuhang
* @method
... ... @@ -97,7 +48,7 @@ class ComController extends BaseController
* @author :liyuhang
* @method
*/
public function get_project(ProjectModel $projectModel){
public function get_project(Project $projectModel){
$info = $projectModel->read(['id'=>$this->user['project_id']]);
if(empty($info)){
$this->response('error',Code::USER_ERROR);
... ... @@ -125,10 +76,11 @@ class ComController extends BaseController
}
/**
* @name :退出登录
* @return void
* @author :liyuhang
* @remark :退出登录
* @name :logout
* @author :lyh
* @method :post
* @time :2023/8/19 9:14
*/
public function logout(){
$rs = Cache::pull($this->token);
... ... @@ -138,52 +90,4 @@ class ComController extends BaseController
$this->response('success');
}
/**
* 发送登录短信
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function sendLoginSms()
{
$this->request->validate([
'mobile'=>['required', 'regex:/^1[3-9]\d{9}$/'],
],[
'mobile.required' => '手机号码不能为空',
'mobile.regex' => '请输入正确的手机号码',
]);
$mobile = $this->param['mobile'];
$user = UserModel::where(['mobile' => $mobile])->first();
if (empty($user)) {
$this->response('请输入正确的手机号码!', Code::USER_LOGIN_ERROE);
}
$last_sms = SmsLog::getLastLog($mobile, SmsLog::TYPE_LOGIN);
if ($last_sms && $last_sms->use = SmsLog::USE_USABLE && time() - strtotime($last_sms->created_at) < 60) {
$this->response('请不要重复发送短信!', Code::USER_LOGIN_ERROE);
}
$template = config('aliyunsms.login_sms_temp');
$code['code'] = rand(100000,999999);
$ali_sms = new AliSms();
$send = $ali_sms->sendSms(strval($mobile), $template, $code);
if (empty($send->Code) && $send->Code != 'OK') {
$this->response('发送失败, 请稍后重试!', Code::USER_LOGIN_ERROE);
}
SmsLog::createLog($mobile, $code['code']);
$this->response('success');
}
/**
* @remark :根据关键字生成链接
* @name :pubLink
* @author :lyh
* @method :post
* @time :2023/6/28 16:13
*/
public function stringTranslation(){
$str = Translate::tran($this->param['str'], 'en');
$this->response('success',Code::SUCCESS,$str);
}
// public function ceshi(){
//
// }
}
... ...
<?php
/**
* @remark :
* @name :UpdateController.php
* @author :lyh
* @method :post
* @time :2023/8/19 9:08
*/
namespace App\Http\Controllers\Bside\BCom;
use App\Http\Controllers\Bside\BaseController;
/**
* @remark :b端网站更新相关
* @name :UpdateController
* @author :lyh
* @method :post
* @time :2023/8/19 9:08
*/
class UpdateController extends BaseController
{
}
... ...
<?php
namespace App\Http\Controllers\Bside;
use App\Services\Facades\Upload;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
class FileController extends BaseController
{
/**
* 上传
* @param Request $request
* @return \Illuminate\Http\JsonResponse
* @throws \Psr\Container\ContainerExceptionInterface
* @throws \Psr\Container\NotFoundExceptionInterface
* @author zbj
* @date 2023/4/20
*/
public function upload(Request $request){
// 上传文件
$files = Upload::puts('files', $this->param['config'] ?? 'default');
foreach ($files as &$file){
$file = Upload::path2url($file);
}
return $this->success($files);
}
/**
* 下载
* @param Request $request
* @return \Symfony\Component\HttpFoundation\StreamedResponse
* @author zbj
* @date 2023/4/20
*/
public function download(Request $request){
$path = Upload::url2path($this->param['url'] ?? '');
return Storage::disk('upload')->download($path);
}
/**
* 文件列表
* @author:dc
* @time 2023/5/29 11:42
*/
public function lists(){
$type = \request()->get('type');
switch ($type){
case 'video':{
$ext = ['mp4','avi'];
break;
}
default:{
$ext = ['png','jpg','jpeg','gif'];
break;
}
}
$files = Upload::lists($this->param['config'] ?? 'default',$ext);
return $this->success($files);
}
}
<?php
namespace App\Http\Controllers\Bside;
namespace App\Http\Controllers\Bside\Inquiry;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\InquiryLogic;
use App\Rules\Ids;
use App\Services\BatchExportService;
... ...
<?php
/**
* @remark :
* @name :LoginController.php
* @author :lyh
* @method :post
* @time :2023/8/19 9:11
*/
namespace App\Http\Controllers\Bside;
use App\Enums\Common\Code;
use App\Helper\Translate;
use App\Http\Logic\Bside\User\UserLoginLogic;
use App\Models\Service\Service;
use App\Models\SmsLog;
use App\Models\User\User as UserModel;
use App\Utils\EncryptUtils;
use Illuminate\Support\Facades\Cache;
use Mrgoon\AliSms\AliSms;
class LoginController extends BaseController
{
/**
* @remark :登录
* @name :login
* @author :lyh
* @method :post
* @time :2023/8/19 9:12
*/
public function login(){
$this->request->validate([
'mobile'=>['required', 'regex:/^1[3-9]\d{9}$/'],
'password'=>['required'],
],[
'mobile.required'=>'电话号码必须填写',
'password.required'=>'内容必须填写',
'mobile.regex' => '请输入正确的手机号码',
]);
$userLogic = new UserLoginLogic();
$res = $userLogic->login();
$this->response('请求成功',Code::SUCCESS,$res);
}
/**
* @remark :自动登录
* @name :autologin
* @author :lyh
* @method :post
* @time :2023/8/19 9:12
*/
public function autologin(UserLoginLogic $logic, EncryptUtils $encrypt)
{
$serviceSettingModel = new Service();
$info = $serviceSettingModel->read(['type'=>4]);
if($info === false){
$this->response('当前访问地址不存在',Code::USER_ERROR);
}
$data = $encrypt->unlock_url($this->param['code'], $info['values']);
$data = json_decode($data, true);
if(!isset($data['project_id']) && !isset($data['user_id'])){
$this->response('无效Code',Code::USER_ERROR);
}
$res = $logic->autologin($data);
$this->response('请求成功',Code::SUCCESS, $res);
}
/**
* @remark :发送验证码
* @name :sendLoginSms
* @author :lyh
* @method :post
* @time :2023/8/19 9:13
*/
public function sendLoginSms()
{
$this->request->validate([
'mobile'=>['required', 'regex:/^1[3-9]\d{9}$/'],
],[
'mobile.required' => '手机号码不能为空',
'mobile.regex' => '请输入正确的手机号码',
]);
$mobile = $this->param['mobile'];
$user = UserModel::where(['mobile' => $mobile])->first();
if (empty($user)) {
$this->response('请输入正确的手机号码!', Code::USER_LOGIN_ERROE);
}
$last_sms = SmsLog::getLastLog($mobile, SmsLog::TYPE_LOGIN);
if ($last_sms && $last_sms->use = SmsLog::USE_USABLE && time() - strtotime($last_sms->created_at) < 60) {
$this->response('请不要重复发送短信!', Code::USER_LOGIN_ERROE);
}
$template = config('aliyunsms.login_sms_temp');
$code['code'] = rand(100000,999999);
$ali_sms = new AliSms();
$send = $ali_sms->sendSms(strval($mobile), $template, $code);
if (empty($send->Code) && $send->Code != 'OK') {
$this->response('发送失败, 请稍后重试!', Code::USER_LOGIN_ERROE);
}
SmsLog::createLog($mobile, $code['code']);
$this->response('success');
}
/**
* @remark :根据关键字生成链接
* @name :pubLink
* @author :lyh
* @method :post
* @time :2023/6/28 16:13
*/
public function stringTranslation(){
$str = Translate::tran($this->param['str'], 'en');
$this->response('success',Code::SUCCESS,$str);
}
}
... ...
<?php
namespace App\Http\Controllers\Bside;
namespace App\Http\Controllers\Bside\Nav;
use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\Nav\NavLogic;
use App\Http\Requests\Bside\Nav\NavRequest;
use App\Models\BNav;
/**
* 导航栏目 b端编辑 c端显示
... ...
<?php
namespace App\Http\Controllers\Bside;
namespace App\Http\Controllers\Bside\RankData;
use App\Helper\Arr;
use App\Helper\GoogleSpeedApi;
use App\Helper\QuanqiusouApi;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Aside\Project\ProjectLogic;
use App\Http\Logic\Bside\RankDataLogic;
use App\Models\RankData\RankData;
... ...
<?php
namespace App\Http\Controllers\Bside;
namespace App\Http\Controllers\Bside\Route;
use App\Helper\Translate;
use App\Http\Controllers\Bside\BaseController;
use App\Models\RouteMap;
use App\Rules\Ids;
use Illuminate\Http\Request;
class RouteController extends BaseController
... ...
<?php
namespace App\Http\Controllers\Bside;
use App\Http\Logic\Bside\Statistics\StatisticsLogic;
use App\Models\Bside\Statistics\TrafficStatistics;
use Illuminate\Http\JsonResponse;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Throwable;
/**
* 流量统计
* Class StatisticsController
* @package App\Http\Controllers\Bside
*/
class StatisticsController extends BaseController
{
public $statisticsLogic;
public $trafficStatistics;
public function __construct()
{
$this->statisticsLogic = new StatisticsLogic();
$this->trafficStatistics = new TrafficStatistics();
}
/**
* 访问来源
* @return JsonResponse
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface|Throwable
*/
public function source()
{
$type = $this->trafficStatistics::TYPE_SOURCE;
$response = $this->statisticsLogic->getStatisticsData($type);
return $this->success($response);
}
/**
* 地域分布
* @return JsonResponse
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface|Throwable
*/
public function distribution()
{
$type = $this->trafficStatistics::TYPE_DISTRIBUTION;
$response = $this->statisticsLogic->getStatisticsData($type);
return $this->success($response);
}
/**
* 受访页面
* @return JsonResponse
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface|Throwable
*/
public function page()
{
$type = $this->trafficStatistics::TYPE_PAGE;
$response = $this->statisticsLogic->getStatisticsData($type);
return $this->success($response);
}
/**
* 访问终端
* @return JsonResponse
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface|Throwable
*/
public function terminal()
{
$type = $this->trafficStatistics::TYPE_TERMINAL;
$response = $this->statisticsLogic->getStatisticsData($type);
return $this->success($response);
}
/**
* 流量趋势
* @return JsonResponse
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface|Throwable
*/
public function trend()
{
$type = $this->trafficStatistics::TYPE_TREND;
$response = $this->statisticsLogic->getStatisticsData($type);
$response['days'] = $this->statisticsLogic->getDaysTrend();
return $this->success($response);
}
}
<?php
namespace App\Http\Controllers\Bside;
namespace App\Http\Controllers\Bside\Visit;
use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\VisitLogic;
use Illuminate\Http\Request;
/**
... ...
<?php
namespace App\Http\Logic\Bside\Statistics;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\Bside\Statistics\TrafficStatistics;
use App\Models\Bside\Statistics\TrafficTrends;
use App\Models\CustomerVisit\CustomerVisit;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Cache\Repository;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Facades\DB;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Throwable;
class StatisticsLogic extends BaseLogic
{
public $trafficStatistics;
private $customerVisit;
public $date;
public $time = 60 * 60 * 2;
public function __construct()
{
parent::__construct();
$this->customerVisit = new CustomerVisit();
$this->trafficStatistics = new TrafficStatistics();
try {
$this->date = request()->get('date') ?? null;
// 判断传入日期是否大于当月
if (checkIsGreaterMonth($this->date)) {
$this->date = null;
}
// 判断传入日期是否是当月
if (checkIsMonth($this->date)) {
$this->date = null;
}
} catch (NotFoundExceptionInterface|ContainerExceptionInterface $e) {
$this->date = null;
}
}
/**
* @param $type
* @return array|Repository|mixed
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface|Throwable
*/
public function getStatisticsData($type)
{
$function = debug_backtrace()[1]['function'];
// 判断是否查询当月数据
if (!is_null($this->date)) {
// 获取缓存名
$key = $this->cacheName($type, $this->date);
$response = cache()->get($key);
if (empty($response)) {
$dd = explode('-', $this->date);
$year = $dd[0] ?? null;
$month = str_pad($dd[1], 2, '0', STR_PAD_LEFT) ?? null;
// 获取当前数据是否存在
$data = $this->trafficStatistics->getData($type, $year, $month);
if (is_null($data)) {
$response = $this->$function();
// 存在则直接返回
$response_data = array_filter($response);
if ($response_data) {
// 不存在则请求接口获取数据并保存
$this->create($response_data);
}
} else {
$response = $data->toArray();
}
// 缓存数据
cache()->put($key, $response, $this->time);
}
} else {
$response = $this->$function();
}
return $response;
}
/**
* 获取当月的每天的流量趋势
* @return Builder[]|Collection
*/
public function getDaysTrend()
{
$trafficTrends = new TrafficTrends();
$data = $trafficTrends->getMonthsLists($this->date);
$original_date = $data->pluck('date')->all();
// 获取当月的每天的日期
$month_date = getDateDays($this->date);
// 判断是否存在缺失的日期
if (count($month_date) > 1) {
// 去除当天的日期
array_pop($month_date);
// 获取缺失的日期
$diff = array_diff($month_date, $original_date);
if ($diff) {
// 获取缺失的数据并保存
$data = array_merge($data->toArray(), $this->getTrendsLists($diff));
}
}
$date = date('Y-m-d');
$ip_count = $this->customerVisit->getDayIPCount();
$pv_count = $this->customerVisit->getDayPVCount();
$data[] = compact('date', 'ip_count', 'pv_count');
return $data;
}
/**
* 获取缺失的数据并保存
* @param array $dates 日期,格式:['y-m-d', 'y-m-d']
* @return array
*/
public function getTrendsLists(array $dates)
{
$data = [];
$trafficTrends = new TrafficTrends();
foreach ($dates as $item) {
$date = $item;
$ip_count = $this->customerVisit->getDayIPCount($item);
$pv_count = $this->customerVisit->getDayPVCount($item);
$trafficTrends->day = $item;
$trafficTrends->ipnum = $ip_count;
$trafficTrends->pvnum = $pv_count;
$trafficTrends->save();
$data[] = compact('date', 'ip_count', 'pv_count');
}
return $data;
}
/**
* @param $response
* @return bool
* @throws Throwable
*/
public function create($response)
{
DB::beginTransaction();
$keys = array_flip($this->trafficStatistics::KEY_VALUE);
foreach ($response as $k => $v) {
if (is_array($v)) {
$v = json_encode($v);
}
$field = $keys[$k];
$this->trafficStatistics->$field = $v;
}
$isRes = $this->trafficStatistics->save();
if (!$isRes) {
DB::rollBack();
return false;
}
DB::commit();
return true;
}
/**
* 访问来源
* @return array
*/
public function source()
{
$response = $this->getPvIp();
$response['lists'] = $this->customerVisit->getUrlCount();
return $response;
}
public function getPvIp()
{
$response['pv_count'] = $this->customerVisit->getMonthPVCount();
$response['ip_count'] = $this->customerVisit->getMonthIPCount();
return $response;
}
/**
* 地域分布
* @return array
*/
public function distribution()
{
$response = $this->getPvIp();
$response['lists'] = $this->customerVisit->getCountryCount();
return $response;
}
/**
* 流量趋势
* @return array
* @throws ContainerExceptionInterface
* @throws GuzzleException
* @throws NotFoundExceptionInterface
*/
public function trend()
{
$response = $this->getPvIp();
$inquiry = $this->getCache('inquiry_information', $this->date);
$response['in_count'] = $inquiry['count'] ?? 0;
$response['lists'] = $inquiry['lists'] ?? [];
return $response;
}
/**
* 访问终端
* @return array
*/
public function terminal()
{
$response = $this->getPvIp();
$response['pc_count'] = $this->customerVisit->getTerminalPcCount();
$response['mobile_count'] = $this->customerVisit->getTerminalMobileCount();
$response['lists'] = $this->customerVisit->getCountryCount();
return $response;
}
/**
* 受访页面
* @return array
*/
public function page()
{
$response = $this->getPvIp();
$response['lists'] = $this->customerVisit->getPageCount();
return $response;
}
/**
* 获取缓存
* @param string $key 缓存键名
* @param string|null $date 日期 格式:Y-m
* @param float|int $time 缓存时间,默认2小时
* @return mixed
* @throws ContainerExceptionInterface
* @throws GuzzleException
* @throws NotFoundExceptionInterface
*/
public function getCache(string $key, string $date = null, $time = 60 * 60 * 2)
{
$domain = request()->getHttpHost(); //'www.wowstainless.com';
$sta_date = !is_null($date) ? $date . '-01' : date('Y-m-01');
$key = $key . '_' . stringUnderlineLowercase($domain) . '_' . str_replace('-', '_', $sta_date);
$value = cache()->get($key);
if (!$value) {
$value = getInquiryInformation($domain, $sta_date);
cache()->put($key, $value, $time);
}
return $value;
}
/**
* @param int $type
* @param string|null $date 日期 格式:Y-m-d
* @return string
*/
public function cacheName(int $type = TrafficStatistics::TYPE_SOURCE, string $date = null)
{
return 'statistics_' . $type . '_' . str_replace('-', '_', $date);
}
/**
* 判断传入日期是否是当日
* @param $date
* @return bool
*/
public function checkIsDay($date)
{
// 传入日期的时间戳
$timestamp = strtotime($date);
// 当日的日期格式,如:2021-10-13
$today = date('Y-m-d');
// 传入日期的日期格式,如:2021-10-12
$date = date('Y-m-d', $timestamp);
// 判断传入日期是否是当日
return $date == $today;
}
/**
* 判断传入日期是否大于当日
* @param $date
* @return bool
*/
public function checkIsGreaterDay($date)
{
// 传入日期的时间戳
$timestamp = strtotime($date);
// 当前日期的时间戳
$now = strtotime(date('Y-m-d'));
// 判断传入日期是否大于当前日期
return $timestamp > $now;
}
}
... ... @@ -8,12 +8,12 @@ use Illuminate\Support\Facades\Route;
//必须登录验证的路由组
Route::middleware(['bloginauth'])->group(function () {
//登录用户编辑个人资料
Route::any('/edit_info', [\App\Http\Controllers\Bside\ComController::class, 'edit_info'])->name('edit_info');
Route::any('/logout', [\App\Http\Controllers\Bside\ComController::class, 'logout'])->name('logout');
Route::any('/edit_info', [\App\Http\Controllers\Bside\BCom\ComController::class, 'edit_info'])->name('edit_info');
Route::any('/logout', [\App\Http\Controllers\Bside\BCom\ComController::class, 'logout'])->name('logout');
//获取当前登录用户菜单
Route::any('/get_menu', [\App\Http\Controllers\Bside\ComController::class, 'get_menu'])->name('get_menu');
Route::any('/get_menu', [\App\Http\Controllers\Bside\BCom\ComController::class, 'get_menu'])->name('get_menu');
//获取当前登录用户项目详情
Route::any('/get_project', [\App\Http\Controllers\Bside\ComController::class, 'get_project'])->name('get_project');
Route::any('/get_project', [\App\Http\Controllers\Bside\BCom\ComController::class, 'get_project'])->name('get_project');
//用户相关路由
Route::prefix('user')->group(function () {
Route::any('/', [\App\Http\Controllers\Bside\User\UserController::class, 'lists'])->name('user_lists');
... ... @@ -210,11 +210,6 @@ Route::middleware(['bloginauth'])->group(function () {
});
});
//文件操作
// Route::prefix('file')->group(function () {
// Route::post('/upload', [\App\Http\Controllers\Bside\FileController::class, 'upload'])->name('file_upload');
// Route::get('/lists', [\App\Http\Controllers\Bside\FileController::class, 'lists'])->name('file_lists');
// });
//图片操作
Route::prefix('images')->group(function () {
Route::post('/upload', [\App\Http\Controllers\File\ImageController::class, 'upload'])->name('image_upload');
... ... @@ -227,15 +222,15 @@ Route::middleware(['bloginauth'])->group(function () {
});
//精准询盘
Route::prefix('inquiry')->group(function () {
Route::get('/', [\App\Http\Controllers\Bside\InquiryController::class, 'index'])->name('inquiry');
Route::get('/info', [\App\Http\Controllers\Bside\InquiryController::class, 'info'])->name('inquiry_info');
Route::any('/delete', [\App\Http\Controllers\Bside\InquiryController::class, 'delete'])->name('inquiry_delete');
Route::any('/export', [\App\Http\Controllers\Bside\InquiryController::class, 'export'])->name('inquiry_export');
Route::get('/', [\App\Http\Controllers\Bside\Inquiry\InquiryController::class, 'index'])->name('inquiry');
Route::get('/info', [\App\Http\Controllers\Bside\Inquiry\InquiryController::class, 'info'])->name('inquiry_info');
Route::any('/delete', [\App\Http\Controllers\Bside\Inquiry\InquiryController::class, 'delete'])->name('inquiry_delete');
Route::any('/export', [\App\Http\Controllers\Bside\Inquiry\InquiryController::class, 'export'])->name('inquiry_export');
});
//生成路由
Route::prefix('route')->group(function () {
Route::any('/create', [\App\Http\Controllers\Bside\RouteController::class, 'create'])->name('create_route');
Route::any('/create', [\App\Http\Controllers\Bside\Route\RouteController::class, 'create'])->name('create_route');
});
//社交绑定
... ... @@ -284,21 +279,21 @@ Route::middleware(['bloginauth'])->group(function () {
});
// 导航栏编辑
Route::prefix('nav')->group(function () {
Route::get('/', [\App\Http\Controllers\Bside\NavController::class, 'index'])->name('bside_nav');
Route::post('/create', [\App\Http\Controllers\Bside\NavController::class, 'save'])->name('bside_nav_create');
Route::post('/update', [\App\Http\Controllers\Bside\NavController::class, 'save'])->name('bside_nav_update');
Route::delete('/delete', [\App\Http\Controllers\Bside\NavController::class, 'delete'])->name('bside_nav_delete');
Route::get('/default-urls', [\App\Http\Controllers\Bside\NavController::class, 'urls'])->name('bside_nav_default-urls');
Route::get('/', [\App\Http\Controllers\Bside\Nav\NavController::class, 'index'])->name('bside_nav');
Route::post('/create', [\App\Http\Controllers\Bside\Nav\NavController::class, 'save'])->name('bside_nav_create');
Route::post('/update', [\App\Http\Controllers\Bside\Nav\NavController::class, 'save'])->name('bside_nav_update');
Route::delete('/delete', [\App\Http\Controllers\Bside\Nav\NavController::class, 'delete'])->name('bside_nav_delete');
Route::get('/default-urls', [\App\Http\Controllers\Bside\Nav\NavController::class, 'urls'])->name('bside_nav_default-urls');
});
//排名数据
Route::prefix('rank_data')->group(function () {
Route::any('/index', [\App\Http\Controllers\Bside\RankDataController::class, 'index'])->name('rank_data');
Route::any('/keywords_rank_list', [\App\Http\Controllers\Bside\RankDataController::class, 'keywords_rank_list'])->name('rank_data_keywords_rank_list');
Route::any('/speed', [\App\Http\Controllers\Bside\RankDataController::class, 'speed'])->name('rank_data_speed');
Route::any('/export', [\App\Http\Controllers\Bside\RankDataController::class, 'export'])->name('rank_data_export');
Route::any('/export_history', [\App\Http\Controllers\Bside\RankDataController::class, 'export_history'])->name('rank_data_export_history');
Route::any('/get_google_rank', [\App\Http\Controllers\Bside\RankDataController::class, 'get_google_rank'])->name('rank_data_get_google_rank');
Route::any('/index', [\App\Http\Controllers\Bside\RankData\RankDataController::class, 'index'])->name('rank_data');
Route::any('/keywords_rank_list', [\App\Http\Controllers\Bside\RankData\RankDataController::class, 'keywords_rank_list'])->name('rank_data_keywords_rank_list');
Route::any('/speed', [\App\Http\Controllers\Bside\RankData\RankDataController::class, 'speed'])->name('rank_data_speed');
Route::any('/export', [\App\Http\Controllers\Bside\RankData\RankDataController::class, 'export'])->name('rank_data_export');
Route::any('/export_history', [\App\Http\Controllers\Bside\RankData\RankDataController::class, 'export_history'])->name('rank_data_export_history');
Route::any('/get_google_rank', [\App\Http\Controllers\Bside\RankData\RankDataController::class, 'get_google_rank'])->name('rank_data_get_google_rank');
});
//首页统计数据
... ... @@ -309,8 +304,8 @@ Route::middleware(['bloginauth'])->group(function () {
//访问数据
Route::prefix('visit')->group(function () {
Route::any('/', [\App\Http\Controllers\Bside\VisitController::class, 'index'])->name('visit_list');
Route::any('/item', [\App\Http\Controllers\Bside\VisitController::class, 'item'])->name('visit_item');
Route::any('/', [\App\Http\Controllers\Bside\Visit\VisitController::class, 'index'])->name('visit_list');
Route::any('/item', [\App\Http\Controllers\Bside\Visit\VisitController::class, 'item'])->name('visit_item');
});
//访问数据
... ... @@ -320,27 +315,11 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('/getKeyword', [\App\Http\Controllers\Bside\HomeCount\MonthCountController::class, 'getKeyword'])->name('month_getKeyword');
});
// 流量统计
Route::prefix('stat')->group(function () {
// 访问来源
Route::get('/source', [\App\Http\Controllers\Bside\StatisticsController::class, 'source'])->name('stat_source');
// 地域分布
Route::get('/distribution', [\App\Http\Controllers\Bside\StatisticsController::class, 'distribution'])->name('stat_distribution');
// 受访页面
Route::get('/page', [\App\Http\Controllers\Bside\StatisticsController::class, 'page'])->name('stat_page');
// 访问终端
Route::get('/terminal', [\App\Http\Controllers\Bside\StatisticsController::class, 'terminal'])->name('stat_terminal');
// 流量趋势
Route::get('/trend', [\App\Http\Controllers\Bside\StatisticsController::class, 'trend'])->name('stat_trend');
});
});
//无需登录验证的路由组
Route::group([], function () {
Route::any('/login', [\App\Http\Controllers\Bside\ComController::class, 'login'])->name('login');
Route::any('/ceshi', [\App\Http\Controllers\Bside\ComController::class, 'ceshi'])->name('ceshi_ceshi');
Route::any('/stringTranslation', [\App\Http\Controllers\Bside\ComController::class, 'stringTranslation'])->name('com_stringTranslation');
Route::any('/sendLoginSms', [\App\Http\Controllers\Bside\ComController::class, 'sendLoginSms'])->name('sendLoginSms');
Route::any('/autologin', [\App\Http\Controllers\Bside\ComController::class, 'autologin'])->name('autologin');
Route::any('/login', [\App\Http\Controllers\Bside\LoginController::class, 'login'])->name('login');
Route::any('/stringTranslation', [\App\Http\Controllers\Bside\LoginController::class, 'stringTranslation'])->name('stringTranslation');
Route::any('/sendLoginSms', [\App\Http\Controllers\Bside\LoginController::class, 'sendLoginSms'])->name('sendLoginSms');
Route::any('/autologin', [\App\Http\Controllers\Bside\LoginController::class, 'autologin'])->name('autologin');
});
... ...