Forráskód Böngészése

enh: 用户退款提现都发消息

joe 4 éve
szülő
commit
5f40e32e4d

+ 2 - 0
app/admin/controller/finance/UserExtract.php

@@ -127,6 +127,7 @@ class UserExtract extends AuthController
         if ($extract->status == -1) return JsonService::fail('您的提现申请已被拒绝,请勿重复操作!');
         $res = UserExtractModel::changeFail($id, $fail_msg['message']);
         if ($res) {
+            event('UserExtractFail', [$extract, $fail_msg]);
             return JsonService::successful('操作成功!');
         } else {
             return JsonService::fail('操作失败!');
@@ -145,6 +146,7 @@ class UserExtract extends AuthController
         $res = UserExtractModel::changeSuccess($id);
         if ($res) {
             UserExtractModel::commitTrans();
+            event('UserExtractSucc', [$extract]);
             return JsonService::successful('操作成功!');
         } else {
             UserExtractModel::rollbackTrans();

+ 15 - 9
app/admin/controller/order/StoreOrder.php

@@ -563,24 +563,30 @@ class StoreOrder extends AuthController
         if (!$id) return $this->failed('数据不存在');
         $product = StoreOrderModel::get($id);
         if (!$product) return Json::fail('数据不存在!');
-        if ($product['pay_price'] == $product['refund_price']) return Json::fail('已退完支付金额!不能再退款了');
+        if ($product['pay_price'] <= $product['refund_price']) return Json::fail('已退完支付金额!不能再退款了');
         if (!$data['refund_price']) return Json::fail('请输入退款金额');
         $refund_price = $data['refund_price'];
+        // 已經退款的部分和當前請求金額
         $data['refund_price'] = bcadd($data['refund_price'], $product['refund_price'], 2);
         $bj = bccomp((float)$product['pay_price'], (float)$data['refund_price'], 2);
         if ($bj < 0) return Json::fail('退款金额大于支付金额,请修改退款金额');
-        if ($data['type'] == 1) {
-            $data['refund_status'] = 2;
-        } else if ($data['type'] == 2) {
-            $data['refund_status'] = 0;
+        if ($data['type'] == 1) {           // 直接退款
+            $data['refund_status'] = REFUNDED;
+        } else if ($data['type'] == 2) {    // 退款后,返回原状态
+            $data['refund_status'] = REFUND_NO;
         }
         $type = $data['type'];
         unset($data['type']);
         $refund_data['pay_price'] = $product['pay_price'];
         $refund_data['refund_price'] = $refund_price;
+
+        return Json::fail('目前系統版本暫不支持在線退款; 如果需要,請聯系工程技術部門升級系統');
+
         if ($product['pay_type'] == 'weixin') {
             if ($product['is_channel'] == 1) {//小程序
                 try {
+                    // TODO: 批量支付後,這個訂單號應該爲總訂單號,退款只支持批量購買最多貨品爲 1 種的訂單。
+                    throw new \Exception("目前系統部分訂單不支持退款,請聯系工程技術部門升級");
                     MiniProgramService::payOrderRefund($product['order_id'], $refund_data);//2.5.36
                 } catch (\Exception $e) {
                     return Json::fail($e->getMessage());
@@ -801,12 +807,12 @@ class StoreOrder extends AuthController
             'refund_reason',
         ]);
         if (!$id) return $this->failed('数据不存在');
-        $product = StoreOrderModel::get($id);
-        if (!$product) return Json::fail('数据不存在!');
+        $order = StoreOrderModel::get($id);
+        if (!$order) return Json::fail('数据不存在!');
         if (!$data['refund_reason']) return Json::fail('请输入不退款原因');
-        $data['refund_status'] = 0;
+        $data['refund_status'] = REFUND_NO;
         StoreOrderModel::edit($data, $id);
-        event('StoreProductOrderRefundNAfter', [$data['refund_reason'], $id]);
+        event('StoreProductOrderRefundNAfter', [$data['refund_reason'], $order]);
         StoreOrderStatus::setStatus($id, 'refund_n', '不退款原因:' . $data['refund_reason']);
         return Json::successful('修改成功!');
     }

+ 4 - 4
app/admin/controller/order/combinationOrder.php

@@ -536,12 +536,12 @@ class CombinationOrder extends AuthController
             'refund_reason',
         ]);
         if (!$id) return $this->failed('数据不存在');
-        $product = StoreOrderModel::get($id);
-        if (!$product) return Json::fail('数据不存在!');
+        $order = StoreOrderModel::get($id);
+        if (!$order) return Json::fail('数据不存在!');
         if (!$data['refund_reason']) return Json::fail('请输入退款原因');
-        $data['refund_status'] = 0;
+        $data['refund_status'] = REFUND_NO;
         StoreOrderModel::edit($data, $id);
-        event('StoreProductOrderRefundNAfter', [$data['refund_reason'], $id]);
+        event('StoreProductOrderRefundNAfter', [$data['refund_reason'], $order]);
         StoreOrderStatus::setStatus($id, 'refund_n', '不退款原因:' . $data['refund_reason']);
         return Json::successful('修改成功!');
     }

