1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-06-24 04:01:31 +08:00

v1.2.6预览版01

This commit is contained in:
koogua 2021-02-14 21:41:38 +08:00
parent bc48169ff9
commit 122b4adfa8
23 changed files with 261 additions and 278 deletions

View File

@ -1,3 +1,24 @@
### [v1.2.6](https://gitee.com/koogua/course-tencent-cloud/releases/v1.2.6)(2021-02-20)
### 新增
- 积分兑换机制
- 课程增加原价属性
- gitee提交webhooks自动化部署脚本
### 更新
- course和chapter数据迁移文件中遗漏了recourse_count字段
- app/Caches/TopicCourseList不存在
- Model文件属性定义默认值
- 隐藏非付费课程的咨询服务
- 教学中心教师直播推流按钮无反应
- 用户中心部分样式调整
- 播放器清晰度标签和实际的清晰度不对应
- CNZZ统计代码会显示出站长统计图标
- 自动安装后访问站点500错误
- 自动更新脚本可更新css和js版本号
### [v1.2.5](https://gitee.com/koogua/course-tencent-cloud/releases/v1.2.5)(2021-01-20)
### 新增

View File

@ -24,6 +24,14 @@ class PointGiftController extends Controller
$this->view->setVar('pager', $pager);
}
/**
* @Get("/search", name="admin.point_gift.search")
*/
public function searchAction()
{
$this->view->pick('point/gift/search');
}
/**
* @Get("/add", name="admin.point_gift.add")
*/

View File

