mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-07-25 17:31:42 +08:00
1.修复验证码
2.增加第三方登录
This commit is contained in:
parent
cf5e50f402
commit
3c906cb6c7
@ -33,8 +33,10 @@ class CleanAuthTokenTask extends Task
|
|||||||
*/
|
*/
|
||||||
protected function findAccessTokens()
|
protected function findAccessTokens()
|
||||||
{
|
{
|
||||||
|
$expiryTime = strtotime('-30 days');
|
||||||
|
|
||||||
return AccessTokenModel::query()
|
return AccessTokenModel::query()
|
||||||
->where('expiry_time < :expiry_time:', ['expiry_time' => time()])
|
->where('expiry_time < :expiry_time:', ['expiry_time' => $expiryTime])
|
||||||
->execute();
|
->execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,8 +47,10 @@ class CleanAuthTokenTask extends Task
|
|||||||
*/
|
*/
|
||||||
protected function findRefreshTokens()
|
protected function findRefreshTokens()
|
||||||
{
|
{
|
||||||
|
$expiryTime = strtotime('-30 days');
|
||||||
|
|
||||||
return RefreshTokenModel::query()
|
return RefreshTokenModel::query()
|
||||||
->where('expiry_time < :expiry_time:', ['expiry_time' => time()])
|
->where('expiry_time < :expiry_time:', ['expiry_time' => $expiryTime])
|
||||||
->execute();
|
->execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
namespace App\Console\Tasks;
|
namespace App\Console\Tasks;
|
||||||
|
|
||||||
use App\Models\Trade as TradeModel;
|
use App\Models\Trade as TradeModel;
|
||||||
use App\Services\Payment\Alipay as AlipayService;
|
use App\Services\Pay\Alipay as AlipayService;
|
||||||
use App\Services\Payment\Wxpay as WxpayService;
|
use App\Services\Pay\Wxpay as WxpayService;
|
||||||
use Phalcon\Cli\Task;
|
use Phalcon\Cli\Task;
|
||||||
use Phalcon\Mvc\Model\Resultset;
|
use Phalcon\Mvc\Model\Resultset;
|
||||||
use Phalcon\Mvc\Model\ResultsetInterface;
|
use Phalcon\Mvc\Model\ResultsetInterface;
|
||||||
|
@ -11,8 +11,8 @@ use App\Repos\Order as OrderRepo;
|
|||||||
use App\Repos\Refund as RefundRepo;
|
use App\Repos\Refund as RefundRepo;
|
||||||
use App\Repos\Trade as TradeRepo;
|
use App\Repos\Trade as TradeRepo;
|
||||||
use App\Repos\User as UserRepo;
|
use App\Repos\User as UserRepo;
|
||||||
use App\Services\Payment\Alipay as AlipayService;
|
use App\Services\Pay\Alipay as AlipayService;
|
||||||
use App\Services\Payment\Wxpay as WxpayService;
|
use App\Services\Pay\Wxpay as WxpayService;
|
||||||
use App\Services\Smser\Refund as RefundSmser;
|
use App\Services\Smser\Refund as RefundSmser;
|
||||||
use Phalcon\Mvc\Model\Resultset;
|
use Phalcon\Mvc\Model\Resultset;
|
||||||
use Phalcon\Mvc\Model\ResultsetInterface;
|
use Phalcon\Mvc\Model\ResultsetInterface;
|
||||||
@ -140,7 +140,7 @@ class RefundTask extends Task
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!$response) {
|
if (!$response) {
|
||||||
throw new \RuntimeException('Payment Refund Failed');
|
throw new \RuntimeException('Pay Refund Failed');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,7 +39,6 @@ class SessionController extends \Phalcon\Mvc\Controller
|
|||||||
$captcha = $settingService->getSectionSettings('captcha');
|
$captcha = $settingService->getSectionSettings('captcha');
|
||||||
|
|
||||||
$this->view->pick('public/login');
|
$this->view->pick('public/login');
|
||||||
|
|
||||||
$this->view->setVar('captcha', $captcha);
|
$this->view->setVar('captcha', $captcha);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,9 +139,9 @@ class SettingController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Route("/payment", name="admin.setting.payment")
|
* @Route("/pay", name="admin.setting.pay")
|
||||||
*/
|
*/
|
||||||
public function paymentAction()
|
public function payAction()
|
||||||
{
|
{
|
||||||
$settingService = new SettingService();
|
$settingService = new SettingService();
|
||||||
|
|
||||||
@ -157,14 +157,43 @@ class SettingController extends Controller
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
$alipay = $settingService->getSectionSettings('payment.alipay');
|
$alipay = $settingService->getSectionSettings('pay.alipay');
|
||||||
$wxpay = $settingService->getSectionSettings('payment.wxpay');
|
$wxpay = $settingService->getSectionSettings('pay.wxpay');
|
||||||
|
|
||||||
$this->view->setVar('alipay', $alipay);
|
$this->view->setVar('alipay', $alipay);
|
||||||
$this->view->setVar('wxpay', $wxpay);
|
$this->view->setVar('wxpay', $wxpay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Route("/oauth", name="admin.setting.oauth")
|
||||||
|
*/
|
||||||
|
public function oauthAction()
|
||||||
|
{
|
||||||
|
$settingService = new SettingService();
|
||||||
|
|
||||||
|
if ($this->request->isPost()) {
|
||||||
|
|
||||||
|
$section = $this->request->getPost('section');
|
||||||
|
|
||||||
|
$data = $this->request->getPost();
|
||||||
|
|
||||||
|
$settingService->updateSectionSettings($section, $data);
|
||||||
|
|
||||||
|
return $this->jsonSuccess(['msg' => '更新配置成功']);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$qq = $settingService->getSectionSettings('oauth.qq');
|
||||||
|
$weibo = $settingService->getSectionSettings('oauth.weibo');
|
||||||
|
$weixin = $settingService->getSectionSettings('oauth.weixin');
|
||||||
|
|
||||||
|
$this->view->setVar('qq', $qq);
|
||||||
|
$this->view->setVar('weibo', $weibo);
|
||||||
|
$this->view->setVar('weixin', $weixin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Route("/smser", name="admin.setting.smser")
|
* @Route("/smser", name="admin.setting.smser")
|
||||||
*/
|
*/
|
||||||
|
@ -72,7 +72,6 @@ class TestController extends Controller
|
|||||||
$obs->stream_code = substr($pushUrl, $position + 1);
|
$obs->stream_code = substr($pushUrl, $position + 1);
|
||||||
|
|
||||||
$this->view->pick('setting/live_push_test');
|
$this->view->pick('setting/live_push_test');
|
||||||
|
|
||||||
$this->view->setVar('code_url', $codeUrl);
|
$this->view->setVar('code_url', $codeUrl);
|
||||||
$this->view->setVar('obs', $obs);
|
$this->view->setVar('obs', $obs);
|
||||||
}
|
}
|
||||||
@ -90,7 +89,6 @@ class TestController extends Controller
|
|||||||
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
|
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
|
||||||
|
|
||||||
$this->view->pick('public/live_player');
|
$this->view->pick('public/live_player');
|
||||||
|
|
||||||
$this->view->setVar('m3u8_pull_urls', $m3u8PullUrls);
|
$this->view->setVar('m3u8_pull_urls', $m3u8PullUrls);
|
||||||
$this->view->setVar('flv_pull_urls', $flvPullUrls);
|
$this->view->setVar('flv_pull_urls', $flvPullUrls);
|
||||||
}
|
}
|
||||||
@ -183,8 +181,7 @@ class TestController extends Controller
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->view->pick('setting/payment_alipay_test');
|
$this->view->pick('setting/pay_alipay_test');
|
||||||
|
|
||||||
$this->view->setVar('trade_sn', $trade->sn);
|
$this->view->setVar('trade_sn', $trade->sn);
|
||||||
$this->view->setVar('code_url', $codeUrl);
|
$this->view->setVar('code_url', $codeUrl);
|
||||||
}
|
}
|
||||||
@ -236,8 +233,7 @@ class TestController extends Controller
|
|||||||
$this->db->rollback();
|
$this->db->rollback();
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->view->pick('setting/payment_wxpay_test');
|
$this->view->pick('setting/pay_wxpay_test');
|
||||||
|
|
||||||
$this->view->setVar('trade_sn', $trade->sn);
|
$this->view->setVar('trade_sn', $trade->sn);
|
||||||
$this->view->setVar('code_url', $codeUrl);
|
$this->view->setVar('code_url', $codeUrl);
|
||||||
}
|
}
|
||||||
|
@ -34,9 +34,7 @@ class VodController extends Controller
|
|||||||
$playUrl = $this->request->getQuery('play_url');
|
$playUrl = $this->request->getQuery('play_url');
|
||||||
|
|
||||||
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
|
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
|
||||||
|
|
||||||
$this->view->pick('public/vod_player');
|
$this->view->pick('public/vod_player');
|
||||||
|
|
||||||
$this->view->setVar('chapter_id', $chapterId);
|
$this->view->setVar('chapter_id', $chapterId);
|
||||||
$this->view->setVar('play_url', urldecode($playUrl));
|
$this->view->setVar('play_url', urldecode($playUrl));
|
||||||
}
|
}
|
||||||
|
@ -6,9 +6,9 @@ use App\Models\Order as OrderModel;
|
|||||||
use App\Models\Trade as TradeModel;
|
use App\Models\Trade as TradeModel;
|
||||||
use App\Repos\Order as OrderRepo;
|
use App\Repos\Order as OrderRepo;
|
||||||
use App\Repos\Trade as TradeRepo;
|
use App\Repos\Trade as TradeRepo;
|
||||||
use App\Services\Payment\Alipay as AlipayService;
|
use App\Services\Pay\Alipay as AlipayService;
|
||||||
|
|
||||||
class AlipayTest extends PaymentTest
|
class AlipayTest extends PayTest
|
||||||
{
|
{
|
||||||
|
|
||||||
protected $channel = TradeModel::CHANNEL_ALIPAY;
|
protected $channel = TradeModel::CHANNEL_ALIPAY;
|
||||||
|
@ -679,10 +679,16 @@ class AuthNode extends Service
|
|||||||
'id' => '5-1-9',
|
'id' => '5-1-9',
|
||||||
'label' => '支付设置',
|
'label' => '支付设置',
|
||||||
'type' => 'menu',
|
'type' => 'menu',
|
||||||
'route' => 'admin.setting.payment',
|
'route' => 'admin.setting.pay',
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'id' => '5-1-10',
|
'id' => '5-1-10',
|
||||||
|
'label' => '登录设置',
|
||||||
|
'type' => 'menu',
|
||||||
|
'route' => 'admin.setting.oauth',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => '5-1-11',
|
||||||
'label' => '会员设置',
|
'label' => '会员设置',
|
||||||
'type' => 'menu',
|
'type' => 'menu',
|
||||||
'route' => 'admin.setting.vip',
|
'route' => 'admin.setting.vip',
|
||||||
|
@ -6,7 +6,7 @@ use App\Models\Order as OrderModel;
|
|||||||
use App\Models\Trade as TradeModel;
|
use App\Models\Trade as TradeModel;
|
||||||
use App\Services\Auth\Admin as AdminAuth;
|
use App\Services\Auth\Admin as AdminAuth;
|
||||||
|
|
||||||
abstract class PaymentTest extends Service
|
abstract class PayTest extends Service
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
@ -3,9 +3,9 @@
|
|||||||
namespace App\Http\Admin\Services;
|
namespace App\Http\Admin\Services;
|
||||||
|
|
||||||
use App\Models\Trade as TradeModel;
|
use App\Models\Trade as TradeModel;
|
||||||
use App\Services\Payment\Wxpay as WxpayService;
|
use App\Services\Pay\Wxpay as WxpayService;
|
||||||
|
|
||||||
class WxpayTest extends PaymentTest
|
class WxpayTest extends PayTest
|
||||||
{
|
{
|
||||||
|
|
||||||
protected $channel = TradeModel::CHANNEL_WXPAY;
|
protected $channel = TradeModel::CHANNEL_WXPAY;
|
||||||
|
@ -57,12 +57,14 @@
|
|||||||
$('#captcha-btn')[0],
|
$('#captcha-btn')[0],
|
||||||
$('#captcha-btn').attr('app-id'),
|
$('#captcha-btn').attr('app-id'),
|
||||||
function (res) {
|
function (res) {
|
||||||
|
if (res.ret === 0) {
|
||||||
$('input[name=ticket]').val(res.ticket);
|
$('input[name=ticket]').val(res.ticket);
|
||||||
$('input[name=rand]').val(res.randstr);
|
$('input[name=rand]').val(res.randstr);
|
||||||
$('#captcha-btn').remove();
|
$('#captcha-btn').remove();
|
||||||
$('#submit-btn').removeAttr('disabled');
|
$('#submit-btn').removeAttr('disabled');
|
||||||
$('#verify-tips').removeClass('layui-hide');
|
$('#verify-tips').removeClass('layui-hide');
|
||||||
}
|
}
|
||||||
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -37,16 +37,16 @@
|
|||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
||||||
<div class="layui-input-inline" style="width:200px;">
|
<div class="layui-input-inline" style="width:200px;">
|
||||||
<span id="captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid">前台验证</span>
|
<span id="front-verify-btn" class="layui-btn layui-btn-primary layui-btn-fluid" app-id="{{ captcha.app_id }}">前台验证</span>
|
||||||
<span id="frontend-verify-tips" class="kg-btn-verify layui-btn layui-btn-primary layui-btn-fluid layui-btn-disabled layui-hide"><i class="layui-icon layui-icon-ok"></i>前台验证成功</span>
|
<span id="front-verify-tips" class="kg-btn-verify layui-btn layui-btn-primary layui-btn-fluid layui-btn-disabled layui-hide"><i class="layui-icon layui-icon-ok"></i>前台验证成功</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
||||||
<div class="layui-input-inline" style="width:200px;">
|
<div class="layui-input-inline" style="width:200px;">
|
||||||
<span id="verify-submit-btn" class="layui-btn layui-btn-primary layui-btn-fluid" disabled="true" lay-submit="true" lay-filter="backend-verify">后台验证</span>
|
<span id="back-verify-btn" class="layui-btn layui-btn-primary layui-btn-fluid" disabled="true" lay-submit="true" lay-filter="back-verify">后台验证</span>
|
||||||
<span id="backend-verify-tips" class="kg-btn-verify layui-btn layui-btn-primary layui-btn-fluid layui-btn-disabled layui-hide"><i class="layui-icon layui-icon-ok"></i>后台验证成功</span>
|
<span id="back-verify-tips" class="kg-btn-verify layui-btn layui-btn-primary layui-btn-fluid layui-btn-disabled layui-hide"><i class="layui-icon layui-icon-ok"></i>后台验证成功</span>
|
||||||
<input type="hidden" name="ticket">
|
<input type="hidden" name="ticket">
|
||||||
<input type="hidden" name="rand">
|
<input type="hidden" name="rand">
|
||||||
</div>
|
</div>
|
||||||
@ -65,25 +65,29 @@
|
|||||||
var layer = layui.layer;
|
var layer = layui.layer;
|
||||||
|
|
||||||
var captcha = new TencentCaptcha(
|
var captcha = new TencentCaptcha(
|
||||||
$('#captcha-btn')[0],
|
$('#front-verify-btn')[0],
|
||||||
$('input[name=app_id]').val(),
|
$('#front-verify-btn').attr('app-id'),
|
||||||
function (res) {
|
function (res) {
|
||||||
|
if (res.ret === 0) {
|
||||||
$('input[name=ticket]').val(res.ticket);
|
$('input[name=ticket]').val(res.ticket);
|
||||||
$('input[name=rand]').val(res.randstr);
|
$('input[name=rand]').val(res.randstr);
|
||||||
$('#captcha-btn').remove();
|
$('#front-verify-btn').remove();
|
||||||
$('#verify-submit-btn').removeAttr('disabled');
|
$('#back-verify-btn').removeAttr('disabled');
|
||||||
$('#frontend-verify-tips').removeClass('layui-hide');
|
$('#front-verify-tips').removeClass('layui-hide');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
form.on('submit(backend-verify)', function (data) {
|
form.on('submit(back-verify)', function (data) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
url: data.form.action,
|
url: data.form.action,
|
||||||
data: data.field,
|
data: data.field,
|
||||||
success: function (res) {
|
success: function (res) {
|
||||||
$('#verify-submit-btn').remove();
|
if (res.code === 0) {
|
||||||
$('#backend-verify-tips').removeClass('layui-hide');
|
$('#back-verify-btn').remove();
|
||||||
|
$('#back-verify-tips').removeClass('layui-hide');
|
||||||
|
}
|
||||||
layer.msg(res.msg, {icon: 1});
|
layer.msg(res.msg, {icon: 1});
|
||||||
},
|
},
|
||||||
error: function (xhr) {
|
error: function (xhr) {
|
||||||
|
18
app/Http/Admin/Views/setting/oauth.volt
Normal file
18
app/Http/Admin/Views/setting/oauth.volt
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<div class="layui-tab layui-tab-brief">
|
||||||
|
<ul class="layui-tab-title kg-tab-title">
|
||||||
|
<li class="layui-this">QQ登录</li>
|
||||||
|
<li>微博登录</li>
|
||||||
|
<li>微信登录</li>
|
||||||
|
</ul>
|
||||||
|
<div class="layui-tab-content">
|
||||||
|
<div class="layui-tab-item layui-show">
|
||||||
|
{{ partial('setting/oauth_qq') }}
|
||||||
|
</div>
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
{{ partial('setting/oauth_weibo') }}
|
||||||
|
</div>
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
{{ partial('setting/oauth_weixin') }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
67
app/Http/Admin/Views/setting/oauth_qq.volt
Normal file
67
app/Http/Admin/Views/setting/oauth_qq.volt
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.oauth'}) }}">
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">开启登录</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="radio" name="enabled" value="1" title="是" {% if qq.enabled == "1" %}checked{% endif %}>
|
||||||
|
<input type="radio" name="enabled" value="0" title="否" {% if qq.enabled == "0" %}checked{% endif %}>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">App ID</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="app_id" value="{{ qq.app_id }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">App Key</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="app_secret" value="{{ qq.app_secret }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">Redirect Uri</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="redirect_uri" value="{{ qq.redirect_uri }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
|
<input type="hidden" name="section" value="oauth.qq">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<form class="layui-form kg-form">
|
||||||
|
|
||||||
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
|
<legend>登录测试</legend>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<span id="qq-login-btn" class="layui-btn layui-btn-primary layui-btn-fluid">QQ登录</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
layui.use(['jquery', 'layer'], function () {
|
||||||
|
|
||||||
|
var $ = layui.jquery;
|
||||||
|
var layer = layui.layer;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
67
app/Http/Admin/Views/setting/oauth_weibo.volt
Normal file
67
app/Http/Admin/Views/setting/oauth_weibo.volt
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.oauth'}) }}">
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">开启登录</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="radio" name="enabled" value="1" title="是" {% if weibo.enabled == "1" %}checked{% endif %}>
|
||||||
|
<input type="radio" name="enabled" value="0" title="否" {% if weibo.enabled == "0" %}checked{% endif %}>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">App ID</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="app_id" value="{{ weibo.app_id }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">App Key</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="app_secret" value="{{ weibo.app_secret }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">Redirect Uri</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="redirect_uri" value="{{ weibo.redirect_uri }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
|
<input type="hidden" name="section" value="oauth.weibo">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<form class="layui-form kg-form">
|
||||||
|
|
||||||
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
|
<legend>登录测试</legend>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<span id="qq-login-btn" class="layui-btn layui-btn-primary layui-btn-fluid">微博登录</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
layui.use(['jquery', 'layer'], function () {
|
||||||
|
|
||||||
|
var $ = layui.jquery;
|
||||||
|
var layer = layui.layer;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
67
app/Http/Admin/Views/setting/oauth_weixin.volt
Normal file
67
app/Http/Admin/Views/setting/oauth_weixin.volt
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.oauth'}) }}">
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">开启登录</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="radio" name="enabled" value="1" title="是" {% if weixin.enabled == "1" %}checked{% endif %}>
|
||||||
|
<input type="radio" name="enabled" value="0" title="否" {% if weixin.enabled == "0" %}checked{% endif %}>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">App ID</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="app_id" value="{{ weixin.app_id }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">App Secret</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="app_secret" value="{{ weixin.app_secret }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">Redirect Uri</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="redirect_uri" value="{{ weixin.redirect_uri }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
|
<input type="hidden" name="section" value="oauth.weixin">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<form class="layui-form kg-form">
|
||||||
|
|
||||||
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
|
<legend>登录测试</legend>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<span id="qq-login-btn" class="layui-btn layui-btn-primary layui-btn-fluid">微信登录</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
layui.use(['jquery', 'layer'], function () {
|
||||||
|
|
||||||
|
var $ = layui.jquery;
|
||||||
|
var layer = layui.layer;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
@ -5,10 +5,10 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<div class="layui-tab-content">
|
<div class="layui-tab-content">
|
||||||
<div class="layui-tab-item layui-show">
|
<div class="layui-tab-item layui-show">
|
||||||
{{ partial('setting/payment_alipay') }}
|
{{ partial('setting/pay_alipay') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-tab-item">
|
<div class="layui-tab-item">
|
||||||
{{ partial('setting/payment_wxpay') }}
|
{{ partial('setting/pay_wxpay') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
@ -1,4 +1,4 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.payment'}) }}">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.pay'}) }}">
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">开启支付</label>
|
<label class="layui-form-label">开启支付</label>
|
||||||
@ -25,16 +25,14 @@
|
|||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">Private Key</label>
|
<label class="layui-form-label">Private Key</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<textarea class="layui-textarea" name="private_key"
|
<textarea class="layui-textarea" name="private_key" lay-verify="required">{{ alipay.private_key }}</textarea>
|
||||||
lay-verify="required">{{ alipay.private_key }}</textarea>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">Notify Url</label>
|
<label class="layui-form-label">Notify Url</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="notify_url" value="{{ alipay.notify_url }}"
|
<input class="layui-input" type="text" name="notify_url" value="{{ alipay.notify_url }}" lay-verify="required">
|
||||||
lay-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -43,7 +41,7 @@
|
|||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<input type="hidden" name="section" value="payment.alipay">
|
<input type="hidden" name="section" value="pay.alipay">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.payment'}) }}">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.pay'}) }}">
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">开启支付</label>
|
<label class="layui-form-label">开启支付</label>
|
||||||
@ -41,7 +41,7 @@
|
|||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<input type="hidden" name="section" value="payment.wxpay">
|
<input type="hidden" name="section" value="pay.wxpay">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
63
app/Http/Web/Controllers/OAuthController.php
Normal file
63
app/Http/Web/Controllers/OAuthController.php
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Web\Controllers;
|
||||||
|
|
||||||
|
use App\Traits\Response as ResponseTrait;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @RoutePrefix("/oauth")
|
||||||
|
*/
|
||||||
|
class OAuthController extends \Phalcon\Mvc\Controller
|
||||||
|
{
|
||||||
|
|
||||||
|
use ResponseTrait;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Get("/qq/connect", name="web.oauth.qq.connect")
|
||||||
|
*/
|
||||||
|
public function qqConnectAction()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Get("/qq/callback", name="web.oauth.qq.callback")
|
||||||
|
*/
|
||||||
|
public function qqCallbackAction()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Get("/weibo/connect", name="web.oauth.weibo.connect")
|
||||||
|
*/
|
||||||
|
public function weiboConnectAction()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Get("/weibo/callback", name="web.oauth.weibo.callback")
|
||||||
|
*/
|
||||||
|
public function weiboCallbackAction()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Get("/weixin/connect", name="web.oauth.weixin.connect")
|
||||||
|
*/
|
||||||
|
public function weixinConnectAction()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Get("/weixin/callback", name="web.oauth.weixin.callback")
|
||||||
|
*/
|
||||||
|
public function weixinCallbackAction()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -2,17 +2,20 @@
|
|||||||
|
|
||||||
namespace App\Http\Web\Controllers;
|
namespace App\Http\Web\Controllers;
|
||||||
|
|
||||||
use App\Services\Payment\Alipay as AlipayService;
|
use App\Services\Pay\Alipay as AlipayService;
|
||||||
use App\Services\Payment\Wxpay as WxpayService;
|
use App\Services\Pay\Wxpay as WxpayService;
|
||||||
use App\Traits\Response as ResponseTrait;
|
use App\Traits\Response as ResponseTrait;
|
||||||
|
|
||||||
class PaymentController extends \Phalcon\Mvc\Controller
|
/**
|
||||||
|
* @RoutePrefix("/pay")
|
||||||
|
*/
|
||||||
|
class PayController extends \Phalcon\Mvc\Controller
|
||||||
{
|
{
|
||||||
|
|
||||||
use ResponseTrait;
|
use ResponseTrait;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Post("/alipay/notify", name="web.alipay.notify")
|
* @Post("/alipay/notify", name="web.pay.alipay.notify")
|
||||||
*/
|
*/
|
||||||
public function alipayNotifyAction()
|
public function alipayNotifyAction()
|
||||||
{
|
{
|
||||||
@ -28,7 +31,7 @@ class PaymentController extends \Phalcon\Mvc\Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Post("/wxpay/notify", name="web.wxpay.notify")
|
* @Post("/wxpay/notify", name="web.pay.wxpay.notify")
|
||||||
*/
|
*/
|
||||||
public function wxpayNotifyAction()
|
public function wxpayNotifyAction()
|
||||||
{
|
{
|
||||||
@ -44,7 +47,7 @@ class PaymentController extends \Phalcon\Mvc\Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Post("/alipay/status", name="web.alipay.status")
|
* @Post("/alipay/status", name="web.pay.alipay.status")
|
||||||
*/
|
*/
|
||||||
public function alipayStatusAction()
|
public function alipayStatusAction()
|
||||||
{
|
{
|
||||||
@ -58,7 +61,7 @@ class PaymentController extends \Phalcon\Mvc\Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Post("/wxpay/status", name="web.wxpay.status")
|
* @Post("/wxpay/status", name="web.pay.wxpay.status")
|
||||||
*/
|
*/
|
||||||
public function wxpayStatusAction()
|
public function wxpayStatusAction()
|
||||||
{
|
{
|
@ -9,15 +9,15 @@ abstract class OAuth
|
|||||||
|
|
||||||
protected $appId;
|
protected $appId;
|
||||||
protected $appSecret;
|
protected $appSecret;
|
||||||
protected $appCallback;
|
protected $redirectUri;
|
||||||
protected $accessToken;
|
protected $accessToken;
|
||||||
protected $openId;
|
protected $openId;
|
||||||
|
|
||||||
public function __construct($appId, $appSecret, $appCallback)
|
public function __construct($appId, $appSecret, $redirectUri)
|
||||||
{
|
{
|
||||||
$this->appId = $appId;
|
$this->appId = $appId;
|
||||||
$this->appSecret = $appSecret;
|
$this->appSecret = $appSecret;
|
||||||
$this->appCallback = $appCallback;
|
$this->redirectUri = $redirectUri;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function httpGet($uri, $params = [], $headers = [])
|
public function httpGet($uri, $params = [], $headers = [])
|
||||||
|
@ -16,7 +16,7 @@ class QQ extends OAuth
|
|||||||
{
|
{
|
||||||
$params = [
|
$params = [
|
||||||
'client_id' => $this->appId,
|
'client_id' => $this->appId,
|
||||||
'redirect_uri' => $this->appCallback,
|
'redirect_uri' => $this->redirectUri,
|
||||||
'response_type' => 'code',
|
'response_type' => 'code',
|
||||||
'scope' => '',
|
'scope' => '',
|
||||||
];
|
];
|
||||||
@ -30,7 +30,7 @@ class QQ extends OAuth
|
|||||||
'code' => $code,
|
'code' => $code,
|
||||||
'client_id' => $this->appId,
|
'client_id' => $this->appId,
|
||||||
'client_secret' => $this->appSecret,
|
'client_secret' => $this->appSecret,
|
||||||
'redirect_uri' => $this->appCallback,
|
'redirect_uri' => $this->redirectUri,
|
||||||
'grant_type' => 'authorization_code',
|
'grant_type' => 'authorization_code',
|
||||||
'state' => 'ok',
|
'state' => 'ok',
|
||||||
];
|
];
|
||||||
|
@ -15,7 +15,7 @@ class WeiBo extends OAuth
|
|||||||
{
|
{
|
||||||
$params = [
|
$params = [
|
||||||
'client_id' => $this->appId,
|
'client_id' => $this->appId,
|
||||||
'redirect_uri' => $this->appCallback,
|
'redirect_uri' => $this->redirectUri,
|
||||||
'response_type' => 'code',
|
'response_type' => 'code',
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ class WeiBo extends OAuth
|
|||||||
'code' => $code,
|
'code' => $code,
|
||||||
'client_id' => $this->appId,
|
'client_id' => $this->appId,
|
||||||
'client_secret' => $this->appSecret,
|
'client_secret' => $this->appSecret,
|
||||||
'redirect_uri' => $this->appCallback,
|
'redirect_uri' => $this->redirectUri,
|
||||||
'grant_type' => 'authorization_code',
|
'grant_type' => 'authorization_code',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ class WeiXin extends OAuth
|
|||||||
{
|
{
|
||||||
$params = [
|
$params = [
|
||||||
'appid' => $this->appId,
|
'appid' => $this->appId,
|
||||||
'redirect_uri' => $this->appCallback,
|
'redirect_uri' => $this->redirectUri,
|
||||||
'response_type' => 'code',
|
'response_type' => 'code',
|
||||||
'scope' => 'snsapi_login',
|
'scope' => 'snsapi_login',
|
||||||
'state' => 'dev',
|
'state' => 'dev',
|
||||||
|
@ -8,7 +8,7 @@ use App\Models\Trade as TradeModel;
|
|||||||
use App\Repos\Order as OrderRepo;
|
use App\Repos\Order as OrderRepo;
|
||||||
use Phalcon\Events\Event;
|
use Phalcon\Events\Event;
|
||||||
|
|
||||||
class Payment extends Listener
|
class Pay extends Listener
|
||||||
{
|
{
|
||||||
|
|
||||||
protected $logger;
|
protected $logger;
|
@ -111,10 +111,10 @@ class ChapterInfo extends Service
|
|||||||
'summary' => $chapter->summary,
|
'summary' => $chapter->summary,
|
||||||
'course' => $course,
|
'course' => $course,
|
||||||
'play_urls' => $playUrls,
|
'play_urls' => $playUrls,
|
||||||
|
'user_count' => $chapter->user_count,
|
||||||
'agree_count' => $chapter->agree_count,
|
'agree_count' => $chapter->agree_count,
|
||||||
'oppose_count' => $chapter->oppose_count,
|
'oppose_count' => $chapter->oppose_count,
|
||||||
'comment_count' => $chapter->comment_count,
|
'comment_count' => $chapter->comment_count,
|
||||||
'user_count' => $chapter->user_count,
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,10 +146,10 @@ class ChapterInfo extends Service
|
|||||||
'play_urls' => $playUrls,
|
'play_urls' => $playUrls,
|
||||||
'start_time' => $live->start_time,
|
'start_time' => $live->start_time,
|
||||||
'end_time' => $live->end_time,
|
'end_time' => $live->end_time,
|
||||||
|
'user_count' => $chapter->user_count,
|
||||||
'agree_count' => $chapter->agree_count,
|
'agree_count' => $chapter->agree_count,
|
||||||
'oppose_count' => $chapter->oppose_count,
|
'oppose_count' => $chapter->oppose_count,
|
||||||
'comment_count' => $chapter->comment_count,
|
'comment_count' => $chapter->comment_count,
|
||||||
'user_count' => $chapter->user_count,
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,10 +167,10 @@ class ChapterInfo extends Service
|
|||||||
'summary' => $chapter->summary,
|
'summary' => $chapter->summary,
|
||||||
'course' => $course,
|
'course' => $course,
|
||||||
'content' => $read->content,
|
'content' => $read->content,
|
||||||
|
'user_count' => $chapter->user_count,
|
||||||
'agree_count' => $chapter->agree_count,
|
'agree_count' => $chapter->agree_count,
|
||||||
'oppose_count' => $chapter->oppose_count,
|
'oppose_count' => $chapter->oppose_count,
|
||||||
'comment_count' => $chapter->comment_count,
|
'comment_count' => $chapter->comment_count,
|
||||||
'user_count' => $chapter->user_count,
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
41
app/Services/Frontend/My/UserInfo.php
Normal file
41
app/Services/Frontend/My/UserInfo.php
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Services\Frontend\My;
|
||||||
|
|
||||||
|
use App\Models\User as UserModel;
|
||||||
|
use App\Services\Frontend\Service;
|
||||||
|
|
||||||
|
class UserInfo extends Service
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getUser()
|
||||||
|
{
|
||||||
|
$user = $this->getLoginUser();
|
||||||
|
|
||||||
|
return $this->handleUser($user);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function handleUser(UserModel $user)
|
||||||
|
{
|
||||||
|
$user->avatar = kg_ci_img_url($user->avatar);
|
||||||
|
|
||||||
|
return [
|
||||||
|
'id' => $user->id,
|
||||||
|
'name' => $user->name,
|
||||||
|
'avatar' => $user->avatar,
|
||||||
|
'title' => $user->title,
|
||||||
|
'about' => $user->about,
|
||||||
|
'location' => $user->location,
|
||||||
|
'gender' => $user->gender,
|
||||||
|
'vip' => $user->vip,
|
||||||
|
'locked' => $user->locked,
|
||||||
|
'vip_expiry_time' => $user->vip_expiry_time,
|
||||||
|
'lock_expiry_time' => $user->lock_expiry_time,
|
||||||
|
'edu_role' => $user->edu_role,
|
||||||
|
'admin_role' => $user->admin_role,
|
||||||
|
'notice_count' => $user->notice_count,
|
||||||
|
'msg_count' => $user->msg_count,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -5,8 +5,8 @@ namespace App\Services\Frontend\Order;
|
|||||||
use App\Models\Trade as TradeModel;
|
use App\Models\Trade as TradeModel;
|
||||||
use App\Services\Frontend\OrderTrait;
|
use App\Services\Frontend\OrderTrait;
|
||||||
use App\Services\Frontend\Service;
|
use App\Services\Frontend\Service;
|
||||||
use App\Services\Payment\Alipay as AlipayService;
|
use App\Services\Pay\Alipay as AlipayService;
|
||||||
use App\Services\Payment\Wxpay as WxPayService;
|
use App\Services\Pay\Wxpay as WxPayService;
|
||||||
use App\Validators\Trade as TradeValidator;
|
use App\Validators\Trade as TradeValidator;
|
||||||
|
|
||||||
class OrderTrade extends Service
|
class OrderTrade extends Service
|
||||||
|
@ -18,15 +18,9 @@ class TeacherInfo extends Service
|
|||||||
return $this->handleUser($user);
|
return $this->handleUser($user);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
protected function handleUser(UserModel $user)
|
||||||
* @param UserModel $user
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function handleUser($user)
|
|
||||||
{
|
{
|
||||||
$user->avatar = kg_ci_img_url($user->avatar);
|
$user->avatar = kg_ci_img_url($user->avatar);
|
||||||
$user->vip = $user->vip == 1;
|
|
||||||
$user->locked = $user->locked == 1;
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'id' => $user->id,
|
'id' => $user->id,
|
||||||
@ -38,12 +32,6 @@ class TeacherInfo extends Service
|
|||||||
'gender' => $user->gender,
|
'gender' => $user->gender,
|
||||||
'vip' => $user->vip,
|
'vip' => $user->vip,
|
||||||
'locked' => $user->locked,
|
'locked' => $user->locked,
|
||||||
'vip_expiry_time' => $user->vip_expiry_time,
|
|
||||||
'lock_expiry_time' => $user->lock_expiry_time,
|
|
||||||
'edu_role' => $user->edu_role,
|
|
||||||
'admin_role' => $user->admin_role,
|
|
||||||
'notice_count' => $user->notice_count,
|
|
||||||
'msg_count' => $user->msg_count,
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,15 +18,9 @@ class UserInfo extends Service
|
|||||||
return $this->handleUser($user);
|
return $this->handleUser($user);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
protected function handleUser(UserModel $user)
|
||||||
* @param UserModel $user
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function handleUser($user)
|
|
||||||
{
|
{
|
||||||
$user->avatar = kg_ci_img_url($user->avatar);
|
$user->avatar = kg_ci_img_url($user->avatar);
|
||||||
$user->vip = $user->vip == 1;
|
|
||||||
$user->locked = $user->locked == 1;
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'id' => $user->id,
|
'id' => $user->id,
|
||||||
@ -38,12 +32,6 @@ class UserInfo extends Service
|
|||||||
'gender' => $user->gender,
|
'gender' => $user->gender,
|
||||||
'vip' => $user->vip,
|
'vip' => $user->vip,
|
||||||
'locked' => $user->locked,
|
'locked' => $user->locked,
|
||||||
'vip_expiry_time' => $user->vip_expiry_time,
|
|
||||||
'lock_expiry_time' => $user->lock_expiry_time,
|
|
||||||
'edu_role' => $user->edu_role,
|
|
||||||
'admin_role' => $user->admin_role,
|
|
||||||
'notice_count' => $user->notice_count,
|
|
||||||
'msg_count' => $user->msg_count,
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ use App\Models\Refund as RefundModel;
|
|||||||
use App\Models\Trade as TradeModel;
|
use App\Models\Trade as TradeModel;
|
||||||
use App\Repos\Trade as TradeRepo;
|
use App\Repos\Trade as TradeRepo;
|
||||||
|
|
||||||
abstract class Payment extends Service
|
abstract class Pay extends Service
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
@ -1,16 +1,16 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Services\Payment;
|
namespace App\Services\Pay;
|
||||||
|
|
||||||
use App\Models\Refund as RefundModel;
|
use App\Models\Refund as RefundModel;
|
||||||
use App\Models\Trade as TradeModel;
|
use App\Models\Trade as TradeModel;
|
||||||
use App\Repos\Trade as TradeRepo;
|
use App\Repos\Trade as TradeRepo;
|
||||||
use App\Services\Payment;
|
use App\Services\Pay as AppPay;
|
||||||
use Yansongda\Pay\Log;
|
use Yansongda\Pay\Log;
|
||||||
use Yansongda\Pay\Pay;
|
use Yansongda\Pay\Pay;
|
||||||
use Yansongda\Supports\Collection;
|
use Yansongda\Supports\Collection;
|
||||||
|
|
||||||
class Alipay extends Payment
|
class Alipay extends AppPay
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -25,8 +25,7 @@ class Alipay extends Payment
|
|||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->settings = $this->getSectionSettings('payment.alipay');
|
$this->settings = $this->getSectionSettings('pay.alipay');
|
||||||
|
|
||||||
$this->gateway = $this->getGateway();
|
$this->gateway = $this->getGateway();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,7 +107,7 @@ class Alipay extends Payment
|
|||||||
|
|
||||||
$trade->channel_sn = $data->trade_no;
|
$trade->channel_sn = $data->trade_no;
|
||||||
|
|
||||||
$this->eventsManager->fire('payment:afterPay', $this, $trade);
|
$this->eventsManager->fire('pay:afterPay', $this, $trade);
|
||||||
|
|
||||||
return $this->gateway->success();
|
return $this->gateway->success();
|
||||||
}
|
}
|
@ -1,17 +1,17 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Services\Payment;
|
namespace App\Services\Pay;
|
||||||
|
|
||||||
use App\Models\Refund as RefundModel;
|
use App\Models\Refund as RefundModel;
|
||||||
use App\Models\Trade as TradeModel;
|
use App\Models\Trade as TradeModel;
|
||||||
use App\Repos\Trade as TradeRepo;
|
use App\Repos\Trade as TradeRepo;
|
||||||
use App\Services\Payment;
|
use App\Services\Pay as AppPay;
|
||||||
use Yansongda\Pay\Gateways\Wechat;
|
use Yansongda\Pay\Gateways\Wechat;
|
||||||
use Yansongda\Pay\Log;
|
use Yansongda\Pay\Log;
|
||||||
use Yansongda\Pay\Pay;
|
use Yansongda\Pay\Pay;
|
||||||
use Yansongda\Supports\Collection;
|
use Yansongda\Supports\Collection;
|
||||||
|
|
||||||
class Wxpay extends Payment
|
class Wxpay extends AppPay
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -26,8 +26,7 @@ class Wxpay extends Payment
|
|||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->settings = $this->getSectionSettings('payment.wxpay');
|
$this->settings = $this->getSectionSettings('pay.wxpay');
|
||||||
|
|
||||||
$this->gateway = $this->getGateway();
|
$this->gateway = $this->getGateway();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,7 +106,7 @@ class Wxpay extends Payment
|
|||||||
|
|
||||||
$trade->channel_sn = $data->transaction_id;
|
$trade->channel_sn = $data->transaction_id;
|
||||||
|
|
||||||
$this->eventsManager->fire('payment:afterPay', $this, $trade);
|
$this->eventsManager->fire('pay:afterPay', $this, $trade);
|
||||||
|
|
||||||
return $this->gateway->success();
|
return $this->gateway->success();
|
||||||
}
|
}
|
@ -1,11 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Listeners\Payment;
|
use App\Listeners\Pay;
|
||||||
use App\Listeners\Profiler;
|
use App\Listeners\Profiler;
|
||||||
use App\Listeners\UserDailyCounter;
|
use App\Listeners\UserDailyCounter;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'db' => Profiler::class,
|
'db' => Profiler::class,
|
||||||
'payment' => Payment::class,
|
'pay' => Pay::class,
|
||||||
'userDailyCounter' => UserDailyCounter::class,
|
'userDailyCounter' => UserDailyCounter::class,
|
||||||
];
|
];
|
@ -1,3 +1,7 @@
|
|||||||
|
.layui-badge, .layui-badge-rim, .layui-badge-dot {
|
||||||
|
padding-bottom: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
.kg-body {
|
.kg-body {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,3 @@
|
|||||||
|
.layui-badge, .layui-badge-rim, .layui-badge-dot {
|
||||||
|
padding-bottom: 1px;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user