1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-06-30 22:24:55 +08:00
2019-12-13 00:10:10 +08:00

180 lines
4.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Services;
use App\Models\Course as CourseModel;
use App\Models\Order as OrderModel;
use App\Models\Package as PackageModel;
use App\Repos\Package as PackageRepo;
class Order extends Service
{
/**
* 创建课程订单
*
* @param CourseModel $course
* @return OrderModel $order
*/
public function createCourseOrder(CourseModel $course)
{
$authUser = $this->getDI()->get('auth')->getAuthUser();
$expiry = $course->expiry;
$expireTime = strtotime("+{$expiry} days");
$itemInfo = [
'course' => [
'id' => $course->id,
'title' => $course->title,
'cover' => $course->cover,
'expiry' => $course->expiry,
'market_price' => $course->market_price,
'vip_price' => $course->vip_price,
'expire_time' => $expireTime,
]
];
$amount = $authUser->vip ? $course->vip_price : $course->market_price;
$order = new OrderModel();
$order->user_id = $authUser->id;
$order->item_id = $course->id;
$order->item_type = OrderModel::TYPE_COURSE;
$order->item_info = $itemInfo;
$order->amount = $amount;
$order->subject = "课程 - {$course->title}";
$order->create();
return $order;
}
/**
* 创建套餐订单
*
* @param PackageModel $package
* @return OrderModel $order
*/
public function createPackageOrder(PackageModel $package)
{
$authUser = $this->getDI()->get('auth')->getAuthUser();
$packageRepo = new PackageRepo();
$courses = $packageRepo->findCourses($package->id);
$itemInfo = [];
$itemInfo['package'] = [
'id' => $package->id,
'title' => $package->title,
'market_price' => $package->market_price,
'vip_price' => $package->vip_price,
];
foreach ($courses as $course) {
$expiry = $course->expiry;
$expireTime = strtotime("+{$expiry} days");
$itemInfo['courses'][] = [
'id' => $course->id,
'title' => $course->title,
'cover' => $course->cover,
'expiry' => $expiry,
'market_price' => $course->market_price,
'vip_price' => $course->vip_price,
'expire_time' => $expireTime,
];
}
$amount = $authUser->vip ? $package->vip_price : $package->market_price;
$order = new OrderModel();
$order->user_id = $authUser->id;
$order->item_id = $package->id;
$order->item_type = OrderModel::TYPE_PACKAGE;
$order->item_info = $itemInfo;
$order->amount = $amount;
$order->subject = "套餐 - {$package->title}";
$order->create();
return $order;
}
/**
* 创建赞赏订单
*
* @param CourseModel $course
* @param float $amount
* @return OrderModel $order
*/
public function createRewardOrder(CourseModel $course, $amount)
{
$authUser = $this->getDI()->get('auth')->getAuthUser();
$itemInfo = [
'course' => [
'id' => $course->id,
'title' => $course->title,
'cover' => $course->cover,
]
];
$order = new OrderModel();
$order->user_id = $authUser->id;
$order->item_id = $course->id;
$order->item_type = OrderModel::TYPE_REWARD;
$order->item_info = $itemInfo;
$order->amount = $amount;
$order->subject = "赞赏 - {$course->title}";
$order->create();
return $order;
}
/**
* 创建会员服务订单
*
* @param string $duration
* @return OrderModel
*/
public function createVipOrder($duration)
{
$authUser = $this->getDI()->get('auth')->getAuthUser();
$vipInfo = new VipInfo();
$vipItem = $vipInfo->getItem($duration);
$itemInfo = [
'vip' => [
'duration' => $vipItem['duration'],
'label' => $vipItem['label'],
'price' => $vipItem['price'],
]
];
$order = new OrderModel();
$order->user_id = $authUser->id;
$order->item_type = OrderModel::TYPE_VIP;
$order->item_info = $itemInfo;
$order->amount = $vipItem['price'];
$order->subject = "会员 - 会员服务({$vipItem['label']}";
$order->create();
return $order;
}
/**
* 获取订单来源
*/
protected function getSource()
{
}
}