@ -481,22 +481,22 @@ class AuthNode extends Service
'title' => '积分商城',
'type' => 'menu',
'children' => [
[
'id' => '2-8-1',
'title' => '兑换记录',
'type' => 'menu',
'route' => 'admin.point_redeem.list',
],
[
'id' => '2-8-2',
'title' => '礼品列表',
'type' => 'menu',
'route' => 'admin.point_gift.list',
],
[
'id' => '2-8-1',
'title' => '兑换记录',
'type' => 'menu',
'route' => 'admin.point_redeem.list',
],
[
'id' => '2-8-3',
'title' => '添加礼品',
'type' => 'menu',
'type' => 'button',
'route' => 'admin.point_gift.add',
],
[

View File

@ -76,6 +76,10 @@ class PointGift extends Service
$data['details'] = $validator->checkDetails($post['details']);
}
if (isset($post['attrs'])) {
$data['attrs'] = $validator->checkAttrs($gift, $post['attrs']);
}
if (isset($post['point'])) {
$data['point'] = $validator->checkPoint($post['point']);
}

View File

@ -5,96 +5,9 @@
{% set update_url = url({'for':'admin.point_gift.update','id':gift.id}) %}
{% if gift.type == 1 %}
<form class="layui-form kg-form" method="POST" action="{{ update_url }}">
<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">
<img id="img-cover" class="kg-cover" src="{{ gift.cover }}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">课程名称</label>
<div class="layui-form-mid layui-word-aux">{{ gift.name }}</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">所需积分</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="point" value="{{ gift.point }}" lay-verify="number">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">库存数量</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="stock" value="{{ gift.stock }}" lay-verify="number">
</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>
</div>
</div>
</form>
{% endif %}
{% if gift.type == 2 %}
<form class="layui-form kg-form" method="POST" action="{{ update_url }}">
<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">
<img id="img-cover" class="kg-cover" src="{{ gift.cover }}">
<input type="hidden" name="cover" value="{{ gift.cover }}">
</div>
<div class="layui-input-inline" style="padding-top:35px;">
<button id="change-cover" class="layui-btn layui-btn-sm" type="button">更换</button>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">商品名称</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="name" value="{{ gift.name }}" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">商品详情</label>
<div class="layui-input-block">
<div id="vditor"></div>
<textarea name="details" class="layui-hide" id="vditor-textarea">{{ gift.details }}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">所需积分</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="point" value="{{ gift.point }}" lay-verify="number">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">库存数量</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="stock" value="{{ gift.stock }}" lay-verify="number">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">兑换限额</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="redeem_limit" value="{{ gift.redeem_limit }}" lay-verify="number">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
</div>
</div>
</form>
{{ partial('point/gift/edit_course') }}
{% elseif gift.type == 2 %}
{{ partial('point/gift/edit_goods') }}
{% endif %}
{% endblock %}

View File

@ -0,0 +1,34 @@
<form class="layui-form kg-form" method="POST" action="{{ update_url }}">
<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">
<img id="img-cover" class="kg-cover" src="{{ gift.cover }}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">课程名称</label>
<div class="layui-form-mid layui-word-aux">{{ gift.name }}</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">所需积分</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="point" value="{{ gift.point }}" lay-verify="number">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">库存数量</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="stock" value="{{ gift.stock }}" lay-verify="number">
</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>
</div>
</div>
</form>

View File

@ -0,0 +1,59 @@
<form class="layui-form kg-form" method="POST" action="{{ update_url }}">
<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">
<img id="img-cover" class="kg-cover" src="{{ gift.cover }}">
<input type="hidden" name="cover" value="{{ gift.cover }}">
</div>
<div class="layui-input-inline" style="padding-top:35px;">
<button id="change-cover" class="layui-btn layui-btn-sm" type="button">更换</button>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">商品名称</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="name" value="{{ gift.name }}" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">采购地址</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="attrs[url]" value="{{ gift.attrs['url'] }}" placeholder="淘宝或京东等平台商品链接地址" lay-verify="url">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">商品详情</label>
<div class="layui-input-block">
<div id="vditor"></div>
<textarea name="details" class="layui-hide" id="vditor-textarea">{{ gift.details }}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">所需积分</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="point" value="{{ gift.point }}" lay-verify="number">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">库存数量</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="stock" value="{{ gift.stock }}" lay-verify="number">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">兑换限额</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="redeem_limit" value="{{ gift.redeem_limit }}" lay-verify="number">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
</div>
</div>
</form>

View File

@ -5,6 +5,7 @@
{{ partial('macros/point') }}
{% set add_url = url({'for':'admin.point_gift.add'}) %}
{% set search_url = url({'for':'admin.point_gift.search'}) %}
<div class="kg-nav">
<div class="kg-nav-left">
@ -16,6 +17,9 @@
<a class="layui-btn layui-btn-sm" href="{{ add_url }}">
<i class="layui-icon layui-icon-add-1"></i>添加礼品
</a>
<a class="layui-btn layui-btn-sm" href="{{ search_url }}">
<i class="layui-icon layui-icon-search"></i>搜索礼品
</a>
</div>
</div>

View File

@ -2,40 +2,27 @@
{% block content %}
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.group.list'}) }}">
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.point_gift.list'}) }}">
<fieldset class="layui-elem-field layui-field-title">
<legend>搜索群组</legend>
<legend>搜索礼品</legend>
</fieldset>
<div class="layui-form-item">
<label class="layui-form-label">群组编号</label>
<label class="layui-form-label">礼品编号</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="id" placeholder="群组编号精确匹配">
<input class="layui-input" type="text" name="id" placeholder="礼品编号精确匹配">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">群组名称</label>
<label class="layui-form-label">礼品名称</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="name" placeholder="群组名称模糊匹配">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">群主编号</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="user_id" placeholder="群主编号精确匹配">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">课程编号</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="course_id" placeholder="课程编号精确匹配">
<input class="layui-input" type="text" name="name" placeholder="礼品名称模糊匹配">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">类型</label>
<div class="layui-input-block">
<input type="radio" name="type" value="1" title="课程">
<input type="radio" name="type" value="2" title="聊天">
<input type="radio" name="type" value="3" title="职工">
<input type="radio" name="type" value="2" title="商品">
</div>
</div>
<div class="layui-form-item">

View File

@ -2,13 +2,10 @@
namespace App\Http\Api\Services;
use App\Models\User as UserModel;
use App\Repos\User as UserRepo;
use App\Services\Auth\Api as AuthService;
use App\Services\Logic\Account\Register as RegisterService;
use App\Validators\Account as AccountValidator;
use Phalcon\Di as Di;
use Phalcon\Events\Manager as EventsManager;
class Account extends Service
{
@ -35,7 +32,7 @@ class Account extends Service
$token = $this->auth->saveAuthInfo($user);
$this->fireAfterRegisterEvent($user);
$this->eventsManager->fire('Account:afterRegister', $this, $user);
return $token;
}
@ -59,7 +56,7 @@ class Account extends Service
$token = $this->auth->saveAuthInfo($user);
$this->fireAfterLoginEvent($user);
$this->eventsManager->fire('Account:afterLogin', $this, $user);
return $token;
}
@ -83,7 +80,7 @@ class Account extends Service
$token = $this->auth->saveAuthInfo($user);
$this->fireAfterLoginEvent($user);
$this->eventsManager->fire('Account:afterLogin', $this, $user);
return $token;
}
@ -94,37 +91,7 @@ class Account extends Service
$this->auth->clearAuthInfo();
$this->fireAfterLogoutEvent($user);
}
protected function fireAfterRegisterEvent(UserModel $user)
{
/**
* @var EventsManager $eventsManager
*/
$eventsManager = Di::getDefault()->getShared('eventsManager');
$eventsManager->fire('Account:afterRegister', $this, $user);
}
protected function fireAfterLoginEvent(UserModel $user)
{
/**
* @var EventsManager $eventsManager
*/
$eventsManager = Di::getDefault()->getShared('eventsManager');
$eventsManager->fire('Account:afterLogin', $this, $user);
}
protected function fireAfterLogoutEvent(UserModel $user)
{
/**
* @var EventsManager $eventsManager
*/
$eventsManager = Di::getDefault()->getShared('eventsManager');
$eventsManager->fire('Account:afterLogout', $this, $user);
$this->eventsManager->fire('Account:afterLogout', $this, $user);
}
}

