mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-07-25 01:11:44 +08:00
Merge branch 'koogua/v1.5.2'
This commit is contained in:
commit
450b4c5210
@ -1,3 +1,12 @@
|
|||||||
|
### [v1.5.2](https://gitee.com/koogua/course-tencent-cloud/releases/v1.5.2)(2022-04-17)
|
||||||
|
|
||||||
|
- 补充话题列表课程数据结构
|
||||||
|
- 调整发送验证码相关样式
|
||||||
|
- 优化套餐和话题下拉课程数据显示
|
||||||
|
- 去除礼物详情中多出来的"}}"标签
|
||||||
|
- 修正关闭秒杀订单时没有回填库存的问题
|
||||||
|
- vditor编辑器切换为七牛cdn加速
|
||||||
|
|
||||||
### [v1.5.1](https://gitee.com/koogua/course-tencent-cloud/releases/v1.5.1)(2022-03-17)
|
### [v1.5.1](https://gitee.com/koogua/course-tencent-cloud/releases/v1.5.1)(2022-03-17)
|
||||||
|
|
||||||
- 推荐课程等列表补充属性
|
- 推荐课程等列表补充属性
|
||||||
|
@ -45,7 +45,7 @@ class CourseTopicList extends Builder
|
|||||||
'id', 'title', 'cover',
|
'id', 'title', 'cover',
|
||||||
'market_price', 'vip_price',
|
'market_price', 'vip_price',
|
||||||
'rating', 'model', 'level', 'attrs',
|
'rating', 'model', 'level', 'attrs',
|
||||||
'user_count', 'lesson_count',
|
'user_count', 'lesson_count', 'review_count', 'favorite_count',
|
||||||
];
|
];
|
||||||
|
|
||||||
$courses = $courseRepo->findByIds($ids, $columns);
|
$courses = $courseRepo->findByIds($ids, $columns);
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
namespace App\Console\Tasks;
|
namespace App\Console\Tasks;
|
||||||
|
|
||||||
use App\Models\Order as OrderModel;
|
use App\Models\Order as OrderModel;
|
||||||
|
use App\Repos\FlashSale as FlashSaleRepo;
|
||||||
use App\Services\Logic\FlashSale\Queue as FlashSaleQueue;
|
use App\Services\Logic\FlashSale\Queue as FlashSaleQueue;
|
||||||
use App\Services\Logic\FlashSale\UserOrderCache;
|
use App\Services\Logic\FlashSale\UserOrderCache;
|
||||||
use Phalcon\Mvc\Model\Resultset;
|
use Phalcon\Mvc\Model\Resultset;
|
||||||
@ -27,6 +28,7 @@ class CloseFlashSaleOrderTask extends Task
|
|||||||
echo '------ start close order task ------' . PHP_EOL;
|
echo '------ start close order task ------' . PHP_EOL;
|
||||||
|
|
||||||
foreach ($orders as $order) {
|
foreach ($orders as $order) {
|
||||||
|
$this->incrFlashSaleStock($order->promotion_id);
|
||||||
$this->pushFlashSaleQueue($order->promotion_id);
|
$this->pushFlashSaleQueue($order->promotion_id);
|
||||||
$this->deleteUserOrderCache($order->owner_id, $order->promotion_id);
|
$this->deleteUserOrderCache($order->owner_id, $order->promotion_id);
|
||||||
$order->status = OrderModel::STATUS_CLOSED;
|
$order->status = OrderModel::STATUS_CLOSED;
|
||||||
@ -36,6 +38,17 @@ class CloseFlashSaleOrderTask extends Task
|
|||||||
echo '------ end close order task ------' . PHP_EOL;
|
echo '------ end close order task ------' . PHP_EOL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function incrFlashSaleStock($saleId)
|
||||||
|
{
|
||||||
|
$flashSaleRepo = new FlashSaleRepo();
|
||||||
|
|
||||||
|
$flashSale = $flashSaleRepo->findById($saleId);
|
||||||
|
|
||||||
|
$flashSale->stock += 1;
|
||||||
|
|
||||||
|
$flashSale->update();
|
||||||
|
}
|
||||||
|
|
||||||
protected function pushFlashSaleQueue($saleId)
|
protected function pushFlashSaleQueue($saleId)
|
||||||
{
|
{
|
||||||
$queue = new FlashSaleQueue();
|
$queue = new FlashSaleQueue();
|
||||||
|
@ -15,7 +15,6 @@ use App\Repos\Chapter as ChapterRepo;
|
|||||||
use App\Repos\Course as CourseRepo;
|
use App\Repos\Course as CourseRepo;
|
||||||
use App\Services\ChapterVod as ChapterVodService;
|
use App\Services\ChapterVod as ChapterVodService;
|
||||||
use App\Services\CourseStat as CourseStatService;
|
use App\Services\CourseStat as CourseStatService;
|
||||||
use App\Services\Vod as VodService;
|
|
||||||
use App\Validators\ChapterLive as ChapterLiveValidator;
|
use App\Validators\ChapterLive as ChapterLiveValidator;
|
||||||
use App\Validators\ChapterOffline as ChapterOfflineValidator;
|
use App\Validators\ChapterOffline as ChapterOfflineValidator;
|
||||||
use App\Validators\ChapterRead as ChapterReadValidator;
|
use App\Validators\ChapterRead as ChapterReadValidator;
|
||||||
@ -134,28 +133,14 @@ class ChapterContent extends Service
|
|||||||
|
|
||||||
$vod = $chapterRepo->findChapterVod($chapter->id);
|
$vod = $chapterRepo->findChapterVod($chapter->id);
|
||||||
|
|
||||||
/**
|
|
||||||
* 无新文件上传
|
|
||||||
*/
|
|
||||||
if ($fileId == $vod->file_id) return;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除旧文件
|
|
||||||
*/
|
|
||||||
if ($vod->file_id) {
|
|
||||||
$this->deleteVodFile($vod->file_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
$vod->file_id = $fileId;
|
$vod->file_id = $fileId;
|
||||||
$vod->file_transcode = [];
|
$vod->file_transcode = [];
|
||||||
|
|
||||||
$vod->update();
|
$vod->update();
|
||||||
|
|
||||||
$attrs = $chapter->attrs;
|
$attrs = $chapter->attrs;
|
||||||
$attrs['duration'] = 0;
|
$attrs['duration'] = 0;
|
||||||
$attrs['file']['status'] = ChapterModel::FS_UPLOADED;
|
$attrs['file']['status'] = ChapterModel::FS_UPLOADED;
|
||||||
$chapter->attrs = $attrs;
|
$chapter->attrs = $attrs;
|
||||||
|
|
||||||
$chapter->update();
|
$chapter->update();
|
||||||
|
|
||||||
$this->updateCourseVodAttrs($vod->course_id);
|
$this->updateCourseVodAttrs($vod->course_id);
|
||||||
@ -331,13 +316,6 @@ class ChapterContent extends Service
|
|||||||
$statService->updateOfflineAttrs($courseId);
|
$statService->updateOfflineAttrs($courseId);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function deleteVodFile($fileId)
|
|
||||||
{
|
|
||||||
$vodService = new VodService();
|
|
||||||
|
|
||||||
$vodService->deleteMedia($fileId);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function rebuildCatalogCache(ChapterModel $chapter)
|
protected function rebuildCatalogCache(ChapterModel $chapter)
|
||||||
{
|
{
|
||||||
$cache = new CatalogCache();
|
$cache = new CatalogCache();
|
||||||
|
@ -59,8 +59,9 @@ class Package extends Service
|
|||||||
$result = [];
|
$result = [];
|
||||||
|
|
||||||
foreach ($items as $item) {
|
foreach ($items as $item) {
|
||||||
|
$price = $item->market_price > 0 ? sprintf("¥%0.2f", $item->market_price) : '免费';
|
||||||
$result[] = [
|
$result[] = [
|
||||||
'name' => sprintf('%s - %s(¥%0.2f)', $item->id, $item->title, $item->market_price),
|
'name' => sprintf('%s - %s(¥%0.2f)', $item->id, $item->title, $price),
|
||||||
'value' => $item->id,
|
'value' => $item->id,
|
||||||
'selected' => in_array($item->id, $courseIds),
|
'selected' => in_array($item->id, $courseIds),
|
||||||
];
|
];
|
||||||
|
@ -34,8 +34,9 @@ class Slide extends Service
|
|||||||
$result = [];
|
$result = [];
|
||||||
|
|
||||||
foreach ($items as $item) {
|
foreach ($items as $item) {
|
||||||
|
$price = $item->market_price > 0 ? sprintf("¥%0.2f", $item->market_price) : '免费';
|
||||||
$result[] = [
|
$result[] = [
|
||||||
'name' => sprintf('%s(¥%0.2f)', $item->title, $item->market_price),
|
'name' => sprintf('%s- %s(%s)', $item->id, $item->title, $price),
|
||||||
'value' => $item->id,
|
'value' => $item->id,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -45,8 +45,9 @@ class Topic extends Service
|
|||||||
$result = [];
|
$result = [];
|
||||||
|
|
||||||
foreach ($items as $item) {
|
foreach ($items as $item) {
|
||||||
|
$price = $item->market_price > 0 ? sprintf("¥%0.2f", $item->market_price) : '免费';
|
||||||
$result[] = [
|
$result[] = [
|
||||||
'name' => sprintf('%s - %s(¥%0.2f)', $item->id, $item->title, $item->market_price),
|
'name' => sprintf('%s - %s(¥%0.2f)', $item->id, $item->title, $price),
|
||||||
'value' => $item->id,
|
'value' => $item->id,
|
||||||
'selected' => in_array($item->id, $courseIds),
|
'selected' => in_array($item->id, $courseIds),
|
||||||
];
|
];
|
||||||
|
@ -29,13 +29,13 @@
|
|||||||
|
|
||||||
{% block link_css %}
|
{% block link_css %}
|
||||||
|
|
||||||
{{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }}
|
{{ css_link('https://cdn.staticfile.org/vditor/3.8.13/index.css', false) }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block include_js %}
|
{% block include_js %}
|
||||||
|
|
||||||
{{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }}
|
{{ js_include('https://cdn.staticfile.org/vditor/3.8.13/index.min.js', false) }}
|
||||||
{{ js_include('admin/js/vditor.js') }}
|
{{ js_include('admin/js/vditor.js') }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -28,13 +28,13 @@
|
|||||||
|
|
||||||
{% block link_css %}
|
{% block link_css %}
|
||||||
|
|
||||||
{{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }}
|
{{ css_link('https://cdn.staticfile.org/vditor/3.8.13/index.css', false) }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block include_js %}
|
{% block include_js %}
|
||||||
|
|
||||||
{{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }}
|
{{ js_include('https://cdn.staticfile.org/vditor/3.8.13/index.min.js', false) }}
|
||||||
{{ js_include('admin/js/vditor.js') }}
|
{{ js_include('admin/js/vditor.js') }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -25,13 +25,13 @@
|
|||||||
|
|
||||||
{% block link_css %}
|
{% block link_css %}
|
||||||
|
|
||||||
{{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }}
|
{{ css_link('https://cdn.staticfile.org/vditor/3.8.13/index.css', false) }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block include_js %}
|
{% block include_js %}
|
||||||
|
|
||||||
{{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }}
|
{{ js_include('https://cdn.staticfile.org/vditor/3.8.13/index.min.js', false) }}
|
||||||
{{ js_include('lib/xm-select.js') }}
|
{{ js_include('lib/xm-select.js') }}
|
||||||
{{ js_include('admin/js/vditor.js') }}
|
{{ js_include('admin/js/vditor.js') }}
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
{% block link_css %}
|
{% block link_css %}
|
||||||
|
|
||||||
{% if chapter.model == 3 %}
|
{% if chapter.model == 3 %}
|
||||||
{{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }}
|
{{ css_link('https://cdn.staticfile.org/vditor/3.8.13/index.css', false) }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@ -59,7 +59,7 @@
|
|||||||
|
|
||||||
{% if chapter.model == 3 %}
|
{% if chapter.model == 3 %}
|
||||||
|
|
||||||
{{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }}
|
{{ js_include('https://cdn.staticfile.org/vditor/3.8.13/index.min.js', false) }}
|
||||||
{{ js_include('admin/js/vditor.js') }}
|
{{ js_include('admin/js/vditor.js') }}
|
||||||
|
|
||||||
{% elseif chapter.model == 1 %}
|
{% elseif chapter.model == 1 %}
|
||||||
|
@ -41,13 +41,13 @@
|
|||||||
|
|
||||||
{% block link_css %}
|
{% block link_css %}
|
||||||
|
|
||||||
{{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }}
|
{{ css_link('https://cdn.staticfile.org/vditor/3.8.13/index.css', false) }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block include_js %}
|
{% block include_js %}
|
||||||
|
|
||||||
{{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }}
|
{{ js_include('https://cdn.staticfile.org/vditor/3.8.13/index.min.js', false) }}
|
||||||
{{ js_include('lib/xm-select.js') }}
|
{{ js_include('lib/xm-select.js') }}
|
||||||
{{ js_include('admin/js/cover.upload.js') }}
|
{{ js_include('admin/js/cover.upload.js') }}
|
||||||
{{ js_include('admin/js/vditor.js') }}
|
{{ js_include('admin/js/vditor.js') }}
|
||||||
|
@ -49,13 +49,13 @@
|
|||||||
|
|
||||||
{% block link_css %}
|
{% block link_css %}
|
||||||
|
|
||||||
{{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }}
|
{{ css_link('https://cdn.staticfile.org/vditor/3.8.13/index.css', false) }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block include_js %}
|
{% block include_js %}
|
||||||
|
|
||||||
{{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }}
|
{{ js_include('https://cdn.staticfile.org/vditor/3.8.13/index.min.js', false) }}
|
||||||
{{ js_include('admin/js/vditor.js') }}
|
{{ js_include('admin/js/vditor.js') }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -56,13 +56,13 @@
|
|||||||
|
|
||||||
{% block link_css %}
|
{% block link_css %}
|
||||||
|
|
||||||
{{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }}
|
{{ css_link('https://cdn.staticfile.org/vditor/3.8.13/index.css', false) }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block include_js %}
|
{% block include_js %}
|
||||||
|
|
||||||
{{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }}
|
{{ js_include('https://cdn.staticfile.org/vditor/3.8.13/index.min.js', false) }}
|
||||||
{{ js_include('admin/js/vditor.js') }}
|
{{ js_include('admin/js/vditor.js') }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -32,13 +32,13 @@
|
|||||||
|
|
||||||
{% block link_css %}
|
{% block link_css %}
|
||||||
|
|
||||||
{{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }}
|
{{ css_link('https://cdn.staticfile.org/vditor/3.8.13/index.css', false) }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block include_js %}
|
{% block include_js %}
|
||||||
|
|
||||||
{{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }}
|
{{ js_include('https://cdn.staticfile.org/vditor/3.8.13/index.min.js', false) }}
|
||||||
{{ js_include('admin/js/vditor.js') }}
|
{{ js_include('admin/js/vditor.js') }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -45,13 +45,13 @@
|
|||||||
|
|
||||||
{% block link_css %}
|
{% block link_css %}
|
||||||
|
|
||||||
{{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }}
|
{{ css_link('https://cdn.staticfile.org/vditor/3.8.13/index.css', false) }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block include_js %}
|
{% block include_js %}
|
||||||
|
|
||||||
{{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }}
|
{{ js_include('https://cdn.staticfile.org/vditor/3.8.13/index.min.js', false) }}
|
||||||
{{ js_include('admin/js/vditor.js') }}
|
{{ js_include('admin/js/vditor.js') }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -15,7 +15,7 @@
|
|||||||
{% block link_css %}
|
{% block link_css %}
|
||||||
|
|
||||||
{% if gift.type == 2 %}
|
{% if gift.type == 2 %}
|
||||||
{{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }}
|
{{ css_link('https://cdn.staticfile.org/vditor/3.8.13/index.css', false) }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@ -23,7 +23,7 @@
|
|||||||
{% block include_js %}
|
{% block include_js %}
|
||||||
|
|
||||||
{% if gift.type == 2 %}
|
{% if gift.type == 2 %}
|
||||||
{{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }}
|
{{ js_include('https://cdn.staticfile.org/vditor/3.8.13/index.min.js', false) }}
|
||||||
{{ js_include('admin/js/cover.upload.js') }}
|
{{ js_include('admin/js/cover.upload.js') }}
|
||||||
{{ js_include('admin/js/vditor.js') }}
|
{{ js_include('admin/js/vditor.js') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -25,13 +25,13 @@
|
|||||||
|
|
||||||
{% block link_css %}
|
{% block link_css %}
|
||||||
|
|
||||||
{{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }}
|
{{ css_link('https://cdn.staticfile.org/vditor/3.8.13/index.css', false) }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block include_js %}
|
{% block include_js %}
|
||||||
|
|
||||||
{{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }}
|
{{ js_include('https://cdn.staticfile.org/vditor/3.8.13/index.min.js', false) }}
|
||||||
{{ js_include('lib/xm-select.js') }}
|
{{ js_include('lib/xm-select.js') }}
|
||||||
{{ js_include('admin/js/vditor.js') }}
|
{{ js_include('admin/js/vditor.js') }}
|
||||||
|
|
||||||
|
@ -7,6 +7,8 @@
|
|||||||
|
|
||||||
namespace App\Http\Home\Services;
|
namespace App\Http\Home\Services;
|
||||||
|
|
||||||
|
use App\Models\Course as CourseModel;
|
||||||
|
use App\Repos\Chapter as ChapterRepo;
|
||||||
use App\Traits\Client as ClientTrait;
|
use App\Traits\Client as ClientTrait;
|
||||||
|
|
||||||
class FullH5Url extends Service
|
class FullH5Url extends Service
|
||||||
@ -118,7 +120,19 @@ class FullH5Url extends Service
|
|||||||
|
|
||||||
public function getChapterInfoUrl($id)
|
public function getChapterInfoUrl($id)
|
||||||
{
|
{
|
||||||
return sprintf('%s/chapter/info?id=%s', $this->baseUrl, $id);
|
$chapterRepo = new ChapterRepo();
|
||||||
|
|
||||||
|
$chapter = $chapterRepo->findById($id);
|
||||||
|
|
||||||
|
if ($chapter->model == CourseModel::MODEL_VOD) {
|
||||||
|
return sprintf('%s/chapter/vod?id=%s', $this->baseUrl, $id);
|
||||||
|
} elseif ($chapter->model == CourseModel::MODEL_LIVE) {
|
||||||
|
return sprintf('%s/chapter/live?id=%s', $this->baseUrl, $id);
|
||||||
|
} elseif ($chapter->model == CourseModel::MODEL_READ) {
|
||||||
|
return sprintf('%s/chapter/read?id=%s', $this->baseUrl, $id);
|
||||||
|
} else {
|
||||||
|
return $this->getHomeUrl();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getUserIndexUrl($id)
|
public function getUserIndexUrl($id)
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
<input class="layui-input" type="text" name="verify_code" autocomplete="off" placeholder="验证码" lay-verify="required">
|
<input class="layui-input" type="text" name="verify_code" autocomplete="off" placeholder="验证码" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-input-inline verify-btn-inline">
|
<div class="layui-input-inline verify-btn-inline">
|
||||||
<button id="cv-emit-btn" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
|
<button id="cv-emit-btn" class="layui-btn layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
|
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-input-inline verify-btn-inline">
|
<div class="layui-input-inline verify-btn-inline">
|
||||||
<button id="cv-emit-btn" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
|
<button id="cv-emit-btn" class="layui-btn layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
|
@ -41,13 +41,13 @@
|
|||||||
|
|
||||||
{% block link_css %}
|
{% block link_css %}
|
||||||
|
|
||||||
{{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }}
|
{{ css_link('https://cdn.staticfile.org/vditor/3.8.13/index.css', false) }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block include_js %}
|
{% block include_js %}
|
||||||
|
|
||||||
{{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }}
|
{{ js_include('https://cdn.staticfile.org/vditor/3.8.13/index.min.js', false) }}
|
||||||
{{ js_include('home/js/answer.edit.js') }}
|
{{ js_include('home/js/answer.edit.js') }}
|
||||||
{{ js_include('home/js/vditor.js') }}
|
{{ js_include('home/js/vditor.js') }}
|
||||||
|
|
||||||
|
@ -36,13 +36,13 @@
|
|||||||
|
|
||||||
{% block link_css %}
|
{% block link_css %}
|
||||||
|
|
||||||
{{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }}
|
{{ css_link('https://cdn.staticfile.org/vditor/3.8.13/index.css', false) }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block include_js %}
|
{% block include_js %}
|
||||||
|
|
||||||
{{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }}
|
{{ js_include('https://cdn.staticfile.org/vditor/3.8.13/index.min.js', false) }}
|
||||||
{{ js_include('home/js/answer.edit.js') }}
|
{{ js_include('home/js/answer.edit.js') }}
|
||||||
{{ js_include('home/js/vditor.js') }}
|
{{ js_include('home/js/vditor.js') }}
|
||||||
|
|
||||||
|
@ -76,13 +76,13 @@
|
|||||||
|
|
||||||
{% block link_css %}
|
{% block link_css %}
|
||||||
|
|
||||||
{{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }}
|
{{ css_link('https://cdn.staticfile.org/vditor/3.8.13/index.css', false) }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block include_js %}
|
{% block include_js %}
|
||||||
|
|
||||||
{{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }}
|
{{ js_include('https://cdn.staticfile.org/vditor/3.8.13/index.min.js', false) }}
|
||||||
{{ js_include('lib/xm-select.js') }}
|
{{ js_include('lib/xm-select.js') }}
|
||||||
{{ js_include('home/js/article.edit.js') }}
|
{{ js_include('home/js/article.edit.js') }}
|
||||||
{{ js_include('home/js/vditor.js') }}
|
{{ js_include('home/js/vditor.js') }}
|
||||||
|
@ -96,7 +96,7 @@
|
|||||||
<div class="course-meta wrap clearfix">
|
<div class="course-meta wrap clearfix">
|
||||||
<div class="cover">
|
<div class="cover">
|
||||||
<span class="model layui-badge layui-bg-green">{{ model_type(course.model) }}</span>
|
<span class="model layui-badge layui-bg-green">{{ model_type(course.model) }}</span>
|
||||||
<img src="{{ course.cover }}!cover_270" alt="{{ course.title }}">
|
<img src="{{ course.cover }}" alt="{{ course.title }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
{% if course.model == 1 %}
|
{% if course.model == 1 %}
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
<a href="{{ course_url }}">{{ gift.name }}</a>
|
<a href="{{ course_url }}">{{ gift.name }}</a>
|
||||||
</p>
|
</p>
|
||||||
{% else %}
|
{% else %}
|
||||||
<p class="item">{{ gift.name }} }}</p>
|
<p class="item">{{ gift.name }}</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<p class="item stats">
|
<p class="item stats">
|
||||||
<span class="key">兑换人次</span>
|
<span class="key">兑换人次</span>
|
||||||
|
@ -56,13 +56,13 @@
|
|||||||
|
|
||||||
{% block link_css %}
|
{% block link_css %}
|
||||||
|
|
||||||
{{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }}
|
{{ css_link('https://cdn.staticfile.org/vditor/3.8.13/index.css', false) }}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block include_js %}
|
{% block include_js %}
|
||||||
|
|
||||||
{{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }}
|
{{ js_include('https://cdn.staticfile.org/vditor/3.8.13/index.min.js', false) }}
|
||||||
{{ js_include('lib/xm-select.js') }}
|
{{ js_include('lib/xm-select.js') }}
|
||||||
{{ js_include('home/js/question.edit.js') }}
|
{{ js_include('home/js/question.edit.js') }}
|
||||||
{{ js_include('home/js/vditor.js') }}
|
{{ js_include('home/js/vditor.js') }}
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
<input class="layui-input" type="text" name="verify_code" lay-verify="required">
|
<input class="layui-input" type="text" name="verify_code" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-input-inline verify-btn-inline">
|
<div class="layui-input-inline verify-btn-inline">
|
||||||
<button id="cv-emit-btn" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
|
<button id="cv-emit-btn" class="layui-btn layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
<input class="layui-input" type="text" name="verify_code" lay-verify="required">
|
<input class="layui-input" type="text" name="verify_code" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-input-inline verify-btn-inline">
|
<div class="layui-input-inline verify-btn-inline">
|
||||||
<button id="cv-emit-btn" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
|
<button id="cv-emit-btn" class="layui-btn layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
|
@ -16,7 +16,7 @@ class AppInfo
|
|||||||
|
|
||||||
protected $link = 'https://koogua.com';
|
protected $link = 'https://koogua.com';
|
||||||
|
|
||||||
protected $version = '1.5.1';
|
protected $version = '1.5.2';
|
||||||
|
|
||||||
public function __get($name)
|
public function __get($name)
|
||||||
{
|
{
|
||||||
|
@ -52,7 +52,7 @@ $error['account.login_pwd_incorrect'] = '登录密码不正确';
|
|||||||
$error['account.invalid_login_name'] = '无效的登录名';
|
$error['account.invalid_login_name'] = '无效的登录名';
|
||||||
$error['account.invalid_email'] = '无效的电子邮箱';
|
$error['account.invalid_email'] = '无效的电子邮箱';
|
||||||
$error['account.invalid_phone'] = '无效的手机号';
|
$error['account.invalid_phone'] = '无效的手机号';
|
||||||
$error['account.invalid_pwd'] = '无效的密码(字母或数字6-16位)';
|
$error['account.invalid_pwd'] = '无效的密码(字母|数字|特殊字符6-16位)';
|
||||||
$error['account.email_taken'] = '邮箱被占用';
|
$error['account.email_taken'] = '邮箱被占用';
|
||||||
$error['account.phone_taken'] = '手机号被占用';
|
$error['account.phone_taken'] = '手机号被占用';
|
||||||
$error['account.pwd_not_match'] = '密码不匹配';
|
$error['account.pwd_not_match'] = '密码不匹配';
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
layui.use(['jquery', 'util'], function () {
|
layui.use(['jquery', 'layer', 'util'], function () {
|
||||||
|
|
||||||
var $ = layui.jquery;
|
var $ = layui.jquery;
|
||||||
|
var layer = layui.layer;
|
||||||
var util = layui.util;
|
var util = layui.util;
|
||||||
|
|
||||||
var timeCounting = false;
|
var timeCounting = false;
|
||||||
@ -62,6 +63,9 @@ layui.use(['jquery', 'util'], function () {
|
|||||||
type: 'POST',
|
type: 'POST',
|
||||||
url: postUrl,
|
url: postUrl,
|
||||||
data: postData,
|
data: postData,
|
||||||
|
success: function () {
|
||||||
|
layer.msg('发送验证码成功', {icon: 1});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
$submit.removeClass('layui-btn-disabled').removeAttr('disabled');
|
$submit.removeClass('layui-btn-disabled').removeAttr('disabled');
|
||||||
$emit.addClass('layui-btn-disabled').attr('disabled', 'disabled');
|
$emit.addClass('layui-btn-disabled').attr('disabled', 'disabled');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user