| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\admin\models;
- use app\models\AccountLog;
- use app\models\Goods;
- use app\models\Order;
- use app\models\OrderDetail;
- use app\models\OrderGoodsCancel;
- use app\models\OrderRefund;
- use app\models\Register;
- use app\models\SaasUser;
- use app\models\SeckillActivityGoods;
- use app\models\SeckillActivityOrderLog;
- use app\models\User;
- use app\models\UserCoupon;
- use app\models\OrderRefundMoney;
- use app\plugins\adopt\models\AdoptCostOrder;
- use app\utils\OrderNo;
- use app\utils\Refund;
- use yii\base\BaseObject;
- use yii\base\Model;
- use app\utils\Notice\NoticeSend;
- class OrderRevokeForm extends Model
- {
- public $store_id;
- public $user_id;
- public $order_id;
- public $delete_pass = false;
- public $form_id = '';
- public function rules()
- {
- return [
- [['order_id'], 'required'],
- ];
- }
-
- public function refundMoney($order, $desc = '', $refund_price = 0.01) {
- if($order->is_pay != 1){
- return [
- 'code' => 1,
- 'msg' => '操作失败,订单还未支付。',
- ];
- }
- if($refund_price <= 0){
- return [
- 'code' => 1,
- 'msg' => '操作失败,退款金额不能为0。',
- ];
- }
- $rmSum = \app\models\OrderRefundMoney::find()->where(['is_delete' => 0, 'status' => 1, 'order_id' => $order['id']])->sum('refund_price');
- if($refund_price + $rmSum > $order['pay_price']){
- return [
- 'code' => 1,
- 'msg' => '操作失败,退款金额超出订单金额。',
- ];
- }
- // $t = \Yii::$app->db->beginTransaction();
- $refund = new OrderRefundMoney();
- $refund->status = 1;
- $refund->desc = $desc;
- $refund->refund_price = $refund_price;
- $refund->store_id = $order->store_id;
- $refund->user_id = $order->user_id;
- $refund->order_id = $order->id;
- $refund->order_refund_no = $this->getOrderRefundNo();
- if ($refund->save()) {
- // 已付款就退款
-
- if (in_array($order->pay_type, [1, 4, Order::PAY_TYPE_WX_B2B, Order::PAY_TYPE_ADAPAY_WX, Order::PAY_TYPE_ADAPAY_ALIPAY, Order::PAY_TYPE_ADAPAY_QUICKPAY_FRONTPAY, Order::PAY_TYPE_HUIFU_V2_JSPAY_WX])) {
- $refund_res = Refund::refund($order, OrderNo::ORDER_MALL, $refund->order_refund_no, $refund->refund_price);
- if ($refund_res !== true) {
- $refund->status = 0;
- $refund->status_desc = json_encode($refund_res, JSON_UNESCAPED_UNICODE);
- $refund->save();
- return [
- 'code' => 1,
- 'msg' => '操作失败.' . $refund_res['msg'],
- 'r' => $refund_res,
- ];
- }
- }
- // 商城商品总库存恢复
- $order_detail_list = OrderDetail::find()->where(['order_id' => $order->id, 'is_delete' => 0])->all();
- foreach ($order_detail_list as $order_detail) {
- $goods = Goods::findOne($order_detail->goods_id);
- $attr_id_list = [];
- foreach (json_decode($order_detail->attr) as $item) {
- array_push($attr_id_list, $item->attr_id);
- }
- $goods->numAdd($attr_id_list, $order_detail->num);
- }
- $user = User::findOne(['id' => $order->user_id]);
- if($order['giving_gifts_received_user_id']){
- $user = User::findOne($order['giving_gifts_received_user_id']);
- }
- $integral = isset($order->integral) ? json_decode($order->integral)->forehead_integral : 0;
- if ($integral > 0) {
- $user->integral += $integral;
- }
- $balance = isset($order->balance) ? $order->balance : 0;
- if ($balance > 0) {
- $before = $user->money;
- $user->money += $balance;
- $log = new AccountLog();
- $log->store_id = $user->store_id;
- $log->user_id = $user->id;
- $log->type = AccountLog::TYPE_GOODS_BALANCE;
- $log->amount = $balance;
- $log->log_type = AccountLog::LOG_TYPE_INCOME;
- $log->desc = "商城售后订单退款,商品余额抵扣:退款订单号:{$refund->order_refund_no}";
- $log->before = $before;
- $log->after = $user->money;
- $log->operator = '';
- $log->operator_id = 0;
- $log->operator_type = AccountLog::TYPE_OPERATOR_BACK;
- $log->created_at = time();
- $log->order_id = $order->id;
- $log->order_type = AccountLog::TYPE_PLATFORM_REFUND_ORDER;
- $log->save();
- if (!$user->save()) {
- return [
- 'code' => 1,
- 'msg' => $this->getErrorSummary(false)[0],
- ];
- }
- }
- if ($order->pay_type == 3) {
- $before = $user->money;
- $user->money += floatval($refund->refund_price);
- $log = new AccountLog();
- $log->store_id = $user->store_id;
- $log->user_id = $user->id;
- $log->type = AccountLog::TYPE_BALANCE;
- $log->amount = floatval($refund->refund_price);
- $log->log_type = AccountLog::LOG_TYPE_INCOME;
- $log->desc = "商城售后订单退款:退款订单号:{$refund->order_refund_no}";
- $log->before = $before;
- $log->after = $user->money;
- $log->operator = '';
- $log->operator_id = 0;
- $log->operator_type = AccountLog::TYPE_OPERATOR_BACK;
- $log->created_at = time();
- $log->order_id = $order->id;
- $log->order_type = AccountLog::TYPE_PLATFORM_REFUND_ORDER;
- $log->save();
- if (!$user->save()) {
- return [
- 'code' => 1,
- 'msg' => $this->getErrorSummary(false)[0],
- ];
- }
- }
- // todo 因为只是售后订单这里有退款 判断一下退款的金额==支付金额时候 将售后订单状态修改为完成状态
- $rmAllSum = \app\models\OrderRefundMoney::find()->where(['is_delete' => 0, 'status' => 1, 'order_id' => $order['id']])->sum('refund_price');
- if($rmAllSum == $order['pay_price']){
- OrderRefund::updateAll(['status'=>1,'is_user_send' => 1,'is_agree'=>1], ['order_id' => $order['id']]);
- }
- if ($refund->save()) {
- $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $order->id])->goods_id);
- NoticeSend::OrderRefund($order->user_id, $order->mobile, $order->order_no, $refund->refund_price, $goods->name);
- return [
- 'code' => 0,
- 'msg' => '处理成功,已完成退款退货。',
- ];
- }
- return [
- 'code' => 1,
- 'msg' => $this->getErrorSummary(false)[0],
- ];
-
- return [
- 'code' => 0,
- 'msg' => '操作成功',
- ];
- }
- return [
- 'code' => 1,
- 'msg' => '操作失败',
- ];
- }
- private function getOrderRefundNo()
- {
- $order_refund_no = null;
- while (true) {
- $order_refund_no = 'RM'.date('YmdHis') . mt_rand(100000, 999999);
- $exist_order_refund_no = OrderRefundMoney::find()->where(['order_refund_no' => $order_refund_no])->exists();
- if (!$exist_order_refund_no) {
- break;
- }
- }
- return $order_refund_no;
- }
- public function save()
- {
- if (!$this->validate()) {
- return [
- 'code' => 1,
- 'msg' => $this->getErrorSummary(false)[0],
- ];
- }
- /**
- * @var Order $order
- */
- $store_id = $this->store_id;
- if ($store_id <= 0) {
- $store_id = [0, -1];
- }
- //TODO 取消订单需要退积分,这里剩余如果检测到是平台操作,就使用saas_user添加积分信息
- $order = Order::find()->where([
- 'store_id' => $store_id,
- 'id' => $this->order_id,
- 'is_delete' => Order::IS_DELETE_FALSE,
- ])->one();
- if (!$order) {
- return [
- 'code' => 1,
- 'msg' => '订单不存在'
- ];
- }
- $t = \Yii::$app->db->beginTransaction();
- // 已支付订单需要后台先审核
- if ($order->is_pay == 1 && !$this->delete_pass) {
- $order->apply_delete = Order::ORDER_APPLY_DELETE;
- if ($order->save()) {
- return [
- 'code' => 0,
- 'msg' => '订单取消申请已提交,请等候管理员审核'
- ];
- } else {
- return [
- 'code' => 1,
- 'msg' => $this->getErrorSummary(false)[0],
- ];
- }
- }
- $other_msg = ' ';
- // $order->is_delete = Order::IS_DELETE_TRUE;
- $order->trade_status = Order::ORDER_FLOW_CANCEL;
- $order_detail_list = OrderDetail::find()->where(['order_id' => $order->id,
- 'is_delete' => Order::IS_DELETE_FALSE])->asArray()->all();
- // 库存恢复
- if (!$order->save()) {
- return [
- 'code' => 1,
- 'msg' => implode(';', array_values($order->firstErrors)),
- ];
- };
- $order_pay_price = $order->pay_price;
- $order_detail_list_array = [];
- foreach ($order_detail_list as $order_detail) {
- //获取到已经取消或者在申请中的取消商品订单
- $orderGoodsCancel = OrderGoodsCancel::getCancelGoodsOrderQuery(
- $order->id,
- 'status, SUM(num) as num, SUM(refund_price) as refund_price',
- 'status',
- $order_detail['id']
- )->asArray()->all();
- foreach ($orderGoodsCancel as $goodsCancelItem) {
- //如果在申请中的就给取消
- if ($goodsCancelItem['status'] == OrderGoodsCancel::STATUS_APPLY) {
- OrderGoodsCancel::updateAll(
- ['status' => OrderGoodsCancel::STATUS_CANCEL],
- ['order_detail_id' => $order_detail['id'], 'status' => OrderGoodsCancel::STATUS_APPLY]);
- } else {
- $order_detail['num'] = $order_detail['num'] - $goodsCancelItem['num'];
- $total_price = $order_detail['total_price'] - $goodsCancelItem['refund_price'];
- $order_detail['total_price'] = $total_price > 0 ? $total_price : 0;
- $order_pay_price -= $goodsCancelItem['refund_price'];
- }
- }
- if ($order_detail['num'] <= 0) {
- continue;
- }
- $order_detail_list_array[] = $order_detail;
- if($order->order_type == 1){
- continue;
- }
- $goods = Goods::findOne($order_detail['goods_id']);
- $attr_id_list = [];
- foreach (json_decode($order_detail['attr']) as $item) {
- array_push($attr_id_list, $item->attr_id);
- }
- // $goods->numAdd($attr_id_list, $order_detail->num);
- if (!in_array($order->order_type, [1, 2])) {
- if (!$goods->numAdd($attr_id_list, $order_detail['num'])) {
- // $t->rollBack();
- // return [
- // 'code' => 1,
- // 'msg' => '订单取消失败,库存操作失败',
- // ];
- $other_msg .= " 库存操作失败";
- }
- }
- }
- $order_detail_list = $order_detail_list_array;
- // todo 秒杀订单退秒杀库存 和 秒杀销量
- if($order->seckill_order_id > 0){
- $seckillActivityOrderLog = SeckillActivityOrderLog::find()->where(['id' => $order->seckill_order_id])->one();
- $seckillActivityGoods = SeckillActivityGoods::findOne([
- 'id' =>$seckillActivityOrderLog->activity_goods_id,
- 'goods_id' => $seckillActivityOrderLog->goods_id,
- 'store_id' => $order->store_id,'is_delete' => 0
- ]);
- // 这里循环的还是订单商品信息表
- foreach($order_detail_list as $order_detail){
- $attr_id_list = [];
- foreach (json_decode($order_detail['attr'], true) as $item) {
- array_push($attr_id_list, $item['attr_id']);
- }
- // 这里执行退库存的是秒杀商品的库存
- if ($seckillActivityGoods) {
- $seckillActivityGoods->numAdd($attr_id_list,$order_detail['num']);
- }
- }
- if ($seckillActivityGoods) {
- // 减去销量
- $seckillActivityGoods->sale_num -= array_sum(array_column($order_detail_list, 'num'));
- $seckillActivityGoods->save();
- }
- // 恢复库存之后 将秒杀订单修改未删除状态
- $seckillActivityOrderLog->is_delete = 1;
- $seckillActivityOrderLog->save();
- }
- // TODO 用户商品抵扣余额恢复
- $balance = $order->balance;
- $user = User::findOne(['id' => $order->user_id]);
- if($order['giving_gifts_received_user_id']){
- $user = User::findOne($order['giving_gifts_received_user_id']);
- }
- $type_1 = 0;
- $store_id = $order->store_id;
- if ($order->store_id <= 0) {
- $store_id = 0;
- $user = SaasUser::findOne(['id' => $order->saas_id]);
- $type_1 = 1;
- }
- if (!$user) {
- return [
- 'code' => 1,
- 'msg' => '用户数据未找到',
- ];
- }
- if ($balance > 0) {
- $old_balance = $user->money;
- $user->money += $balance;
- $log = new AccountLog();
- $log->store_id = $store_id;
- if ($type_1) {
- $log->saas_id = $user->id;
- $log->user_id = 0;
- } else {
- $log->user_id = $user->id;
- }
- $log->type = AccountLog::TYPE_GOODS_BALANCE;
- $log->log_type = AccountLog::LOG_TYPE_INCOME;
- $log->amount = $balance;
- $log->desc = "商品余额抵扣订单退款, 订单号:{$order->order_no}";
- $log->before = $old_balance;
- $log->after = $user->money;
- $log->operator = 'system';
- $log->operator_id = 0;
- $log->operator_type = AccountLog::TYPE_OPERATOR_NORMAL;
- $log->created_at = time();
- $log->order_id = $order->id;
- $log->order_type = AccountLog::TYPE_PLATFORM_ORDER;
- $log->save();
- $user->save();
- }
- // 用户积分恢复
- $integral = json_decode($order->integral)->forehead_integral;
- $user = User::findOne(['id' => $order->user_id]);
- if($order['giving_gifts_received_user_id']){
- $user = User::findOne($order['giving_gifts_received_user_id']);
- }
- $type = 0;
- $store_id = $order->store_id;
- if ($order->store_id <= 0) {
- $store_id = 0;
- $user = SaasUser::findOne(['id' => $order->saas_id]);
- $type = 1;
- }
- if (! $user) {
- return [
- 'code' => 1,
- 'msg' => '用户数据未找到',
- ];
- }
- //修改未支付但是取消订单的逻辑
- if (intval($order->is_pay) === 1 || (intval($order->pay_type) === Order::PAY_TYPE_COD && intval($order->is_pay) === 0)) {
- $addIntegral = 0;
- if (!$addIntegral && $integral > 0) {
- $addIntegral = 1;
- $old_integral = $user->integral;
- $user->integral += $integral;
- $log = new AccountLog();
- $log->store_id = $store_id;
- if ($type) {
- $log->saas_id = $user->id;
- $log->user_id = 0;
- } else {
- $log->user_id = $user->id;
- }
- $log->type = AccountLog::TYPE_INTEGRAL;
- $log->log_type = AccountLog::LOG_TYPE_INCOME;
- $log->amount = $integral;
- $log->desc = "商城订单取消, 订单号:{$order->order_no}";
- $log->before = $old_integral;
- $log->after = $user->integral;
- $log->operator = 'system';
- $log->operator_id = 0;
- $log->operator_type = AccountLog::TYPE_OPERATOR_NORMAL;
- $log->created_at = time();
- $log->order_id = $order->id;
- $log->order_type = AccountLog::TYPE_PLATFORM_ORDER;
- $log->save();
- }
- //新积分兑换商品退还积分
- $new_integral = $order->integral_price;
- if(!$addIntegral && $new_integral > 0){
- $addIntegral = 1;
- $old_integral = $user->integral;
- $user->integral += $new_integral;
- $log = new AccountLog();
- $log->store_id = $store_id;
- if ($type) {
- $log->saas_id = $user->id;
- $log->user_id = 0;
- } else {
- $log->user_id = $user->id;
- }
- $log->type = AccountLog::TYPE_INTEGRAL;
- $log->log_type = AccountLog::LOG_TYPE_INCOME;
- $log->amount = $new_integral;
- $log->desc = "商城订单取消, 订单号:{$order->order_no}";
- $log->before = $old_integral;
- $log->after = $user->integral;
- $log->operator = 'system';
- $log->operator_id = 0;
- $log->operator_type = AccountLog::TYPE_OPERATOR_NORMAL;
- $log->created_at = time();
- $log->order_id = $order->id;
- $log->order_type = AccountLog::TYPE_PLATFORM_ORDER;
- if (!$log->save()) {
- debug_log([
- 'error' => $log->errors
- ], 'orderDelete.log');
- };
- }
- }
- // 余额支付 退换余额
- if ($order->is_pay == Order::IS_PAY_TRUE && $order->pay_type == Order::PAY_TYPE_BALANCE_PAID && isset($user->money)) {
- $before = $user->money;
- $user->money += floatval($order_pay_price);
- $log = new AccountLog();
- $log->store_id = $store_id;
- if ($type) {
- $log->saas_id = $user->id;
- } else {
- $log->user_id = $user->id;
- }
- $log->type = AccountLog::TYPE_BALANCE;
- $log->log_type = AccountLog::LOG_TYPE_INCOME;
- $log->amount = $order_pay_price;
- $log->desc = "商城订单退款,订单号:{$order->order_no}";
- $log->before = $before;
- $log->after = $user->money;
- $log->operator = 'system';
- $log->operator_id = 0;
- $log->operator_type = AccountLog::TYPE_OPERATOR_NORMAL;
- $log->created_at = time();
- $log->order_id = $order->id;
- $log->order_type = AccountLog::TYPE_PLATFORM_REFUND_ORDER;
- $log->save();
- }
- if (!$user->save()) {
- $t->rollBack();
- return [
- 'code' => 1,
- 'msg' => $this->getErrorSummary(false)[0],
- ];
- }
- // 已付款就退款
- if ($order->is_pay == 1 && ($order->pay_type == 1 || $order->pay_type == 4 || in_array($order->pay_type, [Order::PAY_TYPE_WX_B2B, Order::PAY_TYPE_MONTH, Order::PAY_TYPE_ADAPAY_WX, Order::PAY_TYPE_ADAPAY_ALIPAY, Order::PAY_TYPE_ADAPAY_QUICKPAY_FRONTPAY, Order::PAY_TYPE_HUIFU_V2_JSPAY_WX]) || $order->pay_type === Order::PAY_TYPE_YUNST_WECHAT_PAY)) {
- if ($order_pay_price > 0) {
- $refund_res = Refund::refund($order, $order->order_union_id ? OrderNo::ORDER_UNION : '',$order->order_no, $order_pay_price);
- if ($refund_res !== true) {
- $t->rollBack();
- return $refund_res;
- }
- }
- }
- if ($order->save()) {
- if ($order->user_coupon_id) {
- UserCoupon::updateAll(['is_use' => 0], ['id' => $order->user_coupon_id]);
- (new \app\utils\OrderUtil())->couponTimeout($order->user_coupon_id);
- }
- $new_delivery = new \app\utils\Delivery\WechatNewDelivery();
- $result = $new_delivery->cancelOrder(['order_no' => $order->order_no, 'store_id' => $store_id]);
- debug_log($result, 'delivery_.log');
- // 删除股东分红记录
- \app\utils\Share\BonusPool::cancelOrderShareDetail($order->id);
- $t->commit();
- return [
- 'code' => 0,
- 'msg' => '订单已取消' . $other_msg
- ];
- } else {
- $t->rollBack();
- return [
- 'code' => 1,
- 'msg' => '订单取消失败'
- ];
- }
- }
-
- public function saveCost()
- {
- if (!$this->validate()) {
- return [
- 'code' => 1,
- 'msg' => $this->getErrorSummary(false)[0],
- ];
- }
- /**
- * @var Order $order
- */
- $order = AdoptCostOrder::find()->where([
- 'store_id' => $this->store_id,
- 'user_id' => $this->user_id,
- 'id' => $this->order_id,
- 'is_delete' => Order::IS_DELETE_FALSE,
- ])->andWhere(['in', 'trade_status', [Order::ORDER_FLOW_NO_SEND, Order::ORDER_FLOW_DEFAULT]])->one();
- if (!$order) {
- return [
- 'code' => 1,
- 'msg' => '订单不存在'
- ];
- }
- // 已支付订单需要后台先审核
- if ($order->is_pay == 1 && !$this->delete_pass) {
- $order->apply_delete = Order::ORDER_APPLY_DELETE;
- if ($order->save()) {
- return [
- 'code' => 0,
- 'msg' => '订单取消申请已提交,请等候管理员审核'
- ];
- } else {
- return [
- 'code' => 1,
- 'msg' => $this->getErrorSummary(false)[0],
- ];
- }
- }
- $order->is_delete = Order::IS_DELETE_TRUE;
- $order->trade_status = Order::ORDER_FLOW_CANCEL;
- $order_detail_list = OrderDetail::find()->where(['order_id' => $order->id,
- 'is_delete' => Order::IS_DELETE_FALSE])->all();
- $t = \Yii::$app->db->beginTransaction();
- $other_msg = " ";
- // 库存恢复
- foreach ($order_detail_list as $order_detail) {
- $goods = Goods::findOne($order_detail->goods_id);
- $attr_id_list = [];
- foreach (json_decode($order_detail->attr) as $item) {
- array_push($attr_id_list, $item->attr_id);
- }
- // $goods->numAdd($attr_id_list, $order_detail->num);
- if (!$goods->numAdd($attr_id_list, $order_detail->num)) {
- // $t->rollBack();
- // return [
- // 'code' => 1,
- // 'msg' => '订单取消失败,库存操作失败',
- // ];
- $other_msg .= " 库存操作失败";
- }
- }
- // 用户积分恢复
- $integral = json_decode($order->integral)->forehead_integral;
- $user = User::findOne(['id' => $order->user_id]);
- if (! $user) {
- return [
- 'code' => 1,
- 'msg' => '用户数据未找到',
- ];
- }
- if ($integral > 0) {
- $user->integral += $integral;
- }
- //余额支付 退换余额
- if ($order->is_pay == Order::IS_PAY_TRUE && $order->pay_type == Order::PAY_TYPE_BALANCE_PAID) {
- $before = $user->money;
- $user->money += floatval($order->pay_price);
- $log = new AccountLog();
- $log->store_id = get_store_id();
- $log->user_id = $user->id;
- $log->type = AccountLog::TYPE_BALANCE;
- $log->log_type = AccountLog::LOG_TYPE_INCOME;
- $log->amount = $order->pay_price;
- $log->desc = "商城订单退款,订单号({$order->order_no})";
- $log->before = $before;
- $log->after = $user->money;
- $log->operator = 'system';
- $log->operator_id = 0;
- $log->operator_type = AccountLog::TYPE_OPERATOR_NORMAL;
- $log->created_at = time();
- $log->order_id = $order->id;
- $log->order_type = AccountLog::TYPE_PLATFORM_REFUND_ORDER;
- $log->save();
- }
- if (!$user->save()) {
- $t->rollBack();
- return [
- 'code' => 1,
- 'msg' => $this->getErrorSummary(false)[0],
- ];
- }
- // 已付款就退款
- if ($order->is_pay == 1 && $order->pay_type == 1) {
- if ($order->pay_price > 0) {
- $refund_res = Refund::refund($order, $order->order_union_id ? OrderNo::ORDER_UNION : '',$order->order_no, $order->pay_price);
- if ($refund_res !== true) {
- $t->rollBack();
- return $refund_res;
- }
- }
- }
- if ($order->save()) {
- if ($order->is_pay == 0) {
- UserCoupon::updateAll(['is_use' => 0], ['id' => $order->user_coupon_id]);
- }
- $t->commit();
- return [
- 'code' => 0,
- 'msg' => '订单已取消' . $other_msg
- ];
- } else {
- $t->rollBack();
- return [
- 'code' => 1,
- 'msg' => '订单取消失败'
- ];
- }
- }
- }
|