From 3ee83dcc861e7d94bc08bffb449d0fd728acf197 Mon Sep 17 00:00:00 2001 From: liu <1873441552@qq.com> Date: Mon, 24 Jun 2024 09:39:45 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E6=80=BB=E5=90=8E=E5=8F=B0=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E9=80=80=E6=AC=BE=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store_order/StoreOrderController.php | 28 +++++++++++++++++++ .../store_order/StoreOrderValidate.php | 10 +++++++ 2 files changed, 38 insertions(+) diff --git a/app/admin/controller/store_order/StoreOrderController.php b/app/admin/controller/store_order/StoreOrderController.php index 0a9e54087..9a1e956ee 100644 --- a/app/admin/controller/store_order/StoreOrderController.php +++ b/app/admin/controller/store_order/StoreOrderController.php @@ -8,6 +8,8 @@ use app\admin\lists\store_order\StoreOrderLists; use app\admin\lists\store_order\StoreRefundOrderLists; use app\admin\logic\store_order\StoreOrderLogic; use app\admin\validate\store_order\StoreOrderValidate; +use app\common\logic\PayNotifyLogic; +use app\common\model\store_order\StoreOrder; /** @@ -101,5 +103,31 @@ class StoreOrderController extends BaseAdminController return $this->data($result); } + /** + * 退款逻辑 + * @return \support\Response + * @throws \Exception + */ + public function refund() + { + $params = (new StoreOrderValidate())->goCheck('refund'); + $detail = StoreOrder::where('order_id',$params['order_id'])->findOrEmpty(); + if(empty($detail)){ + return $this->fail('无该订单请检查'); + } + $money = bcmul($detail['pay_price'],100); + $refund = (new \app\common\logic\store_order\StoreOrderLogic()) + ->refund($params['order_id'],$money,$money); + if($refund){ + $arr = [ + 'amount'=>[ + 'refund'=>$money + ] + ]; + PayNotifyLogic::refund($params['order_id'],$arr); + return $this->success(); + } + return $this->fail('退款失败'); + } } \ No newline at end of file diff --git a/app/admin/validate/store_order/StoreOrderValidate.php b/app/admin/validate/store_order/StoreOrderValidate.php index ffb5d9806..286de5a3b 100644 --- a/app/admin/validate/store_order/StoreOrderValidate.php +++ b/app/admin/validate/store_order/StoreOrderValidate.php @@ -20,6 +20,7 @@ class StoreOrderValidate extends BaseValidate */ protected $rule = [ 'id' => 'require', + 'order_id' => 'require', ]; @@ -29,8 +30,17 @@ class StoreOrderValidate extends BaseValidate */ protected $field = [ 'id' => 'id', + 'order_id' => '订单编号', ]; + /** + * @return StoreOrderValidate + */ + public function sceneRefund() + { + return $this->only(['order_id']); + } + /** * @notes 添加场景 From e5d514bdd404f98885654d953a9cbf248f1b088b Mon Sep 17 00:00:00 2001 From: liu <1873441552@qq.com> Date: Mon, 24 Jun 2024 09:46:00 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/store_order/StoreOrderController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/admin/controller/store_order/StoreOrderController.php b/app/admin/controller/store_order/StoreOrderController.php index 9a1e956ee..5c44fd202 100644 --- a/app/admin/controller/store_order/StoreOrderController.php +++ b/app/admin/controller/store_order/StoreOrderController.php @@ -115,7 +115,7 @@ class StoreOrderController extends BaseAdminController if(empty($detail)){ return $this->fail('无该订单请检查'); } - $money = bcmul($detail['pay_price'],100); + $money = (int)bcmul($detail['pay_price'],100); $refund = (new \app\common\logic\store_order\StoreOrderLogic()) ->refund($params['order_id'],$money,$money); if($refund){ From f010d54c7a76cdb9c79b67e74697e404640683f3 Mon Sep 17 00:00:00 2001 From: liu <1873441552@qq.com> Date: Mon, 24 Jun 2024 10:11:13 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E5=85=BC=E5=AE=B9=E9=80=80=E4=BD=99?= =?UTF-8?q?=E9=A2=9D=E5=92=8C=E9=87=87=E8=B4=AD=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store_order/StoreOrderController.php | 27 ++++++++++++++++--- app/common/logic/PayNotifyLogic.php | 13 +++++++++ 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/app/admin/controller/store_order/StoreOrderController.php b/app/admin/controller/store_order/StoreOrderController.php index 5c44fd202..3fea23aac 100644 --- a/app/admin/controller/store_order/StoreOrderController.php +++ b/app/admin/controller/store_order/StoreOrderController.php @@ -8,6 +8,7 @@ use app\admin\lists\store_order\StoreOrderLists; use app\admin\lists\store_order\StoreRefundOrderLists; use app\admin\logic\store_order\StoreOrderLogic; use app\admin\validate\store_order\StoreOrderValidate; +use app\common\enum\PayEnum; use app\common\logic\PayNotifyLogic; use app\common\model\store_order\StoreOrder; @@ -115,10 +116,25 @@ class StoreOrderController extends BaseAdminController if(empty($detail)){ return $this->fail('无该订单请检查'); } - $money = (int)bcmul($detail['pay_price'],100); - $refund = (new \app\common\logic\store_order\StoreOrderLogic()) - ->refund($params['order_id'],$money,$money); - if($refund){ + + //微信支付 + if(in_array($detail['pay_type'],[PayEnum::WECHAT_PAY_MINI,PayEnum::WECHAT_PAY_BARCODE])){ + $money = (int)bcmul($detail['pay_price'],100); + $refund = (new \app\common\logic\store_order\StoreOrderLogic()) + ->refund($params['order_id'],$money,$money); + if($refund){ + $arr = [ + 'amount'=>[ + 'refund'=>$money + ] + ]; + PayNotifyLogic::refund($params['order_id'],$arr); + return $this->success(); + } + } + //余额支付 采购款支付 + if (in_array($detail['pay_type'] ,[PayEnum::BALANCE_PAY,PayEnum::PURCHASE_FUNDS])){ + $money = bcmul($detail['pay_price'],100); $arr = [ 'amount'=>[ 'refund'=>$money @@ -126,7 +142,10 @@ class StoreOrderController extends BaseAdminController ]; PayNotifyLogic::refund($params['order_id'],$arr); return $this->success(); + } + //支付包支付 + return $this->fail('退款失败'); } diff --git a/app/common/logic/PayNotifyLogic.php b/app/common/logic/PayNotifyLogic.php index 9018de022..086d2d840 100644 --- a/app/common/logic/PayNotifyLogic.php +++ b/app/common/logic/PayNotifyLogic.php @@ -264,6 +264,19 @@ class PayNotifyLogic extends BaseLogic $order->refund_reason_time = time(); $order->refund_num += 1; $order->save(); + //加用户余额,采购款, 日志记录 加数量 + if (in_array($order['pay_type'],[PayEnum::BALANCE_PAY,PayEnum::PURCHASE_FUNDS])){ + $user = User::where('id', $order['uid'])->findOrEmpty(); + if($order['pay_type'] == PayEnum::BALANCE_PAY){ + $user->now_money = bcadd($user->now_money, $extra['amount']['refund'], 2); + $user->save(); + } + if($order['pay_type'] == PayEnum::PURCHASE_FUNDS){ + $user->purchase_funds = bcadd($user->purchase_funds, $extra['amount']['refund'], 2); + $user->save(); + } + + } // self::afterPay($order,$extra['transaction_id']); } From f1e807ab299a11d990b8d1a430304927171aa366 Mon Sep 17 00:00:00 2001 From: liu <1873441552@qq.com> Date: Mon, 24 Jun 2024 10:41:18 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E7=8E=B0=E9=87=91=E9=80=80=E6=AC=BE?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store_order/StoreOrderController.php | 7 +- app/common/logic/PayNotifyLogic.php | 72 ++++++++++++++++++- 2 files changed, 76 insertions(+), 3 deletions(-) diff --git a/app/admin/controller/store_order/StoreOrderController.php b/app/admin/controller/store_order/StoreOrderController.php index 3fea23aac..47e6d6ff9 100644 --- a/app/admin/controller/store_order/StoreOrderController.php +++ b/app/admin/controller/store_order/StoreOrderController.php @@ -116,7 +116,7 @@ class StoreOrderController extends BaseAdminController if(empty($detail)){ return $this->fail('无该订单请检查'); } - +// d($detail); //微信支付 if(in_array($detail['pay_type'],[PayEnum::WECHAT_PAY_MINI,PayEnum::WECHAT_PAY_BARCODE])){ $money = (int)bcmul($detail['pay_price'],100); @@ -144,6 +144,11 @@ class StoreOrderController extends BaseAdminController return $this->success(); } + //现金支付 + if($detail['pay_type'] = PayEnum::CASH_PAY){ + PayNotifyLogic::cash_refund($params['order_id']); + return $this->success(); + } //支付包支付 return $this->fail('退款失败'); diff --git a/app/common/logic/PayNotifyLogic.php b/app/common/logic/PayNotifyLogic.php index 086d2d840..892b39853 100644 --- a/app/common/logic/PayNotifyLogic.php +++ b/app/common/logic/PayNotifyLogic.php @@ -6,10 +6,12 @@ use app\api\logic\order\OrderLogic; use app\common\enum\OrderEnum; use app\common\enum\PayEnum; use app\common\enum\user\UserShipEnum; +use app\common\enum\YesNoEnum; use app\common\model\dict\DictType; use app\common\model\finance\PayNotifyLog; use app\common\model\pay\PayNotify; use app\common\model\store_branch_product\StoreBranchProduct; +use app\common\model\store_cash_finance_flow\StoreCashFinanceFlow; use app\common\model\store_finance_flow\StoreFinanceFlow; use app\common\model\store_order\StoreOrder; use app\common\model\store_order_cart_info\StoreOrderCartInfo; @@ -266,13 +268,14 @@ class PayNotifyLogic extends BaseLogic $order->save(); //加用户余额,采购款, 日志记录 加数量 if (in_array($order['pay_type'],[PayEnum::BALANCE_PAY,PayEnum::PURCHASE_FUNDS])){ + $deal_money = bcdiv($extra['amount']['refund'], 100, 2); $user = User::where('id', $order['uid'])->findOrEmpty(); if($order['pay_type'] == PayEnum::BALANCE_PAY){ - $user->now_money = bcadd($user->now_money, $extra['amount']['refund'], 2); + $user->now_money = bcadd($user->now_money, $deal_money, 2); $user->save(); } if($order['pay_type'] == PayEnum::PURCHASE_FUNDS){ - $user->purchase_funds = bcadd($user->purchase_funds, $extra['amount']['refund'], 2); + $user->purchase_funds = bcadd($user->purchase_funds, $deal_money, 2); $user->save(); } @@ -281,6 +284,40 @@ class PayNotifyLogic extends BaseLogic // self::afterPay($order,$extra['transaction_id']); } + /** + * 现金退款相关 + * @param $orderSn + * @param $extra + * @return true + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + */ + public static function cash_refund($orderSn, $extra = []) + { + $order = StoreOrder::where('order_id', $orderSn)->findOrEmpty(); + if ($order->isEmpty() || $order->status == OrderEnum::REFUND_PAY) { + return true; + } + $order->refund_status = OrderEnum::REFUND_STATUS_FINISH; + $order->refund_price = $order->pay_price; + $order->refund_reason_time = time(); + $order->refund_num += 1; + $order->save(); + //日志记录 + $model = new StoreCashFinanceFlow(); + $model->store_id = $order['store_id']??0; + $model->cash_price = $order->pay_price; + $model->receivable = $order->pay_price; + $model->remark = '退款'; + $model->type = 1; + $model->status = YesNoEnum::YES; + $model->save(); + //增加数量 + self::addStock($order['id']); + return true; + } + /** * 充值 */ @@ -778,4 +815,35 @@ class PayNotifyLogic extends BaseLogic (new StoreBranchProduct())->saveAll($updateData); } + + /** + * 加库存 + * @param $oid + * @return void + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + */ + public static function addStock($oid) + { + $updateData = []; + $goods_list = StoreOrderCartInfo::where('oid', $oid)->select()->toArray(); + foreach ($goods_list as $v) { + $StoreBranchProduct = StoreBranchProduct::where( + [ + 'store_id' => $v['store_id'], + 'product_id' => $v['product_id'], + ] + )->withTrashed()->find(); + if ($StoreBranchProduct) { + $updateData[] = [ + 'id' => $StoreBranchProduct['id'], + 'stock' => $StoreBranchProduct['stock'] + $v['cart_num'], +// 'sales' => ['inc', $v['cart_num']] + ]; + } + } + + (new StoreBranchProduct())->saveAll($updateData); + } } From bca64c64ba7ba7dab59a0dd76a7a6c472e59e72a Mon Sep 17 00:00:00 2001 From: liu <1873441552@qq.com> Date: Mon, 24 Jun 2024 10:42:31 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E9=80=80=E6=AC=BE=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/lists/store_order/StoreOrderLists.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/admin/lists/store_order/StoreOrderLists.php b/app/admin/lists/store_order/StoreOrderLists.php index c81d96f92..fc4051333 100644 --- a/app/admin/lists/store_order/StoreOrderLists.php +++ b/app/admin/lists/store_order/StoreOrderLists.php @@ -58,7 +58,7 @@ class StoreOrderLists extends BaseAdminDataLists implements ListsSearchInterface $query->whereIn('status', $status); } }) - ->field(['id', 'store_id', 'staff_id', 'order_id', 'paid', 'pay_price', 'pay_time', 'pay_type', 'status', 'uid']) + ->field(['id', 'store_id', 'staff_id', 'order_id', 'paid', 'pay_price', 'pay_time', 'pay_type', 'status', 'uid','refund_status']) ->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc']) ->select()->each(function ($item) { From fb756ff31eee3bd252251317427b172b555b24b2 Mon Sep 17 00:00:00 2001 From: liu <1873441552@qq.com> Date: Mon, 24 Jun 2024 10:45:01 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E5=8A=A0=E5=8C=B9=E9=85=8D=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/enum/OrderEnum.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/common/enum/OrderEnum.php b/app/common/enum/OrderEnum.php index e11794476..5564d4ef7 100644 --- a/app/common/enum/OrderEnum.php +++ b/app/common/enum/OrderEnum.php @@ -62,6 +62,11 @@ class OrderEnum */ const RECEIVED_GOODS = 2; + /** + * @RECEIVED_BACK 已退款 + */ + const RECEIVED_BACK = 4; + /** * @WAIT_EVALUATION 待评价 */ @@ -184,6 +189,7 @@ class OrderEnum self::WAIT_RECEIVING => '待收货', self::RETURN_SUCCESS => '退货成功', self::ALREADY_REFUND => '已退款', + self::RECEIVED_BACK => '已退款', ]; if ($value === true) { return $data; From b3e010d251717e750c21491c9941ff797d2b73d9 Mon Sep 17 00:00:00 2001 From: liu <1873441552@qq.com> Date: Mon, 24 Jun 2024 10:46:52 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/logic/PayNotifyLogic.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/common/logic/PayNotifyLogic.php b/app/common/logic/PayNotifyLogic.php index 892b39853..5f84a2d92 100644 --- a/app/common/logic/PayNotifyLogic.php +++ b/app/common/logic/PayNotifyLogic.php @@ -273,14 +273,20 @@ class PayNotifyLogic extends BaseLogic if($order['pay_type'] == PayEnum::BALANCE_PAY){ $user->now_money = bcadd($user->now_money, $deal_money, 2); $user->save(); + //增加数量 + self::addStock($order['id']); } if($order['pay_type'] == PayEnum::PURCHASE_FUNDS){ $user->purchase_funds = bcadd($user->purchase_funds, $deal_money, 2); $user->save(); + //增加数量 + self::addStock($order['id']); } } + self::addStock($order['id']);//微信 + // self::afterPay($order,$extra['transaction_id']); } From cbd3f2b34b536074d4fdf2d6f818b6c5b15469cd Mon Sep 17 00:00:00 2001 From: liu <1873441552@qq.com> Date: Mon, 24 Jun 2024 11:01:44 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BD=99=E9=A2=9D,?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=AC=BE=E9=80=80=E6=AC=BE=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/logic/PayNotifyLogic.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/common/logic/PayNotifyLogic.php b/app/common/logic/PayNotifyLogic.php index 5f84a2d92..a9d6de6d4 100644 --- a/app/common/logic/PayNotifyLogic.php +++ b/app/common/logic/PayNotifyLogic.php @@ -266,21 +266,27 @@ class PayNotifyLogic extends BaseLogic $order->refund_reason_time = time(); $order->refund_num += 1; $order->save(); + //日志记录 //加用户余额,采购款, 日志记录 加数量 if (in_array($order['pay_type'],[PayEnum::BALANCE_PAY,PayEnum::PURCHASE_FUNDS])){ $deal_money = bcdiv($extra['amount']['refund'], 100, 2); $user = User::where('id', $order['uid'])->findOrEmpty(); - if($order['pay_type'] == PayEnum::BALANCE_PAY){ + $capitalFlowDao = new CapitalFlowLogic($user); + if($order['pay_type'] == PayEnum::BALANCE_PAY){//用户余额 $user->now_money = bcadd($user->now_money, $deal_money, 2); $user->save(); //增加数量 self::addStock($order['id']); + //退款 + $capitalFlowDao->userIncome('system_balance_back', 'system_back', $order['id'], $deal_money); } - if($order['pay_type'] == PayEnum::PURCHASE_FUNDS){ + if($order['pay_type'] == PayEnum::PURCHASE_FUNDS){//采购款 $user->purchase_funds = bcadd($user->purchase_funds, $deal_money, 2); $user->save(); //增加数量 self::addStock($order['id']); + //退款 + $capitalFlowDao->userIncome('system_purchase_back', 'system_back', $order['id'], $deal_money); } } From f319a4e60b3f7920f257dc380e55e5c26ce68ce4 Mon Sep 17 00:00:00 2001 From: liu <1873441552@qq.com> Date: Mon, 24 Jun 2024 11:13:59 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E5=9C=B0=E5=9D=80=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=A4=84=E7=90=86=E5=92=8C=E9=80=80=E6=AC=BE?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E7=9B=B8=E5=85=B3=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/store_order/StoreOrderController.php | 1 - app/api/logic/user/AddressLogic.php | 2 +- app/common/logic/PayNotifyLogic.php | 2 ++ 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/admin/controller/store_order/StoreOrderController.php b/app/admin/controller/store_order/StoreOrderController.php index 47e6d6ff9..45a98d163 100644 --- a/app/admin/controller/store_order/StoreOrderController.php +++ b/app/admin/controller/store_order/StoreOrderController.php @@ -116,7 +116,6 @@ class StoreOrderController extends BaseAdminController if(empty($detail)){ return $this->fail('无该订单请检查'); } -// d($detail); //微信支付 if(in_array($detail['pay_type'],[PayEnum::WECHAT_PAY_MINI,PayEnum::WECHAT_PAY_BARCODE])){ $money = (int)bcmul($detail['pay_price'],100); diff --git a/app/api/logic/user/AddressLogic.php b/app/api/logic/user/AddressLogic.php index 097204ab5..c2393319b 100644 --- a/app/api/logic/user/AddressLogic.php +++ b/app/api/logic/user/AddressLogic.php @@ -107,6 +107,6 @@ class AddressLogic extends BaseLogic */ public static function detail($params): array { - return UserAddress::field('id,real_name,phone,province,city,area,street,village,brigade,detail,is_default')->where($params)->findOrEmpty()->toArray(); + return UserAddress::field('id,real_name,phone,province,city,area,street,village,brigade,detail,is_default')->where('id',$params['address_id'])->findOrEmpty()->toArray(); } } diff --git a/app/common/logic/PayNotifyLogic.php b/app/common/logic/PayNotifyLogic.php index a9d6de6d4..1cf0fb83c 100644 --- a/app/common/logic/PayNotifyLogic.php +++ b/app/common/logic/PayNotifyLogic.php @@ -290,6 +290,8 @@ class PayNotifyLogic extends BaseLogic } } + //微信日志 + self::addStock($order['id']);//微信