|
@@ -559,6 +559,27 @@ class StoreOrder extends AuthController
|
|
|
} else return Json::fail('数据不存在!');
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ * 修改退押金状态
|
|
|
+ * @param $id
|
|
|
+ * @return \think\response\Json|void
|
|
|
+ */
|
|
|
+ public function refund_exchange_deposit_y($id)
|
|
|
+ {
|
|
|
+ if (!$id) return $this->failed('数据不存在');
|
|
|
+ $product = StoreExchangeOrder::get($id);
|
|
|
+ if (!$product) return Json::fail('数据不存在!');
|
|
|
+ if ($product['paid'] == 1) {
|
|
|
+ $f = [];
|
|
|
+ $f[] = Form::input('order_id', '退押单号', $product->getData('order_id'))->disabled(1);
|
|
|
+ $f[] = Form::number('refund_price', '退押金额', bcsub($product->getData('deposit'), $product->getData('deposit_back'), 2))->precision(2)->min(0.01);
|
|
|
+
|
|
|
+ $form = Form::make_post_form('退押处理', $f, Url::buildUrl('updateExchangeRefundDepositY', array('id' => $id)), 7);
|
|
|
+ $this->assign(compact('form'));
|
|
|
+ return $this->fetch('public/form-builder');
|
|
|
+ } else return Json::fail('数据不存在!');
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
* 退款处理
|
|
|
* @param $id
|
|
@@ -761,6 +782,75 @@ class StoreOrder extends AuthController
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ * 订单退押金
|
|
|
+ * @param Request $request
|
|
|
+ * @return mixed
|
|
|
+ * @throws \think\Exception
|
|
|
+ * @throws \think\db\exception\DataNotFoundException
|
|
|
+ * @throws \think\db\exception\ModelNotFoundException
|
|
|
+ * @throws \think\exception\DbException
|
|
|
+ */
|
|
|
+ public function updateExchangeRefundDepositY($id)
|
|
|
+ {
|
|
|
+ $data = Util::postMore([
|
|
|
+ 'refund_price',
|
|
|
+ ['type', 1],
|
|
|
+ ]);
|
|
|
+ if (!$id) return $this->failed('数据不存在');
|
|
|
+ $product = StoreExchangeOrder::get($id);
|
|
|
+ if (!$product) return Json::fail('数据不存在!');
|
|
|
+ if ($product['deposit'] == $product['deposit_back']) return Json::fail('已退完押金!不能再退款了');
|
|
|
+ if (!$data['refund_price']) return Json::fail('请输入退款金额');
|
|
|
+ $refund_price = $data['refund_price'];
|
|
|
+ $data['deposit_back'] = bcadd($data['refund_price'], $product['deposit_back'], 2);
|
|
|
+ $bj = bccomp((float)$product['deposit'], (float)$data['deposit_back'], 2);
|
|
|
+ if ($bj < 0) return Json::fail('退押金额大于支付押金,请修改退押金额');
|
|
|
+ if ($data['type'] == 1) {
|
|
|
+ $data['deposit_status'] = 1;
|
|
|
+ } else if ($data['type'] == 2) {
|
|
|
+ $data['deposit_status'] = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ unset($data['type']);
|
|
|
+ unset($data['refund_price']);
|
|
|
+ $refund_data['pay_price'] = bcadd($product['pay_price'], $product['deposit'], 2);
|
|
|
+ $refund_data['refund_price'] = $refund_price;
|
|
|
+ $refund_data['refund_id'] = 'refund_deposit' . $product['order_id'] . time();
|
|
|
+
|
|
|
+ if ($product['pay_type'] == 'weixin') {
|
|
|
+ if ($product['is_channel'] == 1) {
|
|
|
+ try {
|
|
|
+ MiniProgramService::payOrderRefund($product['order_id'], $refund_data);
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ return Json::fail($e->getMessage());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ try {
|
|
|
+ WechatService::payOrderRefund($product['order_id'], $refund_data);
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ return Json::fail($e->getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if ($product['pay_type'] == 'yue') {
|
|
|
+ BaseModel::beginTrans();
|
|
|
+ $usermoney = User::where('uid', $product['uid'])->value('now_money');
|
|
|
+ $res1 = User::bcInc($product['uid'], 'now_money', $refund_price, 'uid');
|
|
|
+ $res2 = UserBill::income('商品退押金', $product['uid'], 'now_money', 'pay_deposit_refund', $refund_price, $product['id'], bcadd($usermoney, $refund_price, 2), '订单退押金到余额' . floatval($refund_price) . '元');
|
|
|
+ $res = $res1 && $res2;
|
|
|
+ BaseModel::checkTrans($res);
|
|
|
+ if (!$res) return Json::fail('余额退押金失败!');
|
|
|
+ }
|
|
|
+ $resEdit = StoreExchangeOrder::edit($data, $id);
|
|
|
+ if ($resEdit) {
|
|
|
+ StoreOrderStatus::setStatus($id, 'refund_deposit', '退押金给用户' . $refund_price . '元');
|
|
|
+ return Json::successful('修改成功!');
|
|
|
+ } else {
|
|
|
+ StoreOrderStatus::setStatus($id, 'refund_deposit', '退押金给用户' . $refund_price . '元失败');
|
|
|
+ return Json::fail('修改失败!');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public function order_info($oid = '')
|
|
|
{
|
|
|
if (!$oid || !($orderInfo = StoreOrderModel::get($oid)))
|
|
@@ -1032,4 +1122,25 @@ class StoreOrder extends AuthController
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ * 立即核销
|
|
|
+ * @param $id
|
|
|
+ */
|
|
|
+ public function exchange_verify($id)
|
|
|
+ {
|
|
|
+ StoreExchangeOrder::beginTrans();
|
|
|
+ $orderInfo = StoreExchangeOrder::where('id', $id)->find();
|
|
|
+ if (!$orderInfo) return Json::fail('核销订单不存在!');
|
|
|
+ if ($orderInfo->status > 0) return Json::fail('订单已核销!');
|
|
|
+
|
|
|
+ $orderInfo->status = 1;
|
|
|
+ if ($orderInfo->save()) {
|
|
|
+ StoreExchangeOrder::commitTrans();
|
|
|
+ return Json::successful('核销成功!');
|
|
|
+ } else {
|
|
|
+ StoreExchangeOrder::rollbackTrans();
|
|
|
+ return Json::fail('核销失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|