diff --git a/CHANGELOG.md b/CHANGELOG.md index 2cbc7afc..3d19a966 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,22 @@ +### [v1.7.1](https://gitee.com/koogua/course-tencent-cloud/releases/v1.7.1)(2024-06-31) + +- 更新layui-v2.9.10 +- 更新docker国内镜像地址 +- 增加导入镜像构建容器的方式 +- 调整微信公众号模板消息 +- 移除加载富文本编辑器初始化的语言文件 +- 移除consult中多余的chapter_id属性 +- 修正课程列表顶部过滤条件区块不能收缩问题 +- 用户中心第三方登录列表增加过滤条件 +- 后台增加打开/关闭左侧菜单提示 +- 优化整理文件mimeType +- iconfont资源本地化 +- 优化UploadController +- 优化富文本内容显示样式 +- 简化内容图片放大监听 +- 去除课程打赏相关内容 +- 课程增加能否发布检查 + ### [v1.7.0](https://gitee.com/koogua/course-tencent-cloud/releases/v1.7.0)(2024-05-15) - 升级layui-2.9.8 diff --git a/README.md b/README.md index e33aaf68..9172c884 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ 友情提示: -- 演示系统配置低(1Core,1G,1M 跑多个容器)切莫压测 +- 演示系统配置低(2核,2G,1M 跑多个容器)切莫压测 - 课程数据来源于网络(无实质内容)切莫购买 - 管理后台已禁止数据提交,私密配置已过滤 @@ -49,7 +49,7 @@ Tips: 请用手机注册一个新账号,用户中心 -> 关注订阅,扫码 ### 项目组件 - 后台框架:[phalcon 3.4.5](https://phalcon.io) -- 前端框架:[layui 2.9.3](https://layui.dev) +- 前端框架:[layui 2.9.10](https://layui.dev) - 全文检索:[xunsearch 1.4.17](http://www.xunsearch.com) - 基础依赖:[php7.3](https://php.net), [mysql5.7](https://mysql.com), [redis5.0](https://redis.io) diff --git a/app/Builders/ConsultList.php b/app/Builders/ConsultList.php index a06e667c..6427f979 100644 --- a/app/Builders/ConsultList.php +++ b/app/Builders/ConsultList.php @@ -7,7 +7,6 @@ namespace App\Builders; -use App\Repos\Chapter as ChapterRepo; use App\Repos\Course as CourseRepo; use App\Repos\User as UserRepo; @@ -54,23 +53,6 @@ class ConsultList extends Builder return $result; } - public function getChapters(array $consults) - { - $ids = kg_array_column($consults, 'chapter_id'); - - $chapterRepo = new ChapterRepo(); - - $chapters = $chapterRepo->findByIds($ids, ['id', 'title']); - - $result = []; - - foreach ($chapters->toArray() as $chapter) { - $result[$chapter['id']] = $chapter; - } - - return $result; - } - public function getUsers(array $consults) { $ownerIds = kg_array_column($consults, 'owner_id'); diff --git a/app/Builders/OrderList.php b/app/Builders/OrderList.php index d317d604..72a62b2a 100644 --- a/app/Builders/OrderList.php +++ b/app/Builders/OrderList.php @@ -113,8 +113,13 @@ class OrderList extends Builder $me['allow_refund'] = $refundStatusOk && $refundTimeOk ? 1 : 0; } - $me['allow_pay'] = $payStatusOk; - $me['allow_cancel'] = $cancelStatusOk; + if ($payStatusOk == 1) { + $me['allow_pay'] = 1; + } + + if ($cancelStatusOk == 1) { + $me['allow_cancel'] = 1; + } return $me; } @@ -149,20 +154,6 @@ class OrderList extends Builder return $itemInfo; } - /** - * @param string $itemInfo - * @return mixed - */ - protected function handleRewardInfo($itemInfo) - { - if (!empty($itemInfo) && is_string($itemInfo)) { - $itemInfo = json_decode($itemInfo, true); - $itemInfo['course']['cover'] = $this->imgBaseUrl . $itemInfo['course']['cover']; - } - - return $itemInfo; - } - /** * @param string $itemInfo * @return mixed diff --git a/app/Console/Migrations/V20240608145810.php b/app/Console/Migrations/V20240608145810.php new file mode 100644 index 00000000..15d31580 --- /dev/null +++ b/app/Console/Migrations/V20240608145810.php @@ -0,0 +1,48 @@ +handleReadChapters(); + } + + protected function handleReadChapters() + { + /** + * @var $chapters Resultset|ChapterModel[] + */ + $chapters = ChapterModel::query() + ->where('model = :model:', ['model' => CourseModel::MODEL_READ]) + ->andWhere('parent_id > 0') + ->execute(); + + if ($chapters->count() == 0) return; + + foreach ($chapters as $chapter) { + + $attrs = $chapter->attrs; + + if (isset($attrs['format'])) continue; + + $attrs['format'] = 'html'; + + $chapter->attrs = $attrs; + + $chapter->update(); + } + } + +} \ No newline at end of file diff --git a/app/Console/Tasks/CleanDemoDataTask.php b/app/Console/Tasks/CleanDemoDataTask.php index fabd6a6d..c4cb9039 100644 --- a/app/Console/Tasks/CleanDemoDataTask.php +++ b/app/Console/Tasks/CleanDemoDataTask.php @@ -7,8 +7,8 @@ namespace App\Console\Tasks; -use App\Caches\CategoryList as CategoryListCache; use App\Caches\CategoryAllList as CategoryAllListCache; +use App\Caches\CategoryList as CategoryListCache; use App\Caches\CategoryTreeList as CategoryTreeListCache; use App\Caches\IndexSlideList as IndexSlideListCache; use App\Models\Account as AccountModel; @@ -39,8 +39,8 @@ class CleanDemoDataTask extends Task echo '------ start truncate tables ------' . PHP_EOL; $excludeTables = [ - 'kg_area', 'kg_migration', 'kg_migration_task', 'kg_nav', 'kg_page', - 'kg_reward', 'kg_role', 'kg_setting', 'kg_vip', + 'kg_area', 'kg_migration', 'kg_migration_task', 'kg_nav', + 'kg_page', 'kg_role', 'kg_setting', 'kg_vip', ]; $tables = $this->db->listTables(); diff --git a/app/Console/Tasks/RefundTask.php b/app/Console/Tasks/RefundTask.php index d28dc013..83b0982e 100644 --- a/app/Console/Tasks/RefundTask.php +++ b/app/Console/Tasks/RefundTask.php @@ -151,9 +151,6 @@ class RefundTask extends Task case OrderModel::ITEM_VIP: $this->handleVipOrderRefund($order); break; - case OrderModel::ITEM_REWARD: - $this->handleRewardOrderRefund($order); - break; case OrderModel::ITEM_TEST: $this->handleTestOrderRefund($order); break; @@ -230,16 +227,6 @@ class RefundTask extends Task } } - /** - * 处理赞赏订单退款 - * - * @param OrderModel $order - */ - protected function handleRewardOrderRefund(OrderModel $order) - { - - } - /** * 处理测试订单退款 * diff --git a/app/Http/Admin/Controllers/UploadController.php b/app/Http/Admin/Controllers/UploadController.php index 06667238..6c51b97e 100644 --- a/app/Http/Admin/Controllers/UploadController.php +++ b/app/Http/Admin/Controllers/UploadController.php @@ -40,8 +40,9 @@ class UploadController extends Controller } $data = [ + 'id' => $file->id, + 'name' => $file->name, 'url' => $service->getImageUrl($file->path), - 'title' => $file->name, ]; return $this->jsonSuccess(['data' => $data]); @@ -61,8 +62,9 @@ class UploadController extends Controller } $data = [ + 'id' => $file->id, + 'name' => $file->name, 'url' => $service->getImageUrl($file->path), - 'title' => $file->name, ]; return $this->jsonSuccess(['data' => $data]); @@ -82,8 +84,9 @@ class UploadController extends Controller } $data = [ + 'id' => $file->id, + 'name' => $file->name, 'url' => $service->getImageUrl($file->path), - 'title' => $file->name, ]; return $this->jsonSuccess(['data' => $data]); @@ -100,7 +103,7 @@ class UploadController extends Controller if (!$file) { return $this->jsonError([ - 'message' => '上传图片失败', + 'message' => '上传文件失败', 'error' => 1, ]); } diff --git a/app/Http/Admin/Services/Course.php b/app/Http/Admin/Services/Course.php index 414a011f..24fb1d61 100644 --- a/app/Http/Admin/Services/Course.php +++ b/app/Http/Admin/Services/Course.php @@ -163,6 +163,9 @@ class Course extends Service if (isset($post['published'])) { $data['published'] = $validator->checkPublishStatus($post['published']); + if ($post['published'] == 1) { + $validator->checkPublishAbility($course); + } } if (isset($post['category_id']) && !empty($post['category_id'])) { diff --git a/app/Http/Admin/Views/answer/add.volt b/app/Http/Admin/Views/answer/add.volt index c75f39bb..e8c31c50 100644 --- a/app/Http/Admin/Views/answer/add.volt +++ b/app/Http/Admin/Views/answer/add.volt @@ -29,7 +29,6 @@ {% block include_js %} {{ js_include('lib/kindeditor/kindeditor.min.js') }} - {{ js_include('lib/kindeditor/lang/zh-CN.js') }} {{ js_include('admin/js/content.editor.js') }} {% endblock %} \ No newline at end of file diff --git a/app/Http/Admin/Views/answer/edit.volt b/app/Http/Admin/Views/answer/edit.volt index 3e354819..7d085a71 100644 --- a/app/Http/Admin/Views/answer/edit.volt +++ b/app/Http/Admin/Views/answer/edit.volt @@ -39,7 +39,6 @@ {% block include_js %} {{ js_include('lib/kindeditor/kindeditor.min.js') }} - {{ js_include('lib/kindeditor/lang/zh-CN.js') }} {{ js_include('admin/js/content.editor.js') }} {% endblock %} \ No newline at end of file diff --git a/app/Http/Admin/Views/answer/moderate.volt b/app/Http/Admin/Views/answer/moderate.volt index 4dec226a..d77dd654 100644 --- a/app/Http/Admin/Views/answer/moderate.volt +++ b/app/Http/Admin/Views/answer/moderate.volt @@ -14,7 +14,7 @@ {{ answer.owner.name }} {{ date('Y-m-d H:i:s',answer.create_time) }} -
商品名称:{{ order.subject }}
商品价格:{{ '¥%0.2f'|format(order.amount) }}
退款金额:{{ '¥%0.2f'|format(course.refund_amount) }},退款比例:{{ 100 * course.refund_percent }}%
课程名称:{{ course.title }}
赞赏金额:{{ '¥%0.2f'|format(reward.price) }}