+ 3 - 0
config/app.php

@@ -64,4 +64,7 @@ return [
 
     // 排行榜 banner 750 x 142
     'leader_board_banner' => 'http://twongstatic.shotshock.shop/banner_rank_750x142.jpg',
+    
+    'header_cs_1' => 'http://twongstatic.shotshock.shop/headers/customer_service_1.jpg',
+    'header_cs_2' => 'http://twongstatic.shotshock.shop/headers/customer_service_2.jpg',
 ];

+ 9 - 2
crmeb/subscribes/OrderSubscribe.php

@@ -7,6 +7,7 @@
 
 namespace crmeb\subscribes;
 
+use app\models\user\UserNotice;
 use think\Event;
 use app\admin\model\order\StoreOrder as AdminStoreOrder;
 use app\models\store\StoreOrder;
@@ -18,6 +19,7 @@ use app\models\store\StoreOrderCartInfo;
 use crmeb\services\SystemConfigService;
 use crmeb\services\YLYService;
 use think\facade\Log;
+use think\facade\Config;
 
 /**
  * 订单事件
@@ -64,8 +66,13 @@ class OrderSubscribe
      */
     public function onStoreProductOrderRefundNAfter($event)
     {
-        list($data, $id) = $event;
-        AdminStoreOrder::refundNoPrieTemplate($id, $data);
+        list($data, $order) = $event;
+        AdminStoreOrder::refundNoPrieTemplate($order['id'], $data);
+        // TODO: 发送消息
+        $icon = Config::get('app.header_cs_1', '');
+        UserNotice::sendNoticeTo($order['uid'], '您的退款申请已处理',
+                '您申请退款的订单号: ' . $order['order_id']
+                . ' 未成功退款;原因:' . $data . '。如有问题,请联系客服。', $icon);
     }
 
     /**

+ 25 - 0
crmeb/subscribes/UserSubscribe.php

@@ -7,7 +7,9 @@ use app\models\user\WechatUser;
 use think\facade\Cookie;
 use app\admin\model\system\SystemAttachment;
 use app\models\user\UserLevel;
+use app\models\user\UserNotice;
 use think\facade\Log;
+use think\facade\Config;
 
 /**
  * 用户事件
@@ -161,6 +163,29 @@ class UserSubscribe
         Log::debug('EVENT user ' . $user['uid'] . ' withdraw ' . mapped_implode(',', $info));
     }
 
+    /**
+     * 後臺批準提現 UserExtractSucc
+     */
+    public function onUserExtractSucc($event)
+    {
+        list($extract) = $event;
+        $icon = Config::get('app.header_cs_2', '');
+        UserNotice::sendNoticeTo($extract['uid'], '您的提现申请已处理',
+                '您申请提现 ' . $extract['extract_price']
+                . ' 元已转账,请耐心等待收款方系统确认后核对金额。衷心感谢您对美天旺的信任和支持。如有问题,请联系客服。', $icon);
+    }
+    /**
+     * 後臺拒絕提現 UserExtractFail
+     */
+    public function onUserExtractFail($event)
+    {
+        list($extract, $fail_msg) = $event;
+        $icon = Config::get('app.header_cs_2', '');
+        UserNotice::sendNoticeTo($extract['uid'], '您的提现申请已处理',
+        '您申请提现 ' . $extract['extract_price']
+        . ' 元未能成功执行,原因:' . $fail_msg['message'] . '。请联系客服处理。', $icon);
+    }
+
     /**
      * 首次挖礦得到弊 UserFirstDig
      */