1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-06-30 06:11:38 +08:00

枚举类型由字符->整型

This commit is contained in:
xiaochong0302 2020-08-24 20:52:06 +08:00
parent 335adbb050
commit 4168f184e9
62 changed files with 432 additions and 402 deletions

2
.gitignore vendored
View File

@ -2,6 +2,8 @@
/vendor /vendor
/config/config.php /config/config.php
/config/xs.course.ini /config/xs.course.ini
/config/xs.group.ini
/config/xs.user.ini
/public/robots.txt /public/robots.txt
/public/sitemap.xml /public/sitemap.xml
*KgTest* *KgTest*

View File

@ -46,24 +46,24 @@ class LiveNoticeConsumerTask extends Task
$now = time(); $now = time();
$removeList = [];
foreach ($members as $member) { foreach ($members as $member) {
list($chapterId, $userId, $startTime) = explode(':', $member); list($chapterId, $userId, $startTime) = explode(':', $member);
$remove = false;
if ($now - $startTime < 3600) { if ($now - $startTime < 3600) {
$smser->handle($chapterId, $userId, $startTime); $smser->handle($chapterId, $userId, $startTime);
$remove = true; $removeList[] = $member;
} }
if ($now > $startTime) { if ($now > $startTime) {
$remove = true; $removeList[] = $member;
}
} }
if ($remove) { if (count($removeList) > 0) {
$this->redis->sRem($cacheKey, $member); $this->redis->sRem($cacheKey, ...$removeList);
}
} }
} }

View File

