1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-07-23 16:36:38 +08:00

1.修复验证码

2.增加第三方登录
This commit is contained in:
xiaochong0302 2020-04-17 18:53:04 +08:00
parent cf5e50f402
commit 3c906cb6c7
40 changed files with 460 additions and 117 deletions

View File

@ -33,8 +33,10 @@ class CleanAuthTokenTask extends Task
*/
protected function findAccessTokens()
{
$expiryTime = strtotime('-30 days');
return AccessTokenModel::query()
->where('expiry_time < :expiry_time:', ['expiry_time' => time()])
->where('expiry_time < :expiry_time:', ['expiry_time' => $expiryTime])
->execute();
}
@ -45,8 +47,10 @@ class CleanAuthTokenTask extends Task
*/
protected function findRefreshTokens()
{
$expiryTime = strtotime('-30 days');
return RefreshTokenModel::query()
->where('expiry_time < :expiry_time:', ['expiry_time' => time()])
->where('expiry_time < :expiry_time:', ['expiry_time' => $expiryTime])
->execute();
}

View File

@ -3,8 +3,8 @@
namespace App\Console\Tasks;
use App\Models\Trade as TradeModel;
use App\Services\Payment\Alipay as AlipayService;
use App\Services\Payment\Wxpay as WxpayService;
use App\Services\Pay\Alipay as AlipayService;
use App\Services\Pay\Wxpay as WxpayService;
use Phalcon\Cli\Task;
use Phalcon\Mvc\Model\Resultset;
use Phalcon\Mvc\Model\ResultsetInterface;

View File

@ -11,8 +11,8 @@ use App\Repos\Order as OrderRepo;
use App\Repos\Refund as RefundRepo;
use App\Repos\Trade as TradeRepo;
use App\Repos\User as UserRepo;
use App\Services\Payment\Alipay as AlipayService;
use App\Services\Payment\Wxpay as WxpayService;
use App\Services\Pay\Alipay as AlipayService;
use App\Services\Pay\Wxpay as WxpayService;
use App\Services\Smser\Refund as RefundSmser;
use Phalcon\Mvc\Model\Resultset;
use Phalcon\Mvc\Model\ResultsetInterface;
@ -140,7 +140,7 @@ class RefundTask extends Task
}
if (!$response) {
throw new \RuntimeException('Payment Refund Failed');
throw new \RuntimeException('Pay Refund Failed');
}
}

View File

@ -39,7 +39,6 @@ class SessionController extends \Phalcon\Mvc\Controller
$captcha = $settingService->getSectionSettings('captcha');
$this->view->pick('public/login');
$this->view->setVar('captcha', $captcha);
}

View File

@ -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();
@ -157,14 +157,43 @@ class SettingController extends Controller
} else {
$alipay = $settingService->getSectionSettings('payment.alipay');
$wxpay = $settingService->getSectionSettings('payment.wxpay');
$alipay = $settingService->getSectionSettings('pay.alipay');
$wxpay = $settingService->getSectionSettings('pay.wxpay');
$this->view->setVar('alipay', $alipay);
$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")
*/

View File

@ -72,7 +72,6 @@ class TestController extends Controller
$obs->stream_code = substr($pushUrl, $position + 1);
$this->view->pick('setting/live_push_test');
$this->view->setVar('code_url', $codeUrl);
$this->view->setVar('obs', $obs);
}
@ -90,7 +89,6 @@ class TestController extends Controller
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
$this->view->pick('public/live_player');
$this->view->setVar('m3u8_pull_urls', $m3u8PullUrls);
$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('code_url', $codeUrl);
}
@ -236,8 +233,7 @@ class TestController extends Controller
$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('code_url', $codeUrl);
}

View File

@ -34,9 +34,7 @@ class VodController extends Controller
$playUrl = $this->request->getQuery('play_url');
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
$this->view->pick('public/vod_player');
$this->view->setVar('chapter_id', $chapterId);
$this->view->setVar('play_url', urldecode($playUrl));
}

View File

@ -6,9 +6,9 @@ use App\Models\Order as OrderModel;
use App\Models\Trade as TradeModel;
use App\Repos\Order as OrderRepo;
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;

View File

