1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-06-26 20:52:44 +08:00

Merge branch 'koogua/v1.4.5' into demo

This commit is contained in:
koogua 2021-09-28 15:07:47 +08:00
commit d18b5f6ba3
5 changed files with 81 additions and 8 deletions

View File

@ -4,9 +4,11 @@
- 修正后台首页提问和回答的数量统计 - 修正后台首页提问和回答的数量统计
- 调整登录限制(邮箱|手机)为注册限制 - 调整登录限制(邮箱|手机)为注册限制
- 调整订单发货为每一分钟执行一次 - 调整订单发货为每一分钟执行一次
- 增强课时安全性,无权限时不返回播放地址或内容
- 增加首页推荐教师接口 - 增加首页推荐教师接口
- 增加微信公众号支付处理 - 增加微信公众号支付处理
- 增加取消订单功能 - 增加取消订单功能
- 优化订单API结构
- 优化计划任务 - 优化计划任务
### [v1.4.4](https://gitee.com/koogua/course-tencent-cloud/releases/v1.4.4)(2021-09-17) ### [v1.4.4](https://gitee.com/koogua/course-tencent-cloud/releases/v1.4.4)(2021-09-17)

View File

@ -7,6 +7,7 @@
namespace App\Builders; namespace App\Builders;
use App\Models\Course as CourseModel;
use App\Models\Order as OrderModel; use App\Models\Order as OrderModel;
use App\Repos\User as UserRepo; use App\Repos\User as UserRepo;
@ -42,7 +43,7 @@ class OrderList extends Builder
public function handleItems(array $orders) public function handleItems(array $orders)
{ {
foreach ($orders as $key => $order) { foreach ($orders as $key => $order) {
$itemInfo = $this->handleItem($order); $itemInfo = $this->handleItemInfo($order);
$orders[$key]['item_info'] = $itemInfo; $orders[$key]['item_info'] = $itemInfo;
} }
@ -53,7 +54,7 @@ class OrderList extends Builder
* @param array $order * @param array $order
* @return array|mixed * @return array|mixed
*/ */
public function handleItem(array $order) public function handleItemInfo(array $order)
{ {
$itemInfo = []; $itemInfo = [];
@ -72,6 +73,52 @@ class OrderList extends Builder
return $itemInfo; return $itemInfo;
} }
/**
* @param array $order
* @return array|mixed
*/
public function handleMeInfo(array $order)
{
$me = [
'allow_pay' => 0,
'allow_cancel' => 0,
'allow_refund' => 0,
];
$payStatusOk = $order['status'] == OrderModel::STATUS_PENDING ? 1 : 0;
$cancelStatusOk = $order['status'] == OrderModel::STATUS_PENDING ? 1 : 0;
$refundStatusOk = $order['status'] == OrderModel::STATUS_FINISHED ? 1 : 0;
if ($order['item_type'] == OrderModel::ITEM_COURSE) {
$course = $order['item_info']['course'];
$courseModelOk = $course['model'] != CourseModel::MODEL_OFFLINE;
$refundTimeOk = $course['refund_expiry_time'] > time();
$me['allow_refund'] = $courseModelOk && $refundStatusOk && $refundTimeOk ? 1 : 0;
} elseif ($order['item_type'] == OrderModel::ITEM_PACKAGE) {
$courses = $order['item_info']['courses'];
$refundTimeOk = false;
foreach ($courses as $course) {
if ($course['refund_expiry_time'] > time()) {
$refundTimeOk = true;
}
}
$me['allow_refund'] = $refundStatusOk && $refundTimeOk ? 1 : 0;
}
$me['allow_pay'] = $payStatusOk;
$me['allow_cancel'] = $cancelStatusOk;
return $me;
}
/** /**
* @param string $itemInfo * @param string $itemInfo
* @return mixed * @return mixed

View File

@ -64,6 +64,19 @@ class ChapterInfo extends LogicService
$result = $service->handleBasicInfo($chapter); $result = $service->handleBasicInfo($chapter);
/**
* 无内容查看权限,过滤掉相关内容
*/
if (!$this->ownedChapter) {
if ($chapter->model == CourseModel::MODEL_VOD) {
$result['play_urls'] = [];
} elseif ($chapter->model == CourseModel::MODEL_LIVE) {
$result['play_urls'] = [];
} elseif ($chapter->model == CourseModel::MODEL_READ) {
$result['content'] = '';
}
}
$result['course'] = $service->handleCourseInfo($this->course); $result['course'] = $service->handleCourseInfo($this->course);
$me = [ $me = [

View File

@ -86,16 +86,24 @@ class OrderInfo extends LogicService
if ($order->status == OrderModel::STATUS_FINISHED) { if ($order->status == OrderModel::STATUS_FINISHED) {
/** /**
* 只允许线上课程退款,因为线下课程无法进行退款计算 * 只允许线上课程退款
*/ */
if ($order->item_type == OrderModel::ITEM_COURSE) { if ($order->item_type == OrderModel::ITEM_COURSE) {
$result['allow_refund'] = 1;
$course = $order->item_info['course']; $course = $order->item_info['course'];
if (isset($course['model']) && $course['model'] == CourseModel::MODEL_OFFLINE) { $refundTimeOk = $course['refund_expiry_time'] > time();
$result['allow_refund'] = 0; $courseModelOk = $course['model'] != CourseModel::MODEL_OFFLINE;
if ($refundTimeOk && $courseModelOk) {
$result['allow_refund'] = 1;
} }
} elseif ($order->item_type == OrderModel::ITEM_PACKAGE) { } elseif ($order->item_type == OrderModel::ITEM_PACKAGE) {
$result['allow_refund'] = $order->status == OrderModel::STATUS_FINISHED ? 1 : 0; $courses = $order->item_info['courses'];
foreach ($courses as $course) {
$refundTimeOk = $course['refund_expiry_time'] > time();
$courseModelOk = $course['model'] != CourseModel::MODEL_OFFLINE;
if ($refundTimeOk && $courseModelOk) {
$result['allow_refund'] = 1;
}
}
} }
} }

View File

@ -61,7 +61,9 @@ class OrderList extends LogicService
foreach ($orders as $order) { foreach ($orders as $order) {
$order['item_info'] = $builder->handleItem($order); $order['item_info'] = $builder->handleItemInfo($order);
$me = $builder->handleMeInfo($order);
$items[] = [ $items[] = [
'sn' => $order['sn'], 'sn' => $order['sn'],
@ -76,6 +78,7 @@ class OrderList extends LogicService
'promotion_info' => $order['promotion_info'], 'promotion_info' => $order['promotion_info'],
'create_time' => $order['create_time'], 'create_time' => $order['create_time'],
'update_time' => $order['update_time'], 'update_time' => $order['update_time'],
'me' => $me,
]; ];
} }