View File

@ -2,14 +2,11 @@
namespace App\Http\Home\Services;
use App\Models\User as UserModel;
use App\Repos\User as UserRepo;
use App\Services\Auth\Home as AuthService;
use App\Services\Logic\Account\Register as RegisterService;
use App\Validators\Account as AccountValidator;
use App\Validators\Captcha as CaptchaValidator;
use Phalcon\Di as Di;
use Phalcon\Events\Manager as EventsManager;
class Account extends Service
{
@ -36,7 +33,7 @@ class Account extends Service
$this->auth->saveAuthInfo($user);
$this->fireAfterRegisterEvent($user);
$this->eventsManager->fire('Account:afterRegister', $this, $user);
return $user;
}
@ -55,7 +52,7 @@ class Account extends Service
$this->auth->saveAuthInfo($user);
$this->fireAfterLoginEvent($user);
$this->eventsManager->fire('Account:afterLogin', $this, $user);
}
public function loginByVerify()
@ -68,7 +65,7 @@ class Account extends Service
$this->auth->saveAuthInfo($user);
$this->fireAfterLoginEvent($user);
$this->eventsManager->fire('Account:afterLogin', $this, $user);
}
public function logout()
@ -77,37 +74,7 @@ class Account extends Service
$this->auth->clearAuthInfo();
$this->fireAfterLogoutEvent($user);
}
protected function fireAfterRegisterEvent(UserModel $user)
{
/**
* @var EventsManager $eventsManager
*/
$eventsManager = Di::getDefault()->getShared('eventsManager');
$eventsManager->fire('Account:afterRegister', $this, $user);
}
protected function fireAfterLoginEvent(UserModel $user)
{
/**
* @var EventsManager $eventsManager
*/
$eventsManager = Di::getDefault()->getShared('eventsManager');
$eventsManager->fire('Account:afterLogin', $this, $user);
}
protected function fireAfterLogoutEvent(UserModel $user)
{
/**
* @var EventsManager $eventsManager
*/
$eventsManager = Di::getDefault()->getShared('eventsManager');
$eventsManager->fire('Account:afterLogout', $this, $user);
$this->eventsManager->fire('Account:afterLogout', $this, $user);
}
}

View File

@ -18,7 +18,7 @@
<div class="layout-main clearfix">
<div class="layout-content">
<div class="layui-card">
<div class="layui-card-header">品信息</div>
<div class="layui-card-header">品信息</div>
<div class="layui-card-body">
<div class="gift-meta clearfix">
<div class="cover">
@ -56,7 +56,7 @@
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">品详情</div>
<div class="layui-card-header">品详情</div>
<div class="layui-card-body">
<div class="gift-details markdown-body">{{ gift.details }}</div>
</div>

View File

@ -12,13 +12,13 @@
<span class="title">我的好友</span>
</div>
{% if pager.total_pages > 0 %}
<table class="layui-table" lay-size="lg">
<table class="layui-table">
<colgroup>
<col>
<col>
<col>
<col>
<col width="15%">
<col width="10%">
</colgroup>
<thead>
<tr>

View File

