mirror of
https://gitee.com/niucloud-team/niucloud-admin.git
synced 2026-01-08 05:58:10 +00:00
niucloud update
This commit is contained in:
parent
0e42f93707
commit
9b9b2de600
@ -8,7 +8,7 @@ return [
|
||||
'listen' => [
|
||||
|
||||
//应用管理
|
||||
'appManage' => ['addon\hello_world\app\listener\AppManageListener'],
|
||||
'AppManage' => ['addon\hello_world\app\listener\AppManageListener'],
|
||||
],
|
||||
|
||||
'subscribe' => [
|
||||
|
||||
@ -1,37 +0,0 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | Niucloud-admin 企业快速开发的saas管理平台
|
||||
// +----------------------------------------------------------------------
|
||||
// | 官方网址:https://www.niucloud-admin.com
|
||||
// +----------------------------------------------------------------------
|
||||
// | niucloud团队 版权所有 开源版本可自由商用
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: Niucloud Team
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\adminapi\controller\sys;
|
||||
|
||||
use app\service\admin\addon\TerminalService;
|
||||
use app\service\admin\sys\SystemService;
|
||||
use core\base\BaseAdminController;
|
||||
|
||||
/**
|
||||
* 系统信息查询
|
||||
* Class System
|
||||
* @package app\adminapi\controller\sys
|
||||
*/
|
||||
class Terminal extends BaseAdminController
|
||||
{
|
||||
/**
|
||||
* 执行命令行
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function exec()
|
||||
{
|
||||
$commands = $this->request->params([
|
||||
['commands', []],
|
||||
]);
|
||||
TerminalService::instance()->exec($commands);
|
||||
}
|
||||
|
||||
}
|
||||
@ -34,37 +34,7 @@ class AllowCrossDomain
|
||||
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, post');
|
||||
header('Access-Control-Max-Age: 1728000');
|
||||
header('Access-Control-Allow-Credentials:true');
|
||||
//todo 周 自定义Authorization等,需要在.htaccess内加上SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0 nginx同理
|
||||
$allow_origin = [
|
||||
rtrim(str_replace('https://','',str_replace('http://','',$request->domain())),"/"),
|
||||
];
|
||||
$admin_domain = env('system.admin_domain');
|
||||
if(!empty($admin_domain)){
|
||||
$admin_domain = explode(',', $admin_domain);
|
||||
foreach($admin_domain as $v){
|
||||
if(!trim($v)) continue;
|
||||
$allow_origin[] = rtrim(str_replace('https://','',str_replace('http://','',$v)),"/");
|
||||
}
|
||||
}
|
||||
// if(env('system.admin_domain')){
|
||||
// $allow_origin[] = rtrim(str_replace('https://','',str_replace('http://','',env('system.admin_domain'))),"/");
|
||||
// }
|
||||
$referer = $request->header('referer');
|
||||
$origin = '';
|
||||
if(!empty($referer)){
|
||||
$referer = parse_url($referer);
|
||||
$referer = $referer['host'] ?? '';
|
||||
$origin = rtrim(str_replace('https://','',str_replace('http://','',$referer)),"/");
|
||||
}
|
||||
// $origin = $request->header('origin');
|
||||
if(env('app_debug') || ($origin && in_array($origin, $allow_origin))){
|
||||
// header('Access-Control-Allow-Origin: ' . $origin);
|
||||
header('Access-Control-Allow-Origin: *');
|
||||
}else{
|
||||
header('Access-Control-Allow-Origin: *');
|
||||
throw new ServerException('SERVER_CROSS_REQUEST_FAIL', 409);
|
||||
}
|
||||
|
||||
header('Access-Control-Allow-Origin: *');
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
<?php
|
||||
// 全局中间件定义文件
|
||||
|
||||
use app\api\middleware\AllowCrossDomain;
|
||||
return [
|
||||
//跨域请求中间件
|
||||
AllowCrossDomain::class,
|
||||
];
|
||||
|
||||
@ -18,7 +18,7 @@ use core\exception\ServerException;
|
||||
/**
|
||||
* http跨域请求中间件
|
||||
* Class AllowCrossDomain
|
||||
* @package app\adminapi\middleware
|
||||
* @package app\api\middleware
|
||||
*/
|
||||
class AllowCrossDomain
|
||||
{
|
||||
@ -34,46 +34,7 @@ class AllowCrossDomain
|
||||
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
|
||||
header('Access-Control-Max-Age: 1728000');
|
||||
header('Access-Control-Allow-Credentials:true');
|
||||
//todo 周 自定义Authorization等,需要在.htaccess内加上SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0 nginx同理
|
||||
$allow_origin = [
|
||||
rtrim(str_replace('https://','',str_replace('http://','',$request->domain())),"/"),
|
||||
];
|
||||
|
||||
$wap_domain = env('system.wap_domain');
|
||||
if(!empty($wap_domain)){
|
||||
$wap_domain = explode(',', $wap_domain);
|
||||
foreach($wap_domain as $v){
|
||||
if(!trim($v)) continue;
|
||||
$allow_origin[] = rtrim(str_replace('https://','',str_replace('http://','',$v)),"/");
|
||||
}
|
||||
}
|
||||
$web_domain = env('system.web_domain');
|
||||
if(!empty($web_domain)){
|
||||
$web_domain = explode(',', $web_domain);
|
||||
foreach($web_domain as $v){
|
||||
if(!trim($v)) continue;
|
||||
$allow_origin[] = rtrim(str_replace('https://','',str_replace('http://','',$v)),"/");
|
||||
}
|
||||
}
|
||||
// if(env('system.wap_domain')){
|
||||
// $allow_origin[] = rtrim(str_replace('https://','',str_replace('http://','',env('system.wap_domain'))),"/");
|
||||
// }
|
||||
// if(env('system.web_domain')){
|
||||
// $allow_origin[] = rtrim(str_replace('https://','',str_replace('http://','',env('system.web_domain'))),"/");
|
||||
// }
|
||||
$referer = $request->header('referer');
|
||||
$origin = '';
|
||||
if(!empty($referer)){
|
||||
$referer = parse_url($referer);
|
||||
$referer = $referer['host'] ?? '';
|
||||
$origin = rtrim(str_replace('https://','',str_replace('http://','',$referer)),"/");
|
||||
}
|
||||
if(env('app_debug') || ($origin && in_array($origin, $allow_origin))){
|
||||
header('Access-Control-Allow-Origin: *');
|
||||
}else{
|
||||
header('Access-Control-Allow-Origin: *');
|
||||
throw new ServerException('SERVER_CROSS_REQUEST_FAIL', 409);
|
||||
}
|
||||
header('Access-Control-Allow-Origin: *');
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,7 +12,6 @@
|
||||
use app\api\middleware\ApiChannel;
|
||||
use app\api\middleware\ApiCheckToken;
|
||||
use app\api\middleware\ApiLog;
|
||||
use app\api\middleware\AllowCrossDomain;
|
||||
use think\facade\Route;
|
||||
|
||||
|
||||
@ -34,6 +33,6 @@ Route::group('article', function () {
|
||||
//文章分类详情
|
||||
Route::get('category/:id', 'article.ArticleCategory/info');
|
||||
|
||||
})->middleware(AllowCrossDomain::class)->middleware(ApiChannel::class)
|
||||
})->middleware(ApiChannel::class)
|
||||
->middleware(ApiCheckToken::class, false)
|
||||
->middleware(ApiLog::class);
|
||||
@ -12,7 +12,6 @@
|
||||
use app\api\middleware\ApiChannel;
|
||||
use app\api\middleware\ApiCheckToken;
|
||||
use app\api\middleware\ApiLog;
|
||||
use app\api\middleware\AllowCrossDomain;
|
||||
use think\facade\Route;
|
||||
|
||||
|
||||
@ -23,6 +22,6 @@ Route::group('auth',function () {
|
||||
|
||||
Route::put('logout', 'login.Login/logout');
|
||||
|
||||
})->middleware(AllowCrossDomain::class)->middleware(ApiChannel::class)
|
||||
})->middleware(ApiChannel::class)
|
||||
->middleware(ApiCheckToken::class, true)
|
||||
->middleware(ApiLog::class);
|
||||
@ -11,7 +11,6 @@
|
||||
|
||||
use app\api\middleware\ApiCheckToken;
|
||||
use app\api\middleware\ApiLog;
|
||||
use app\api\middleware\AllowCrossDomain;
|
||||
use think\facade\Route;
|
||||
|
||||
|
||||
@ -27,5 +26,5 @@ Route::group('diy', function() {
|
||||
|
||||
Route::get('share', 'diy.Diy/share');
|
||||
|
||||
})->middleware(AllowCrossDomain::class)->middleware(ApiLog::class)
|
||||
})->middleware(ApiLog::class)
|
||||
->middleware(ApiCheckToken::class, false);
|
||||
@ -12,7 +12,6 @@
|
||||
use app\api\middleware\ApiChannel;
|
||||
use app\api\middleware\ApiCheckToken;
|
||||
use app\api\middleware\ApiLog;
|
||||
use app\api\middleware\AllowCrossDomain;
|
||||
use think\facade\Route;
|
||||
|
||||
|
||||
@ -29,6 +28,6 @@ Route::group('file', function () {
|
||||
//base64图片
|
||||
Route::post('image/base64', 'upload.Upload/imageBase64');
|
||||
|
||||
})->middleware(AllowCrossDomain::class)->middleware(ApiChannel::class)
|
||||
})->middleware(ApiChannel::class)
|
||||
->middleware(ApiCheckToken::class, true)
|
||||
->middleware(ApiLog::class);
|
||||
@ -12,7 +12,6 @@
|
||||
use app\api\middleware\ApiChannel;
|
||||
use app\api\middleware\ApiCheckToken;
|
||||
use app\api\middleware\ApiLog;
|
||||
use app\api\middleware\AllowCrossDomain;
|
||||
use think\facade\Route;
|
||||
|
||||
|
||||
@ -72,7 +71,7 @@ Route::group('member', function() {
|
||||
Route::put('cashout_account/:account_id', 'member.CashOutAccount/edit');
|
||||
// 删除提现账号
|
||||
Route::delete('cashout_account/:account_id', 'member.CashOutAccount/del');
|
||||
})->middleware(AllowCrossDomain::class)->middleware(ApiChannel::class)
|
||||
})->middleware(ApiChannel::class)
|
||||
->middleware(ApiCheckToken::class, true)
|
||||
->middleware(ApiLog::class);
|
||||
|
||||
@ -82,6 +81,6 @@ Route::group('member', function() {
|
||||
/***************************************************** 会员管理 ****************************************************/
|
||||
//会员日志
|
||||
Route::post('log', 'member.Member/log');
|
||||
})->middleware(AllowCrossDomain::class)->middleware(ApiChannel::class)
|
||||
})->middleware(ApiChannel::class)
|
||||
->middleware(ApiCheckToken::class)
|
||||
->middleware(ApiLog::class);
|
||||
@ -12,7 +12,6 @@
|
||||
use app\api\middleware\ApiChannel;
|
||||
use app\api\middleware\ApiCheckToken;
|
||||
use app\api\middleware\ApiLog;
|
||||
use app\api\middleware\AllowCrossDomain;
|
||||
use think\facade\Route;
|
||||
|
||||
|
||||
@ -28,6 +27,6 @@ Route::group('order', function () {
|
||||
Route::get('recharge', 'order.Recharge/lists');
|
||||
// 充值订单详情
|
||||
Route::get('recharge/:order_id', 'order.Recharge/detail');
|
||||
})->middleware(AllowCrossDomain::class)->middleware(ApiChannel::class)
|
||||
})->middleware(ApiChannel::class)
|
||||
->middleware(ApiCheckToken::class, true)
|
||||
->middleware(ApiLog::class);
|
||||
@ -11,7 +11,6 @@
|
||||
|
||||
use app\api\middleware\ApiChannel;
|
||||
use app\api\middleware\ApiCheckToken;
|
||||
use app\api\middleware\AllowCrossDomain;
|
||||
use app\api\middleware\ApiLog;
|
||||
use think\facade\Route;
|
||||
|
||||
@ -19,7 +18,7 @@ use think\facade\Route;
|
||||
Route::any('pay/notify/:site_id/:channel/:type/:action', 'pay.Pay/notify')
|
||||
->middleware(ApiChannel::class)
|
||||
->middleware(ApiCheckToken::class)
|
||||
->middleware(ApiLog::class)->allowCrossDomain();
|
||||
->middleware(ApiLog::class);
|
||||
/**
|
||||
* 路由
|
||||
*/
|
||||
@ -29,6 +28,6 @@ Route::group('pay',function () {
|
||||
//支付信息
|
||||
Route::get('info/:out_trade_no', 'pay.Pay/info');
|
||||
|
||||
})->middleware(AllowCrossDomain::class)->middleware(ApiChannel::class)
|
||||
})->middleware(ApiChannel::class)
|
||||
->middleware(ApiCheckToken::class)
|
||||
->middleware(ApiLog::class);
|
||||
@ -13,13 +13,12 @@ use app\api\middleware\ApiChannel;
|
||||
use app\api\middleware\ApiCheckToken;
|
||||
use app\api\middleware\ApiLog;
|
||||
use think\facade\Route;
|
||||
use app\api\middleware\AllowCrossDomain;
|
||||
|
||||
//公众号消息推送
|
||||
Route::any('wechat/serve/:site_id', 'wechat.Serve/serve')
|
||||
->middleware(ApiChannel::class)
|
||||
->middleware(ApiCheckToken::class)
|
||||
->middleware(ApiLog::class)->allowCrossDomain();
|
||||
->middleware(ApiLog::class);
|
||||
|
||||
|
||||
/**
|
||||
@ -73,8 +72,7 @@ Route::group(function() {
|
||||
Route::get('site', 'sys.Config/site');
|
||||
//场景域名
|
||||
Route::get('scene_domain', 'sys.Config/getSceneDomain');
|
||||
})->middleware(AllowCrossDomain::class)
|
||||
->middleware(ApiChannel::class)
|
||||
})->middleware(ApiChannel::class)
|
||||
->middleware(ApiCheckToken::class)
|
||||
->middleware(ApiLog::class);
|
||||
//加载插件路由
|
||||
|
||||
@ -75,6 +75,7 @@ class ComponentDict
|
||||
'uses' => 0, // 最大添加数量
|
||||
'sort' => 10002,
|
||||
'value' => [
|
||||
"imageHeight" => 180,
|
||||
"list" => [
|
||||
[
|
||||
"link" => [
|
||||
|
||||
@ -85,6 +85,7 @@ class PagesDict
|
||||
"componentName" => "ImageAds",
|
||||
"componentTitle" => "图片广告",
|
||||
"uses" => 0,
|
||||
"imageHeight" => 160,
|
||||
"list" => [
|
||||
[
|
||||
"link" => [
|
||||
|
||||
@ -23,8 +23,6 @@ class RechargeOrderDict
|
||||
//订单状态
|
||||
//待支付
|
||||
const WAIT_PAY = 0;
|
||||
//已支付
|
||||
const PAY = 1;
|
||||
//已完成
|
||||
const FINISH = 10;
|
||||
//已关闭
|
||||
@ -78,14 +76,6 @@ class RechargeOrderDict
|
||||
],
|
||||
],
|
||||
],
|
||||
self::PAY => [
|
||||
'name' => '已支付',
|
||||
'status' => self::PAY,
|
||||
'is_refund' => 0,
|
||||
'action' => [],
|
||||
'member_action' => [
|
||||
],
|
||||
],
|
||||
self::FINISH => [
|
||||
'name' => '已完成',
|
||||
'status' => self::FINISH,
|
||||
|
||||
@ -22,14 +22,14 @@ $system_event = [
|
||||
*/
|
||||
|
||||
//会员注册事件
|
||||
'memberRegister' => [ 'app\listener\member\MemberRegisterListener' ],
|
||||
'MemberRegister' => [ 'app\listener\member\MemberRegisterListener' ],
|
||||
//会员登录事件
|
||||
'memberLogin' => [ 'app\listener\member\MemberLoginListener' ],
|
||||
'MemberLogin' => [ 'app\listener\member\MemberLoginListener' ],
|
||||
//会员账户变化事件
|
||||
'memberAccount' => [ 'app\listener\member\MemberAccountListener' ],
|
||||
'MemberAccount' => [ 'app\listener\member\MemberAccountListener' ],
|
||||
//扫码事件
|
||||
'scan' => [ 'app\listener\scan\ScanListener' ],
|
||||
'addSiteAfter' => [ 'app\listener\site\AddSiteAfterListener' ],
|
||||
'Scan' => [ 'app\listener\scan\ScanListener' ],
|
||||
'AddSiteAfter' => [ 'app\listener\site\AddSiteAfterListener' ],
|
||||
|
||||
/**
|
||||
* 消息相关事件
|
||||
@ -40,23 +40,26 @@ $system_event = [
|
||||
*/
|
||||
'PaySuccess' => [ 'app\listener\pay\PaySuccessListener' ],
|
||||
'TransferSuccess' => [ 'app\listener\pay\TransferSuccessListener' ],
|
||||
/**
|
||||
* 订单相关事件
|
||||
*/
|
||||
|
||||
// 任务失败统一回调,有四种定义方式
|
||||
'queue_failed'=> [
|
||||
['app\listener\job\QueueFailedLoggerListener', 'report'],
|
||||
],
|
||||
'appManage' => [
|
||||
'AppManage' => [
|
||||
'app\listener\system\AppManageListener'
|
||||
],
|
||||
|
||||
//消息模板数据内容
|
||||
'noticeData' => [
|
||||
'NoticeData' => [
|
||||
'app\listener\notice_template\VerifyCode',//手机验证码
|
||||
'app\listener\notice_template\MemberVerifySuccess',//
|
||||
'app\listener\notice_template\RechargeSuccess',
|
||||
],
|
||||
//全场景消息发送
|
||||
'notice' => [
|
||||
'Notice' => [
|
||||
'app\listener\notice\Sms',//短信
|
||||
'app\listener\notice\Wechat',//公众号模板消息
|
||||
'app\listener\notice\Weapp',//小程序订阅消息
|
||||
|
||||
@ -29,10 +29,10 @@ class Notice extends BaseJob
|
||||
protected function doJob($site_id, $key, $data, $template)
|
||||
{
|
||||
//通过业务获取模板变量属于以及发送对象
|
||||
$result = event('noticeData', ['site_id' => $site_id, 'key' => $key, 'data' => $data, 'template' => $template]);
|
||||
$result = event('NoticeData', ['site_id' => $site_id, 'key' => $key, 'data' => $data, 'template' => $template]);
|
||||
$notice_data = array_values(array_filter($result))[0] ?? [];
|
||||
if(empty($notice_data)) throw new NoticeException();
|
||||
event('notice', ['site_id' => $site_id, 'key' => $key, 'to' => $notice_data['to'], 'vars' => $notice_data['vars'], 'template' => $template]);
|
||||
event('Notice', ['site_id' => $site_id, 'key' => $key, 'to' => $notice_data['to'], 'vars' => $notice_data['vars'], 'template' => $template]);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,17 +12,21 @@
|
||||
namespace app\listener\pay;
|
||||
|
||||
|
||||
use app\dict\order\RechargeOrderDict;
|
||||
use app\service\core\order\recharge\CoreRechargeOrderService;
|
||||
|
||||
/**
|
||||
* 支付异步回调事件
|
||||
* Class PayNotify
|
||||
* @package app\listener\pay
|
||||
*/
|
||||
class PaySuccessListener
|
||||
{
|
||||
public function handle(array $pay_info)
|
||||
{
|
||||
$class = "app\\dict\\order\\". $pay_info['trade_type']."\\".ucfirst($pay_info['trade_type']).'OrderService';
|
||||
|
||||
return (new $class)->pay($pay_info);
|
||||
$trade_type = $pay_info['trade_type'] ?? '';
|
||||
switch($trade_type){
|
||||
case RechargeOrderDict::getOrderType()['type']:
|
||||
return (new CoreRechargeOrderService())->pay($pay_info);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -13,6 +13,7 @@ namespace app\model\order;
|
||||
|
||||
use app\dict\common\ChannelDict;
|
||||
use app\model\member\Member;
|
||||
use app\model\pay\Pay;
|
||||
use core\base\BaseModel;
|
||||
|
||||
/**
|
||||
@ -239,5 +240,11 @@ class Order extends BaseModel
|
||||
return $this->hasOne(Member::class,'member_id', 'member_id');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 支付记录
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function pay() {
|
||||
return $this->hasOne(Pay::class,'out_trade_no', 'out_trade_no')->bind(['pay_type_name' => 'type_name']);
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
{SEARCH_VIEW}
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="load{UCASE_NAME}List()">{{ t('search') }}</el-button>
|
||||
<el-button @click="searchFormRef?.resetFields()">{{ t('reset') }}</el-button>
|
||||
<el-button @click="resetForm(searchFormRef)">{{ t('reset') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@ -124,6 +124,13 @@ const deleteEvent = (id: number) => {
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
const resetForm = (formEl: FormInstance | undefined) => {
|
||||
if (!formEl) return
|
||||
formEl.resetFields()
|
||||
load{UCASE_NAME}List()
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
@ -107,7 +107,7 @@ class MemberService extends BaseAdminService
|
||||
|
||||
$member = $this->model->create($data);
|
||||
$data['member_id'] = $member->member_id;
|
||||
event("memberRegister", $data);
|
||||
event("MemberRegister", $data);
|
||||
return $member->member_id;
|
||||
}
|
||||
|
||||
|
||||
@ -42,7 +42,9 @@ class RechargeOrderService extends BaseAdminService
|
||||
$query->field('order_item_id, order_id, member_id, item_id, item_type, item_name, item_image, price, num, item_money, is_refund, refund_no, refund_status, create_time');
|
||||
}, 'member' => function($query) {
|
||||
$query->field('member_id, nickname, mobile, headimg');
|
||||
}])->order($order)->append(['order_status_info', 'order_from_name', 'refund_status_name']);
|
||||
}, 'pay' => function($query) {
|
||||
$query->field('');
|
||||
} ])->order($order)->append(['order_status_info', 'order_from_name', 'refund_status_name' ]);
|
||||
return $this->pageQuery($search_model);
|
||||
}
|
||||
|
||||
@ -58,7 +60,9 @@ class RechargeOrderService extends BaseAdminService
|
||||
$query->field('order_item_id, order_id, member_id, item_id, item_type, item_name, item_image, price, num, item_money, is_refund, refund_no, refund_status, create_time');
|
||||
}, 'member' => function($query) {
|
||||
$query->field('member_id, nickname, mobile, headimg');
|
||||
}])->append(['order_status_info', 'order_from_name'])->findOrEmpty()->toArray();
|
||||
}, 'pay' => function($query) {
|
||||
$query->field('');
|
||||
} ])->append(['order_status_info', 'order_from_name'])->findOrEmpty()->toArray();
|
||||
return $detail;
|
||||
}
|
||||
|
||||
|
||||
@ -101,7 +101,7 @@ class SiteService extends BaseAdminService
|
||||
( new UserService() )->addSiteUser($data_user, $site_id);
|
||||
|
||||
//添加站点成功事件
|
||||
event("addSiteAfter", [ 'site_id' => $site_id ]);
|
||||
event("AddSiteAfter", [ 'site_id' => $site_id ]);
|
||||
|
||||
Db::commit();
|
||||
return $site_id;
|
||||
|
||||
@ -30,7 +30,7 @@ class AppService extends BaseAdminService
|
||||
*/
|
||||
public function getAppList()
|
||||
{
|
||||
$data = event('appManage');
|
||||
$data = event('AppManage');
|
||||
//
|
||||
$category_list = [];
|
||||
$list = [];
|
||||
|
||||
@ -47,7 +47,7 @@ class SystemService extends BaseAdminService
|
||||
*/
|
||||
public function getUrl()
|
||||
{
|
||||
$site_tag = $this->site_id == 1 ? '' : '/s' . $this->site_id;
|
||||
$site_tag = $this->site_id == 1 ? '/' : '/s' . $this->site_id . '/';
|
||||
$data = [
|
||||
'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,
|
||||
@ -59,7 +59,8 @@ class SystemService extends BaseAdminService
|
||||
* 获取系统信息
|
||||
* @return void
|
||||
*/
|
||||
public function getSystemInfo(){
|
||||
public function getSystemInfo()
|
||||
{
|
||||
$server = [];
|
||||
$server[] = [ "name" => get_lang('dict_setting.server_system'), "server" => PHP_OS ];
|
||||
$server[] = [ "name" => get_lang('dict_setting.server_setting'), "server" => PHP_SAPI ];
|
||||
@ -88,16 +89,16 @@ class SystemService extends BaseAdminService
|
||||
|
||||
|
||||
$dirs_list = [
|
||||
[ "path" => $root_path . DIRECTORY_SEPARATOR . 'runtime'.DIRECTORY_SEPARATOR, "need" => get_lang('dict_setting.file_authority_ask'), "path_name" => "/runtime", "name" => "runtime" ],
|
||||
[ "path" => $root_path . DIRECTORY_SEPARATOR . 'public'.DIRECTORY_SEPARATOR.'upload'.DIRECTORY_SEPARATOR, "need" => get_lang('dict_setting.file_authority_ask'), "path_name" => "/public/upload", "name" => "upload" ],
|
||||
];
|
||||
[ "path" => $root_path . DIRECTORY_SEPARATOR . 'runtime' . DIRECTORY_SEPARATOR, "need" => get_lang('dict_setting.file_authority_ask'), "path_name" => "/runtime", "name" => "runtime" ],
|
||||
[ "path" => $root_path . DIRECTORY_SEPARATOR . 'public' . DIRECTORY_SEPARATOR . 'upload' . DIRECTORY_SEPARATOR, "need" => get_lang('dict_setting.file_authority_ask'), "path_name" => "/public/upload", "name" => "upload" ],
|
||||
];
|
||||
//目录 可读 可写检测
|
||||
foreach ($dirs_list as $k => $v) {
|
||||
$is_readable = is_readable($v[ "path" ]);
|
||||
$is_write = is_write($v[ "path" ]);
|
||||
if($is_readable && $is_write){
|
||||
if ($is_readable && $is_write) {
|
||||
$dirs_list[ $k ][ "status" ] = true;
|
||||
}else{
|
||||
} else {
|
||||
$dirs_list[ $k ][ "status" ] = false;
|
||||
}
|
||||
}
|
||||
@ -105,24 +106,25 @@ class SystemService extends BaseAdminService
|
||||
|
||||
//获取环境版本
|
||||
$server_version = [];
|
||||
$row = (array)Db::query("select VERSION() as verson");
|
||||
$row = (array) Db::query("select VERSION() as verson");
|
||||
$server_version[] = [ "name" => get_lang('dict_setting.php_version'), "demand" => get_lang('dict_setting.php_ask'), "server" => phpversion() ];
|
||||
$server_version[] = [ "name" => get_lang('dict_setting.mysql_version'), "demand" => get_lang('dict_setting.mysql_ask'), "server" => $row[0]['verson']];
|
||||
$server_version[] = [ "name" => get_lang('dict_setting.mysql_version'), "demand" => get_lang('dict_setting.mysql_ask'), "server" => $row[ 0 ][ 'verson' ] ];
|
||||
|
||||
// 进程
|
||||
$process[] = [ "name" => "php think queue:listen", "need" => get_lang('dict_setting.php_authority_ask'), "status" => ( new SystemService() )->checkJob() ];
|
||||
|
||||
$data = ["server" => $server, "dirs_list" => $dirs_list, 'system_variables' => $system_variables, 'server_version' => $server_version, 'process' => $process ];
|
||||
$data = [ "server" => $server, "dirs_list" => $dirs_list, 'system_variables' => $system_variables, 'server_version' => $server_version, 'process' => $process ];
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理缓存
|
||||
*/
|
||||
public function schemaCache(){
|
||||
public function schemaCache()
|
||||
{
|
||||
|
||||
if (is_dir(dirname($_SERVER['DOCUMENT_ROOT']) . '/runtime/schema')) {
|
||||
rmdirs(dirname($_SERVER['DOCUMENT_ROOT']) . '/runtime/schema');
|
||||
if (is_dir(dirname($_SERVER[ 'DOCUMENT_ROOT' ]) . '/runtime/schema')) {
|
||||
rmdirs(dirname($_SERVER[ 'DOCUMENT_ROOT' ]) . '/runtime/schema');
|
||||
}
|
||||
return 'CLEAR_MYSQL_CACHE_SUCCESS';
|
||||
}
|
||||
@ -131,16 +133,17 @@ class SystemService extends BaseAdminService
|
||||
*校验消息队列是否正常运行
|
||||
* @return void
|
||||
*/
|
||||
public function checkJob(){
|
||||
public function checkJob()
|
||||
{
|
||||
$secret = uniqid();
|
||||
$file = root_path('runtime').$secret.'.job';
|
||||
try{
|
||||
CheckJob::invoke(['file' => $file]);
|
||||
}catch(\Throwable $e){
|
||||
$file = root_path('runtime') . $secret . '.job';
|
||||
try {
|
||||
CheckJob::invoke([ 'file' => $file ]);
|
||||
} catch (\Throwable $e) {
|
||||
return false;
|
||||
}
|
||||
sleep(3);
|
||||
if(file_exists($file)){
|
||||
if (file_exists($file)) {
|
||||
@unlink($file);
|
||||
return true;
|
||||
}
|
||||
@ -151,11 +154,12 @@ class SystemService extends BaseAdminService
|
||||
* 校验计划任务是否正常运行
|
||||
* @return bool
|
||||
*/
|
||||
public function checkSchedule(){
|
||||
$file = root_path('runtime').'.schedule';
|
||||
if(file_exists($file)){
|
||||
public function checkSchedule()
|
||||
{
|
||||
$file = root_path('runtime') . '.schedule';
|
||||
if (file_exists($file)) {
|
||||
$time = file_get_contents($file);
|
||||
if (!empty($time) && abs($time - time()) < 90 ) {
|
||||
if (!empty($time) && abs($time - time()) < 90) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -71,7 +71,7 @@ class LoginService extends BaseApiService
|
||||
$member_info->last_visit_time = time();
|
||||
$member_info->save();
|
||||
$token_info = $this->createToken($member_info);
|
||||
event("memberLogin", $member_info);
|
||||
event("MemberLogin", $member_info);
|
||||
return [
|
||||
'token' => $token_info['token'],
|
||||
'expires_time' => $token_info['params']['exp'],
|
||||
|
||||
@ -68,7 +68,7 @@ class RegisterService extends BaseApiService
|
||||
}
|
||||
$member_id = ( new MemberService() )->add($data);
|
||||
$data[ 'member_id' ] = $member_id;
|
||||
event('memberRegister', $data);
|
||||
event('MemberRegister', $data);
|
||||
CoreMemberService::setMemberNo($this->site_id, $member_id);
|
||||
}
|
||||
$member_info = $member_service->findMemberInfo([ 'member_id' => $member_id, 'site_id' => $this->site_id ]);
|
||||
|
||||
@ -19,8 +19,6 @@ use Yansongda\Supports\Collection;
|
||||
|
||||
/**
|
||||
* 支付业务
|
||||
* Class WechatConfigService
|
||||
* @package app\service\core\wechat
|
||||
*/
|
||||
class PayService extends BaseApiService
|
||||
{
|
||||
@ -32,8 +30,6 @@ class PayService extends BaseApiService
|
||||
$this->core_pay_service = new CorePayService();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 去支付
|
||||
* @param $site_id
|
||||
@ -63,22 +59,6 @@ class PayService extends BaseApiService
|
||||
return $this->core_pay_service->pay($this->site_id, $out_trade_no, $type, $this->channel, $openid ?? '', $return_url, $quit_url, $buyer_id);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 转账
|
||||
* @param $site_id
|
||||
* @param $from_no
|
||||
* @param $product_code 支付宝用
|
||||
* @param $scene
|
||||
* @param $to_no
|
||||
* @param $to_type 支付宝用
|
||||
* @param $to_name
|
||||
* @return mixed|Collection
|
||||
*/
|
||||
public function transfer(string $type, float $money, string $transfer_no, string $to_no, string $to_type, string $to_name, string $product_code, string $scene){
|
||||
return $this->core_pay_service->transfer($this->site_id, $type, $money, $transfer_no, $to_no, $to_type, $to_name, $product_code, $scene);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭支付
|
||||
* @param $site_id
|
||||
@ -90,17 +70,6 @@ class PayService extends BaseApiService
|
||||
return $this->core_pay_service->close($this->site_id, $type, $out_trade_no);
|
||||
}
|
||||
|
||||
/**
|
||||
* 退款
|
||||
* @param $site_id
|
||||
* @param $out_trade_no
|
||||
* @param $money
|
||||
* @return void
|
||||
*/
|
||||
public function refund(string $type, string $out_trade_no, float $money){
|
||||
return $this->core_pay_service->refund($this->site_id, $type, $out_trade_no, $money);
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付异步通知
|
||||
* @param $site_id
|
||||
@ -111,42 +80,6 @@ class PayService extends BaseApiService
|
||||
return $this->core_pay_service->notify($this->site_id, $channel, $type, $action);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询普通支付订单
|
||||
* @param $site_id
|
||||
* @param $type
|
||||
* @param $out_trade_no
|
||||
* @return null
|
||||
*/
|
||||
public function getOrder(string $type, string $out_trade_no){
|
||||
return $this->core_pay_service->notify($this->site_id, $type, $out_trade_no);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询退款订单
|
||||
* @param $site_id
|
||||
* @param $type
|
||||
* @param $out_trade_no
|
||||
* @param $refund_no
|
||||
* @return null
|
||||
*/
|
||||
public function getRefund(string $type, string $out_trade_no, string $refund_no){
|
||||
return $this->core_pay_service->getRefund($this->site_id, $type, $out_trade_no, $refund_no);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询转账订单
|
||||
* @param $site_id
|
||||
* @param $type
|
||||
* @param $transfer_no
|
||||
* @return null
|
||||
*/
|
||||
public function getTransfer(string $type, string $transfer_no){
|
||||
return $this->core_pay_service->getTransfergetTransfer($this->site_id, $type, $transfer_no);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 通过交易流水号查询支付信息以及支付方式
|
||||
* @param $out_trade_no
|
||||
|
||||
@ -113,7 +113,7 @@ class WeappAuthService extends BaseApiService
|
||||
* @return \app\model\member\Member|array|mixed|\think\Model
|
||||
* @throws InvalidArgumentException
|
||||
*/
|
||||
public function register(string $openid, string $mobile, string $mobile_code){
|
||||
public function register(string $openid, string $mobile = '', string $mobile_code = ''){
|
||||
|
||||
if(empty($openid)) throw new AuthException('AUTH_LOGIN_TAG_NOT_EXIST');
|
||||
//todo openid可能还需要合法性验证
|
||||
|
||||
@ -12,7 +12,6 @@
|
||||
namespace app\service\core\addon;
|
||||
|
||||
use app\dict\addon\AddonDict;
|
||||
use app\dict\sys\AppTypeDict;
|
||||
use app\job\sys\AddonInstall;
|
||||
use app\service\admin\sys\MenuService;
|
||||
use app\service\admin\sys\SystemService;
|
||||
@ -23,7 +22,6 @@ use core\util\Terminal;
|
||||
use think\db\exception\PDOException;
|
||||
use think\facade\Cache;
|
||||
use think\facade\Db;
|
||||
use think\facade\Log;
|
||||
use think\helper\Str;
|
||||
|
||||
/**
|
||||
|
||||
@ -86,8 +86,4 @@ class CoreMemberAccountService extends BaseCoreService
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -13,7 +13,6 @@ namespace app\service\core\notice;
|
||||
|
||||
|
||||
use app\dict\notice\NoticeDict;
|
||||
use app\job\notice\Message;
|
||||
use app\model\sys\SysNotice;
|
||||
use core\base\BaseCoreService;
|
||||
use core\exception\NoticeException;
|
||||
|
||||
@ -14,7 +14,6 @@ namespace app\service\core\notice;
|
||||
use app\dict\sys\SmsDict;
|
||||
use app\service\core\sys\CoreConfigService;
|
||||
use core\base\BaseCoreService;
|
||||
use core\sms\SmsDriver;
|
||||
use core\exception\NoticeException;
|
||||
use core\sms\SmsLoader;
|
||||
|
||||
|
||||
@ -12,16 +12,9 @@
|
||||
namespace app\service\core\notice;
|
||||
|
||||
|
||||
use app\dict\pay\PayDict;
|
||||
use app\job\notice\Message;
|
||||
use app\job\notice\Notice;
|
||||
use app\model\pay\PayChannel;
|
||||
use app\model\sys\SysMessage;
|
||||
use app\model\sys\SysNotice;
|
||||
use app\service\core\message\CoreMessageService;
|
||||
use core\base\BaseCoreService;
|
||||
use core\exception\NoticeException;
|
||||
use think\Model;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@ -11,12 +11,7 @@
|
||||
|
||||
namespace app\service\core\order;
|
||||
|
||||
use app\dict\order\OrderRefundDict;
|
||||
use app\dict\pay\PayDict;
|
||||
use app\model\order\Order;
|
||||
use app\model\order\OrderItem;
|
||||
use app\model\order\OrderItemRefund;
|
||||
use app\service\core\pay\CorePayService;
|
||||
use app\service\core\pay\CoreRefundService;
|
||||
use core\base\BaseCoreService;
|
||||
use core\exception\CommonException;
|
||||
|
||||
@ -11,16 +11,8 @@
|
||||
|
||||
namespace app\service\core\order;
|
||||
|
||||
use app\dict\order\OrderRefundDict;
|
||||
use app\dict\pay\PayDict;
|
||||
use app\model\order\Order;
|
||||
use app\model\order\OrderItem;
|
||||
use app\model\order\OrderItemRefund;
|
||||
use app\service\core\pay\CorePayService;
|
||||
use app\service\core\pay\CoreRefundService;
|
||||
use core\base\BaseCoreService;
|
||||
use core\exception\CommonException;
|
||||
use think\facade\Db;
|
||||
|
||||
/**
|
||||
* 订单
|
||||
|
||||
@ -93,7 +93,7 @@ class CoreRechargeRefundService extends BaseCoreService
|
||||
public function refund(array $order, string $refund_no){
|
||||
(new CoreMemberAccountService())->addLog($order['site_id'], $order['member_id'], 'balance', -$order['money'], 'recharge_refund', '充值订单退款', $order['order_id']);
|
||||
// 调用支付退款
|
||||
// (new CoreRefundService())->refund($order['site_id'], $refund_no);
|
||||
(new CoreRefundService())->refund($order['site_id'], $refund_no);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -51,16 +51,13 @@ class CorePayChannelService extends BaseCoreService
|
||||
*/
|
||||
public function getAllowPayTypeByCahnnel(int $site_id, string $channel, array $pay_type_limit_list = []){
|
||||
$channel_pay_list = $this->model->where([['site_id', '=', $site_id], ['channel', '=', $channel], ['status', '=', 1]])->field('type')->order('sort asc')->select()->toArray();
|
||||
|
||||
if(!empty($channel_pay_list)){
|
||||
$temp_channel_pay_list = array_column($channel_pay_list, 'type');
|
||||
if($pay_type_limit_list) $temp_channel_pay_list = array_intersect($temp_channel_pay_list, $pay_type_limit_list);
|
||||
$pay_type_list = PayDict::getPayType($temp_channel_pay_list);
|
||||
$allow_pay_type_list = [];
|
||||
foreach($channel_pay_list as $v){
|
||||
$allow_pay_type_list[] = $pay_type_list[$v['type']];
|
||||
}
|
||||
}
|
||||
return $allow_pay_type_list ?? [];
|
||||
return $pay_type_list ?? [];
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -16,7 +16,6 @@ use app\dict\pay\PayDict;
|
||||
use app\dict\pay\TransferDict;
|
||||
use core\base\BaseCoreService;
|
||||
use core\exception\PayException;
|
||||
use core\pay\PayDriver;
|
||||
use core\pay\PayLoader;
|
||||
use Yansongda\Supports\Collection;
|
||||
|
||||
@ -46,17 +45,20 @@ class CorePayEventService extends BaseCoreService
|
||||
* @param string $type
|
||||
* @return $this
|
||||
*/
|
||||
public function init(int $site_id, string $channel = '', string $type = ''){
|
||||
public function init(int $site_id, string $channel = '', string $type = '')
|
||||
{
|
||||
$this->site_id = $site_id;
|
||||
$this->channel = $channel;
|
||||
$this->type = $type;
|
||||
$this->config = (new CorePayChannelService())->getConfigByChannelAndType($this->site_id, $this->channel, $this->type);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取实例化应用
|
||||
* @param $site_id
|
||||
* @return \core\pay\PayDriver
|
||||
* @param string $action
|
||||
* @return PayLoader
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function app(string $action = 'query')
|
||||
{
|
||||
@ -91,7 +93,7 @@ class CorePayEventService extends BaseCoreService
|
||||
'buyer_id' => $buyer_id,
|
||||
'openid' => $openid
|
||||
);
|
||||
switch($this->type){
|
||||
switch ($this->type) {
|
||||
case PayDict::WECHATPAY:
|
||||
$params['money'] = $params['money'] * 100;
|
||||
|
||||
@ -132,7 +134,7 @@ class CorePayEventService extends BaseCoreService
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(empty($pay_fun)) throw new PayException('PAYMENT_METHOD_NOT_SCENE');
|
||||
if (empty($pay_fun)) throw new PayException('PAYMENT_METHOD_NOT_SCENE');
|
||||
return $this->app('pay')->$pay_fun($params);
|
||||
}
|
||||
|
||||
@ -148,10 +150,10 @@ class CorePayEventService extends BaseCoreService
|
||||
* @param $to_name
|
||||
* @return mixed|Collection
|
||||
*/
|
||||
public function transfer(float $money, string $transfer_no,string $to_no, string $to_name, string $remark, array $transfer_list = [], string $to_type = '', string $product_code = '', string $scene = '')
|
||||
public function transfer(float $money, string $transfer_no, string $to_no, string $to_name, string $remark, array $transfer_list = [], string $to_type = '', string $product_code = '', string $scene = '')
|
||||
{
|
||||
$transfer_type = TransferDict::getPayTypeByTransfer($this->type);
|
||||
switch($transfer_type){
|
||||
switch ($transfer_type) {
|
||||
case PayDict::WECHATPAY:
|
||||
$money = $money * 100;
|
||||
break;
|
||||
@ -190,11 +192,15 @@ class CorePayEventService extends BaseCoreService
|
||||
*/
|
||||
public function refund(string $out_trade_no, float $money, float $total, string $refund_no)
|
||||
{
|
||||
if ($this->type == PayDict::WECHATPAY) {
|
||||
$money = $money * 100;
|
||||
$total = $total * 100;
|
||||
}
|
||||
return $this->app('refund')->refund([
|
||||
'out_trade_no' => $out_trade_no,
|
||||
'out_trade_no' => $money,
|
||||
'out_trade_no' => $total,
|
||||
'out_trade_no' => $refund_no
|
||||
'money' => $money,
|
||||
'total' => $total,
|
||||
'refund_no' => $refund_no
|
||||
]);
|
||||
}
|
||||
|
||||
@ -202,7 +208,7 @@ class CorePayEventService extends BaseCoreService
|
||||
* 支付异步通知
|
||||
* @return void
|
||||
*/
|
||||
public function notify(string $action, Callable $callback)
|
||||
public function notify(string $action, callable $callback)
|
||||
{
|
||||
return $this->app()->notify($action, $callback);
|
||||
}
|
||||
|
||||
@ -111,11 +111,11 @@ class CorePayService extends BaseCoreService
|
||||
$money = $pay['money'];
|
||||
$body = $pay['body'];
|
||||
$trade_type = $pay['trade_type'];
|
||||
$allow_type = OrderTypeDict::getAllowPayType($trade_type);//当前支付允许使用的支付方式
|
||||
if(!in_array($type, $allow_type)){
|
||||
throw new PayException('PAYMENT_METHOD_NOT_SUPPORT');//业务不支持
|
||||
}
|
||||
if(!in_array($type, array_column((new CorePayChannelService())->getAllowPayTypeByCahnnel($site_id, $channel), 'key'))) throw new PayException('PAYMENT_METHOD_NOT_SCENE');//场景不支持
|
||||
// $allow_type = OrderTypeDict::getAllowPayType($trade_type);//当前支付允许使用的支付方式
|
||||
// if(!in_array($type, $allow_type)){
|
||||
// throw new PayException('PAYMENT_METHOD_NOT_SUPPORT');//业务不支持
|
||||
// }
|
||||
if(!in_array($type, array_column((new CorePayChannelService())->getAllowPayTypeByCahnnel($site_id, $channel, OrderTypeDict::getAllowPayType($trade_type)), 'key'))) throw new PayException('PAYMENT_METHOD_NOT_SCENE');//场景不支持
|
||||
$pay_result = $this->pay_event->init($site_id, $channel, $type)->pay($out_trade_no, $money, $body, $return_url, $quit_url, $buyer_id, $openid ?? '');
|
||||
//todo 特殊支付方式会直接返回支付状态,状态如果为已支付会直接支付
|
||||
if(!empty($pay_result['status']) && $pay_result['status'] == PayDict::STATUS_ED){
|
||||
@ -245,35 +245,6 @@ class CorePayService extends BaseCoreService
|
||||
|
||||
}
|
||||
return true;
|
||||
// $trade_type = $pay->trade_type;
|
||||
// $data = array(
|
||||
// 'pay_time' => time(),
|
||||
// 'status' => PayDict::STATUS_ED,
|
||||
// 'type' => $type,
|
||||
// 'trade_no' => $params['trade_no'] ?? '',
|
||||
// 'voucher' => $params['voucher'] ?? '',
|
||||
// 'mch_id' => $params['mch_id'] ?? '',
|
||||
// );
|
||||
// //允许修改的值
|
||||
// $allow_field = array('trade_no', 'voucher', 'status', 'pay_time', 'type', 'mch_id');
|
||||
// // 启动事务
|
||||
// Db::startTrans();
|
||||
// try {
|
||||
// $pay->allowField($allow_field)->save($data);
|
||||
//
|
||||
// $result = event('PaySuccess', ['out_trade_no' => $out_trade_no, 'trade_type' => $trade_type, 'site_id' => $site_id]);
|
||||
// if(!check_event_result($result)){
|
||||
// return false;
|
||||
// }
|
||||
// // 提交事务
|
||||
// Db::commit();
|
||||
// return true;
|
||||
// } catch (\Throwable $e) {
|
||||
// // 回滚事务
|
||||
// Db::rollback();
|
||||
// throw new PayException($e->getMessage());
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -284,7 +255,6 @@ class CorePayService extends BaseCoreService
|
||||
* @return null
|
||||
*/
|
||||
public function notify(int $site_id, string $channel, string $type, string $action){
|
||||
Log::write('pay__'.$site_id.'_'.$type.'_'.$action);
|
||||
$callback = function($out_trade_no, $params) use($site_id,$type, $action){
|
||||
try {
|
||||
switch($action){
|
||||
@ -297,40 +267,12 @@ class CorePayService extends BaseCoreService
|
||||
}
|
||||
|
||||
} catch (PayException $e) {
|
||||
Log::write('pay__'.$site_id.'_'.$type.'_'.$e->getMessage());
|
||||
return false;
|
||||
}
|
||||
};
|
||||
return $this->pay_event->init($site_id, $channel, $type)->init($site_id, $channel, $type)->notify($action, $callback);
|
||||
|
||||
// return true;
|
||||
return $this->pay_event->init($site_id, $channel, $type)->notify($action, $callback);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 支付取消
|
||||
* @param int $site_id
|
||||
* @param string $out_trade_no
|
||||
* @return void
|
||||
*/
|
||||
// public function cancel(int $site_id, string $out_trade_no){
|
||||
// $pay = $this->findPayInfoByOutTradeNo($site_id, $out_trade_no);
|
||||
// if($pay->isEmpty()) throw new PayException('ALIPAY_TRANSACTION_NO_NOT_EXIST');
|
||||
// if($pay['status'] == PayDict::STATUS_ED) throw new PayException('PAY_SUCCESS');//已支付不能取消
|
||||
// if($pay['status'] == PayDict::STATUS_CALCLE) throw new PayException('PAY_IS_REMOVE');//已取消不能重复取消
|
||||
// $type = $pay->type;
|
||||
// if($pay['status'] == PayDict::STATUS_ING){
|
||||
// //尝试关闭相关支付
|
||||
// $result = $this->pay_event->init($site_id, $pay->channel, $type)->close($out_trade_no);
|
||||
// if($result){
|
||||
//
|
||||
// }else{//根据返回值来进行下一步操作 支付已完成就将支付完成
|
||||
//
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// }
|
||||
|
||||
/**
|
||||
* 重置支付,更换新的交易流水号
|
||||
* @param int $site_id
|
||||
@ -374,7 +316,7 @@ class CorePayService extends BaseCoreService
|
||||
$pay_info = $this->pay_event->init($site_id, $pay->channel, $pay->type)->getOrder($out_trade_no);
|
||||
$type = $pay['type'];
|
||||
if(empty($pay_info))
|
||||
return $pay_info;
|
||||
return false;
|
||||
$status = $pay_info['status'];
|
||||
switch($status){
|
||||
case OnlinePayDict::SUCCESS://支付成功
|
||||
|
||||
@ -11,7 +11,6 @@
|
||||
|
||||
namespace app\service\core\pay;
|
||||
|
||||
use app\dict\pay\PayDict;
|
||||
use app\dict\pay\RefundDict;
|
||||
use app\model\pay\Refund;
|
||||
use core\base\BaseCoreService;
|
||||
@ -54,7 +53,7 @@ class CoreRefundService extends BaseCoreService
|
||||
'channel' => $pay->channel,//渠道
|
||||
'out_trade_no' => $out_trade_no,
|
||||
'refund_no' => $refund_no,
|
||||
'status' => 0,
|
||||
'status' => RefundDict::WAIT,
|
||||
'reason' => $reason
|
||||
);
|
||||
$this->model->create($data);
|
||||
@ -75,7 +74,7 @@ class CoreRefundService extends BaseCoreService
|
||||
$money = $refund->money;
|
||||
try{
|
||||
//判断成功的话,可以直接调用退款成功
|
||||
$pay_result = $this->pay_event->init($site_id, $refund->channel, $refund->type)->refund($out_trade_no, $money, $refund_no);
|
||||
$pay_result = $this->pay_event->init($site_id, $refund->channel, $refund->type)->refund($out_trade_no, $money, $money, $refund_no);
|
||||
$this->refundNotify($site_id, $out_trade_no, $refund->type, $pay_result);
|
||||
}catch (\Throwable $e) {
|
||||
throw new PayException($e->getMessage());
|
||||
@ -128,7 +127,7 @@ class CoreRefundService extends BaseCoreService
|
||||
$this->refundFail($site_id, [
|
||||
'out_trade_no' => $out_trade_no,
|
||||
'refund_no' => $refund_no,
|
||||
'fail_reason' => $params['fail_reason']
|
||||
'fail_reason' => $params['fail_reason'] ?? ''
|
||||
]);
|
||||
break;
|
||||
}
|
||||
@ -170,6 +169,7 @@ class CoreRefundService extends BaseCoreService
|
||||
'out_trade_no' => $out_trade_no,
|
||||
'refund_no' => $refund_no,
|
||||
]);
|
||||
break;
|
||||
case RefundDict::FAIL://退款失败
|
||||
$this->refundFail($site_id, [
|
||||
'out_trade_no' => $out_trade_no,
|
||||
@ -219,7 +219,7 @@ class CoreRefundService extends BaseCoreService
|
||||
['refund_no', '=', $refund_no]
|
||||
])->update([
|
||||
'status' => RefundDict::SUCCESS,
|
||||
'fail_reason' => $data['reason']
|
||||
'fail_reason' => $data['fail_reason']
|
||||
]);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -15,7 +15,6 @@ use app\dict\member\MemberAccountChangeTypeDict;
|
||||
use app\dict\member\MemberAccountTypeDict;
|
||||
use app\dict\pay\PayDict;
|
||||
use app\service\core\member\CoreMemberAccountService;
|
||||
use app\service\core\member\CoreMemberService;
|
||||
use app\service\core\pay\CorePayService;
|
||||
use core\base\BaseCoreService;
|
||||
|
||||
|
||||
@ -62,7 +62,7 @@ class CoreScanService extends BaseCoreService
|
||||
Log::write('scan_log_'.$key);
|
||||
if(!empty($cache)){
|
||||
$cache['is_scan'] = true;
|
||||
Cache::set($cache_name, event('scan', array_merge($cache, $data))[0]);
|
||||
Cache::set($cache_name, event('Scan', array_merge($cache, $data))[0]);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -13,10 +13,8 @@ namespace app\service\core\site;
|
||||
|
||||
use app\dict\site\SiteDict;
|
||||
use app\model\site\Site;
|
||||
use app\service\api\login\BaseApiService;
|
||||
use core\base\BaseCoreService;
|
||||
use core\exception\CommonException;
|
||||
use think\facade\Cache;
|
||||
|
||||
/**
|
||||
* 站点服务层
|
||||
|
||||
@ -13,7 +13,6 @@ namespace app\service\core\upload;
|
||||
|
||||
use app\dict\sys\FileDict;
|
||||
use app\service\core\sys\CoreAttachmentService;
|
||||
use core\exception\UploadFileException;
|
||||
|
||||
/**
|
||||
* 上传服务层
|
||||
|
||||
@ -15,10 +15,8 @@ namespace app\validate\article;
|
||||
use think\Validate;
|
||||
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2023-01-07
|
||||
* Time: 18:08
|
||||
* Class Article
|
||||
* @package app\validate\article
|
||||
*/
|
||||
class Article extends Validate
|
||||
{
|
||||
|
||||
@ -15,10 +15,9 @@ namespace app\validate\generator;
|
||||
use think\Validate;
|
||||
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2023-01-07
|
||||
* Time: 18:08
|
||||
* 代码生成器
|
||||
* Class Generator
|
||||
* @package app\validate\generator
|
||||
*/
|
||||
class Generator extends Validate
|
||||
{
|
||||
|
||||
@ -14,10 +14,8 @@ namespace app\validate\notice;
|
||||
use think\Validate;
|
||||
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2023-01-07
|
||||
* Time: 18:08
|
||||
* Class Menu
|
||||
* @package app\validate\notice
|
||||
*/
|
||||
class Menu extends Validate
|
||||
{
|
||||
|
||||
@ -15,10 +15,8 @@ use app\dict\pay\PayDict;
|
||||
use think\Validate;
|
||||
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2023-01-07
|
||||
* Time: 18:08
|
||||
* Class Pay
|
||||
* @package app\validate\pay
|
||||
*/
|
||||
class Pay extends Validate
|
||||
{
|
||||
|
||||
@ -15,10 +15,8 @@ use app\dict\pay\PayDict;
|
||||
use think\Validate;
|
||||
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2023-01-07
|
||||
* Time: 18:08
|
||||
* Class PayTemplate
|
||||
* @package app\validate\pay
|
||||
*/
|
||||
class PayTemplate extends Validate
|
||||
{
|
||||
|
||||
@ -16,10 +16,8 @@ use app\dict\sys\MethodDict;
|
||||
use think\Validate;
|
||||
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2023-01-07
|
||||
* Time: 18:08
|
||||
* Class Menu
|
||||
* @package app\validate\sys
|
||||
*/
|
||||
class Menu extends Validate
|
||||
{
|
||||
|
||||
@ -13,12 +13,9 @@ namespace app\validate\sys;
|
||||
use think\Validate;
|
||||
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2023-01-07
|
||||
* Time: 18:08
|
||||
* Class Role
|
||||
* @package app\validate\sys
|
||||
*/
|
||||
|
||||
class Role extends Validate
|
||||
{
|
||||
|
||||
|
||||
@ -13,12 +13,9 @@ namespace app\validate\sys;
|
||||
use think\Validate;
|
||||
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2023-01-07
|
||||
* Time: 18:08
|
||||
* Class User
|
||||
* @package app\validate\sys
|
||||
*/
|
||||
|
||||
class User extends Validate
|
||||
{
|
||||
|
||||
|
||||
@ -14,7 +14,6 @@ namespace core\dict;
|
||||
use core\loader\Storage;
|
||||
use think\facade\Cache;
|
||||
use think\facade\Db;
|
||||
use think\facade\Log;
|
||||
|
||||
/**
|
||||
* Class BaseAddon
|
||||
|
||||
@ -24,7 +24,7 @@ class Route extends BaseDict
|
||||
|
||||
foreach ($addons as $k => $v)
|
||||
{
|
||||
$route_path = $this->getAddonAppPath($v). DIRECTORY_SEPARATOR. $data['app_type']. DIRECTORY_SEPARATOR. "route.php";
|
||||
$route_path = $this->getAddonAppPath($v). DIRECTORY_SEPARATOR. $data['app_type']. DIRECTORY_SEPARATOR. "route". DIRECTORY_SEPARATOR. "route.php";
|
||||
if(is_file($route_path))
|
||||
{
|
||||
include $route_path;
|
||||
|
||||
@ -22,7 +22,7 @@ abstract class Loader extends Facade
|
||||
*/
|
||||
public function __construct($name = '', array $config = []){
|
||||
if(is_array($name)){
|
||||
$config = $config;
|
||||
$config = $name;
|
||||
$name = null;
|
||||
}
|
||||
if($name){
|
||||
|
||||
@ -1,10 +1,4 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2023-02-17
|
||||
* Time: 15:58
|
||||
*/
|
||||
|
||||
namespace core\oauth;
|
||||
|
||||
|
||||
@ -1,10 +1,4 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2023-02-17
|
||||
* Time: 15:58
|
||||
*/
|
||||
|
||||
namespace core\oauth;
|
||||
|
||||
|
||||
@ -1,10 +1,4 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2023-02-17
|
||||
* Time: 15:58
|
||||
*/
|
||||
|
||||
namespace core\oauth;
|
||||
|
||||
|
||||
@ -1,10 +1,4 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2023-02-17
|
||||
* Time: 15:58
|
||||
*/
|
||||
|
||||
namespace core\pay;
|
||||
|
||||
|
||||
@ -1,10 +1,4 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2023-02-17
|
||||
* Time: 15:58
|
||||
*/
|
||||
|
||||
namespace core\pay;
|
||||
|
||||
@ -134,7 +128,7 @@ abstract class BasePay extends Storage
|
||||
[
|
||||
'logger' => [
|
||||
'enable' => true,
|
||||
'file' => runtime_path() . 'paylog'.DIRECTORY_SEPARATOR.date('Ym').DIRECTORY_SEPARATOR.date('d').'.log',
|
||||
'file' => root_path('runtime') . 'paylog'.DIRECTORY_SEPARATOR.date('Ym').DIRECTORY_SEPARATOR.date('d').'.log',
|
||||
'level' => env('app_debug') ? 'debug' : 'info', // 建议生产环境等级调整为 info,开发环境为 debug
|
||||
'type' => 'single', // optional, 可选 daily.
|
||||
'max_file' => 30, // optional, 当 type 为 daily 时有效,默认 30 天
|
||||
|
||||
@ -1,10 +1,4 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2023-02-17
|
||||
* Time: 15:58
|
||||
*/
|
||||
|
||||
namespace core\pay;
|
||||
|
||||
@ -271,6 +265,7 @@ class Wechatpay extends BasePay
|
||||
],
|
||||
]);
|
||||
$result = $this->returnFormat($result);
|
||||
|
||||
$refund_status_array = [
|
||||
'SUCCESS' => RefundDict::SUCCESS,
|
||||
'CLOSED' => RefundDict::FAIL,
|
||||
|
||||
@ -11,7 +11,6 @@
|
||||
|
||||
namespace core\sms;
|
||||
|
||||
use core\loader\DriverConfig;
|
||||
use core\loader\Storage;
|
||||
|
||||
/**
|
||||
|
||||
@ -11,7 +11,6 @@
|
||||
|
||||
namespace core\template;
|
||||
|
||||
use core\loader\DriverConfig;
|
||||
use core\loader\Storage;
|
||||
|
||||
/**
|
||||
|
||||
@ -11,12 +11,7 @@
|
||||
|
||||
namespace core\template;
|
||||
|
||||
use AlibabaCloud\Client\AlibabaCloud;
|
||||
use app\service\core\weapp\CoreWeappService;
|
||||
use app\service\core\wechat\CoreWechatService;
|
||||
use core\exception\NoticeException;
|
||||
use core\sms\BaseSms;
|
||||
use Exception;
|
||||
|
||||
|
||||
class Weapp extends BaseTemplate
|
||||
|
||||
@ -11,11 +11,7 @@
|
||||
|
||||
namespace core\template;
|
||||
|
||||
use AlibabaCloud\Client\AlibabaCloud;
|
||||
use app\service\core\wechat\CoreWechatService;
|
||||
use core\exception\NoticeException;
|
||||
use core\sms\BaseSms;
|
||||
use Exception;
|
||||
|
||||
|
||||
class Wechat extends BaseTemplate
|
||||
|
||||
@ -10,9 +10,7 @@
|
||||
// +----------------------------------------------------------------------
|
||||
namespace core\upload;
|
||||
|
||||
use app\service\core\upload\CoreUploadConfigService;
|
||||
use core\exception\UploadFileException;
|
||||
use core\loader\DriverConfig;
|
||||
use core\loader\Storage;
|
||||
/**
|
||||
* Class BaseUpload
|
||||
|
||||
@ -11,7 +11,6 @@
|
||||
|
||||
namespace core\util;
|
||||
|
||||
use think\facade\Config;
|
||||
use think\facade\Queue as ThinkQueue;
|
||||
use think\facade\Log;
|
||||
|
||||
|
||||
@ -2,7 +2,6 @@
|
||||
|
||||
namespace core\util;
|
||||
|
||||
use core\exception\CommonException;
|
||||
|
||||
class Terminal
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user