public static function CouponOtherRefund($order, $coupons) { global $login_user_id; $count = count($coupons); if ($order['state'] != 'pay' || $order['origin'] <= 0 || $count <= 0) { return 0; } $state = $order['quantity'] == $count ? 'berefund' : 'normal'; if ($state == 'berefund') { //update credit ZCredit::Refund($order['user_id'], $order); //update order return Table::UpdateCache('order', $order['id'], array('state' => 'unpay', 'rstate' => $state, 'service' => 'cash')); } else { $money = $order['price'] * $count; //update order return Table::UpdateCache('order', $order['id'], array('quantity' => array("quantity - {$count}"), 'rstate' => $state, 'origin' => array("origin -{$money}"))); } }
$order = Table::Fetch('order', $id); $rid = strtolower(strval($_GET['rid'])); if ($rid == 'credit') { ZFlow::CreateFromRefund($order); } else { Table::UpdateCache('order', $id, array('service' => 'cash', 'rstate' => 'berefund', 'state' => 'unpay')); } /* team -- */ $team = Table::Fetch('team', $order['team_id']); team_state($team); if ($team['state'] != 'failure') { $minus = $team['conduser'] == 'Y' ? 1 : $order['quantity']; Table::UpdateCache('team', $team['id'], array('now_number' => array("now_number - {$minus}"))); } /* credit */ ZCredit::Refund($order['user_id'], $order); /* coupons */ if (in_array($team['delivery'], array('coupon', 'pickup'))) { $coupons = Table::Fetch('coupon', array($order['id']), 'order_id'); foreach ($coupons as $one) { Table::Delete('coupon', $one['id']); } } else { if ($team['delivery'] == 'voucher') { DB::Update('voucher', array('order_id' => $order['id']), array('order_id' => 0, 'user_id' => 0, 'sms' => 0)); } } /* order update */ Table::UpdateCache('order', $id, array('express_no' => '')); log_admin('order', '订单' . $order['id'] . '退款'); Session::Set('notice', '退款成功');