Browse Source

一些功能

Kirin 4 years ago
parent
commit
8eda8c3dad
1 changed files with 61 additions and 0 deletions
  1. 61 0
      app/api/controller/admin/StoreOrderController.php

+ 61 - 0
app/api/controller/admin/StoreOrderController.php

@@ -9,6 +9,7 @@ use app\admin\model\system\SystemStoreProductStock;
 use app\admin\model\user\UserRecharge;
 use app\models\system\SystemStore;
 use app\Request;
+use crmeb\basic\BaseModel;
 use think\db\exception\DataNotFoundException;
 use think\db\exception\DbException;
 use think\db\exception\ModelNotFoundException;
@@ -817,4 +818,64 @@ class StoreOrderController
         return app('json')->successful('ok', UserRecharge::getStoreRechargeList($where));
     }
 
+    public function back_deposit(Request $request)
+    {
+        $uid = $request->uid();
+        $data = UtilService::postMore([
+            ['order_id', ''],
+            ['price', 0]
+        ]);
+        if (!$data['order_id']) return app('json')->fail('数据不存在');
+        $orderInfo = StoreOrder::where('order_id', $data['order_id'])->where('store_id', SystemStoreStaff::where('uid', $uid)->value('store_id'))->where('paid', 1)->where('refund_status', 0)->find();
+        if (!$orderInfo) return app('json')->fail('订单不存在于该门店或未支付或已退款');
+        if ($orderInfo['deposit'] == $orderInfo['deposit_back']) return app('json')->fail('已退完押金!不能再退款了');
+        if (!$data['refund_price']) return app('json')->fail('请输入退款金额');
+        $refund_price = $data['refund_price'];
+        $data['deposit_back'] = bcadd($data['refund_price'], $orderInfo['deposit_back'], 2);
+        $bj = bccomp((float)$orderInfo['deposit'], (float)$data['deposit_back'], 2);
+        if ($bj < 0) return app('json')->fail('退押金额大于支付押金,请修改退押金额');
+        if ($data['type'] == 1) {
+            $data['deposit_status'] = 1;
+        } else if ($data['type'] == 2) {
+            $data['deposit_status'] = 0;
+        }
+//        $type = $data['type'];
+        unset($data['type']);
+        unset($data['refund_price']);
+        $refund_data['pay_price'] = bcadd($orderInfo['pay_price'], $orderInfo['deposit'], 2);
+        $refund_data['refund_price'] = $refund_price;
+
+        if ($orderInfo['pay_type'] == 'weixin') {
+            if ($orderInfo['is_channel'] == 1) {//小程序
+                try {
+                    MiniProgramService::payOrderRefund($orderInfo['order_id'], $refund_data);//2.5.36
+                } catch (\Exception $e) {
+                    return Json::fail($e->getMessage());
+                }
+            } else {//TODO 公众号
+                try {
+                    WechatService::payOrderRefund($orderInfo['order_id'], $refund_data);
+                } catch (\Exception $e) {
+                    return app('json')->fail($e->getMessage());
+                }
+            }
+        } else if ($orderInfo['pay_type'] == 'yue') {
+            BaseModel::beginTrans();
+            $usermoney = User::where('uid', $orderInfo['uid'])->value('now_money');
+            $res1 = User::bcInc($orderInfo['uid'], 'now_money', $refund_price, 'uid');
+            $res2 = UserBill::income('商品退押金', $orderInfo['uid'], 'now_money', 'pay_deposit_refund', $refund_price, $orderInfo['id'], bcadd($usermoney, $refund_price, 2), '订单退押金到余额' . floatval($refund_price) . '元');
+            $res = $res1 && $res2;
+            BaseModel::checkTrans($res);
+            if (!$res) return app('json')->fail('余额退押金失败!');
+        }
+        $resEdit = StoreOrder::edit($data, $orderInfo['id']);
+        if ($resEdit) {
+            StoreOrderStatus::setStatus($orderInfo['id'], 'refund_deposit', '退押金给用户' . $refund_price . '元');
+            return app('json')->success('成功!');
+        } else {
+            StoreOrderStatus::setStatus($orderInfo['id'], 'refund_deposit', '退押金给用户' . $refund_price . '元失败');
+            return app('json')->fail('失败!');
+        }
+    }
+
 }