@ -679,10 +679,16 @@ class AuthNode extends Service
'id' => '5-1-9',
'label' => '支付设置',
'type' => 'menu',
'route' => 'admin.setting.payment',
'route' => 'admin.setting.pay',
],
[
'id' => '5-1-10',
'label' => '登录设置',
'type' => 'menu',
'route' => 'admin.setting.oauth',
],
[
'id' => '5-1-11',
'label' => '会员设置',
'type' => 'menu',
'route' => 'admin.setting.vip',

View File

@ -6,7 +6,7 @@ use App\Models\Order as OrderModel;
use App\Models\Trade as TradeModel;
use App\Services\Auth\Admin as AdminAuth;
abstract class PaymentTest extends Service
abstract class PayTest extends Service
{
/**

View File

@ -3,9 +3,9 @@
namespace App\Http\Admin\Services;
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;

View File

@ -57,11 +57,13 @@
$('#captcha-btn')[0],
$('#captcha-btn').attr('app-id'),
function (res) {
$('input[name=ticket]').val(res.ticket);
$('input[name=rand]').val(res.randstr);
$('#captcha-btn').remove();
$('#submit-btn').removeAttr('disabled');
$('#verify-tips').removeClass('layui-hide');
if (res.ret === 0) {
$('input[name=ticket]').val(res.ticket);
$('input[name=rand]').val(res.randstr);
$('#captcha-btn').remove();
$('#submit-btn').removeAttr('disabled');
$('#verify-tips').removeClass('layui-hide');
}
}
);
});

View File

@ -37,16 +37,16 @@
<div class="layui-form-item">
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
<div class="layui-input-inline" style="width:200px;">
<span id="captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid">前台验证</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-btn" class="layui-btn layui-btn-primary layui-btn-fluid" app-id="{{ captcha.app_id }}">前台验证</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 class="layui-form-item">
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
<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="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-btn" class="layui-btn layui-btn-primary layui-btn-fluid" disabled="true" lay-submit="true" lay-filter="back-verify">后台验证</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="rand">
</div>
@ -65,25 +65,29 @@
var layer = layui.layer;
var captcha = new TencentCaptcha(
$('#captcha-btn')[0],
$('input[name=app_id]').val(),
$('#front-verify-btn')[0],
$('#front-verify-btn').attr('app-id'),
function (res) {
$('input[name=ticket]').val(res.ticket);
$('input[name=rand]').val(res.randstr);
$('#captcha-btn').remove();
$('#verify-submit-btn').removeAttr('disabled');
$('#frontend-verify-tips').removeClass('layui-hide');
if (res.ret === 0) {
$('input[name=ticket]').val(res.ticket);
$('input[name=rand]').val(res.randstr);
$('#front-verify-btn').remove();
$('#back-verify-btn').removeAttr('disabled');
$('#front-verify-tips').removeClass('layui-hide');
}
}
);
form.on('submit(backend-verify)', function (data) {
form.on('submit(back-verify)', function (data) {
$.ajax({
type: 'POST',
url: data.form.action,
data: data.field,
success: function (res) {
$('#verify-submit-btn').remove();
$('#backend-verify-tips').removeClass('layui-hide');
if (res.code === 0) {
$('#back-verify-btn').remove();
$('#back-verify-tips').removeClass('layui-hide');
}
layer.msg(res.msg, {icon: 1});
},
error: function (xhr) {

View 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>

View 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>

View 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>

View 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>

View File

@ -5,10 +5,10 @@
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
{{ partial('setting/payment_alipay') }}
{{ partial('setting/pay_alipay') }}
</div>
<div class="layui-tab-item">
{{ partial('setting/payment_wxpay') }}
{{ partial('setting/pay_wxpay') }}
</div>
</div>
</div>

View File

@ -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">
<label class="layui-form-label">开启支付</label>
@ -25,16 +25,14 @@
<div class="layui-form-item">
<label class="layui-form-label">Private Key</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="private_key"
lay-verify="required">{{ alipay.private_key }}</textarea>
<textarea class="layui-textarea" name="private_key" lay-verify="required">{{ alipay.private_key }}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Notify Url</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="notify_url" value="{{ alipay.notify_url }}"
lay-verify="required">
<input class="layui-input" type="text" name="notify_url" value="{{ alipay.notify_url }}" lay-verify="required">
</div>
</div>
@ -43,7 +41,7 @@
<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="payment.alipay">
<input type="hidden" name="section" value="pay.alipay">
</div>
</div>

View File

@ -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">
<label class="layui-form-label">开启支付</label>
@ -41,7 +41,7 @@
<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="payment.wxpay">
<input type="hidden" name="section" value="pay.wxpay">
</div>
</div>

View 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()
{
}
}

View File

@ -2,17 +2,20 @@
namespace App\Http\Web\Controllers;
use App\Services\Payment\Alipay as AlipayService;
use App\Services\Payment\Wxpay as WxpayService;
use App\Services\Pay\Alipay as AlipayService;
use App\Services\Pay\Wxpay as WxpayService;
use App\Traits\Response as ResponseTrait;
class PaymentController extends \Phalcon\Mvc\Controller
/**
* @RoutePrefix("/pay")
*/
class PayController extends \Phalcon\Mvc\Controller
{
use ResponseTrait;
/**
* @Post("/alipay/notify", name="web.alipay.notify")
* @Post("/alipay/notify", name="web.pay.alipay.notify")
*/
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()
{
@ -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()
{
@ -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()
{

View File

@ -9,15 +9,15 @@ abstract class OAuth
protected $appId;
protected $appSecret;
protected $appCallback;
protected $redirectUri;
protected $accessToken;
protected $openId;
public function __construct($appId, $appSecret, $appCallback)
public function __construct($appId, $appSecret, $redirectUri)
{
$this->appId = $appId;
$this->appSecret = $appSecret;
$this->appCallback = $appCallback;
$this->redirectUri = $redirectUri;
}
public function httpGet($uri, $params = [], $headers = [])

View File

@ -16,7 +16,7 @@ class QQ extends OAuth
{
$params = [
'client_id' => $this->appId,
'redirect_uri' => $this->appCallback,
'redirect_uri' => $this->redirectUri,
'response_type' => 'code',
'scope' => '',
];
@ -30,7 +30,7 @@ class QQ extends OAuth
'code' => $code,
'client_id' => $this->appId,
'client_secret' => $this->appSecret,
'redirect_uri' => $this->appCallback,
'redirect_uri' => $this->redirectUri,
'grant_type' => 'authorization_code',
'state' => 'ok',
];

View File

@ -15,7 +15,7 @@ class WeiBo extends OAuth
{
$params = [
'client_id' => $this->appId,
'redirect_uri' => $this->appCallback,
'redirect_uri' => $this->redirectUri,
'response_type' => 'code',
];
@ -28,7 +28,7 @@ class WeiBo extends OAuth
'code' => $code,
'client_id' => $this->appId,
'client_secret' => $this->appSecret,
'redirect_uri' => $this->appCallback,
'redirect_uri' => $this->redirectUri,
'grant_type' => 'authorization_code',
];

View File

@ -15,7 +15,7 @@ class WeiXin extends OAuth
{
$params = [
'appid' => $this->appId,
'redirect_uri' => $this->appCallback,
'redirect_uri' => $this->redirectUri,
'response_type' => 'code',
'scope' => 'snsapi_login',
'state' => 'dev',

View File

@ -8,7 +8,7 @@ use App\Models\Trade as TradeModel;
use App\Repos\Order as OrderRepo;
use Phalcon\Events\Event;
class Payment extends Listener
class Pay extends Listener
{
protected $logger;

View File

@ -111,10 +111,10 @@ class ChapterInfo extends Service
'summary' => $chapter->summary,
'course' => $course,
'play_urls' => $playUrls,
'user_count' => $chapter->user_count,
'agree_count' => $chapter->agree_count,
'oppose_count' => $chapter->oppose_count,
'comment_count' => $chapter->comment_count,
'user_count' => $chapter->user_count,
];
}
@ -146,10 +146,10 @@ class ChapterInfo extends Service
'play_urls' => $playUrls,
'start_time' => $live->start_time,
'end_time' => $live->end_time,
'user_count' => $chapter->user_count,
'agree_count' => $chapter->agree_count,
'oppose_count' => $chapter->oppose_count,
'comment_count' => $chapter->comment_count,
'user_count' => $chapter->user_count,
];
}
@ -167,10 +167,10 @@ class ChapterInfo extends Service
'summary' => $chapter->summary,
'course' => $course,
'content' => $read->content,
'user_count' => $chapter->user_count,
'agree_count' => $chapter->agree_count,
'oppose_count' => $chapter->oppose_count,
'comment_count' => $chapter->comment_count,
'user_count' => $chapter->user_count,
];
}

View 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,
];
}
}