@ -12,17 +12,19 @@
<div class="layout-main clearfix">
<div class="my-sidebar">{{ partial('user/console/menu') }}</div>
<div class="my-content">
<div class="my-nav">
<span class="title">我的群组</span>
<a class="{{ joined_class }}" href="{{ joined_url }}">参加的</a>
<a class="{{ owned_class }}" href="{{ owned_url }}">管理的</a>
</div>
<div class="my-group-wrap wrap">
{% if scope == 'owned' %}
{{ partial('user/console/groups_owned') }}
{% else %}
{{ partial('user/console/groups_joined') }}
{% endif %}
<div class="wrap">
<div class="my-nav">
<span class="title">我的群组</span>
<a class="{{ joined_class }}" href="{{ joined_url }}">参加的</a>
<a class="{{ owned_class }}" href="{{ owned_url }}">管理的</a>
</div>
<div class="my-group-wrap">
{% if scope == 'owned' %}
{{ partial('user/console/groups_owned') }}
{% else %}
{{ partial('user/console/groups_joined') }}
{% endif %}
</div>
</div>
</div>
</div>

View File

@ -10,36 +10,38 @@
<div class="layout-main clearfix">
<div class="my-sidebar">{{ partial('user/console/menu') }}</div>
<div class="my-content">
<div class="my-nav">
<span class="title">我的订单</span>
{% for key,value in status_types %}
{% set class = (status == key) ? 'layui-btn layui-btn-xs' : 'none' %}
{% set url = (key == '0') ? url({'for':'home.uc.orders'}) : url({'for':'home.uc.orders'},{'status':key}) %}
<a class="{{ class }}" href="{{ url }}">{{ value }}</a>
{% endfor %}
</div>
{% if pager.total_pages > 0 %}
<div class="order-list">
{% for item in pager.items %}
{% set order_info_url = url({'for':'home.order.info'},{'sn':item.sn}) %}
<div class="order-card">
<div class="header">
<span class="sn">编号:{{ item.sn }}</span>
<span class="time">时间:{{ date('Y-m-d H:i:s',item.create_time) }}</span>
</div>
<div class="body clearfix">
<div class="column subject">{{ item.subject }}</div>
<div class="column price">{{ '¥%0.2f'|format(item.amount) }}</div>
<div class="column status">{{ order_status(item.status) }}</div>
<div class="column action">
<button class="layui-btn layui-btn-sm btn-order-info" data-url="{{ order_info_url }}">详情</button>
</div>
</div>
</div>
<div class="wrap">
<div class="my-nav">
<span class="title">我的订单</span>
{% for key,value in status_types %}
{% set class = (status == key) ? 'layui-btn layui-btn-xs' : 'none' %}
{% set url = (key == '0') ? url({'for':'home.uc.orders'}) : url({'for':'home.uc.orders'},{'status':key}) %}
<a class="{{ class }}" href="{{ url }}">{{ value }}</a>
{% endfor %}
</div>
{{ partial('partials/pager') }}
{% endif %}
{% if pager.total_pages > 0 %}
<div class="order-list">
{% for item in pager.items %}
{% set order_info_url = url({'for':'home.order.info'},{'sn':item.sn}) %}
<div class="order-card">
<div class="header">
<span class="sn">编号:{{ item.sn }}</span>
<span class="time">时间:{{ date('Y-m-d H:i:s',item.create_time) }}</span>
</div>
<div class="body clearfix">
<div class="column subject">{{ item.subject }}</div>
<div class="column price">{{ '¥%0.2f'|format(item.amount) }}</div>
<div class="column status">{{ order_status(item.status) }}</div>
<div class="column action">
<button class="layui-btn layui-btn-sm btn-order-info" data-url="{{ order_info_url }}">详情</button>
</div>
</div>
</div>
{% endfor %}
</div>
{{ partial('partials/pager') }}
{% endif %}
</div>
</div>
</div>

View File

@ -7,10 +7,10 @@
<div class="layout-main clearfix">
<div class="my-sidebar">{{ partial('user/console/menu') }}</div>
<div class="my-content">
<div class="my-nav">
<span class="title">积分记录</span>
</div>
<div class="history-wrap wrap">
<div class="wrap">
<div class="my-nav">
<span class="title">积分记录</span>
</div>
{% if pager.total_pages > 0 %}
<table class="layui-table history-table" lay-size="lg">
<colgroup>

View File

@ -7,10 +7,10 @@
<div class="layout-main clearfix">
<div class="my-sidebar">{{ partial('user/console/menu') }}</div>
<div class="my-content">
<div class="my-nav">
<span class="title">兑换记录</span>
</div>
<div class="history-wrap wrap">
<div class="wrap">
<div class="my-nav">
<span class="title">兑换记录</span>
</div>
{% if pager.total_pages > 0 %}
<table class="layui-table" lay-size="lg">
<colgroup>

View File

