Browse Source

会员退款调整

gorden 4 months ago
parent
commit
5e92a99d10

+ 14 - 14
app/admin/controller/member/MemberController.php

@@ -1128,20 +1128,20 @@ class MemberController
         Db::beginTransaction();
         try {
             // 查出所有的充值订单
-            $orders = Order::where('join_order_member_id', $params['member_id'])
-                ->where('order_classify', 'RECHARGE')
-                ->where('order_is_complete', 'Y')
-                ->get()
-                ->toArray();
-            $orderIds = array_column($orders, 'order_id');
-            if (empty($orderIds)) {
-                throw new BusinessException("未查询到充值订单");
-            }
+//            $orders = Order::where('join_order_member_id', $params['member_id'])
+//                ->where('order_classify', 'RECHARGE')
+//                ->where('order_is_complete', 'Y')
+//                ->get()
+//                ->toArray();
+//            $orderIds = array_column($orders, 'order_id');
+//            if (empty($orderIds)) {
+//                throw new BusinessException("未查询到充值订单");
+//            }
 
             // 订单改为退款订单
-            Order::whereIn('order_id', $orderIds)->update([
-                'order_is_complete' => 'R'
-            ]);
+//            Order::whereIn('order_id', $orderIds)->update([
+//                'order_is_complete' => 'R'
+//            ]);
 
             OrderReturn::where('join_return_member_id', $params['member_id'])
                 ->where('order_return_status', '<>', 'DONE')
@@ -1150,7 +1150,7 @@ class MemberController
 
             $returnApplyJson = [
                 'reason' => '会员退款',
-                'order_id' => $orderIds,
+                'order_id' => 'ROLE_REFUND',
                 'classify' => 'ROLE_REFUND',
                 'username' => $params['username'],
                 'mobile' => $params['mobile'],
@@ -1166,7 +1166,7 @@ class MemberController
             OrderReturn::insert([
                 'join_order_return_user_id' => JwtToken::getCurrentId(),
                 'join_return_member_id' => $params['member_id'],
-                'join_return_order_id' => $orderIds[0],
+                'join_return_order_id' => 'ROLE_REFUND',
                 'order_return_status' => 'PENDING',
                 'order_return_category' => '会员退款',
                 'order_return_apply_datetime' => date('Y-m-d H:i:s'),

+ 80 - 18
app/admin/controller/order/RefundController.php

@@ -338,6 +338,68 @@ class RefundController extends Curd
         return json_success('', $data);
     }
 
+    /**
+     * @Desc 会员退款详情
+     * @Author Gorden
+     * @Date 2024/10/25 9:21
+     *
+     * @param Request $request
+     * @return Response
+     */
+    public function rechargeSheet(Request $request)
+    {
+        $returnId = $request->get('return_id');
+        if (!$returnId) {
+            return json_fail("参数异常");
+        }
+
+        $return = OrderReturn::with([
+            'member' => function ($query) {
+                $query->select('member_id', 'member_mobile', 'join_member_role_id', 'member_is_owner', 'member_is_vip', 'member_is_partner', 'member_is_referrer');
+            },
+            'info' => function ($query) {
+                $query->select('join_info_member_id', 'member_info_nickname', 'member_info_headimg');
+            },
+            'cert' => function ($query) {
+                $query->select('join_cert_member_id', 'member_cert_name');
+            },
+        ])->where('orders_return_id', $returnId)
+            ->first();
+        if (!$return) {
+            return json_fail('数据异常');
+        }
+        $return = $return->toArray();
+
+        $return['role_name'] = MemberService::getRoleName(!empty($return['member']) ? $return['member']['join_member_role_id'] : '');
+        $return['info']['member_info_nickname'] = MemberService::getNickname(!empty($return['info']) ? $return['info']['member_info_nickname'] : '', !empty($return['member']) ? $return['member']['member_mobile'] : '');
+        $return['info']['member_info_headimg'] = MemberService::getAvatarUrl(!empty($return['info']) ? $return['info']['member_info_headimg'] : '');
+
+        if (!empty($return['order_return_apply_json']) && is_json($return['order_return_apply_json'])) {
+            $json = json_decode($return['order_return_apply_json'], true);
+            $return['reason'] = $json['reason'] ?? '';
+            $return['order_return_apply_json'] = $json;
+        }
+        if (!empty($return['order_return_recharge_json']) && is_json($return['order_return_recharge_json'])) {
+            $json = json_decode($return['order_return_recharge_json'], true);
+            $return['change'] = $json['change'] ?? '';
+        }
+        if (!empty($return['join_order_return_user_id'])){
+            $return['disposeUserName'] = SysUser::where('user_id', $return['join_order_return_user_id'])->value('user_name');
+        }
+        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');
+            }
+        }
+
+        $data = [
+            'refund' => $return,
+        ];
+
+        return json_success('', $data);
+    }
+
     public function customRefund(Request $request)
     {
         $orderId = $request->post('order_id', '');
@@ -725,22 +787,22 @@ class RefundController extends Curd
      * @param Request $request
      * @return Response
      */
-    public function rechargeSheet(Request $request)
-    {
-        $refundId = $request->get('return_id');
-        if (!$refundId) {
-            return json_fail("参数异常");
-        }
-
-        $refund = OrderReturn::where('orders_return_id', $refundId)
-            ->first();
-        if (!empty($refund->order_return_apply_json)) {
-            $refund->order_return_apply_json = json_decode($refund->order_return_apply_json);
-        }
-
-
-        return json_success('', $refund);
-    }
+//    public function rechargeSheet(Request $request)
+//    {
+//        $refundId = $request->get('return_id');
+//        if (!$refundId) {
+//            return json_fail("参数异常");
+//        }
+//
+//        $refund = OrderReturn::where('orders_return_id', $refundId)
+//            ->first();
+//        if (!empty($refund->order_return_apply_json)) {
+//            $refund->order_return_apply_json = json_decode($refund->order_return_apply_json);
+//        }
+//
+//
+//        return json_success('', $refund);
+//    }
 
     /**
      * @Desc 充值退款
@@ -780,9 +842,9 @@ class RefundController extends Curd
         try {
             Db::beginTransaction();
             $refundApplyJson = json_decode($returnOrder->order_return_apply_json, true);
-            $amount = $refundApplyJson['surplus'];
+            // 应减金额等于 扣除金额 + 银行打款金额
+            $amount = $refundApplyJson['surplus'] + $refundApplyJson['amount'];
             $addedAmount = $refundApplyJson['added'];
-//            $refundApplyJson['amount'] = $refundApplyJson[''];
             $refundApplyJson['added_amount'] = $addedAmount;
             $refundApplyJson['user_id'] = JwtToken::getCurrentId();
             $refundApplyJson['datetime'] = date('Y-m-d H:i:s');

+ 8 - 5
app/event/ClientMessageEvent.php

@@ -6,6 +6,7 @@ use app\model\ClientMessage;
 use app\model\Order;
 use app\model\OrderReturn;
 use app\model\OrderSheet;
+use support\Log;
 
 class ClientMessageEvent
 {
@@ -19,6 +20,7 @@ class ClientMessageEvent
      */
     public function delivery($params)
     {
+        Log::info("发送消息", $params);
         try {
             $order = Order::where('order_id', $params['order_id'])
                 ->select('join_order_member_id')
@@ -54,6 +56,7 @@ class ClientMessageEvent
 
             $clientMessage->save();
         } catch (\Exception $e) {
+            Log::error("消息发送失败", ['msg' => $e->getMessage()]);
         }
     }
 
@@ -68,14 +71,14 @@ class ClientMessageEvent
     public function returnStatus($params)
     {
         try {
-            $orderReturn = OrderReturn::where('orders_return_id',$params['orders_return_id'])->first();
-            if (!$orderReturn){
+            $orderReturn = OrderReturn::where('orders_return_id', $params['orders_return_id'])->first();
+            if (!$orderReturn) {
                 return;
             }
 
-            if ($params['order_return_status'] == 'DOING'){
+            if ($params['order_return_status'] == 'DOING') {
                 $content = "商家已同意您的退货/退款申请。";
-            }else{
+            } else {
                 $content = "商家已拒绝您的退货/退款申请。";
             }
 
@@ -87,7 +90,7 @@ class ClientMessageEvent
             $clientMessage->client_message_status = 'PENDING';
             $clientMessage->client_message_category = 'NORMAL';
             $clientMessage->client_message_header_json = json_encode(['title' => '订单消息']);
-            $clientMessage->client_message_body_json = json_encode(['content' => '退货/退款通知:'.$content]);
+            $clientMessage->client_message_body_json = json_encode(['content' => '退货/退款通知:' . $content]);
             $clientMessage->client_message_addtimes = time();
             $clientMessage->save();
 

+ 5 - 0
app/model/OrderReturn.php

@@ -20,6 +20,11 @@ class OrderReturn extends Model
     {
         return $this->hasOne(Member::class, 'member_id', 'join_return_member_id');
     }
+
+    public function info(){
+        return $this->hasOne(MemberInfo::class,'join_info_member_id','join_return_member_id');
+    }
+
     public function cert()
     {
         return $this->hasOne(MemberCert::class, 'join_cert_member_id', 'join_return_member_id');