81 lines
2.3 KiB
PHP
81 lines
2.3 KiB
PHP
|
<?php
|
|||
|
|
|||
|
namespace app\task\model\sharing;
|
|||
|
|
|||
|
use app\common\model\sharing\Order as OrderModel;
|
|||
|
use app\common\service\order\Refund as RefundService;
|
|||
|
|
|||
|
/**
|
|||
|
* 拼团订单模型
|
|||
|
* Class Order
|
|||
|
* @package app\common\model\sharing
|
|||
|
*/
|
|||
|
class Order extends OrderModel
|
|||
|
{
|
|||
|
/**
|
|||
|
* 获取订单列表
|
|||
|
* @param array $filter
|
|||
|
* @param array $with
|
|||
|
* @return false|\PDOStatement|string|\think\Collection
|
|||
|
* @throws \think\db\exception\DataNotFoundException
|
|||
|
* @throws \think\db\exception\ModelNotFoundException
|
|||
|
* @throws \think\exception\DbException
|
|||
|
*/
|
|||
|
public function getList($filter = [], $with = [])
|
|||
|
{
|
|||
|
return $this->with($with)
|
|||
|
->where($filter)
|
|||
|
->where('is_delete', '=', 0)
|
|||
|
->select();
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取拼团失败的订单
|
|||
|
* @param int $limit
|
|||
|
* @return false|\PDOStatement|string|\think\Collection
|
|||
|
* @throws \think\db\exception\DataNotFoundException
|
|||
|
* @throws \think\db\exception\ModelNotFoundException
|
|||
|
* @throws \think\exception\DbException
|
|||
|
*/
|
|||
|
public function getFailedOrderList($limit = 100)
|
|||
|
{
|
|||
|
return $this->alias('order')
|
|||
|
->join('sharing_active active', 'order.active_id = active.active_id', 'INNER')
|
|||
|
->where('order_type', '=', 20)
|
|||
|
->where('pay_status', '=', 20)
|
|||
|
->where('order_status', '=', 10)
|
|||
|
->where('active.status', '=', 30)
|
|||
|
->where('is_refund', '=', 0)
|
|||
|
->where('order.is_delete', '=', 0)
|
|||
|
->limit($limit)
|
|||
|
->select();
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 更新拼团失败的订单并退款
|
|||
|
* @param $orderList
|
|||
|
* @return bool
|
|||
|
*/
|
|||
|
public function updateFailedStatus($orderList)
|
|||
|
{
|
|||
|
// 批量更新订单状态
|
|||
|
foreach ($orderList as $order) {
|
|||
|
/* @var static $order */
|
|||
|
try {
|
|||
|
// 执行退款操作
|
|||
|
(new RefundService)->execute($order);
|
|||
|
// 更新订单状态
|
|||
|
$order->save([
|
|||
|
'is_refund' => 1,
|
|||
|
'order_status' => '20'
|
|||
|
]);
|
|||
|
} catch (\Exception $e) {
|
|||
|
$this->error = '订单ID:' . $order['order_id'] . ' 退款失败,错误信息:' . $e->getMessage();
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
}
|