|
@@ -4,6 +4,7 @@ namespace app\admin\controller\order;
|
|
|
|
|
|
use app\admin\validate\order\ReturnValidate;
|
|
|
use app\controller\Curd;
|
|
|
+use app\model\CouponDetail;
|
|
|
use app\model\GoodsComponent;
|
|
|
use app\model\MemberAccount;
|
|
|
use app\model\Order;
|
|
@@ -37,7 +38,7 @@ class RefundController extends Curd
|
|
|
$type = $request->get('type', '');
|
|
|
$field = $field ?? 'order_return_addtimes';
|
|
|
$where['order_return_category'] = '退款';
|
|
|
- if (!empty($where['order_return_addtimes'])){
|
|
|
+ if (!empty($where['order_return_addtimes'])) {
|
|
|
$where['order_return_addtimes'][0] = strtotime($where['order_return_addtimes'][0]);
|
|
|
$where['order_return_addtimes'][1] = strtotime($where['order_return_addtimes'][1]);
|
|
|
}
|
|
@@ -107,13 +108,13 @@ class RefundController extends Curd
|
|
|
'goods' => function ($query) {
|
|
|
$query->select('goods_id', 'goods_name');
|
|
|
}
|
|
|
- ])->select('join_sheet_order_id','join_sheet_goods_id')
|
|
|
- ->where('join_sheet_order_id',$item['order']->order_id)
|
|
|
+ ])->select('join_sheet_order_id', 'join_sheet_goods_id')
|
|
|
+ ->where('join_sheet_order_id', $item['order']->order_id)
|
|
|
->get()
|
|
|
->toArray();
|
|
|
$goodsName = !empty($orderSheet) ? $orderSheet[0]['goods']['goods_name'] : '';
|
|
|
- if (count($orderSheet) > 1){
|
|
|
- $goodsName.= ' 等';
|
|
|
+ if (count($orderSheet) > 1) {
|
|
|
+ $goodsName .= ' 等';
|
|
|
}
|
|
|
$item['goods_name'] = $goodsName;
|
|
|
}
|
|
@@ -127,8 +128,8 @@ class RefundController extends Curd
|
|
|
}
|
|
|
if (!empty($item['order_return_refund_json']) && is_json($item['order_return_refund_json'])) {
|
|
|
$returnRefundJson = json_decode($item['order_return_refund_json'], true);
|
|
|
- if (!empty($returnRefundJson['user_id'])){
|
|
|
- $item['userName'] = SysUser::where('user_id',$returnRefundJson['user_id'])->value('user_name');
|
|
|
+ if (!empty($returnRefundJson['user_id'])) {
|
|
|
+ $item['userName'] = SysUser::where('user_id', $returnRefundJson['user_id'])->value('user_name');
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -252,8 +253,8 @@ class RefundController extends Curd
|
|
|
$return = OrderReturn::where('join_return_order_id', $orderId)->first();
|
|
|
if (!empty($return->order_return_refund_json)) {
|
|
|
$returnRefundJson = json_decode($return->order_return_refund_json, true);
|
|
|
- if (!empty($returnRefundJson['user_id'])){
|
|
|
- $return->userName = SysUser::where('user_id',$returnRefundJson['user_id'])->value('user_name');
|
|
|
+ if (!empty($returnRefundJson['user_id'])) {
|
|
|
+ $return->userName = SysUser::where('user_id', $returnRefundJson['user_id'])->value('user_name');
|
|
|
}
|
|
|
}
|
|
|
$express = OrderExpress::where('join_express_order_id', $orderId)->first();
|
|
@@ -301,6 +302,26 @@ class RefundController extends Curd
|
|
|
$response = [];
|
|
|
Db::beginTransaction();
|
|
|
try {
|
|
|
+ // 全额退款,检查优惠券,恢复可使用
|
|
|
+ if (sprintf("%.2f", $amount) == sprintf("%.2f", $order->order_amount_pay)) {
|
|
|
+ if (!empty($order->order_discount_json)) {
|
|
|
+ $discountJson = json_decode($order->order_discount_json, true);
|
|
|
+ foreach ($discountJson as $item){
|
|
|
+ if (empty($item['coupon_id'])){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 是否有其他订单一起使用优惠券
|
|
|
+ if(!Order::where('order_groupby',$order->order_groupby)->where('order_id','<>',$order->order_id)->where('order_is_complete','<>','R')->exists()){
|
|
|
+ CouponDetail::where('coupon_detail_id',$item['coupon_id'])->update([
|
|
|
+ 'coupon_detail_status'=>'ACTIVED',
|
|
|
+ 'coupon_detail_used_datetime'=>''
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
// 主订单,退款作为优惠入库
|
|
|
$this->updateMainOrderByRefund($order, $amount, $remark);
|
|
|
// return 表记录
|
|
@@ -347,7 +368,7 @@ class RefundController extends Curd
|
|
|
$prepayid = $order->join_order_member_id . '-WELFARE';
|
|
|
$this->refundToWelfare($order->join_order_member_id, $amount);
|
|
|
$response = ['order_id' => $order->order_id, 'member_id' => $order->join_order_member_id];
|
|
|
- } elseif (isset($payWay[1]) && $payWay[1] == 'VIP') {
|
|
|
+ } elseif (isset($payWay[1]) && $payWay[1] == 'VIP') {
|
|
|
$prepayid = $order->join_order_member_id . '-VIP';
|
|
|
$this->refundToVIP($order->join_order_member_id, $amount);
|
|
|
$response = ['order_id' => $order->order_id, 'member_id' => $order->join_order_member_id];
|