@ -54,17 +54,14 @@ class OrderTask extends Task
case OrderModel::ITEM_VIP: case OrderModel::ITEM_VIP:
$this->handleVipOrder($order); $this->handleVipOrder($order);
break; break;
case OrderModel::ITEM_REWARD:
$this->handleRewardOrder($order);
break;
} }
$this->finishOrder($order);
$task->status = TaskModel::STATUS_FINISHED; $task->status = TaskModel::STATUS_FINISHED;
$task->update(); $task->update();
$this->handleOrderNotice($order);
} catch (\Exception $e) { } catch (\Exception $e) {
$task->try_count += 1; $task->try_count += 1;
@ -76,7 +73,7 @@ class OrderTask extends Task
$task->update(); $task->update();
$logger->info('Order Task Exception ' . kg_json_encode([ $logger->info('Order Process Exception ' . kg_json_encode([
'line' => $e->getLine(), 'line' => $e->getLine(),
'code' => $e->getCode(), 'code' => $e->getCode(),
'message' => $e->getMessage(), 'message' => $e->getMessage(),
@ -84,15 +81,23 @@ class OrderTask extends Task
])); ]));
} }
/** if ($task->status == TaskModel::STATUS_FINISHED) {
* 任务失败,申请退款 $this->handleOrderNotice($order);
*/ } elseif ($task->status == TaskModel::STATUS_FAILED) {
if ($task->status == TaskModel::STATUS_FAILED) {
$this->handleOrderRefund($order); $this->handleOrderRefund($order);
} }
} }
} }
protected function finishOrder(OrderModel $order)
{
$order->status = OrderModel::STATUS_FINISHED;
if ($order->update() === false) {
throw new \RuntimeException('Finish Order Failed');
}
}
protected function handleCourseOrder(OrderModel $order) protected function handleCourseOrder(OrderModel $order)
{ {
/** /**
@ -101,7 +106,7 @@ class OrderTask extends Task
$itemInfo = $order->item_info; $itemInfo = $order->item_info;
$data = [ $data = [
'user_id' => $order->user_id, 'user_id' => $order->owner_id,
'course_id' => $order->item_id, 'course_id' => $order->item_id,
'expiry_time' => $itemInfo['course']['study_expiry_time'], 'expiry_time' => $itemInfo['course']['study_expiry_time'],
'role_type' => CourseUserModel::ROLE_STUDENT, 'role_type' => CourseUserModel::ROLE_STUDENT,
@ -111,7 +116,7 @@ class OrderTask extends Task
$courseUser = new CourseUserModel(); $courseUser = new CourseUserModel();
if ($courseUser->create($data) === false) { if ($courseUser->create($data) === false) {
throw new \RuntimeException('Create CourseQuery User Failed'); throw new \RuntimeException('Create Course User Failed');
} }
} }
@ -125,7 +130,7 @@ class OrderTask extends Task
foreach ($itemInfo['courses'] as $course) { foreach ($itemInfo['courses'] as $course) {
$data = [ $data = [
'user_id' => $order->user_id, 'user_id' => $order->owner_id,
'course_id' => $course['id'], 'course_id' => $course['id'],
'expiry_time' => $course['study_expiry_time'], 'expiry_time' => $course['study_expiry_time'],
'role_type' => CourseUserModel::ROLE_STUDENT, 'role_type' => CourseUserModel::ROLE_STUDENT,
@ -144,7 +149,7 @@ class OrderTask extends Task
{ {
$userRepo = new UserRepo(); $userRepo = new UserRepo();
$user = $userRepo->findById($order->user_id); $user = $userRepo->findById($order->owner_id);
/** /**
* @var array $itemInfo * @var array $itemInfo
@ -158,11 +163,6 @@ class OrderTask extends Task
} }
} }
protected function handleRewardOrder(OrderModel $order)
{
}
protected function handleOrderNotice(OrderModel $order) protected function handleOrderNotice(OrderModel $order)
{ {
$smser = new OrderSmser(); $smser = new OrderSmser();
@ -180,11 +180,11 @@ class OrderTask extends Task
$refund->subject = $order->subject; $refund->subject = $order->subject;
$refund->amount = $order->amount; $refund->amount = $order->amount;
$refund->apply_note = '开通服务失败,自动退款';
$refund->review_note = '自动操作';
$refund->user_id = $order->user_id; $refund->user_id = $order->user_id;
$refund->order_id = $order->id; $refund->order_id = $order->id;
$refund->trade_id = $trade->id; $refund->trade_id = $trade->id;
$refund->apply_note = '开通服务失败,自动退款';
$refund->review_note = '自动操作';
$refund->create(); $refund->create();
} }

View File

@ -3,11 +3,11 @@
{% block content %} {% block content %}
{%- macro content_title(model) %} {%- macro content_title(model) %}
{% if model == 'vod' %} {% if model == '1' %}
点播信息 点播信息
{% elseif model == 'live' %} {% elseif model == '2' %}
直播信息 直播信息
{% elseif model == 'read' %} {% elseif model == '3' %}
图文信息 图文信息
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}
@ -26,11 +26,11 @@
{{ partial('chapter/edit_lesson_basic') }} {{ partial('chapter/edit_lesson_basic') }}
</div> </div>
<div class="layui-tab-item"> <div class="layui-tab-item">
{% if course.model == 'vod' %} {% if course.model == '1' %}
{{ partial('chapter/edit_lesson_vod') }} {{ partial('chapter/edit_lesson_vod') }}
{% elseif course.model == 'live' %} {% elseif course.model == '2' %}
{{ partial('chapter/edit_lesson_live') }} {{ partial('chapter/edit_lesson_live') }}
{% elseif course.model == 'read' %} {% elseif course.model == '3' %}
{{ partial('chapter/edit_lesson_read') }} {{ partial('chapter/edit_lesson_read') }}
{% endif %} {% endif %}
</div> </div>
@ -41,7 +41,7 @@
{% block link_css %} {% block link_css %}
{% if chapter.model == 'read' %} {% if chapter.model == '3' %}
{{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }} {{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }}
{% endif %} {% endif %}
@ -49,12 +49,12 @@
{% block include_js %} {% block include_js %}
{% if chapter.model == 'read' %} {% if chapter.model == '3' %}
{{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }} {{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }}
{{ js_include('admin/js/vditor.js') }} {{ js_include('admin/js/vditor.js') }}
{% elseif chapter.model == 'vod' %} {% elseif chapter.model == '1' %}
{{ js_include('lib/vod-js-sdk-v6.min.js') }} {{ js_include('lib/vod-js-sdk-v6.min.js') }}
{{ js_include('lib/clipboard.min.js') }} {{ js_include('lib/clipboard.min.js') }}

View File

@ -21,11 +21,11 @@
</div> </div>
</div> </div>
{% if course.model == 'vod' %} {% if course.model == '1' %}
{{ partial('chapter/lessons_vod') }} {{ partial('chapter/lessons_vod') }}
{% elseif course.model == 'live' %} {% elseif course.model == '2' %}
{{ partial('chapter/lessons_live') }} {{ partial('chapter/lessons_live') }}
{% elseif course.model == 'read' %} {% elseif course.model == '3' %}
{{ partial('chapter/lessons_read') }} {{ partial('chapter/lessons_read') }}
{% endif %} {% endif %}

View File

@ -9,9 +9,9 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">类型</label> <label class="layui-form-label">类型</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="model" value="vod" title="点播" lay-filter="model" checked="checked"> <input type="radio" name="model" value="1" title="点播" lay-filter="model" checked="checked">
<input type="radio" name="model" value="live" title="直播" lay-filter="model"> <input type="radio" name="model" value="2" title="直播" lay-filter="model">
<input type="radio" name="model" value="read" title="图文" lay-filter="model"> <input type="radio" name="model" value="3" title="图文" lay-filter="model">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
@ -47,9 +47,9 @@
var form = layui.form; var form = layui.form;
var modelTips = { var modelTips = {
vod: '通过音视频呈现课程内容,内容可视化,有图像有声音,适合大部分场景', '1': '通过音视频呈现课程内容,内容可视化,有图像有声音,适合大部分场景',
live: '通过直播呈现课程内容,交互性强,适合需要交互反馈、情绪表达的场景', '2': '通过直播呈现课程内容,交互性强,适合需要交互反馈、情绪表达的场景',
read: '通过图文呈现课程内容,简单直接,适合撰写文档、书籍、教程的场景' '3': '通过图文呈现课程内容,简单直接,适合撰写文档、书籍、教程的场景'
}; };
var modelTipsBlock = $('#model-tips'); var modelTipsBlock = $('#model-tips');
@ -58,8 +58,7 @@
modelTipsBlock.html(modelTips[data.value]); modelTipsBlock.html(modelTips[data.value]);
}); });
modelTipsBlock.html(modelTips.vod); modelTipsBlock.html(modelTips['1']);
}); });
</script> </script>

View File

@ -30,10 +30,10 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">难度</label> <label class="layui-form-label">难度</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="level" value="entry" title="入门" {% if course.level == 'entry' %}checked{% endif %}> <input type="radio" name="level" value="1" title="入门" {% if course.level == '1' %}checked{% endif %}>
<input type="radio" name="level" value="junior" title="初级" {% if course.level == 'junior' %}checked{% endif %}> <input type="radio" name="level" value="2" title="初级" {% if course.level == '2' %}checked{% endif %}>
<input type="radio" name="level" value="medium" title="中级" {% if course.level == 'medium' %}checked{% endif %}> <input type="radio" name="level" value="3" title="中级" {% if course.level == '3' %}checked{% endif %}>
<input type="radio" name="level" value="senior" title="高级" {% if course.level == 'senior' %}checked{% endif %}> <input type="radio" name="level" value="4" title="高级" {% if course.level == '4' %}checked{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -3,24 +3,24 @@
{% block content %} {% block content %}
{%- macro model_info(value) %} {%- macro model_info(value) %}
{% if value == 'vod' %} {% if value == 1 %}
<span class="layui-badge layui-bg-green">点播</span> <span class="layui-badge layui-bg-green">点播</span>
{% elseif value == 'live' %} {% elseif value == 2 %}
<span class="layui-badge layui-bg-blue">直播</span> <span class="layui-badge layui-bg-blue">直播</span>
{% elseif value == 'read' %} {% elseif value == 3 %}
<span class="layui-badge layui-bg-black">图文</span> <span class="layui-badge layui-bg-black">图文</span>
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}
{%- macro level_info(value) %} {%- macro level_info(value) %}
难度:<span class="layui-badge layui-bg-gray"> 难度:<span class="layui-badge layui-bg-gray">
{% if value == 'entry' %} {% if value == 1 %}
入门 入门
{% elseif value == 'junior' %} {% elseif value == 2 %}
初级 初级
{% elseif value == 'medium' %} {% elseif value == 3 %}
中级 中级
{% elseif value == 'senior' %} {% elseif value == 4 %}
高级 高级
{% endif %} {% endif %}
</span> </span>

View File

@ -33,18 +33,18 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">模型</label> <label class="layui-form-label">模型</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="model" value="vod" title="点播"> <input type="radio" name="model" value="1" title="点播">
<input type="radio" name="model" value="live" title="直播"> <input type="radio" name="model" value="2" title="直播">
<input type="radio" name="model" value="read" title="图文"> <input type="radio" name="model" value="3" title="图文">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">难度</label> <label class="layui-form-label">难度</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="level" value="entry" title="入门"> <input type="radio" name="level" value="1" title="入门">
<input type="radio" name="level" value="junior" title="初级"> <input type="radio" name="level" value="2" title="初级">
<input type="radio" name="level" value="medium" title="中级"> <input type="radio" name="level" value="3" title="中级">
<input type="radio" name="level" value="senior" title="高级"> <input type="radio" name="level" value="4" title="高级">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -21,9 +21,9 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">类型</label> <label class="layui-form-label">类型</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="type" value="course" title="课程" disabled="disabled"> <input type="radio" name="type" value="1" title="课程" disabled="disabled">
<input type="radio" name="type" value="chat" title="聊天" checked="checked"> <input type="radio" name="type" value="2" title="聊天" checked="checked">
<input type="radio" name="type" value="staff" title="员工"> <input type="radio" name="type" value="3" title="员工">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -3,10 +3,12 @@
{% block content %} {% block content %}
{%- macro type_info(value) %} {%- macro type_info(value) %}
{% if value == 'course' %} {% if value == 1 %}
<span class="layui-badge layui-bg-green">课</span> <span class="layui-badge layui-bg-green">课</span>
{% elseif value == 'chat' %} {% elseif value == 2 %}
<span class="layui-badge layui-bg-blue">聊</span> <span class="layui-badge layui-bg-blue">聊</span>
{% elseif value == 3 %}
<span class="layui-badge layui-bg-cyan">职</span>
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}

View File

@ -33,8 +33,9 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">类型</label> <label class="layui-form-label">类型</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="type" value="course" title="课程"> <input type="radio" name="type" value="1" title="课程">
<input type="radio" name="type" value="chat" title="聊天"> <input type="radio" name="type" value="2" title="聊天">
<input type="radio" name="type" value="3" title="职工">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -1,12 +1,12 @@
{%- macro item_info(order) %} {%- macro item_info(order) %}
{% if order.item_type == 'course' %} {% if order.item_type == '1' %}
{% set course = order.item_info['course'] %} {% set course = order.item_info['course'] %}
<div class="kg-order-item"> <div class="kg-order-item">
<p>课程名称:{{ course['title'] }}</p> <p>课程名称:{{ course['title'] }}</p>
<p>市场价格:{{ '¥%0.2f'|format(course['market_price']) }},会员价格:{{ '¥%0.2f'|format(course['vip_price']) }}</p> <p>市场价格:{{ '¥%0.2f'|format(course['market_price']) }},会员价格:{{ '¥%0.2f'|format(course['vip_price']) }}</p>
<p>学习期限:{{ date('Y-m-d H:i:s',course['study_expiry_time']) }},退款期限:{{ date('Y-m-d H:i:s',course['refund_expiry_time']) }}</p> <p>学习期限:{{ date('Y-m-d H:i:s',course['study_expiry_time']) }},退款期限:{{ date('Y-m-d H:i:s',course['refund_expiry_time']) }}</p>
</div> </div>
{% elseif order.item_type == 'package' %} {% elseif order.item_type == '2' %}
{% set courses = order.item_info['courses'] %} {% set courses = order.item_info['courses'] %}
{% for course in courses %} {% for course in courses %}
<div class="kg-order-item"> <div class="kg-order-item">
@ -15,20 +15,20 @@
<p>学习期限:{{ date('Y-m-d H:i:s',course['study_expiry_time']) }},退款期限:{{ date('Y-m-d H:i:s',course['refund_expiry_time']) }}</p> <p>学习期限:{{ date('Y-m-d H:i:s',course['study_expiry_time']) }},退款期限:{{ date('Y-m-d H:i:s',course['refund_expiry_time']) }}</p>
</div> </div>
{% endfor %} {% endfor %}
{% elseif order.item_type == 'vip' %} {% elseif order.item_type == '3' %}
{% set vip = order.item_info['vip'] %}
<div class="kg-order-item">
<p>商品名称:{{ order.subject }}</p>
<p>商品价格:{{ '¥%0.2f'|format(order.amount) }}</p>
</div>
{% elseif order.item_type == 'reward' %}
{% set course = order.item_info['course'] %} {% set course = order.item_info['course'] %}
{% set reward = order.item_info['reward'] %} {% set reward = order.item_info['reward'] %}
<div class="kg-order-item"> <div class="kg-order-item">
<p>商品名称:{{ order.subject }}</p> <p>商品名称:{{ order.subject }}</p>
<p>商品价格:{{ '¥%0.2f'|format(order.amount) }}</p> <p>商品价格:{{ '¥%0.2f'|format(order.amount) }}</p>
</div> </div>
{% elseif order.item_type == 'test' %} {% elseif order.item_type == '4' %}
{% set vip = order.item_info['vip'] %}
<div class="kg-order-item">
<p>商品名称:{{ order.subject }}</p>
<p>商品价格:{{ '¥%0.2f'|format(order.amount) }}</p>
</div>
{% elseif order.item_type == '99' %}
<div class="kg-order-item"> <div class="kg-order-item">
<p>商品名称:{{ order.subject }}</p> <p>商品名称:{{ order.subject }}</p>
<p>商品价格:{{ '¥%0.2f'|format(order.amount) }}</p> <p>商品价格:{{ '¥%0.2f'|format(order.amount) }}</p>
@ -37,27 +37,29 @@
{%- endmacro %} {%- endmacro %}
{%- macro item_type(value) %} {%- macro item_type(value) %}
{% if value == 'course' %} {% if value == 1 %}
<span class="layui-badge layui-bg-green">课程</span> <span class="layui-badge layui-bg-green">课程</span>
{% elseif value == 'package' %} {% elseif value == 2 %}
<span class="layui-badge layui-bg-blue">套餐</span> <span class="layui-badge layui-bg-blue">套餐</span>
{% elseif value == 'vip' %} {% elseif value == 3 %}
<span class="layui-badge layui-bg-orange">会员</span>
{% elseif value == 'reward' %}
<span class="layui-badge layui-bg-red">赞赏</span> <span class="layui-badge layui-bg-red">赞赏</span>
{% elseif value == 'test' %} {% elseif value == 4 %}
<span class="layui-badge layui-bg-orange">会员</span>
{% elseif value == 99 %}
<span class="layui-badge layui-bg-black">测试</span> <span class="layui-badge layui-bg-black">测试</span>
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}
{%- macro order_status(value) %} {%- macro order_status(value) %}
{% if value == 'pending' %} {% if value == 1 %}
<span class="layui-badge layui-bg-blue">待支付</span> <span class="layui-badge layui-bg-blue">待支付</span>
{% elseif value == 'finished' %} {% elseif value == 2 %}
<span class="layui-badge layui-bg-gray">发货中</span>
{% elseif value == 3 %}
<span class="layui-badge layui-bg-green">已完成</span> <span class="layui-badge layui-bg-green">已完成</span>
{% elseif value == 'closed' %} {% elseif value == 4 %}
<span class="layui-badge layui-bg-cyan">已关闭</span> <span class="layui-badge layui-bg-cyan">已关闭</span>
{% elseif value == 'refunded' %} {% elseif value == 5 %}
<span class="layui-badge layui-bg-red">已退款</span> <span class="layui-badge layui-bg-red">已退款</span>
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}

View File

@ -21,20 +21,21 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">订单类型</label> <label class="layui-form-label">订单类型</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="item_type" value="course" title="课程"> <input type="radio" name="item_type" value="1" title="课程">
<input type="radio" name="item_type" value="package" title="套餐"> <input type="radio" name="item_type" value="2" title="套餐">
<input type="radio" name="item_type" value="reward" title="赞赏"> <input type="radio" name="item_type" value="3" title="赞赏">
<input type="radio" name="item_type" value="vip" title="会员"> <input type="radio" name="item_type" value="4" title="会员">
<input type="radio" name="item_type" value="test" title="测试"> <input type="radio" name="item_type" value="99" title="测试">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">订单状态</label> <label class="layui-form-label">订单状态</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="status" value="pending" title="待支付"> <input type="radio" name="status" value="1" title="待支付">
<input type="radio" name="status" value="finished" title="已完成"> <input type="radio" name="status" value="2" title="发货中">
<input type="radio" name="status" value="closed" title="已关闭"> <input type="radio" name="status" value="3" title="已完成">
<input type="radio" name="status" value="refunded" title="已退款"> <input type="radio" name="status" value="4" title="已关闭">
<input type="radio" name="status" value="5" title="已退款">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -1,32 +1,32 @@
{%- macro refund_status(value) %} {%- macro refund_status(value) %}
{% if value == 'pending' %} {% if value == 1 %}
<span class="layui-badge layui-bg-blue">待处理</span> <span class="layui-badge layui-bg-blue">待处理</span>
{% elseif value == 'canceled' %} {% elseif value == 2 %}
<span class="layui-badge layui-bg-gray">已取消</span> <span class="layui-badge layui-bg-gray">已取消</span>
{% elseif value == 'approved' %} {% elseif value == 3 %}
<span class="layui-badge layui-bg-orange">已审核</span> <span class="layui-badge layui-bg-orange">已审核</span>
{% elseif value == 'refused' %} {% elseif value == 4 %}
<span class="layui-badge layui-bg-red">已拒绝</span> <span class="layui-badge layui-bg-red">已拒绝</span>
{% elseif value == 'finished' %} {% elseif value == 5 %}
<span class="layui-badge layui-bg-green">已完成</span> <span class="layui-badge layui-bg-green">已完成</span>
{% elseif value == 'failed' %} {% elseif value == 6 %}
<span class="layui-badge layui-bg-cyan">已失败</span> <span class="layui-badge layui-bg-cyan">已失败</span>
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}
{%- macro refund_status_history(items) %} {%- macro refund_status_history(items) %}
{% for item in items %} {% for item in items %}
{% if item.status == 'pending' %} {% if item.status == 1 %}
<p>创建时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>创建时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% elseif item.status == 'canceled' %} {% elseif item.status == 2 %}
<p>取消时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>取消时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% elseif item.status == 'approved' %} {% elseif item.status == 3 %}
<p>过审时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>过审时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% elseif item.status == 'refused' %} {% elseif item.status == 4 %}
<p>拒绝时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>拒绝时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% elseif item.status == 'finished' %} {% elseif item.status == 5 %}
<p>完成时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>完成时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% elseif item.status == 'failed' %} {% elseif item.status == 6 %}
<p>失败时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>失败时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% endif %} {% endif %}
{% endfor %} {% endfor %}

View File

@ -21,11 +21,11 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">退款状态</label> <label class="layui-form-label">退款状态</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="status" value="pending" title="待处理"> <input type="radio" name="status" value="1" title="待处理">
<input type="radio" name="status" value="canceled" title="已取消"> <input type="radio" name="status" value="2" title="已取消">
<input type="radio" name="status" value="approved" title="已审核"> <input type="radio" name="status" value="3" title="已审核">
<input type="radio" name="status" value="refused" title="已拒绝"> <input type="radio" name="status" value="4" title="已拒绝">
<input type="radio" name="status" value="finished" title="已完成"> <input type="radio" name="status" value="5" title="已完成">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -47,8 +47,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">审核结果</label> <label class="layui-form-label">审核结果</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="review_status" value="approved" title="同意"> <input type="radio" name="review_status" value="3" title="同意">
<input type="radio" name="review_status" value="refused" title="拒绝"> <input type="radio" name="review_status" value="4" title="拒绝">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -1,32 +1,32 @@
{%- macro channel_type(value) %} {%- macro channel_type(value) %}
{% if value == 'alipay' %} {% if value == '1' %}
<span class="layui-badge layui-bg-blue">支付宝</span> <span class="layui-badge layui-bg-blue">支付宝</span>
{% elseif value == 'wxpay' %} {% elseif value == '2' %}
<span class="layui-badge layui-bg-green">微信</span> <span class="layui-badge layui-bg-green">微信</span>
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}
{%- macro trade_status(value) %} {%- macro trade_status(value) %}
{% if value == 'pending' %} {% if value == 1 %}
<span class="layui-badge layui-bg-blue">待支付</span> <span class="layui-badge layui-bg-blue">待支付</span>
{% elseif value == 'finished' %} {% elseif value == 2 %}
<span class="layui-badge layui-bg-green">已完成</span> <span class="layui-badge layui-bg-green">已完成</span>
{% elseif value == 'closed' %} {% elseif value == 3 %}
<span class="layui-badge layui-bg-cyan">已关闭</span> <span class="layui-badge layui-bg-cyan">已关闭</span>
{% elseif value == 'refunded' %} {% elseif value == 4 %}
<span class="layui-badge layui-bg-red">已退款</span> <span class="layui-badge layui-bg-red">已退款</span>
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}
{%- macro trade_status_history(items) %} {%- macro trade_status_history(items) %}
{% for item in items %} {% for item in items %}
{% if item.status == 'pending' %} {% if item.status == 1 %}
<p>创建时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>创建时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% elseif item.status == 'finished' %} {% elseif item.status == 2 %}
<p>完成时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>完成时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% elseif item.status == 'closed' %} {% elseif item.status == 3 %}
<p>关闭时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>关闭时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% elseif item.status == 'refunded' %} {% elseif item.status == 4 %}
<p>退款时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>退款时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% endif %} {% endif %}
{% endfor %} {% endfor %}

View File

@ -21,17 +21,17 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">交易平台</label> <label class="layui-form-label">交易平台</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="channel" value="alipay" title="支付宝"> <input type="radio" name="channel" value="1" title="支付宝">
<input type="radio" name="channel" value="wxpay" title="微信"> <input type="radio" name="channel" value="2" title="微信">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">交易状态</label> <label class="layui-form-label">交易状态</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="status" value="pending" title="待支付"> <input type="radio" name="status" value="1" title="待支付">
<input type="radio" name="status" value="finished" title="已完成"> <input type="radio" name="status" value="2" title="已完成">
<input type="radio" name="status" value="closed" title="已关闭"> <input type="radio" name="status" value="3" title="已关闭">
<input type="radio" name="status" value="refunded" title="已退款"> <input type="radio" name="status" value="4" title="已退款">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -70,8 +70,6 @@ class MyController extends Controller
$pager = $service->handle(); $pager = $service->handle();
$pager->items = kg_array_object($pager->items);
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
@ -84,8 +82,6 @@ class MyController extends Controller
$pager = $service->handle(); $pager = $service->handle();
$pager->items = kg_array_object($pager->items);
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
@ -98,8 +94,6 @@ class MyController extends Controller
$pager = $service->handle(); $pager = $service->handle();
$pager->items = kg_array_object($pager->items);
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
@ -112,8 +106,6 @@ class MyController extends Controller
$pager = $service->handle(); $pager = $service->handle();
$pager->items = kg_array_object($pager->items);
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
@ -126,8 +118,6 @@ class MyController extends Controller
$pager = $service->handle(); $pager = $service->handle();
$pager->items = kg_array_object($pager->items);
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
@ -140,8 +130,6 @@ class MyController extends Controller
$pager = $service->handle(); $pager = $service->handle();
$pager->items = kg_array_object($pager->items);
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }

View File

@ -1,6 +1,6 @@
<div class="package-list"> <div class="package-list">
{% for package in packages %} {% for package in packages %}
{% set order_url = url({'for':'desktop.order.confirm'},{'item_id':package.id,'item_type':'package'}) %} {% set order_url = url({'for':'desktop.order.confirm'},{'item_id':package.id,'item_type':2}) %}
<div class="package-item clearfix"> <div class="package-item clearfix">
<div class="package-info"> <div class="package-info">
<div class="title">{{ package.title }}</div> <div class="title">{{ package.title }}</div>

View File

@ -53,11 +53,11 @@
<div class="layui-colla-content layui-show"> <div class="layui-colla-content layui-show">
<ul class="lesson-list"> <ul class="lesson-list">
{% for lesson in chapter.children %} {% for lesson in chapter.children %}
{% if lesson.model == 'vod' %} {% if lesson.model == '1' %}
<li class="lesson-item clearfix">{{ vod_lesson_info(lesson) }}</li> <li class="lesson-item clearfix">{{ vod_lesson_info(lesson) }}</li>
{% elseif lesson.model == 'live' %} {% elseif lesson.model == '2' %}
<li class="lesson-item clearfix">{{ live_lesson_info(lesson) }}</li> <li class="lesson-item clearfix">{{ live_lesson_info(lesson) }}</li>
{% elseif lesson.model == 'read' %} {% elseif lesson.model == '3' %}
<li class="lesson-item clearfix">{{ read_lesson_info(lesson) }}</li> <li class="lesson-item clearfix">{{ read_lesson_info(lesson) }}</li>
{% endif %} {% endif %}
{% endfor %} {% endfor %}

View File

@ -3,11 +3,11 @@
<img src="{{ course.cover }}" alt="{{ course.title|e }}"> <img src="{{ course.cover }}" alt="{{ course.title|e }}">
</div> </div>
<div class="info"> <div class="info">
{% if course.model == 'vod' %} {% if course.model == '1' %}
<p class="item"> <p class="item">
<span class="key">课程时长</span><span class="value">{{ course.attrs.duration|duration }}</span> <span class="key">课程时长</span><span class="value">{{ course.attrs.duration|duration }}</span>
</p> </p>
{% elseif course.model == 'live' %} {% elseif course.model == '2' %}
<p class="item"> <p class="item">
<span class="key">直播时间</span><span>{{ course.attrs.start_date }} ~ {{ course.attrs.end_date }}</span> <span class="key">直播时间</span><span>{{ course.attrs.start_date }} ~ {{ course.attrs.end_date }}</span>
</p> </p>

View File

@ -1,5 +1,5 @@
{% if course.me.owned == 0 and course.market_price > 0 %} {% if course.me.owned == 0 and course.market_price > 0 %}
{% set order_url = url({'for':'desktop.order.confirm'},{'item_id':course.id,'item_type':'course'}) %} {% set order_url = url({'for':'desktop.order.confirm'},{'item_id':course.id,'item_type':1}) %}
<div class="sidebar wrap"> <div class="sidebar wrap">
<button class="layui-btn layui-btn-fluid layui-bg-red btn-buy" data-url="{{ order_url }}">立即购买</button> <button class="layui-btn layui-btn-fluid layui-bg-red btn-buy" data-url="{{ order_url }}">立即购买</button>
</div> </div>
@ -13,7 +13,7 @@
<div class="sidebar-order"> <div class="sidebar-order">
{% for reward in rewards %} {% for reward in rewards %}
{% set item_id = [course.id,reward.id]|join('-') %} {% set item_id = [course.id,reward.id]|join('-') %}
{% set order_url = url({'for':'desktop.order.confirm'},{'item_id':item_id,'item_type':'reward'}) %} {% set order_url = url({'for':'desktop.order.confirm'},{'item_id':item_id,'item_type':3}) %}
<button class="layui-btn layui-btn-xs btn-reward" data-url="{{ order_url }}">{{ reward.title }}</button> <button class="layui-btn layui-btn-xs btn-reward" data-url="{{ order_url }}">{{ reward.title }}</button>
{% endfor %} {% endfor %}
</div> </div>

View File

@ -5,6 +5,7 @@
<div class="layui-fluid"> <div class="layui-fluid">
<div class="kg-tips"> <div class="kg-tips">
<i class="layui-icon layui-icon-face-surprised"></i> <i class="layui-icon layui-icon-face-surprised"></i>
<div class="message">{{ flashSession.output() }}</div>
<div class="layui-text"> <div class="layui-text">
<h1> <h1>
<span class="layui-anim layui-anim-loop">4</span> <span class="layui-anim layui-anim-loop">4</span>

View File

@ -1,6 +1,7 @@
{% extends 'templates/error.volt' %} {% extends 'templates/error.volt' %}
{% block content %} {% block content %}
<div class="layui-fluid"> <div class="layui-fluid">
<div class="kg-tips"> <div class="kg-tips">
<i class="layui-icon layui-icon-face-surprised"></i> <i class="layui-icon layui-icon-face-surprised"></i>
@ -14,4 +15,5 @@
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,21 +1,21 @@
{%- macro model_info(value) %} {%- macro model_info(value) %}
{% if value == 'vod' %} {% if value == '1' %}
<span class="layui-badge layui-bg-green">点播</span> <span class="layui-badge layui-bg-green">点播</span>
{% elseif value == 'live' %} {% elseif value == '2' %}
<span class="layui-badge layui-bg-blue">直播</span> <span class="layui-badge layui-bg-blue">直播</span>
{% elseif value == 'read' %} {% elseif value == '3' %}
<span class="layui-badge layui-bg-black">图文</span> <span class="layui-badge layui-bg-black">图文</span>
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}
{%- macro level_info(value) %} {%- macro level_info(value) %}
{% if value == 'entry' %} {% if value == '1' %}
入门 入门
{% elseif value == 'junior' %} {% elseif value == '2' %}
初级 初级
{% elseif value == 'medium' %} {% elseif value == '3' %}
中级 中级
{% elseif value == 'senior' %} {% elseif value == '4' %}
高级 高级
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}

View File

@ -1,9 +1,9 @@
{%- macro type_info(value) %} {%- macro type_info(value) %}
{% if value == 'course' %} {% if value == '1' %}
<span class="layui-badge layui-bg-green type" title="课程交流">课</span> <span class="layui-badge layui-bg-green type" title="课程交流">课</span>
{% elseif value == 'chat' %} {% elseif value == '2' %}
<span class="layui-badge layui-bg-blue type" title="课外畅聊">聊</span> <span class="layui-badge layui-bg-blue type" title="课外畅聊">聊</span>
{% elseif value == 'staff' %} {% elseif value == '3' %}
<span class="layui-badge layui-bg-cyan type" title="职工交流">职</span> <span class="layui-badge layui-bg-cyan type" title="职工交流">职</span>
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}

View File

@ -1,12 +1,12 @@
{%- macro item_info(order) %} {%- macro item_info(order) %}
{% if order.item_type == 'course' %} {% if order.item_type == '1' %}
{% set course = order.item_info.course %} {% set course = order.item_info.course %}
<div class="order-item"> <div class="order-item">
<p>课程名称:<span>{{ course.title }}</span></p> <p>课程名称:<span>{{ course.title }}</span></p>
<p>市场价格:<span class="price">{{ '¥%0.2f'|format(course.market_price) }}</span>会员价格:<span class="price">{{ '¥%0.2f'|format(course.vip_price) }}</span></p> <p>市场价格:<span class="price">{{ '¥%0.2f'|format(course.market_price) }}</span>会员价格:<span class="price">{{ '¥%0.2f'|format(course.vip_price) }}</span></p>
<p>学习期限:<span>{{ date('Y-m-d',course.study_expiry_time) }}</span>退款期限:<span>{{ date('Y-m-d',course.refund_expiry_time) }}</span></p> <p>学习期限:<span>{{ date('Y-m-d',course.study_expiry_time) }}</span>退款期限:<span>{{ date('Y-m-d',course.refund_expiry_time) }}</span></p>
</div> </div>
{% elseif order.item_type == 'package' %} {% elseif order.item_type == '2' %}
{% set courses = order.item_info.courses %} {% set courses = order.item_info.courses %}
{% for course in courses %} {% for course in courses %}
<div class="order-item"> <div class="order-item">
@ -15,20 +15,20 @@
<p>学习期限:<span>{{ date('Y-m-d',course.study_expiry_time) }}</span>退款期限:<span>{{ date('Y-m-d',course.refund_expiry_time) }}</span></p> <p>学习期限:<span>{{ date('Y-m-d',course.study_expiry_time) }}</span>退款期限:<span>{{ date('Y-m-d',course.refund_expiry_time) }}</span></p>
</div> </div>
{% endfor %} {% endfor %}
{% elseif order.item_type == 'vip' %} {% elseif order.item_type == '3' %}
{% set vip = order.item_info.vip %}
<div class="order-item">
<p>商品名称:<span>{{ order.subject }}</span></p>
<p>商品价格:<span class="price">{{ '¥%0.2f'|format(order.amount) }}</span></p>
</div>
{% elseif order.item_type == 'reward' %}
{% set course = order.item_info.course %} {% set course = order.item_info.course %}
{% set reward = order.item_info.reward %} {% set reward = order.item_info.reward %}
<div class="order-item"> <div class="order-item">
<p>课程名称:<span>{{ course.title }}</span></p> <p>课程名称:<span>{{ course.title }}</span></p>
<p>赞赏金额:<span class="price">{{ '¥%0.2f'|format(reward.price) }}</span></p> <p>赞赏金额:<span class="price">{{ '¥%0.2f'|format(reward.price) }}</span></p>
</div> </div>
{% elseif order.item_type == 'test' %} {% elseif order.item_type == '4' %}
{% set vip = order.item_info.vip %}
<div class="order-item">
<p>商品名称:<span>{{ order.subject }}</span></p>
<p>商品价格:<span class="price">{{ '¥%0.2f'|format(order.amount) }}</span></p>
</div>
{% elseif order.item_type == '99' %}
<div class="order-item"> <div class="order-item">
<p>商品名称:<span>{{ order.subject }}</span></p> <p>商品名称:<span>{{ order.subject }}</span></p>
<p>商品价格:<span class="price">{{ '¥%0.2f'|format(order.amount) }}</span></p> <p>商品价格:<span class="price">{{ '¥%0.2f'|format(order.amount) }}</span></p>
@ -38,26 +38,30 @@
{%- macro status_history(items) %} {%- macro status_history(items) %}
{% for item in items %} {% for item in items %}
{% if item.status == 'pending' %} {% if item.status == '1' %}
<p>创建时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>创建时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% elseif item.status == 'finished' %} {% elseif item.status == '2' %}
<p>支付时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% elseif item.status == '3' %}
<p>完成时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>完成时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% elseif item.status == 'closed' %} {% elseif item.status == '4' %}
<p>关闭时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>关闭时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% elseif item.status == 'refunded' %} {% elseif item.status == '5' %}
<p>退款时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>退款时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{%- endmacro %} {%- endmacro %}
{%- macro order_status(value) %} {%- macro order_status(value) %}
{% if value == 'pending' %} {% if value == '1' %}
待支付 待支付
{% elseif value == 'finished' %} {% elseif value == '2' %}
发货中
{% elseif value == '3' %}
已完成 已完成
{% elseif value == 'closed' %} {% elseif value == '4' %}
已关闭 已关闭
{% elseif value == 'refunded' %} {% elseif value == '5' %}
已退款 已退款
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}

View File

@ -1,33 +1,33 @@
{%- macro status_history(items) %} {%- macro status_history(items) %}
{% for item in items %} {% for item in items %}
{% if item.status == 'pending' %} {% if item.status == 1 %}
<p>创建时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>创建时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% elseif item.status == 'canceled' %} {% elseif item.status == 2 %}
<p>取消时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>取消时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% elseif item.status == 'approved' %} {% elseif item.status == 3 %}
<p>审核时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>审核时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% elseif item.status == 'refused' %} {% elseif item.status == 4 %}
<p>拒绝时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>拒绝时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% elseif item.status == 'finished' %} {% elseif item.status == 5 %}
<p>完成时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>完成时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% elseif item.status == 'failed' %} {% elseif item.status == 6 %}
<p>失败时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p> <p>失败时间:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{%- endmacro %} {%- endmacro %}
{%- macro refund_status(value) %} {%- macro refund_status(value) %}
{% if value == 'pending' %} {% if value == 1 %}
待处理 待处理
{% elseif value == 'canceled' %} {% elseif value == 2 %}
已取消 已取消
{% elseif value == 'approved' %} {% elseif value == 3 %}
退款中 退款中
{% elseif value == 'refused' %} {% elseif value == 4 %}
已拒绝 已拒绝
{% elseif value == 'finished' %} {% elseif value == 5 %}
已完成 已完成
{% elseif value == 'failed' %} {% elseif value == 6 %}
已失败 已失败
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}

View File

@ -4,8 +4,8 @@
{{ partial('macros/order') }} {{ partial('macros/order') }}
{% set status_types = {'all':'全部','pending':'待支付','finished':'已完成','closed':'已关闭','refunded':'已退款'} %} {% set status_types = {'0':'全部','1':'待支付','3':'已完成','4':'已关闭','5':'已退款'} %}
{% set status = request.get('status','trim','all') %} {% set status = request.get('status','trim','0') %}
<div class="layout-main"> <div class="layout-main">
<div class="my-sidebar">{{ partial('my/menu') }}</div> <div class="my-sidebar">{{ partial('my/menu') }}</div>
@ -14,7 +14,7 @@
<span class="title">我的订单</span> <span class="title">我的订单</span>
{% for key,value in status_types %} {% for key,value in status_types %}
{% set class = (status == key) ? 'layui-btn layui-btn-xs' : 'none' %} {% set class = (status == key) ? 'layui-btn layui-btn-xs' : 'none' %}
{% set url = (key == 'all') ? url({'for':'desktop.my.orders'}) : url({'for':'desktop.my.orders'},{'status':key}) %} {% set url = (key == '0') ? url({'for':'desktop.my.orders'}) : url({'for':'desktop.my.orders'},{'status':key}) %}
<a class="{{ class }}" href="{{ url }}">{{ value }}</a> <a class="{{ class }}" href="{{ url }}">{{ value }}</a>
{% endfor %} {% endfor %}
</div> </div>

View File

@ -4,8 +4,8 @@
{{ partial('macros/refund') }} {{ partial('macros/refund') }}
{% set status_types = {'all':'全部','pending':'待处理','canceled':'已取消','approved':'退款中','finished':'已完成'} %} {% set status_types = {'0':'全部','1':'待处理','2':'已取消','3':'退款中','5':'已完成'} %}
{% set status = request.get('status','trim','all') %} {% set status = request.get('status','int','0') %}
<div class="layout-main"> <div class="layout-main">
<div class="my-sidebar">{{ partial('my/menu') }}</div> <div class="my-sidebar">{{ partial('my/menu') }}</div>

View File

@ -18,7 +18,7 @@
<div class="vip-option-list"> <div class="vip-option-list">
<div class="layui-row layui-col-space20"> <div class="layui-row layui-col-space20">
{% for option in vip_options %} {% for option in vip_options %}
{% set order_url = url({'for':'desktop.order.confirm'},{'item_id':option.id,'item_type':'vip'}) %} {% set order_url = url({'for':'desktop.order.confirm'},{'item_id':option.id,'item_type':4}) %}
<div class="layui-col-md3"> <div class="layui-col-md3">
<div class="vip-option-card"> <div class="vip-option-card">
<div class="title">{{ option.title }}</div> <div class="title">{{ option.title }}</div>

View File

@ -34,7 +34,7 @@ class Pay extends Listener
$order = $orderRepo->findById($trade->order_id); $order = $orderRepo->findById($trade->order_id);
$order->status = OrderModel::STATUS_FINISHED; $order->status = OrderModel::STATUS_SHIPPING;
if ($order->update() === false) { if ($order->update() === false) {
throw new \RuntimeException('Update Order Status Failed'); throw new \RuntimeException('Update Order Status Failed');

View File

@ -188,12 +188,12 @@ class Chapter extends Model
{ {
$this->create_time = time(); $this->create_time = time();
if ($this->parent_id > 0) {
$course = Course::findFirst($this->course_id); $course = Course::findFirst($this->course_id);
$this->model = $course->model; $this->model = $course->model;
if ($this->parent_id > 0) {
$attrs = []; $attrs = [];
switch ($course->model) { switch ($course->model) {

26
app/Models/Client.php Normal file
View File

@ -0,0 +1,26 @@
<?php
namespace App\Models;
class Client
{
/**
* 类型
*/
const TYPE_DESKTOP = 1; // desktop
const TYPE_MOBILE = 2; // mobile
const TYPE_APP = 3; // app
const TYPE_MINI = 4; // 小程序
public static function types()
{
return [
self::TYPE_DESKTOP => 'desktop',
self::TYPE_MOBILE => 'mobile',
self::TYPE_APP => 'app',
self::TYPE_MINI => 'mini',
];
}
}

View File

@ -13,17 +13,17 @@ class Course extends Model
/** /**
* 模型 * 模型
*/ */
const MODEL_VOD = 'vod'; // 点播 const MODEL_VOD = 1; // 点播
const MODEL_LIVE = 'live'; // 直播 const MODEL_LIVE = 2; // 直播
const MODEL_READ = 'read'; // 图文 const MODEL_READ = 3; // 图文
/** /**
* 级别 * 级别
*/ */
const LEVEL_ENTRY = 'entry'; // 入门 const LEVEL_ENTRY = 1; // 入门
const LEVEL_JUNIOR = 'junior'; // 初级 const LEVEL_JUNIOR = 2; // 初级
const LEVEL_MEDIUM = 'medium'; // 中级 const LEVEL_MEDIUM = 3; // 中级
const LEVEL_SENIOR = 'senior'; // 高级 const LEVEL_SENIOR = 4; // 高级
/** /**
* @var array * @var array

View File

@ -27,13 +27,6 @@ class CourseUser extends Model
*/ */
public $id; public $id;
/**
* 计划编号
*
* @var int
*/
public $plan_id;
/** /**
* 课程编号 * 课程编号
* *
@ -48,6 +41,13 @@ class CourseUser extends Model
*/ */
public $user_id; public $user_id;
/**
* 计划编号
*
* @var int
*/
public $plan_id;
/** /**
* 角色类型 * 角色类型
* *
@ -130,8 +130,9 @@ class CourseUser extends Model
public function beforeCreate() public function beforeCreate()
{ {
$this->plan_id = (int)date('Ymd');
$this->create_time = time(); $this->create_time = time();
$this->plan_id = (int)date('Ymd');
} }
public function beforeUpdate() public function beforeUpdate()

View File

@ -12,9 +12,9 @@ class ImGroup extends Model
/** /**
* 群组类型 * 群组类型
*/ */
const TYPE_COURSE = 'course'; // 课程 const TYPE_COURSE = 1; // 课程
const TYPE_CHAT = 'chat'; // 聊天 const TYPE_CHAT = 2; // 聊天
const TYPE_STAFF = 'staff'; // 员工 const TYPE_STAFF = 3; // 员工
/** /**
* 主键编号 * 主键编号

View File

@ -122,7 +122,7 @@ class ImMessage extends Model
sort($list); sort($list);
return implode('_', $list); return implode('-', $list);
} }
} }

View File

@ -5,14 +5,6 @@ namespace App\Models;
class Learning extends Model class Learning extends Model
{ {
/**
* 客户端类型
*/
const CLIENT_DESKTOP = 'desktop';
const CLIENT_MOBILE = 'mobile';
const CLIENT_APP = 'app';
const CLIENT_MINI = 'mini';
/** /**
* 主键编号 * 主键编号
* *
@ -79,7 +71,7 @@ class Learning extends Model
/** /**
* 客户端类型 * 客户端类型
* *
* @var string * @var int
*/ */
public $client_type; public $client_type;

View File

@ -10,27 +10,20 @@ class Order extends Model
/** /**
* 条目类型 * 条目类型
*/ */
const ITEM_COURSE = 'course'; // 课程 const ITEM_COURSE = 1; // 课程
const ITEM_PACKAGE = 'package'; // 套餐 const ITEM_PACKAGE = 2; // 套餐
const ITEM_REWARD = 'reward'; // 赞赏 const ITEM_REWARD = 3; // 赞赏
const ITEM_VIP = 'vip'; // 会员 const ITEM_VIP = 4; // 会员
const ITEM_TEST = 'test'; // 测试 const ITEM_TEST = 99; // 测试
/**
* 终端类型
*/
const CLIENT_DESKTOP = 'desktop'; // pc
const CLIENT_MOBILE = 'mobile'; // mobile
const CLIENT_APP = 'app'; // app
const CLIENT_MINI = 'mini'; // 小程序
/** /**
* 状态类型 * 状态类型
*/ */
const STATUS_PENDING = 'pending'; // 待支付 const STATUS_PENDING = 1; // 待支付
const STATUS_FINISHED = 'finished'; // 已完成 const STATUS_SHIPPING = 2; // 发货中
const STATUS_CLOSED = 'closed'; // 已关闭 const STATUS_FINISHED = 3; // 已完成
const STATUS_REFUNDED = 'refunded'; // 已退款 const STATUS_CLOSED = 4; // 已关闭
const STATUS_REFUNDED = 5; // 已退款
/** /**
* 主键编号 * 主键编号
@ -60,6 +53,20 @@ class Order extends Model
*/ */
public $amount; public $amount;
/**
* 状态类型
*
* @var string
*/
public $status;
/**
* 删除标识
*
* @var int
*/
public $deleted;
/** /**
* 用户编号 * 用户编号
* *
@ -88,17 +95,10 @@ class Order extends Model
*/ */
public $item_info; public $item_info;
/**
* 优惠信息
*
* @var string|array
*/
public $coupon_info;
/** /**
* 终端类型 * 终端类型
* *
* @var string * @var int
*/ */
public $client_type; public $client_type;
@ -109,20 +109,6 @@ class Order extends Model
*/ */
public $client_ip; public $client_ip;
/**
* 状态类型
*
* @var string
*/
public $status;
/**
* 删除标识
*
* @var int
*/
public $deleted;
/** /**
* 创建时间 * 创建时间
* *
@ -158,11 +144,11 @@ class Order extends Model
public function beforeCreate() public function beforeCreate()
{ {
$this->create_time = time(); $this->sn = date('YmdHis') . rand(1000, 9999);
$this->status = self::STATUS_PENDING; $this->status = self::STATUS_PENDING;
$this->sn = date('YmdHis') . rand(1000, 9999); $this->create_time = time();
if (is_array($this->item_info)) { if (is_array($this->item_info)) {
$this->item_info = kg_json_encode($this->item_info); $this->item_info = kg_json_encode($this->item_info);
@ -208,16 +194,6 @@ class Order extends Model
]; ];
} }
public static function clientTypes()
{
return [
self::CLIENT_DESKTOP => 'desktop',
self::CLIENT_MOBILE => 'mobile',
self::CLIENT_APP => 'app',
self::CLIENT_MINI => 'mini',
];
}
public static function statusTypes() public static function statusTypes()
{ {
return [ return [

View File

@ -10,12 +10,12 @@ class Refund extends Model
/** /**
* 状态类型 * 状态类型
*/ */
const STATUS_PENDING = 'pending'; // 待处理 const STATUS_PENDING = 1; // 待处理
const STATUS_CANCELED = 'canceled'; // 已取消 const STATUS_CANCELED = 2; // 已取消
const STATUS_APPROVED = 'approved'; // 已审核 const STATUS_APPROVED = 3; // 已审核
const STATUS_REFUSED = 'refused'; // 已拒绝 const STATUS_REFUSED = 4; // 已拒绝
const STATUS_FINISHED = 'finished'; // 已完成 const STATUS_FINISHED = 5; // 已完成
const STATUS_FAILED = 'failed'; // 已失败 const STATUS_FAILED = 6; // 已失败
/** /**
* 主键编号 * 主键编号
@ -66,20 +66,6 @@ class Refund extends Model
*/ */
public $amount; public $amount;
/**
* 申请备注
*
* @var string
*/
public $apply_note;
/**
* 审核备注
*
* @var string
*/
public $review_note;
/** /**
* 状态类型 * 状态类型
* *
@ -94,6 +80,20 @@ class Refund extends Model
*/ */
public $deleted; public $deleted;
/**
* 申请备注
*
* @var string
*/
public $apply_note;
/**
* 审核备注
*
* @var string
*/
public $review_note;
/** /**
* 创建时间 * 创建时间
* *
@ -129,16 +129,16 @@ class Refund extends Model
public function beforeCreate() public function beforeCreate()
{ {
$this->sn = date('YmdHis') . rand(1000, 9999);
$this->create_time = time();
/** /**
* 退款周期内无条件审批状态为approved * 退款周期内无条件审批状态为approved
*/ */
if (!$this->status) { if (!$this->status) {
$this->status = self::STATUS_PENDING; $this->status = self::STATUS_PENDING;
} }
$this->sn = date('YmdHis') . rand(1000, 9999);
$this->create_time = time();
} }
public function beforeUpdate() public function beforeUpdate()

