You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.9 KiB
87 lines
2.9 KiB
11 months ago
|
<?php
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Copyright (c) 2017~2023 https://www.yiovo.com All rights reserved.
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Author: 萤火科技 <admin@yiovo.com>
|
||
|
// +----------------------------------------------------------------------
|
||
|
declare (strict_types=1);
|
||
|
|
||
|
namespace app\api\service\groupon\order;
|
||
|
|
||
|
use app\api\model\Order as OrderModel;
|
||
|
use app\api\model\groupon\Task as TaskModel;
|
||
|
use app\api\model\groupon\Goods as GoodsModel;
|
||
|
use app\common\service\BaseService;
|
||
|
use cores\exception\BaseException;
|
||
|
|
||
|
/**
|
||
|
* 拼团订单支付成功后的回调
|
||
|
* Class PaySuccess
|
||
|
* @package app\api\service\groupon\order
|
||
|
*/
|
||
|
class PaySuccess extends BaseService
|
||
|
{
|
||
|
/**
|
||
|
* 回调方法
|
||
|
* @param $order
|
||
|
* @throws BaseException
|
||
|
*/
|
||
|
public function onPaySuccess($order)
|
||
|
{
|
||
|
// 获取拼团商品信息
|
||
|
$goodsInfo = $this->getGrouponGoodsInfo($order);
|
||
|
// 更新拼单记录
|
||
|
$this->updateTaskInfo($order, $goodsInfo);
|
||
|
// 累计拼团商品销量 (实际)
|
||
|
GoodsModel::setIncSales($goodsInfo['groupon_goods_id']);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 更新拼单记录
|
||
|
* @param $order
|
||
|
* @param $goodsInfo
|
||
|
* @return void
|
||
|
* @throws BaseException
|
||
|
*/
|
||
|
private function updateTaskInfo($order, $goodsInfo): void
|
||
|
{
|
||
|
$taskId = $order['order_source_id'];
|
||
|
$model = new TaskModel;
|
||
|
// 如果订单记录中存在来源ID,视为参与拼单
|
||
|
if ($taskId > 0) {
|
||
|
$model->updateTaskInfo($taskId, $order['user_id'], $order['order_id']);
|
||
|
return;
|
||
|
}
|
||
|
// 拼团人数 (仅阶梯团传入)
|
||
|
$stepPeople = $order['order_source_data']['stepPeople'] ?? 0;
|
||
|
// 创建新拼单
|
||
|
$taskId = $model->createTask($order['user_id'], $order['order_id'], $goodsInfo, $stepPeople);
|
||
|
// 将拼单ID记录到订单来源记录ID
|
||
|
$this->updateOrderSourceId($order, $taskId);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 更新订单来源记录ID
|
||
|
* @param $order
|
||
|
* @param int $taskId
|
||
|
*/
|
||
|
private function updateOrderSourceId($order, int $taskId)
|
||
|
{
|
||
|
OrderModel::updateOrderSourceId($order['order_id'], $taskId);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 获取拼团商品信息
|
||
|
* @param $order
|
||
|
* @return GoodsModel|array|null
|
||
|
*/
|
||
|
private function getGrouponGoodsInfo($order)
|
||
|
{
|
||
|
$grouponGoodsId = $order['goods'][0]['goods_source_id'];
|
||
|
return GoodsModel::detail($grouponGoodsId);
|
||
|
}
|
||
|
}
|