@ -10,36 +10,38 @@
<div class="layout-main clearfix">
<div class="my-sidebar">{{ partial('user/console/menu') }}</div>
<div class="my-content">
<div class="my-nav">
<span class="title">我的退款</span>
{% for key,value in status_types %}
{% set class = (status == key) ? 'layui-btn layui-btn-xs' : 'none' %}
{% set url = (key == 'all') ? url({'for':'home.uc.refunds'}) : url({'for':'home.uc.refunds'},{'status':key}) %}
<a class="{{ class }}" href="{{ url }}">{{ value }}</a>
{% endfor %}
</div>
{% if pager.total_pages > 0 %}
<div class="order-list">
{% for item in pager.items %}
{% set refund_info_url = url({'for':'home.refund.info'},{'sn':item.sn}) %}
<div class="order-card">
<div class="header">
<span class="sn">编号:{{ item.sn }}</span>
<span class="time">时间:{{ date('Y-m-d H:i:s',item.create_time) }}</span>
</div>
<div class="body clearfix">
<div class="column subject">{{ item.subject }}</div>
<div class="column price">{{ '¥%0.2f'|format(item.amount) }}</div>
<div class="column status">{{ refund_status(item.status) }}</div>
<div class="column action">
<button class="layui-btn layui-btn-sm btn-refund-info" data-url="{{ refund_info_url }}">详情</button>
</div>
</div>
</div>
<div class="wrap">
<div class="my-nav">
<span class="title">我的退款</span>
{% for key,value in status_types %}
{% set class = (status == key) ? 'layui-btn layui-btn-xs' : 'none' %}
{% set url = (key == 'all') ? url({'for':'home.uc.refunds'}) : url({'for':'home.uc.refunds'},{'status':key}) %}
<a class="{{ class }}" href="{{ url }}">{{ value }}</a>
{% endfor %}
</div>
{{ partial('partials/pager') }}
{% endif %}
{% if pager.total_pages > 0 %}
<div class="order-list">
{% for item in pager.items %}
{% set refund_info_url = url({'for':'home.refund.info'},{'sn':item.sn}) %}
<div class="order-card">
<div class="header">
<span class="sn">编号:{{ item.sn }}</span>
<span class="time">时间:{{ date('Y-m-d H:i:s',item.create_time) }}</span>
</div>
<div class="body clearfix">
<div class="column subject">{{ item.subject }}</div>
<div class="column price">{{ '¥%0.2f'|format(item.amount) }}</div>
<div class="column status">{{ refund_status(item.status) }}</div>
<div class="column action">
<button class="layui-btn layui-btn-sm btn-refund-info" data-url="{{ refund_info_url }}">详情</button>
</div>
</div>
</div>
{% endfor %}
</div>
{{ partial('partials/pager') }}
{% endif %}
</div>
</div>
</div>

View File

@ -11,11 +11,13 @@ class AppInfo
protected $link = 'https://koogua.com';
protected $version = '1.2.5';
protected $version = '1.2.6';
public function __get($name)
{
return $this->{$name} ?? null;
if (isset($this->{$name})) {
return $this->{$name};
}
}
}

View File

@ -68,8 +68,6 @@ class Audit extends Model
public function beforeCreate()
{
$this->create_time = time();
if (is_array($this->req_data) && !empty($this->req_data)) {
foreach ($this->req_data as $key => $value) {
if (!is_scalar($value)) {
@ -80,7 +78,11 @@ class Audit extends Model
}
}
$this->req_data = kg_json_encode($this->req_data);
} else {
$this->req_data = '';
}
$this->create_time = time();
}
}

View File

@ -24,8 +24,7 @@ class PointGift extends Model
protected $_course_attrs = [
'id' => 0,
'title' => '',
'market_price' => 0,
'study_expiry_time' => 0,
'price' => 0,
];
/**

View File

@ -101,6 +101,17 @@ class PointGift extends Validator
return kg_cos_img_style_trim($value);
}
public function checkAttrs(PointGiftModel $gift, array $attrs)
{
$result = $gift->attrs;
if ($gift->type == PointGiftModel::TYPE_GOODS) {
$result['url'] = $attrs['url'];
}
return $result;
}
public function checkType($type)
{
$list = PointGiftModel::types();

View File

@ -1683,7 +1683,7 @@
}
.order-card {
padding: 15px 20px;
padding: 10px 0;
margin-bottom: 20px;
background-color: white;
color: #666;
@ -1842,7 +1842,6 @@
.gift-meta .info {
float: left;
width: 400px;
}
.gift-meta .info p {