View File

@ -8,8 +8,8 @@ class Task extends Model
/** /**
* 任务类型 * 任务类型
*/ */
const TYPE_REFUND = 'refund'; // 退款 const TYPE_ORDER = 1; // 下单
const TYPE_ORDER = 'order'; // 下单 const TYPE_REFUND = 2; // 退款
/** /**
* 优先级 * 优先级
@ -21,10 +21,10 @@ class Task extends Model
/** /**
* 状态类型 * 状态类型
*/ */
const STATUS_PENDING = 'pending'; // 待定 const STATUS_PENDING = 1; // 待定
const STATUS_FINISHED = 'finished'; // 完成 const STATUS_FINISHED = 2; // 完成
const STATUS_CANCELED = 'canceled'; // 取消 const STATUS_CANCELED = 3; // 取消
const STATUS_FAILED = 'failed'; // 失败 const STATUS_FAILED = 4; // 失败
/** /**
* 主键编号 * 主键编号

View File

@ -10,16 +10,16 @@ class Trade extends Model
/** /**
* 平台类型 * 平台类型
*/ */
const CHANNEL_ALIPAY = 'alipay'; // 支付宝 const CHANNEL_ALIPAY = 1; // 支付宝
const CHANNEL_WXPAY = 'wxpay'; // 微信 const CHANNEL_WXPAY = 2; // 微信
/** /**
* 状态类型 * 状态类型
*/ */
const STATUS_PENDING = 'pending'; // 待支付 const STATUS_PENDING = 1; // 待支付
const STATUS_FINISHED = 'finished'; // 已完成 const STATUS_FINISHED = 2; // 已完成
const STATUS_CLOSED = 'closed'; // 已关闭 const STATUS_CLOSED = 3; // 已关闭
const STATUS_REFUNDED = 'refunded'; // 已退款 const STATUS_REFUNDED = 4; // 已退款
/** /**
* 主键编号 * 主键编号

View File

@ -0,0 +1,25 @@
<?php
namespace App\Providers;
use Phalcon\Flash\Session as PhFlashSession;
class FlashSession extends Provider
{
protected $serviceName = 'flashSession';
public function register()
{
$this->di->setShared($this->serviceName, function () {
return new PhFlashSession([
'error' => 'alert alert-danger',
'success' => 'alert alert-success',
'notice' => 'alert alert-info',
'warning' => 'alert alert-warning',
]);
});
}
}

View File

@ -18,7 +18,6 @@ class Url extends Provider
$url = new UrlResolver(); $url = new UrlResolver();
$url->setBaseUri($config->base_uri); $url->setBaseUri($config->base_uri);
$url->setStaticBaseUri($config->static_base_uri); $url->setStaticBaseUri($config->static_base_uri);
return $url; return $url;

View File

@ -26,6 +26,10 @@ class ImGroup extends Repository
$builder->andWhere('id = :id:', ['id' => $where['id']]); $builder->andWhere('id = :id:', ['id' => $where['id']]);
} }
if (!empty($where['type'])) {
$builder->andWhere('type = :type:', ['type' => $where['type']]);
}
if (!empty($where['name'])) { if (!empty($where['name'])) {
$builder->andWhere('name LIKE :name:', ['name' => "%{$where['name']}%"]); $builder->andWhere('name LIKE :name:', ['name' => "%{$where['name']}%"]);
} }

View File

@ -7,6 +7,7 @@ use App\Library\Paginator\Query as PagerQuery;
use App\Repos\Order as OrderRepo; use App\Repos\Order as OrderRepo;
use App\Services\Frontend\Service as FrontendService; use App\Services\Frontend\Service as FrontendService;
use App\Services\Frontend\UserTrait; use App\Services\Frontend\UserTrait;
use App\Validators\Order as OrderValidator;
class OrderList extends FrontendService class OrderList extends FrontendService
{ {
@ -21,6 +22,12 @@ class OrderList extends FrontendService
$params = $pagerQuery->getParams(); $params = $pagerQuery->getParams();
$validator = new OrderValidator();
if (!empty($params['status'])) {
$params['status'] = $validator->checkStatus($params['status']);
}
$params['owner_id'] = $user->id; $params['owner_id'] = $user->id;
$params['deleted'] = 0; $params['deleted'] = 0;

View File

@ -7,6 +7,7 @@ use App\Library\Paginator\Query as PagerQuery;
use App\Repos\Refund as RefundRepo; use App\Repos\Refund as RefundRepo;
use App\Services\Frontend\Service as FrontendService; use App\Services\Frontend\Service as FrontendService;
use App\Services\Frontend\UserTrait; use App\Services\Frontend\UserTrait;
use App\Validators\Refund as RefundValidator;
class RefundList extends FrontendService class RefundList extends FrontendService
{ {
@ -21,6 +22,12 @@ class RefundList extends FrontendService
$params = $pagerQuery->getParams(); $params = $pagerQuery->getParams();
$validator = new RefundValidator();
if (!empty($params['status'])) {
$params['status'] = $validator->checkStatus($params['status']);
}
$params['owner_id'] = $user->id; $params['owner_id'] = $user->id;
$params['deleted'] = 0; $params['deleted'] = 0;

View File

@ -11,12 +11,15 @@ use App\Models\Vip as VipModel;
use App\Repos\Order as OrderRepo; use App\Repos\Order as OrderRepo;
use App\Repos\Package as PackageRepo; use App\Repos\Package as PackageRepo;
use App\Services\Frontend\Service as FrontendService; use App\Services\Frontend\Service as FrontendService;
use App\Traits\Client as ClientTrait;
use App\Validators\Order as OrderValidator; use App\Validators\Order as OrderValidator;
use App\Validators\UserLimit as UserLimitValidator; use App\Validators\UserLimit as UserLimitValidator;
class OrderCreate extends FrontendService class OrderCreate extends FrontendService
{ {
use ClientTrait;
public function handle() public function handle()
{ {
$post = $this->request->getPost(); $post = $this->request->getPost();
@ -91,6 +94,8 @@ class OrderCreate extends FrontendService
$order->item_id = $course->id; $order->item_id = $course->id;
$order->item_type = OrderModel::ITEM_COURSE; $order->item_type = OrderModel::ITEM_COURSE;
$order->item_info = $itemInfo; $order->item_info = $itemInfo;
$order->client_type = $this->getClientType();
$order->client_ip = $this->getClientIp();
$order->amount = $amount; $order->amount = $amount;
$order->subject = "课程 - {$course->title}"; $order->subject = "课程 - {$course->title}";
@ -127,6 +132,8 @@ class OrderCreate extends FrontendService
$order->item_type = OrderModel::ITEM_PACKAGE; $order->item_type = OrderModel::ITEM_PACKAGE;
$order->item_info = $itemInfo; $order->item_info = $itemInfo;
$order->amount = $amount; $order->amount = $amount;
$order->client_type = $this->getClientType();
$order->client_ip = $this->getClientIp();
$order->subject = "套餐 - {$package->title}"; $order->subject = "套餐 - {$package->title}";
$order->create(); $order->create();
@ -155,6 +162,8 @@ class OrderCreate extends FrontendService
$order->item_id = $vip->id; $order->item_id = $vip->id;
$order->item_type = OrderModel::ITEM_VIP; $order->item_type = OrderModel::ITEM_VIP;
$order->item_info = $itemInfo; $order->item_info = $itemInfo;
$order->client_type = $this->getClientType();
$order->client_ip = $this->getClientIp();
$order->amount = $vip->price; $order->amount = $vip->price;
$order->subject = "会员 - 会员服务({$vip->title}"; $order->subject = "会员 - 会员服务({$vip->title}";
@ -180,6 +189,8 @@ class OrderCreate extends FrontendService
$order->item_id = "{$course->id}-{$reward->id}"; $order->item_id = "{$course->id}-{$reward->id}";
$order->item_type = OrderModel::ITEM_REWARD; $order->item_type = OrderModel::ITEM_REWARD;
$order->item_info = $itemInfo; $order->item_info = $itemInfo;
$order->client_type = $this->getClientType();
$order->client_ip = $this->getClientIp();
$order->amount = $reward->price; $order->amount = $reward->price;
$order->subject = "赞赏 - {$course->title}"; $order->subject = "赞赏 - {$course->title}";

View File

@ -2,6 +2,7 @@
namespace App\Traits; namespace App\Traits;
use App\Models\Client as ClientModel;
use Phalcon\Di; use Phalcon\Di;
use Phalcon\Http\Request; use Phalcon\Http\Request;
use WhichBrowser\Parser as BrowserParser; use WhichBrowser\Parser as BrowserParser;
@ -30,10 +31,10 @@ trait Client
$result = new BrowserParser($userAgent); $result = new BrowserParser($userAgent);
$clientType = 'desktop'; $clientType = ClientModel::TYPE_DESKTOP;
if ($result->isMobile()) { if ($result->isMobile()) {
$clientType = 'mobile'; $clientType = ClientModel::TYPE_MOBILE;
} }
return $clientType; return $clientType;

View File

@ -21,14 +21,14 @@ class Course extends Validator
{ {
$id = intval($id); $id = intval($id);
$maxCourseIdCache = new MaxCourseIdCache(); $maxCache = new MaxCourseIdCache();
$maxCourseId = $maxCourseIdCache->get(); $maxId = $maxCache->get();
/** /**
* 防止缓存穿透 * 防止缓存穿透
*/ */
if ($id < 1 || $id > $maxCourseId) { if ($id < 1 || $id > $maxId) {
throw new BadRequestException('course.not_found'); throw new BadRequestException('course.not_found');
} }
@ -60,7 +60,7 @@ class Course extends Validator
{ {
$list = CourseModel::modelTypes(); $list = CourseModel::modelTypes();
if (!isset($list[$model])) { if (!array_key_exists($model, $list)) {
throw new BadRequestException('course.invalid_model'); throw new BadRequestException('course.invalid_model');
} }
@ -71,7 +71,7 @@ class Course extends Validator
{ {
$list = CourseModel::levelTypes(); $list = CourseModel::levelTypes();
if (!isset($list[$level])) { if (!array_key_exists($level, $list)) {
throw new BadRequestException('course.invalid_level'); throw new BadRequestException('course.invalid_level');
} }

View File

@ -119,6 +119,17 @@ class Order extends Validator
return $value; return $value;
} }
public function checkStatus($status)
{
$list = OrderModel::statusTypes();
if (!array_key_exists($status, $list)) {
throw new BadRequestException('order.invalid_status');
}
return $status;
}
public function checkIfAllowCancel(OrderModel $order) public function checkIfAllowCancel(OrderModel $order)
{ {
if ($order->status != OrderModel::STATUS_PENDING) { if ($order->status != OrderModel::STATUS_PENDING) {

View File

@ -40,6 +40,24 @@ class Refund extends Validator
return $refund; return $refund;
} }
public function checkAmount($orderAmount, $refundAmount)
{
if ($refundAmount > $orderAmount) {
throw new BadRequestException('refund.invalid_amount');
}
}
public function checkStatus($status)
{
$list = RefundModel::statusTypes();
if (!array_key_exists($status, $list)) {
throw new BadRequestException('refund.invalid_status');
}
return $status;
}
public function checkReviewStatus($status) public function checkReviewStatus($status)
{ {
$list = [ $list = [
@ -48,19 +66,12 @@ class Refund extends Validator
]; ];
if (!in_array($status, $list)) { if (!in_array($status, $list)) {
throw new BadRequestException('refund.invalid_review_status'); throw new BadRequestException('refund.invalid_status');
} }
return $status; return $status;
} }
public function checkAmount($orderAmount, $refundAmount)
{
if ($refundAmount > $orderAmount) {
throw new BadRequestException('refund.invalid_amount');
}
}
public function checkApplyNote($note) public function checkApplyNote($note)
{ {
$value = $this->filter->sanitize($note, ['trim', 'string']); $value = $this->filter->sanitize($note, ['trim', 'string']);

View File

@ -45,13 +45,24 @@ class Trade extends Validator
{ {
$list = TradeModel::channelTypes(); $list = TradeModel::channelTypes();
if (!isset($list[$channel])) { if (!array_key_exists($channel, $list)) {
throw new BadRequestException('trade.invalid_channel'); throw new BadRequestException('trade.invalid_channel');
} }
return $channel; return $channel;
} }
public function checkStatus($status)
{
$list = TradeModel::statusTypes();
if (!array_key_exists($status, $list)) {
throw new BadRequestException('trade.invalid_status');
}
return $status;
}
public function checkIfAllowClose(TradeModel $trade) public function checkIfAllowClose(TradeModel $trade)
{ {
if ($trade->status != TradeModel::STATUS_PENDING) { if ($trade->status != TradeModel::STATUS_PENDING) {

View File

@ -91,6 +91,7 @@ class ConsoleKernel extends Kernel
]; ];
foreach ($providers as $provider) { foreach ($providers as $provider) {
/** /**
* @var AppProvider $service * @var AppProvider $service
*/ */

View File

@ -10,6 +10,7 @@ use App\Providers\Crypt as CryptProvider;
use App\Providers\CsrfToken as CsrfTokenProvider; use App\Providers\CsrfToken as CsrfTokenProvider;
use App\Providers\Database as DatabaseProvider; use App\Providers\Database as DatabaseProvider;
use App\Providers\EventsManager as EventsManagerProvider; use App\Providers\EventsManager as EventsManagerProvider;
use App\Providers\FlashSession as FlashSessionProvider;
use App\Providers\Logger as LoggerProvider; use App\Providers\Logger as LoggerProvider;
use App\Providers\MetaData as MetaDataProvider; use App\Providers\MetaData as MetaDataProvider;
use App\Providers\Provider as AppProvider; use App\Providers\Provider as AppProvider;
@ -74,6 +75,7 @@ class HttpKernel extends Kernel
CsrfTokenProvider::class, CsrfTokenProvider::class,
DatabaseProvider::class, DatabaseProvider::class,
EventsManagerProvider::class, EventsManagerProvider::class,
FlashSessionProvider::class,
LoggerProvider::class, LoggerProvider::class,
MetaDataProvider::class, MetaDataProvider::class,
RequestProvider::class, RequestProvider::class,
@ -86,6 +88,7 @@ class HttpKernel extends Kernel
]; ];
foreach ($providers as $provider) { foreach ($providers as $provider) {
/** /**
* @var AppProvider $service * @var AppProvider $service
*/ */

View File

@ -256,6 +256,7 @@ $error['carousel.invalid_publish_status'] = '无效的发布状态';
* 订单相关 * 订单相关
*/ */
$error['order.not_found'] = '订单不存在'; $error['order.not_found'] = '订单不存在';
$error['order.invalid_status'] = '无效的状态类型';
$error['order.item_not_found'] = '商品不存在'; $error['order.item_not_found'] = '商品不存在';
$error['order.trade_expired'] = '交易已过期'; $error['order.trade_expired'] = '交易已过期';
$error['order.has_bought_course'] = '已经购买过该课程'; $error['order.has_bought_course'] = '已经购买过该课程';
@ -271,6 +272,7 @@ $error['order.refund_apply_existed'] = '退款申请已经存在';
$error['trade.not_found'] = '交易不存在'; $error['trade.not_found'] = '交易不存在';
$error['trade.create_failed'] = '创建交易失败'; $error['trade.create_failed'] = '创建交易失败';
$error['trade.invalid_channel'] = '无效的平台类型'; $error['trade.invalid_channel'] = '无效的平台类型';
$error['trade.invalid_status'] = '无效的状态类型';
$error['trade.close_not_allowed'] = '当前不允许关闭交易'; $error['trade.close_not_allowed'] = '当前不允许关闭交易';
$error['trade.refund_not_allowed'] = '当前不允许交易退款'; $error['trade.refund_not_allowed'] = '当前不允许交易退款';
$error['trade.refund_apply_existed'] = '退款申请已经存在,请等待处理结果'; $error['trade.refund_apply_existed'] = '退款申请已经存在,请等待处理结果';
@ -285,7 +287,7 @@ $error['refund.review_note_too_short'] = '审核备注太短少于2个字符
$error['refund.review_note_too_long'] = '审核备注太长多于255个字符'; $error['refund.review_note_too_long'] = '审核备注太长多于255个字符';
$error['refund.cancel_not_allowed'] = '当前不允许取消退款'; $error['refund.cancel_not_allowed'] = '当前不允许取消退款';
$error['refund.review_not_allowed'] = '当前不允许审核退款'; $error['refund.review_not_allowed'] = '当前不允许审核退款';
$error['refund.invalid_review_status'] = '无效的审核状态'; $error['refund.invalid_status'] = '无效的状态类型';
/** /**
* 角色相关 * 角色相关

View File

@ -1,28 +0,0 @@
project.name = group
project.default_charset = UTF-8
server.index = 8383
server.search = 8384
[id]
type = id
[type]
type = string
index = self
tokenizer = full
[name]
type = title
[avatar]
type = string
[about]
type = body
[owner]
type = string
[user_count]
type = string

View File

@ -1,32 +0,0 @@
project.name = user
project.default_charset = UTF-8
server.index = 8383
server.search = 8384
[id]
type = id
[name]
type = title
[avatar]
type = string
[title]
type = string
[about]
type = body
[location]
type = string
index = self
[gender]
type = string
index = self
tokenizer = full
[vip]
type = string