mirror of
https://gitee.com/niucloud-team/niucloud-admin.git
synced 2025-12-16 04:22:47 +00:00
niucloud
This commit is contained in:
parent
ee1a7c20d6
commit
2370e1a476
@ -26,8 +26,6 @@ Route::group(function () {
|
|||||||
//一次校验验证码
|
//一次校验验证码
|
||||||
Route::get('captcha/check', 'login.Captcha/check');
|
Route::get('captcha/check', 'login.Captcha/check');
|
||||||
|
|
||||||
Route::get('terminal', 'sys.Terminal/exec');
|
|
||||||
|
|
||||||
Route::get('test', 'login.Login/test');
|
Route::get('test', 'login.Login/test');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
// 全局中间件定义文件
|
// 全局中间件定义文件
|
||||||
use app\api\middleware\AllowCrossDomain;
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
//跨域请求中间件
|
//跨域请求中间件
|
||||||
AllowCrossDomain::class,
|
|
||||||
];
|
];
|
||||||
|
|||||||
@ -53,10 +53,8 @@ class AllowCrossDomain
|
|||||||
$origin = rtrim(str_replace('https://','',str_replace('http://','',$referer)),"/");
|
$origin = rtrim(str_replace('https://','',str_replace('http://','',$referer)),"/");
|
||||||
}
|
}
|
||||||
|
|
||||||
// $origin = $request->header('origin');
|
|
||||||
if(env('app_debug') || ($origin && in_array($origin, $allow_origin))){
|
if(env('app_debug') || ($origin && in_array($origin, $allow_origin))){
|
||||||
header('Access-Control-Allow-Origin: *');
|
header('Access-Control-Allow-Origin: *');
|
||||||
// header('Access-Control-Allow-Origin: ' . $origin);
|
|
||||||
}else{
|
}else{
|
||||||
header('Access-Control-Allow-Origin: *');
|
header('Access-Control-Allow-Origin: *');
|
||||||
throw new ServerException('SERVER_CROSS_REQUEST_FAIL', 409);
|
throw new ServerException('SERVER_CROSS_REQUEST_FAIL', 409);
|
||||||
|
|||||||
@ -12,6 +12,7 @@
|
|||||||
use app\api\middleware\ApiChannel;
|
use app\api\middleware\ApiChannel;
|
||||||
use app\api\middleware\ApiCheckToken;
|
use app\api\middleware\ApiCheckToken;
|
||||||
use app\api\middleware\ApiLog;
|
use app\api\middleware\ApiLog;
|
||||||
|
use app\api\middleware\AllowCrossDomain;
|
||||||
use think\facade\Route;
|
use think\facade\Route;
|
||||||
|
|
||||||
|
|
||||||
@ -33,6 +34,6 @@ Route::group('article', function () {
|
|||||||
//文章分类详情
|
//文章分类详情
|
||||||
Route::get('category/:id', 'article.ArticleCategory/info');
|
Route::get('category/:id', 'article.ArticleCategory/info');
|
||||||
|
|
||||||
})->middleware(ApiChannel::class)
|
})->middleware(AllowCrossDomain::class)->middleware(ApiChannel::class)
|
||||||
->middleware(ApiCheckToken::class, false)
|
->middleware(ApiCheckToken::class, false)
|
||||||
->middleware(ApiLog::class);
|
->middleware(ApiLog::class);
|
||||||
@ -12,6 +12,7 @@
|
|||||||
use app\api\middleware\ApiChannel;
|
use app\api\middleware\ApiChannel;
|
||||||
use app\api\middleware\ApiCheckToken;
|
use app\api\middleware\ApiCheckToken;
|
||||||
use app\api\middleware\ApiLog;
|
use app\api\middleware\ApiLog;
|
||||||
|
use app\api\middleware\AllowCrossDomain;
|
||||||
use think\facade\Route;
|
use think\facade\Route;
|
||||||
|
|
||||||
|
|
||||||
@ -22,6 +23,6 @@ Route::group('auth',function () {
|
|||||||
|
|
||||||
Route::put('logout', 'login.Login/logout');
|
Route::put('logout', 'login.Login/logout');
|
||||||
|
|
||||||
})->middleware(ApiChannel::class)
|
})->middleware(AllowCrossDomain::class)->middleware(ApiChannel::class)
|
||||||
->middleware(ApiCheckToken::class, true)
|
->middleware(ApiCheckToken::class, true)
|
||||||
->middleware(ApiLog::class);
|
->middleware(ApiLog::class);
|
||||||
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
use app\api\middleware\ApiCheckToken;
|
use app\api\middleware\ApiCheckToken;
|
||||||
use app\api\middleware\ApiLog;
|
use app\api\middleware\ApiLog;
|
||||||
|
use app\api\middleware\AllowCrossDomain;
|
||||||
use think\facade\Route;
|
use think\facade\Route;
|
||||||
|
|
||||||
|
|
||||||
@ -26,5 +27,5 @@ Route::group('diy', function() {
|
|||||||
|
|
||||||
Route::get('share', 'diy.Diy/share');
|
Route::get('share', 'diy.Diy/share');
|
||||||
|
|
||||||
})->middleware(ApiLog::class)
|
})->middleware(AllowCrossDomain::class)->middleware(ApiLog::class)
|
||||||
->middleware(ApiCheckToken::class, false);
|
->middleware(ApiCheckToken::class, false);
|
||||||
@ -12,6 +12,7 @@
|
|||||||
use app\api\middleware\ApiChannel;
|
use app\api\middleware\ApiChannel;
|
||||||
use app\api\middleware\ApiCheckToken;
|
use app\api\middleware\ApiCheckToken;
|
||||||
use app\api\middleware\ApiLog;
|
use app\api\middleware\ApiLog;
|
||||||
|
use app\api\middleware\AllowCrossDomain;
|
||||||
use think\facade\Route;
|
use think\facade\Route;
|
||||||
|
|
||||||
|
|
||||||
@ -28,6 +29,6 @@ Route::group('file', function () {
|
|||||||
//base64图片
|
//base64图片
|
||||||
Route::post('image/base64', 'upload.Upload/imageBase64');
|
Route::post('image/base64', 'upload.Upload/imageBase64');
|
||||||
|
|
||||||
})->middleware(ApiChannel::class)
|
})->middleware(AllowCrossDomain::class)->middleware(ApiChannel::class)
|
||||||
->middleware(ApiCheckToken::class, true)
|
->middleware(ApiCheckToken::class, true)
|
||||||
->middleware(ApiLog::class);
|
->middleware(ApiLog::class);
|
||||||
@ -12,6 +12,7 @@
|
|||||||
use app\api\middleware\ApiChannel;
|
use app\api\middleware\ApiChannel;
|
||||||
use app\api\middleware\ApiCheckToken;
|
use app\api\middleware\ApiCheckToken;
|
||||||
use app\api\middleware\ApiLog;
|
use app\api\middleware\ApiLog;
|
||||||
|
use app\api\middleware\AllowCrossDomain;
|
||||||
use think\facade\Route;
|
use think\facade\Route;
|
||||||
|
|
||||||
|
|
||||||
@ -71,7 +72,7 @@ Route::group('member', function() {
|
|||||||
Route::put('cashout_account/:account_id', 'member.CashOutAccount/edit');
|
Route::put('cashout_account/:account_id', 'member.CashOutAccount/edit');
|
||||||
// 删除提现账号
|
// 删除提现账号
|
||||||
Route::delete('cashout_account/:account_id', 'member.CashOutAccount/del');
|
Route::delete('cashout_account/:account_id', 'member.CashOutAccount/del');
|
||||||
})->middleware(ApiChannel::class)
|
})->middleware(AllowCrossDomain::class)->middleware(ApiChannel::class)
|
||||||
->middleware(ApiCheckToken::class, true)
|
->middleware(ApiCheckToken::class, true)
|
||||||
->middleware(ApiLog::class);
|
->middleware(ApiLog::class);
|
||||||
|
|
||||||
@ -81,6 +82,6 @@ Route::group('member', function() {
|
|||||||
/***************************************************** 会员管理 ****************************************************/
|
/***************************************************** 会员管理 ****************************************************/
|
||||||
//会员日志
|
//会员日志
|
||||||
Route::post('log', 'member.Member/log');
|
Route::post('log', 'member.Member/log');
|
||||||
})->middleware(ApiChannel::class)
|
})->middleware(AllowCrossDomain::class)->middleware(ApiChannel::class)
|
||||||
->middleware(ApiCheckToken::class)
|
->middleware(ApiCheckToken::class)
|
||||||
->middleware(ApiLog::class);
|
->middleware(ApiLog::class);
|
||||||
@ -12,6 +12,7 @@
|
|||||||
use app\api\middleware\ApiChannel;
|
use app\api\middleware\ApiChannel;
|
||||||
use app\api\middleware\ApiCheckToken;
|
use app\api\middleware\ApiCheckToken;
|
||||||
use app\api\middleware\ApiLog;
|
use app\api\middleware\ApiLog;
|
||||||
|
use app\api\middleware\AllowCrossDomain;
|
||||||
use think\facade\Route;
|
use think\facade\Route;
|
||||||
|
|
||||||
|
|
||||||
@ -27,6 +28,6 @@ Route::group('order', function () {
|
|||||||
Route::get('recharge', 'order.Recharge/lists');
|
Route::get('recharge', 'order.Recharge/lists');
|
||||||
// 充值订单详情
|
// 充值订单详情
|
||||||
Route::get('recharge/:order_id', 'order.Recharge/detail');
|
Route::get('recharge/:order_id', 'order.Recharge/detail');
|
||||||
})->middleware(ApiChannel::class)
|
})->middleware(AllowCrossDomain::class)->middleware(ApiChannel::class)
|
||||||
->middleware(ApiCheckToken::class, true)
|
->middleware(ApiCheckToken::class, true)
|
||||||
->middleware(ApiLog::class);
|
->middleware(ApiLog::class);
|
||||||
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
use app\api\middleware\ApiChannel;
|
use app\api\middleware\ApiChannel;
|
||||||
use app\api\middleware\ApiCheckToken;
|
use app\api\middleware\ApiCheckToken;
|
||||||
|
use app\api\middleware\AllowCrossDomain;
|
||||||
use app\api\middleware\ApiLog;
|
use app\api\middleware\ApiLog;
|
||||||
use think\facade\Route;
|
use think\facade\Route;
|
||||||
|
|
||||||
@ -18,7 +19,7 @@ use think\facade\Route;
|
|||||||
Route::any('pay/notify/:site_id/:channel/:type/:action', 'pay.Pay/notify')
|
Route::any('pay/notify/:site_id/:channel/:type/:action', 'pay.Pay/notify')
|
||||||
->middleware(ApiChannel::class)
|
->middleware(ApiChannel::class)
|
||||||
->middleware(ApiCheckToken::class)
|
->middleware(ApiCheckToken::class)
|
||||||
->middleware(ApiLog::class);
|
->middleware(ApiLog::class)->allowCrossDomain();
|
||||||
/**
|
/**
|
||||||
* 路由
|
* 路由
|
||||||
*/
|
*/
|
||||||
@ -28,6 +29,6 @@ Route::group('pay',function () {
|
|||||||
//支付信息
|
//支付信息
|
||||||
Route::get('info/:out_trade_no', 'pay.Pay/info');
|
Route::get('info/:out_trade_no', 'pay.Pay/info');
|
||||||
|
|
||||||
})->middleware(ApiChannel::class)
|
})->middleware(AllowCrossDomain::class)->middleware(ApiChannel::class)
|
||||||
->middleware(ApiCheckToken::class)
|
->middleware(ApiCheckToken::class)
|
||||||
->middleware(ApiLog::class);
|
->middleware(ApiLog::class);
|
||||||
@ -13,12 +13,13 @@ use app\api\middleware\ApiChannel;
|
|||||||
use app\api\middleware\ApiCheckToken;
|
use app\api\middleware\ApiCheckToken;
|
||||||
use app\api\middleware\ApiLog;
|
use app\api\middleware\ApiLog;
|
||||||
use think\facade\Route;
|
use think\facade\Route;
|
||||||
|
use app\api\middleware\AllowCrossDomain;
|
||||||
//公众号消息推送
|
//公众号消息推送
|
||||||
|
|
||||||
Route::any('wechat/serve/:site_id', 'wechat.Serve/serve')
|
Route::any('wechat/serve/:site_id', 'wechat.Serve/serve')
|
||||||
->middleware(ApiChannel::class)
|
->middleware(ApiChannel::class)
|
||||||
->middleware(ApiCheckToken::class)
|
->middleware(ApiCheckToken::class)
|
||||||
->middleware(ApiLog::class);
|
->middleware(ApiLog::class)->allowCrossDomain();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -74,7 +75,8 @@ Route::group(function () {
|
|||||||
Route::get('site', 'sys.Config/site');
|
Route::get('site', 'sys.Config/site');
|
||||||
//场景域名
|
//场景域名
|
||||||
Route::get('scene_domain', 'sys.Config/getSceneDomain');
|
Route::get('scene_domain', 'sys.Config/getSceneDomain');
|
||||||
})->middleware(ApiChannel::class)
|
})->middleware(AllowCrossDomain::class)
|
||||||
|
->middleware(ApiChannel::class)
|
||||||
->middleware(ApiCheckToken::class)
|
->middleware(ApiCheckToken::class)
|
||||||
->middleware(ApiLog::class);
|
->middleware(ApiLog::class);
|
||||||
//加载插件路由
|
//加载插件路由
|
||||||
|
|||||||
@ -19,7 +19,7 @@ namespace app\dict\sys;
|
|||||||
class SmsDict
|
class SmsDict
|
||||||
{
|
{
|
||||||
//阿里云短信
|
//阿里云短信
|
||||||
const ALISMS = 'ali';
|
const ALISMS = 'aliyun';
|
||||||
//腾讯云短信
|
//腾讯云短信
|
||||||
const TENCENTSMS = 'tencent';
|
const TENCENTSMS = 'tencent';
|
||||||
|
|
||||||
|
|||||||
@ -25,7 +25,7 @@ class StorageDict
|
|||||||
const QINIU = 'qiniu';
|
const QINIU = 'qiniu';
|
||||||
|
|
||||||
//阿里云存储
|
//阿里云存储
|
||||||
const ALI = 'ali';
|
const ALI = 'aliyun';
|
||||||
|
|
||||||
//腾讯云存储
|
//腾讯云存储
|
||||||
const TENCENT = 'tencent';
|
const TENCENT = 'tencent';
|
||||||
|
|||||||
@ -234,6 +234,11 @@ class Index extends BaseInstall
|
|||||||
return fail('平台信息不能为空!');
|
return fail('平台信息不能为空!');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($site_username == $username) {
|
||||||
|
$this->setSuccessLog([ '站点管理员和平台管理员不能相同,请重新输入', 'error' ]);
|
||||||
|
return fail('站点管理员和平台管理员不能相同,请重新输入');
|
||||||
|
}
|
||||||
|
|
||||||
if ($password != $password2) {
|
if ($password != $password2) {
|
||||||
$this->setSuccessLog([ '平台两次密码输入不一样,请重新输入', 'error' ]);
|
$this->setSuccessLog([ '平台两次密码输入不一样,请重新输入', 'error' ]);
|
||||||
return fail('平台两次密码输入不一样,请重新输入');
|
return fail('平台两次密码输入不一样,请重新输入');
|
||||||
@ -244,6 +249,11 @@ class Index extends BaseInstall
|
|||||||
return fail('平台信息不能为空!');
|
return fail('平台信息不能为空!');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($site_username == $username) {
|
||||||
|
$this->setSuccessLog([ '站点账号不能跟平台账号一致', 'error' ]);
|
||||||
|
return fail('站点账号不能跟平台账号一致!');
|
||||||
|
}
|
||||||
|
|
||||||
if ($site_password != $site_password2) {
|
if ($site_password != $site_password2) {
|
||||||
$this->setSuccessLog([ '站点两次密码输入不一样,请重新输入', 'error' ]);
|
$this->setSuccessLog([ '站点两次密码输入不一样,请重新输入', 'error' ]);
|
||||||
return fail('站点两次密码输入不一样,请重新输入');
|
return fail('站点两次密码输入不一样,请重新输入');
|
||||||
@ -292,7 +302,11 @@ class Index extends BaseInstall
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($site_name == '' || $site_username == '' || $site_password == '') {
|
if ($site_name == '' || $site_username == '' || $site_password == '') {
|
||||||
return fail('平台信息不能为空!');
|
return fail('站点信息不能为空!');
|
||||||
|
}
|
||||||
|
|
||||||
|
if($site_username == $username) {
|
||||||
|
return fail('站点账号不能跟平台账号一致');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($site_password != $site_password2) {
|
if ($site_password != $site_password2) {
|
||||||
|
|||||||
@ -1210,9 +1210,9 @@ CREATE TABLE jobs (
|
|||||||
id int(11) NOT NULL AUTO_INCREMENT,
|
id int(11) NOT NULL AUTO_INCREMENT,
|
||||||
queue varchar(255) NOT NULL,
|
queue varchar(255) NOT NULL,
|
||||||
payload longtext NOT NULL,
|
payload longtext NOT NULL,
|
||||||
attempts tinyint(3) UNSIGNED NOT NULL,
|
attempts tinyint(3) UNSIGNED NOT NULL DEFAULT 0,
|
||||||
reserved tinyint(3) UNSIGNED NOT NULL,
|
reserved tinyint(3) UNSIGNED NOT NULL DEFAULT 0,
|
||||||
reserve_time int(10) UNSIGNED DEFAULT NULL,
|
reserve_time int(10) UNSIGNED DEFAULT 0,
|
||||||
available_time int(10) UNSIGNED NOT NULL,
|
available_time int(10) UNSIGNED NOT NULL,
|
||||||
create_time int(10) UNSIGNED NOT NULL,
|
create_time int(10) UNSIGNED NOT NULL,
|
||||||
PRIMARY KEY (id)
|
PRIMARY KEY (id)
|
||||||
|
|||||||
@ -50,7 +50,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<a href="javascript:void(0)" class="other-links-text" >站点电脑端</a>
|
<a href="javascript:void(0)" class="other-links-text" >站点电脑端</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="other-links-item" onclick="window.open('{$root_url}/wap/s1')">
|
<li class="other-links-item" onclick="window.open('{$root_url}/wap/s1/')">
|
||||||
<div class="other-links-pic">
|
<div class="other-links-pic">
|
||||||
<img src="INSTALL_IMG/site_h5.png" alt="">
|
<img src="INSTALL_IMG/site_h5.png" alt="">
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -62,7 +62,7 @@ return [
|
|||||||
//存储方式
|
//存储方式
|
||||||
'storage_type_local' => 'local',
|
'storage_type_local' => 'local',
|
||||||
'storage_type_qiniu' => 'qiniu',
|
'storage_type_qiniu' => 'qiniu',
|
||||||
'storage_type_ali' => 'ali',
|
'storage_type_ali' => 'aliyun',
|
||||||
'storage_type_qcloud' => 'tencent',
|
'storage_type_qcloud' => 'tencent',
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|||||||
@ -106,6 +106,7 @@ return [
|
|||||||
'WECHAT_TEMPLATE_NEED_NO' => '微信消息模板缺少模板编号',
|
'WECHAT_TEMPLATE_NEED_NO' => '微信消息模板缺少模板编号',
|
||||||
'NOTICE_NOT_OPEN_SMS' => '当前消息未开启短信发送',
|
'NOTICE_NOT_OPEN_SMS' => '当前消息未开启短信发送',
|
||||||
'NOTICE_SMS_EMPTY' => '手机号为空',
|
'NOTICE_SMS_EMPTY' => '手机号为空',
|
||||||
|
'NOTICE_SMS_NOT_OPEN' => '短信未启用',
|
||||||
|
|
||||||
//会员相关
|
//会员相关
|
||||||
'MOBILE_IS_EXIST' => '当前手机号已绑定账号',
|
'MOBILE_IS_EXIST' => '当前手机号已绑定账号',
|
||||||
|
|||||||
@ -20,7 +20,7 @@ class Sms
|
|||||||
$to = $data['to'];//发送对象主题
|
$to = $data['to'];//发送对象主题
|
||||||
$mobile = $to['mobile'] ?? '';
|
$mobile = $to['mobile'] ?? '';
|
||||||
//完全信任消息的设置, 不再依赖support_type
|
//完全信任消息的设置, 不再依赖support_type
|
||||||
if (!$template['is_sms']) {
|
if ($template['is_sms']) {
|
||||||
$sms_id = $template['sms_id'];//发送模板id
|
$sms_id = $template['sms_id'];//发送模板id
|
||||||
$content = $template['sms_content'];
|
$content = $template['sms_content'];
|
||||||
$member_id = $to['member_id'] ?? 0;
|
$member_id = $to['member_id'] ?? 0;
|
||||||
|
|||||||
@ -73,10 +73,6 @@ class Weapp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else {
|
|
||||||
if (!$template['async']) {
|
|
||||||
throw new NoticeException('WEAPP_TEMPLATE_NOTICE_NOT_OPEN');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -84,10 +84,6 @@ class Wechat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else {
|
|
||||||
if (!$template['async']) {
|
|
||||||
throw new NoticeException('WECHAT_TEMPLATE_NOTICE_NOT_OPEN');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,9 +14,10 @@ class MemberVerifySuccess extends BaseNoticeTemplate
|
|||||||
|
|
||||||
private $key = 'member_verify_code';
|
private $key = 'member_verify_code';
|
||||||
|
|
||||||
public function handle(array $data)
|
public function handle(array $params)
|
||||||
{
|
{
|
||||||
if ($this->key == $data['key']) {
|
if ($this->key == $params['key']){
|
||||||
|
$data = $params['data'];
|
||||||
return $this->toReturn(
|
return $this->toReturn(
|
||||||
[
|
[
|
||||||
'code' => $data['code'],
|
'code' => $data['code'],
|
||||||
|
|||||||
@ -28,7 +28,7 @@ class AddSiteAfterListener
|
|||||||
{
|
{
|
||||||
|
|
||||||
// 初始化文章数据
|
// 初始化文章数据
|
||||||
( new InstallArticleService() )->install([ 'site_id' => $data[ 'site_id' ] ]);
|
// ( new InstallArticleService() )->install([ 'site_id' => $data[ 'site_id' ] ]);
|
||||||
//加载插件语言包
|
//加载插件语言包
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -229,6 +229,7 @@ class DiyService extends BaseAdminService
|
|||||||
}
|
}
|
||||||
$data[ 'component' ] = $this->getComponentList($data[ 'name' ]);
|
$data[ 'component' ] = $this->getComponentList($data[ 'name' ]);
|
||||||
$data[ 'domain_url' ] = ( new SystemService() )->getUrl();
|
$data[ 'domain_url' ] = ( new SystemService() )->getUrl();
|
||||||
|
$data[ 'site_id' ] = $this->site_id;
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -19,6 +19,7 @@ use app\service\admin\sys\SystemService;
|
|||||||
use app\service\core\member\CoreMemberService;
|
use app\service\core\member\CoreMemberService;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use core\base\BaseAdminService;
|
use core\base\BaseAdminService;
|
||||||
|
use think\facade\Db;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -54,7 +55,7 @@ class SiteStatService extends BaseAdminService
|
|||||||
'version' => [],
|
'version' => [],
|
||||||
'visit_stat' => [
|
'visit_stat' => [
|
||||||
'date' => [],
|
'date' => [],
|
||||||
'value' => [980,1323,882,762,865,923,1105]
|
'value' => []
|
||||||
],
|
],
|
||||||
'member_stat' => [
|
'member_stat' => [
|
||||||
'type' => ['男','女','未知'],
|
'type' => ['男','女','未知'],
|
||||||
@ -88,7 +89,12 @@ class SiteStatService extends BaseAdminService
|
|||||||
$data['system'] = (new SystemService())->getInfo();
|
$data['system'] = (new SystemService())->getInfo();
|
||||||
$data['version'] = $data['system']['version'] ?? [];
|
$data['version'] = $data['system']['version'] ?? [];
|
||||||
$time = time();
|
$time = time();
|
||||||
for ($i=1; $i<=7; $i++) $data['visit_stat']['date'][] = date('Y-m-d', strtotime( '+' . $i-7 .' days', $time));
|
for ($i=1; $i<=7; $i++){
|
||||||
|
$time_data = date('Y-m-d', strtotime( '+' . $i-7 .' days', $time));
|
||||||
|
$data['visit_stat']['date'][] = $time_data;
|
||||||
|
$time_arr = get_start_and_end_time_by_day($time_data);
|
||||||
|
$data['visit_stat']['value'][] = (new MemberService())->getCount([[ '', 'exp', Db::raw('(`create_time` >= ' . $time_arr[0] . ') and (`create_time` < ' . $time_arr[1] . ')') ]]);
|
||||||
|
}
|
||||||
$member_count = (new MemberService())->getCount();
|
$member_count = (new MemberService())->getCount();
|
||||||
$man_count = (new MemberService())->getCount([ ['sex', '=', '1'] ]);
|
$man_count = (new MemberService())->getCount([ ['sex', '=', '1'] ]);
|
||||||
$woman_count = (new MemberService())->getCount([ ['sex', '=', '2'] ]);
|
$woman_count = (new MemberService())->getCount([ ['sex', '=', '2'] ]);
|
||||||
|
|||||||
@ -49,7 +49,7 @@ class SystemService extends BaseAdminService
|
|||||||
*/
|
*/
|
||||||
public function getUrl()
|
public function getUrl()
|
||||||
{
|
{
|
||||||
$site_tag = $this->site_id == 1 ? '' : '/s' . $this->site_id;
|
$site_tag = $this->site_id == 31 ? '' : '/s' . $this->site_id;
|
||||||
$data = [
|
$data = [
|
||||||
'wap_url' => ( !empty(env("system.wap_domain")) ? env("system.wap_domain") : request()->domain() ) . "/wap" . $site_tag,
|
'wap_url' => ( !empty(env("system.wap_domain")) ? env("system.wap_domain") : request()->domain() ) . "/wap" . $site_tag,
|
||||||
'web_url' => ( !empty(env("system.web_domain")) ? env("system.web_domain") : request()->domain() ) . "/web" . $site_tag,
|
'web_url' => ( !empty(env("system.web_domain")) ? env("system.web_domain") : request()->domain() ) . "/web" . $site_tag,
|
||||||
@ -122,11 +122,11 @@ class SystemService extends BaseAdminService
|
|||||||
* 清理缓存
|
* 清理缓存
|
||||||
*/
|
*/
|
||||||
public function schemaCache(){
|
public function schemaCache(){
|
||||||
|
|
||||||
if (is_dir(dirname($_SERVER['DOCUMENT_ROOT']) . '/runtime/schema')) {
|
if (is_dir(dirname($_SERVER['DOCUMENT_ROOT']) . '/runtime/schema')) {
|
||||||
rmdirs(dirname($_SERVER['DOCUMENT_ROOT']) . '/runtime/schema');
|
rmdirs(dirname($_SERVER['DOCUMENT_ROOT']) . '/runtime/schema');
|
||||||
return 'CLEAR_MYSQL_CACHE_SUCCESS';
|
|
||||||
}
|
}
|
||||||
return;
|
return 'CLEAR_MYSQL_CACHE_SUCCESS';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -50,7 +50,7 @@ class RegisterService extends BaseApiService
|
|||||||
$member_id = $data;
|
$member_id = $data;
|
||||||
} else{
|
} else{
|
||||||
if(empty($data['nickname'])){
|
if(empty($data['nickname'])){
|
||||||
$data['nickname'] = $data['username'] ?? substr_replace($data['mobile'], '****', 3, 4) ?? $this->createName();
|
$data['nickname'] = $data['username'] ?? !empty($mobile) ? substr_replace($mobile, '****', 3, 4) : $this->createName();
|
||||||
}
|
}
|
||||||
$data['register_channel'] = $this->channel;
|
$data['register_channel'] = $this->channel;
|
||||||
$data['register_type'] = $type;
|
$data['register_type'] = $type;
|
||||||
|
|||||||
@ -31,7 +31,6 @@ class NoticeService extends BaseApiService
|
|||||||
* 发送消息
|
* 发送消息
|
||||||
* @param $key
|
* @param $key
|
||||||
* @param $data
|
* @param $data
|
||||||
* @param bool $is_delay 是否延时
|
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function send($key, $data)
|
public function send($key, $data)
|
||||||
|
|||||||
@ -109,7 +109,7 @@ class WechatAuthService extends BaseApiService
|
|||||||
$is_bind_mobile = $config['is_bind_mobile'];
|
$is_bind_mobile = $config['is_bind_mobile'];
|
||||||
$is_auth_register = $config['is_auth_register'];
|
$is_auth_register = $config['is_auth_register'];
|
||||||
if ($is_bind_mobile == 0 && $is_auth_register == 1) {
|
if ($is_bind_mobile == 0 && $is_auth_register == 1) {
|
||||||
return $this->register($openid);
|
return $this->register($openid, '', $nickname, $avatar);
|
||||||
} else {
|
} else {
|
||||||
return ['avatar' => $avatar, 'nickname' => $nickname, 'openid' => $openid];
|
return ['avatar' => $avatar, 'nickname' => $nickname, 'openid' => $openid];
|
||||||
}
|
}
|
||||||
@ -146,7 +146,7 @@ class WechatAuthService extends BaseApiService
|
|||||||
* @return void
|
* @return void
|
||||||
* @throws InvalidArgumentException
|
* @throws InvalidArgumentException
|
||||||
*/
|
*/
|
||||||
public function register(string $openid, string|int $mobile = '')
|
public function register(string $openid, string|int $mobile = '', string $nickname = '', string $avatar = '')
|
||||||
{
|
{
|
||||||
$member_service = new MemberService();
|
$member_service = new MemberService();
|
||||||
$member_info = $member_service->findMemberInfo(['wx_openid' => $openid, 'site_id' => $this->site_id]);
|
$member_info = $member_service->findMemberInfo(['wx_openid' => $openid, 'site_id' => $this->site_id]);
|
||||||
@ -155,6 +155,8 @@ class WechatAuthService extends BaseApiService
|
|||||||
$result = $register_service->register($mobile,
|
$result = $register_service->register($mobile,
|
||||||
[
|
[
|
||||||
'wx_openid' => $openid,
|
'wx_openid' => $openid,
|
||||||
|
'nickname' => $nickname,
|
||||||
|
'headimg' => $avatar
|
||||||
],
|
],
|
||||||
MemberRegisterTypeDict::WECHAT
|
MemberRegisterTypeDict::WECHAT
|
||||||
);
|
);
|
||||||
|
|||||||
@ -518,6 +518,7 @@ class CoreAddonInstallService extends CoreAddonBaseService
|
|||||||
$core_addon_service->set($install_data);
|
$core_addon_service->set($install_data);
|
||||||
//清理缓存
|
//清理缓存
|
||||||
Cache::tag(self::$cache_tag_name)->clear();
|
Cache::tag(self::$cache_tag_name)->clear();
|
||||||
|
Cache::set("local_install_addons", []);
|
||||||
//执行命令
|
//执行命令
|
||||||
//执行插件安装方法
|
//执行插件安装方法
|
||||||
$class = "addon\\" . $this->addon . "\\" . Str::studly($this->addon);
|
$class = "addon\\" . $this->addon . "\\" . Str::studly($this->addon);
|
||||||
@ -559,7 +560,7 @@ class CoreAddonInstallService extends CoreAddonBaseService
|
|||||||
|
|
||||||
$core_addon_service = new CoreAddonService();
|
$core_addon_service = new CoreAddonService();
|
||||||
$core_addon_service->delByKey($this->addon);
|
$core_addon_service->delByKey($this->addon);
|
||||||
|
Cache::set("local_install_addons", []);
|
||||||
//清理缓存
|
//清理缓存
|
||||||
Cache::tag(self::$cache_tag_name)->clear();
|
Cache::tag(self::$cache_tag_name)->clear();
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@ -39,6 +39,8 @@ class CoreAddonService extends CoreAddonBaseService
|
|||||||
$install_addon_list = $this->model->append(['status_name'])->column('title, icon, key, desc, status, author, version, install_time, update_time, cover', 'key');
|
$install_addon_list = $this->model->append(['status_name'])->column('title, icon, key, desc, status, author, version, install_time, update_time, cover', 'key');
|
||||||
foreach($files as $path) {
|
foreach($files as $path) {
|
||||||
$data = $this->getAddonConfig($path);
|
$data = $this->getAddonConfig($path);
|
||||||
|
if(isset($data['key']))
|
||||||
|
{
|
||||||
$icon = addon_resource($data['key'], "icon.png");
|
$icon = addon_resource($data['key'], "icon.png");
|
||||||
$data['icon'] = is_file($icon) ? $icon : '';
|
$data['icon'] = is_file($icon) ? $icon : '';
|
||||||
$cover = addon_resource($data['key'], "cover.png");
|
$cover = addon_resource($data['key'], "cover.png");
|
||||||
@ -47,6 +49,8 @@ class CoreAddonService extends CoreAddonBaseService
|
|||||||
$data['install_info'] = $install_addon_list[$key] ?? [];
|
$data['install_info'] = $install_addon_list[$key] ?? [];
|
||||||
$list[] = $data;
|
$list[] = $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return $list;
|
return $list;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -94,7 +94,7 @@ class CoreSmsService extends BaseCoreService
|
|||||||
{
|
{
|
||||||
$info = (new CoreConfigService())->getConfig($site_id, 'SMS')['value'] ?? [];
|
$info = (new CoreConfigService())->getConfig($site_id, 'SMS')['value'] ?? [];
|
||||||
if (empty($info))
|
if (empty($info))
|
||||||
throw new NoticeException('NO_SMS_DRIVER_OPEN');
|
throw new NoticeException('NOTICE_SMS_NOT_OPEN');
|
||||||
|
|
||||||
$sms_type = $info['default'] ?? '';
|
$sms_type = $info['default'] ?? '';
|
||||||
$config = array(
|
$config = array(
|
||||||
|
|||||||
@ -48,6 +48,6 @@ class NoticeService extends BaseCoreService
|
|||||||
$template = (new CoreNoticeService())->getInfo($site_id, $key);
|
$template = (new CoreNoticeService())->getInfo($site_id, $key);
|
||||||
if(empty($template)) return false;
|
if(empty($template)) return false;
|
||||||
|
|
||||||
return Notice::invoke(['site_id' => $site_id, 'key' => $key, 'data' => $data, 'template' => $template], is_open:$template['async']);
|
return Notice::invoke(['site_id' => $site_id, 'key' => $key, 'data' => $data, 'template' => $template], is_async:false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -13,11 +13,9 @@ namespace app\service\core\sys;
|
|||||||
|
|
||||||
use app\model\sys\SysAttachment;
|
use app\model\sys\SysAttachment;
|
||||||
use app\service\core\upload\CoreFileService;
|
use app\service\core\upload\CoreFileService;
|
||||||
use app\service\core\upload\CoreStorageService;
|
|
||||||
use core\base\BaseCoreService;
|
use core\base\BaseCoreService;
|
||||||
use core\exception\AdminException;
|
use core\exception\AdminException;
|
||||||
use core\exception\UploadFileException;
|
use core\exception\UploadFileException;
|
||||||
use core\upload\FileDriver;
|
|
||||||
use think\db\exception\DataNotFoundException;
|
use think\db\exception\DataNotFoundException;
|
||||||
use think\db\exception\DbException;
|
use think\db\exception\DbException;
|
||||||
use think\db\exception\ModelNotFoundException;
|
use think\db\exception\ModelNotFoundException;
|
||||||
|
|||||||
@ -28,7 +28,7 @@ class CoreStorageService extends BaseCoreService
|
|||||||
*/
|
*/
|
||||||
public function getDefaultStorage(int $site_id = 0)
|
public function getDefaultStorage(int $site_id = 0)
|
||||||
{
|
{
|
||||||
$storage_list = $this->getStorageList($site_id);
|
$storage_list = $this->getStorageConfigList($site_id);
|
||||||
foreach($storage_list as $k => $v){
|
foreach($storage_list as $k => $v){
|
||||||
if($v['is_use'] == StorageDict::ON){
|
if($v['is_use'] == StorageDict::ON){
|
||||||
$item_storage = $v['params'] ?? [];
|
$item_storage = $v['params'] ?? [];
|
||||||
@ -76,4 +76,28 @@ class CoreStorageService extends BaseCoreService
|
|||||||
}
|
}
|
||||||
return $list;
|
return $list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取配置列表
|
||||||
|
* @param int $site_id
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getStorageConfigList(int $site_id = 0)
|
||||||
|
{
|
||||||
|
$config_type = $this->getStorageConfig($site_id);
|
||||||
|
$storage_type_list = StorageDict::getType();
|
||||||
|
$list = [];
|
||||||
|
foreach ($storage_type_list as $k => $v) {
|
||||||
|
$data = [];
|
||||||
|
$data['storage_type'] = $k;
|
||||||
|
$data['is_use'] = $k == $config_type['default'] ? StorageDict::ON : StorageDict::OFF;
|
||||||
|
$data['name'] = $v['name'];
|
||||||
|
foreach ($v['params'] as $k_param => $v_param) {
|
||||||
|
$data['params'][$k_param] = $config_type[$k][$k_param] ?? '';
|
||||||
|
}
|
||||||
|
$list[] = $data;
|
||||||
|
}
|
||||||
|
return $list;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -34,7 +34,7 @@ abstract class BaseJob extends Dispatch
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 运行队列
|
* 消费任务
|
||||||
* @param Job $job
|
* @param Job $job
|
||||||
* @param $params
|
* @param $params
|
||||||
*/
|
*/
|
||||||
@ -52,7 +52,7 @@ abstract class BaseJob extends Dispatch
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 执行队列
|
* 执行任务
|
||||||
* @param string $action
|
* @param string $action
|
||||||
* @param Job $job
|
* @param Job $job
|
||||||
* @param array $data
|
* @param array $data
|
||||||
|
|||||||
@ -42,19 +42,13 @@ abstract class BaseDict extends Storage
|
|||||||
//尚未安装不加载插件
|
//尚未安装不加载插件
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
$cache_name = "local_install_addons";
|
$addons = Cache::get("local_install_addons");
|
||||||
return cache_remember(
|
if(empty($addons))
|
||||||
$cache_name,
|
{
|
||||||
function () {
|
$addons = Db::name("addon")->column("key");
|
||||||
$list = Db::name("addon")->column("key");
|
Cache::set("local_install_addons", $addons);
|
||||||
return $list;
|
}
|
||||||
},
|
return $addons;
|
||||||
self::$cache_tag_name
|
|
||||||
);
|
|
||||||
// return Cache::tag(self::$cache_tag_name)->remember($cache_name, function () {
|
|
||||||
// $list = Db::name("addon")->column("key");
|
|
||||||
// return $list;
|
|
||||||
// });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -47,7 +47,6 @@ class Aliyun extends BaseSms
|
|||||||
AlibabaCloud::accessKeyClient($this->app_key, $this->secret_key)
|
AlibabaCloud::accessKeyClient($this->app_key, $this->secret_key)
|
||||||
->regionId('cn-hangzhou')
|
->regionId('cn-hangzhou')
|
||||||
->asDefaultClient();
|
->asDefaultClient();
|
||||||
|
|
||||||
$result = AlibabaCloud::rpcRequest()
|
$result = AlibabaCloud::rpcRequest()
|
||||||
->product('Dysmsapi')
|
->product('Dysmsapi')
|
||||||
->host('dysmsapi.aliyuncs.com')
|
->host('dysmsapi.aliyuncs.com')
|
||||||
@ -60,7 +59,7 @@ class Aliyun extends BaseSms
|
|||||||
'PhoneNumbers' => $mobile,
|
'PhoneNumbers' => $mobile,
|
||||||
'SignName' => $this->sign,
|
'SignName' => $this->sign,
|
||||||
'TemplateCode' => $template_id,
|
'TemplateCode' => $template_id,
|
||||||
'TemplateParam' => $data,
|
'TemplateParam' => json_encode($data, JSON_UNESCAPED_UNICODE),
|
||||||
],
|
],
|
||||||
])
|
])
|
||||||
->request();
|
->request();
|
||||||
|
|||||||
@ -8,15 +8,12 @@
|
|||||||
// +----------------------------------------------------------------------
|
// +----------------------------------------------------------------------
|
||||||
// | Author: Niucloud Team
|
// | Author: Niucloud Team
|
||||||
// +----------------------------------------------------------------------
|
// +----------------------------------------------------------------------
|
||||||
|
|
||||||
namespace core\upload;
|
namespace core\upload;
|
||||||
|
|
||||||
|
|
||||||
use app\service\core\upload\CoreUploadConfigService;
|
use app\service\core\upload\CoreUploadConfigService;
|
||||||
use core\exception\UploadFileException;
|
use core\exception\UploadFileException;
|
||||||
use core\loader\DriverConfig;
|
use core\loader\DriverConfig;
|
||||||
use core\loader\Storage;
|
use core\loader\Storage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class BaseUpload
|
* Class BaseUpload
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -1,11 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Created by PhpStorm.
|
|
||||||
* User: Administrator
|
|
||||||
* Date: 2023-02-17
|
|
||||||
* Time: 15:58
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace core\upload;
|
namespace core\upload;
|
||||||
|
|
||||||
use core\exception\UploadFileException;
|
use core\exception\UploadFileException;
|
||||||
@ -13,8 +6,6 @@ use Exception;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件管理驱动类
|
* 文件管理驱动类
|
||||||
* Class FileDriver
|
|
||||||
* @package core\file
|
|
||||||
*/
|
*/
|
||||||
class Local extends BaseUpload
|
class Local extends BaseUpload
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,11 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Created by PhpStorm.
|
|
||||||
* User: Administrator
|
|
||||||
* Date: 2023-02-17
|
|
||||||
* Time: 15:58
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace core\upload;
|
namespace core\upload;
|
||||||
|
|
||||||
use core\exception\UploadFileException;
|
use core\exception\UploadFileException;
|
||||||
@ -14,8 +7,6 @@ use Qcloud\Cos\Client;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 腾讯云存储引擎 (COS)
|
* 腾讯云存储引擎 (COS)
|
||||||
* Class Qiniu
|
|
||||||
* @package app\common\library\storage\engine
|
|
||||||
*/
|
*/
|
||||||
class Qcloud extends BaseUpload
|
class Qcloud extends BaseUpload
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,11 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Created by PhpStorm.
|
|
||||||
* User: Administrator
|
|
||||||
* Date: 2023-02-17
|
|
||||||
* Time: 15:58
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace core\upload;
|
namespace core\upload;
|
||||||
|
|
||||||
use core\exception\UploadFileException;
|
use core\exception\UploadFileException;
|
||||||
@ -18,8 +11,6 @@ use function core\upload\storage\str_contains;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件管理驱动类
|
* 文件管理驱动类
|
||||||
* Class FileDriver
|
|
||||||
* @package core\file
|
|
||||||
*/
|
*/
|
||||||
class Qiniu extends BaseUpload
|
class Qiniu extends BaseUpload
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user