View File

@ -5,8 +5,8 @@ namespace App\Services\Frontend\Order;
use App\Models\Trade as TradeModel;
use App\Services\Frontend\OrderTrait;
use App\Services\Frontend\Service;
use App\Services\Payment\Alipay as AlipayService;
use App\Services\Payment\Wxpay as WxPayService;
use App\Services\Pay\Alipay as AlipayService;
use App\Services\Pay\Wxpay as WxPayService;
use App\Validators\Trade as TradeValidator;
class OrderTrade extends Service

View File

@ -18,15 +18,9 @@ class TeacherInfo extends Service
return $this->handleUser($user);
}
/**
* @param UserModel $user
* @return array
*/
protected function handleUser($user)
protected function handleUser(UserModel $user)
{
$user->avatar = kg_ci_img_url($user->avatar);
$user->vip = $user->vip == 1;
$user->locked = $user->locked == 1;
return [
'id' => $user->id,
@ -38,12 +32,6 @@ class TeacherInfo extends Service
'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,
];
}

View File

@ -18,15 +18,9 @@ class UserInfo extends Service
return $this->handleUser($user);
}
/**
* @param UserModel $user
* @return array
*/
protected function handleUser($user)
protected function handleUser(UserModel $user)
{
$user->avatar = kg_ci_img_url($user->avatar);
$user->vip = $user->vip == 1;
$user->locked = $user->locked == 1;
return [
'id' => $user->id,
@ -38,12 +32,6 @@ class UserInfo extends Service
'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,
];
}

