init: 项目初始代码

This commit is contained in:
2026-10-14 14:00:29 +08:00
commit cc434cf89f
464 changed files with 66984 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
<?php
namespace app\index\middleware;
use app\index\model\Language;
use app\index\model\Site;
use think\facade\Cache;
/**
* 全局路由中间件-验证接口请求的有效性
* Class Auth
* @package app\index\middleware
*/
class Auth
{
public function handle($request, \Closure $next)
{
header("Access-Control-Allow-Origin:*");
header("Access-Control-Allow-Methods:GET, POST, PATCH, PUT, DELETE,OPTIONS");
header("Access-Control-Allow-Headers:Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-Requested-With,x_requested_with,x-token");
//获取请求过来的域名与后台绑定域名是否一致
$url = $request->host();
//兼容老数据,1=英文,或者传 us-en, zh-cn,jp
$language = $request->param()['language_id']??'zh-cn';
if ($language == 'zh-cn') {
$languageId = 1;
} else {
if (is_numeric($language)) {
show(-999,lang('无效的语言包请求'));
}
$lang = new Language();
$info = $lang->where('code',$language)->where('status',0)->findOrEmpty()->toArray();
if (empty($info)) {
show(-998,lang('语言包ID不正确'));
}
$languageId = $info['id'];
}
// 查找当前品牌所有的语言站点
$site = new Site();
$domain = [];
$languageCode = '';
if (Cache::has('site_info')) {
$siteInfo = Cache::get('site_info');
$languageCode = Cache::get('language_info_'.$languageId) ?: 'zh-cn';
$domain = array_column($siteInfo,'domain');
} else {
$siteInfo = $site->where(['platform_id'=>1,'status'=>0])->select()->toArray();
$languageInfo = $site->where(['language_id'=>$languageId,'platform_id'=>1,'status'=>0])->select()->toArray();
if (!empty($languageInfo)) {
$languageCode = $languageInfo[0]['code'] ?? 'zh-cn';
}
if (!empty($siteInfo)) {
$domain = array_column($siteInfo,'domain');
}
Cache::set('site_info',$siteInfo,7200);
Cache::set('language_info_'.$languageId,$languageCode,7200);
}
//检测域名是否合法,添加测试域名
$devDomain = ['setmspace.test','setmspace.com','setmspace.cn','dev.setm.f2b211.com'];
$domain = array_column($domain,'domain');
$wholeDomain = array_merge($devDomain,$domain);
if (!in_array($url,$wholeDomain)) {
//表示请求域名不是绑定的域名,抛出异常
show(-995,lang("绑定域名不正确,请检查后台设置"));
}
//老站点英文站兼容密钥
$request->platform_id = 1;/*强制为1*/
$request->language_id = $languageId;
$request->language_code = $languageCode;
//组装语言ID请求数据
$post = $request->post();
$post['language_id'] = $languageId;
$request->withPost($post);
return $next($request);
}
}