53 lines
1.5 KiB
PHP
53 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace app\api\model\order;
|
|
|
|
use think\Model;
|
|
use think\Db;
|
|
use app\common\model\order\Status as StatusModel;
|
|
class Service extends Model
|
|
{
|
|
// 申请退款
|
|
public static function operRefund($params)
|
|
{
|
|
$user = User::info();
|
|
extract($params);
|
|
|
|
$order = self::canAftersale()->where('user_id', $user->id)->where('id', $id)->find();
|
|
|
|
// 获取要操作的 订单 item
|
|
$order_item = self::getItem($order, $order_item_id);
|
|
if (!in_array($order_item->refund_status, [
|
|
OrderItem::REFUND_STATUS_REFUSE,
|
|
OrderItem::REFUND_STATUS_NOREFUND,
|
|
])) {
|
|
throw new \app\common\exception\Exception('当前订单已在申请退款状态');
|
|
}
|
|
|
|
$order = Db::transaction(function () use ($order, $order_item, $user) {
|
|
$order_item->aftersale_status = OrderItem::AFTERSALE_STATUS_AFTERING; // 申请售后
|
|
$order_item->refund_status = OrderItem::REFUND_STATUS_ING; // 申请退款
|
|
$order_item->save();
|
|
|
|
OrderAction::operAdd($order, $order_item, $user, 'user', '用户申请退款');
|
|
|
|
return $order;
|
|
});
|
|
|
|
return $order;
|
|
}
|
|
|
|
/**
|
|
* 获取退款原因
|
|
* @return string[]
|
|
*/
|
|
public function getRefundReason(){
|
|
return [
|
|
1=>'不想要了',
|
|
2=>'商家服务原因',
|
|
3=>'商品质量问题',
|
|
4=>'其他'
|
|
];
|
|
}
|
|
|
|
} |