View File

@ -6,7 +6,7 @@ use App\Models\Refund as RefundModel;
use App\Models\Trade as TradeModel;
use App\Repos\Trade as TradeRepo;
abstract class Payment extends Service
abstract class Pay extends Service
{
/**

View File

@ -1,16 +1,16 @@
<?php
namespace App\Services\Payment;
namespace App\Services\Pay;
use App\Models\Refund as RefundModel;
use App\Models\Trade as TradeModel;
use App\Repos\Trade as TradeRepo;
use App\Services\Payment;
use App\Services\Pay as AppPay;
use Yansongda\Pay\Log;
use Yansongda\Pay\Pay;
use Yansongda\Supports\Collection;
class Alipay extends Payment
class Alipay extends AppPay
{
/**
@ -25,8 +25,7 @@ class Alipay extends Payment
public function __construct()
{
$this->settings = $this->getSectionSettings('payment.alipay');
$this->settings = $this->getSectionSettings('pay.alipay');
$this->gateway = $this->getGateway();
}
@ -108,7 +107,7 @@ class Alipay extends Payment
$trade->channel_sn = $data->trade_no;
$this->eventsManager->fire('payment:afterPay', $this, $trade);
$this->eventsManager->fire('pay:afterPay', $this, $trade);
return $this->gateway->success();
}

View File

@ -1,17 +1,17 @@
<?php
namespace App\Services\Payment;
namespace App\Services\Pay;
use App\Models\Refund as RefundModel;
use App\Models\Trade as TradeModel;
use App\Repos\Trade as TradeRepo;
use App\Services\Payment;
use App\Services\Pay as AppPay;
use Yansongda\Pay\Gateways\Wechat;
use Yansongda\Pay\Log;
use Yansongda\Pay\Pay;
use Yansongda\Supports\Collection;
class Wxpay extends Payment
class Wxpay extends AppPay
{
/**
@ -26,8 +26,7 @@ class Wxpay extends Payment
public function __construct()
{
$this->settings = $this->getSectionSettings('payment.wxpay');
$this->settings = $this->getSectionSettings('pay.wxpay');
$this->gateway = $this->getGateway();
}
@ -107,7 +106,7 @@ class Wxpay extends Payment
$trade->channel_sn = $data->transaction_id;
$this->eventsManager->fire('payment:afterPay', $this, $trade);
$this->eventsManager->fire('pay:afterPay', $this, $trade);
return $this->gateway->success();
}

View File

@ -1,11 +1,11 @@
<?php
use App\Listeners\Payment;
use App\Listeners\Pay;
use App\Listeners\Profiler;
use App\Listeners\UserDailyCounter;
return [
'db' => Profiler::class,
'payment' => Payment::class,
'pay' => Pay::class,
'userDailyCounter' => UserDailyCounter::class,
];

View File

@ -1,3 +1,7 @@
.layui-badge, .layui-badge-rim, .layui-badge-dot {
padding-bottom: 1px;
}
.kg-body {
padding: 15px;
}

View File

@ -0,0 +1,3 @@
.layui-badge, .layui-badge-rim, .layui-badge-dot {
padding-bottom: 1px;
}