|
|
@@ -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('失败!');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|