|
|
@@ -48,19 +48,22 @@ class RefundController extends BaseController
|
|
|
|
|
|
$post = Yii::$app->request->post();
|
|
|
$id = isset($post['id']) ? $post['id'] : 0;
|
|
|
- $order = OrderService::getOrderInfo($id, false, false, false, false);
|
|
|
+ $order = OrderClass::getById($id, true);
|
|
|
OrderClass::valid($order, $this->shopId);
|
|
|
- if ($order['status'] != OrderClass::ORDER_STATUS_COMPLETE) {
|
|
|
+ if ($order->status != OrderClass::ORDER_STATUS_COMPLETE) {
|
|
|
util::fail("订单完成了才能发起退款");
|
|
|
}
|
|
|
|
|
|
- $addTime = $order['addTime'] ?? '';
|
|
|
+ $addTime = $order->addTime ?? '';
|
|
|
$current = time();
|
|
|
if ((strtotime($addTime) + 3 * 30 * 24 * 60 * 60) < $current) {
|
|
|
util::fail('历史订单,不能再发起退款');
|
|
|
}
|
|
|
+ if (strtotime($addTime) <= strtotime('2022-04-01 00:00:00')) {
|
|
|
+ util::fail('历史订单,不能发起退款哦');
|
|
|
+ }
|
|
|
|
|
|
- //根据退款类型:1退货并退款(需要减库存) 2:仅退款(不用减库存,不用传花材)
|
|
|
+ //退款类型 1退货并退款 2 仅退款
|
|
|
$refundType = $post['refundType'] ?? 0;
|
|
|
|
|
|
if ($refundType != RefundOrderClass::REFUND_TYPE_MONEY_GOOD && $refundType != RefundOrderClass::REFUND_TYPE_MONEY) {
|
|
|
@@ -68,46 +71,17 @@ class RefundController extends BaseController
|
|
|
}
|
|
|
|
|
|
if ($refundType == RefundOrderClass::REFUND_TYPE_MONEY_GOOD) {
|
|
|
- $infoProduct = $order['product'];
|
|
|
- $productIds = array_unique(array_filter(array_column($infoProduct, 'productId')));
|
|
|
- $productData = ProductClass::getProductByIds($productIds);
|
|
|
- $productData = array_column($productData, NULL, 'id');
|
|
|
- $orderProductMap = [];
|
|
|
- foreach ($infoProduct as $v) {
|
|
|
- $orderProductMap[$v['productId']] = $v;
|
|
|
- }
|
|
|
- //[{productId:0,bigNum:1,smallNum:0}]
|
|
|
+
|
|
|
+ //[{productId:0,num:1,unitType:0}]
|
|
|
$productJson = $post['product'] ?? '';
|
|
|
if (empty($productJson)) {
|
|
|
util::fail('请选择花材');
|
|
|
}
|
|
|
$productList = json_decode($productJson, true);
|
|
|
if (!is_array($productList)) {
|
|
|
- util::fail('花材格式不正确');
|
|
|
- }
|
|
|
- //合并
|
|
|
- $productList = ProductClass::mergeItemInfo($productList);
|
|
|
- if (empty($productList)) {
|
|
|
- util::fail('请选择花材');
|
|
|
+ util::fail('请选择花材哦');
|
|
|
}
|
|
|
|
|
|
- //判定花材数不能大于原订单数
|
|
|
- foreach ($productList as $v) {
|
|
|
- $orderProductNum = $orderProductMap[$v['productId']]['num'] ?? 0;
|
|
|
- $productName = $productData[$v['productId']]['name'] ?? '';
|
|
|
- if (!$orderProductNum) {
|
|
|
- util::fail($productName . "花材数量错误");
|
|
|
- }
|
|
|
- //数量
|
|
|
- $bigNum = $v['bigNum'] ?? 0;
|
|
|
- $smallNum = $v['smallNum'] ?? 0;
|
|
|
- $ratio = $productData[$v['productId']]['ratio'] ?? 0;
|
|
|
-
|
|
|
- $num = ProductClass::mergeItemNum($bigNum, $smallNum, $ratio);
|
|
|
- if ($num > $orderProductNum) {
|
|
|
- util::fail($productName . "花材数量错误");
|
|
|
- }
|
|
|
- }
|
|
|
$post['product'] = $productList;
|
|
|
} else {
|
|
|
//仅退款花材直接设置为空
|