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:
parent
bc48169ff9
commit
122b4adfa8
21
CHANGELOG.md
21
CHANGELOG.md
@ -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)
|
||||
|
||||
### 新增
|
||||
|
@ -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")
|
||||
*/
|
||||
|
@ -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',
|
||||
],
|
||||
[
|
||||
|
@ -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']);
|
||||
}
|
||||
|
@ -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 %}
|
||||
|
34
app/Http/Admin/Views/point/gift/edit_course.volt
Normal file
34
app/Http/Admin/Views/point/gift/edit_course.volt
Normal 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>
|
59
app/Http/Admin/Views/point/gift/edit_goods.volt
Normal file
59
app/Http/Admin/Views/point/gift/edit_goods.volt
Normal 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>
|
@ -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>
|
||||
|
||||
|
@ -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">
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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};
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
@ -24,8 +24,7 @@ class PointGift extends Model
|
||||
protected $_course_attrs = [
|
||||
'id' => 0,
|
||||
'title' => '',
|
||||
'market_price' => 0,
|
||||
'study_expiry_time' => 0,
|
||||
'price' => 0,
|
||||
];
|
||||
|
||||
/**
|
||||
|
@ -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();
|
||||
|
@ -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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user