diff --git a/app/Admin/Common/Rpc.php b/app/Admin/Common/Rpc.php index f431c24..7a9d558 100644 --- a/app/Admin/Common/Rpc.php +++ b/app/Admin/Common/Rpc.php @@ -11,6 +11,7 @@ class Rpc const SEPARATE_ACCOUNTS = "/order/onlineComplete"; const ORDER_REFUND = "/order/onlineRefund"; + const ORDER_SINGLE_REFUND = "/order/onlineSingleRefund"; const GET_DISTANCE = "/location/getDistanceByTencent"; @@ -63,4 +64,37 @@ class Rpc $response = $client->send($request); return json_decode($response->getBody()->getContents(),true); } + + /** + * 线上订单单笔退款,主要用于后台强行操作退单退款 + * 支持单商品、单店、整单 + * 按比例计算红包进行退款 + * 比如:两个子订单和子订单商品,分别是2元,98元,使用了10元优惠券 + * 退2元商品时,退款金额为 + * 红包 :(2/(98+2))*10 = 0.2 + * 退款:2-0.2=1.8元 + * @param $user_id + * @param $note + * @param $global_order_id + * @param null $order_child_id + * @param null $order_goods_id + * @return mixed + */ + public static function onlineSingleRefund($user_id, $note, $global_order_id, $order_child_id=null, $order_goods_id=null){ + $client = Client::factory(env('RPC_SITE_HOST')); + $request = $client->request( + uniqid(), + self::ORDER_SINGLE_REFUND, + [ + 'user_id' => $user_id, + 'note'=>$note, + 'global_order_id'=>$global_order_id, + 'order_child_id'=>$order_child_id, + 'order_goods_id'=>$order_goods_id + ]); + $response = $client->send($request); + return json_decode($response->getBody()->getContents(),true); + } + + } diff --git a/app/Admin/Controllers/ImsCjdcOrderMainController.php b/app/Admin/Controllers/ImsCjdcOrderMainController.php index 51c4707..ad80e70 100644 --- a/app/Admin/Controllers/ImsCjdcOrderMainController.php +++ b/app/Admin/Controllers/ImsCjdcOrderMainController.php @@ -2,6 +2,7 @@ namespace App\Admin\Controllers; +use App\Admin\Common\Rpc; use App\Admin\Extensions\CheckRow; use App\Admin\Extensions\CouponTieEdit; use App\Admin\Extensions\MyDetailPage; @@ -42,37 +43,37 @@ class ImsCjdcOrderMainController extends AdminController $grid->paginate(10);//每页展示数据10条 //$grid->id; //$grid->user_id('用户信息'); - $grid->column('nick_name','用户信息'); + $grid->column('nick_name', '用户信息'); $grid->order_num; $grid->state('订单状态') ->using(config('order.state')) - ->label([1=>'dark',2=>'danger',3=>'indigo',4=>'success']); + ->label([1 => 'dark', 2 => 'danger', 3 => 'indigo', 4 => 'success']); $grid->money; - $grid->column('market.name','所属市场'); - $grid->pay_time('支付时间')->display(function (){ + $grid->column('market.name', '所属市场'); + $grid->pay_time('支付时间')->display(function () { return date('Y-m-d H:i:s'); }); - $grid->created_at('下单时间')->display(function (){ + $grid->created_at('下单时间')->display(function () { return date('Y-m-d H:i:s'); }); - $grid->actions(function (Grid\Displayers\Actions $actions) use ($grid){ + $grid->actions(function (Grid\Displayers\Actions $actions) use ($grid) { $state = $actions->row->state; - if ($state==2){ - $actions->append(new OrderStateHandle('接单',3)); - }elseif ($state==311){ - $actions->append(new OrderStateHandle('完成',4)); + if ($state == 2) { + $actions->append(new OrderStateHandle('接单', 3)); + } elseif ($state == 311) { + $actions->append(new OrderStateHandle('完成', 4)); $actions->append(new OrderPrint('打印')); - }elseif ($state==3){ + } elseif ($state == 3) { $actions->append(new OrderPrint('打印')); - $actions->append(new CheckRow($actions->row->id,$grid->model()->getCurrentPage(),'自送')); - }elseif ($state==8){ - $actions->append(new OrderStateHandle('同意退款',9)); - $actions->append(new OrderRefund($actions->row->id,$grid->model()->getCurrentPage(),'拒绝退款')); + $actions->append(new CheckRow($actions->row->id, $grid->model()->getCurrentPage(), '自送')); + } elseif ($state == 8) { + $actions->append(new OrderStateHandle('同意退款', 9)); + $actions->append(new OrderRefund($actions->row->id, $grid->model()->getCurrentPage(), '拒绝退款')); } - $actions->append(new OrderDetail($actions->row->id,$grid->model()->getCurrentPage(),'详情')); + $actions->append(new OrderDetail($actions->row->id, $grid->model()->getCurrentPage(), '详情')); }); @@ -140,16 +141,28 @@ class ImsCjdcOrderMainController extends AdminController $oid = request()->get('order_id'); $page = request()->get('page'); // 实例化表单类并传递自定义参数 - $detail = MyDetailPage::make(['order_id'=>$oid]); + $detail = MyDetailPage::make(['order_id' => $oid]); return $content->header('订单详情') ->breadcrumb( - ['text'=>'列表','url'=>"order?page={$page}"], + ['text' => '列表', 'url' => "order?page={$page}"], ['text' => '详情', 'url' => 'detail'], ) ->body(Lazy::make($detail)); } + public function orderGoodsRefund() + { + return 0; + $uid = request()->get('user_id'); + $note = request()->get('note'); + $global_order_id = request()->get('global_order_id'); + $order_child_id = request()->get('order_child_id'); + $order_goods_id = request()->get('order_goods_id'); + $result = Rpc::onlineSingleRefund($uid, $note, $global_order_id, $order_child_id, $order_goods_id); + dd($result); + return json_encode($result['result']); + } } diff --git a/app/Admin/Extensions/MyDetailPage.php b/app/Admin/Extensions/MyDetailPage.php index f55d4cd..c9c489a 100644 --- a/app/Admin/Extensions/MyDetailPage.php +++ b/app/Admin/Extensions/MyDetailPage.php @@ -25,9 +25,7 @@ class MyDetailPage extends LazyRenderable $order = ImsCjdcOrderMain::getOrderData($this->order_id); if ($order) { //>>2.获取子订单 - $orders = ImsCjdcOrder::getOrdersData($order['id']); - //配送距离 - //配送费 + $orders = ImsCjdcOrder::getOrdersData($order['global_order_id']); //拒绝退款理由 //退款总备注原因,单个商品或者单个子订单 Admin::script( @@ -61,11 +59,20 @@ class MyDetailPage extends LazyRenderable refund_2:"退款", refund_3:"已同意退款", refund_goods_name:"", + global_order_id:"{$order['global_order_id']}", + user_id:"{$order['user_id']}", + order_goods_id:null, + order_child_id:null, + show_refund_2:true, + show_refund_3:false, + }, methods: { - refundNote(name) { + refundNote(name,order_goods_id,order_child_id) { this.dialogFormVisible = true; + this.order_goods_id=order_goods_id; + this.order_child_id=order_child_id; this.refund_goods_name ="退款备注商品 ["+name+"]" ; }, refundConfirm() { @@ -75,7 +82,33 @@ class MyDetailPage extends LazyRenderable type: 'warning' }).then(() => { this.dialogFormVisible = false; - alert(this.total_refund_note) + that = this; + $.ajax({ + url: "order_goods_refund", + type: "get", + contentType: "text/html; charset=utf-8", + dataType: "json", + data: { + user_id:that.user_id, + note:that.total_refund_note, + global_order_id:that.global_order_id, + order_child_id:that.order_child_id, + order_goods_id:that.order_goods_id + }, + success: function (res) { + if (1){ + that.\$message({ + message: '退款成功', + type: 'success' + }) + that.show_refund_2=false + that.show_refund_3=true + } + }, + error: function (xhr, err) { + console.log("错误", err) + } + }); }).catch(() => { }); } diff --git a/app/Admin/routes.php b/app/Admin/routes.php index 7af7d85..b2df729 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -46,6 +46,7 @@ Route::group([ $router->resource('/order', 'ImsCjdcOrderMainController'); $router->any('/detail', 'ImsCjdcOrderMainController@orderDetail'); + $router->any('/order_goods_refund', 'ImsCjdcOrderMainController@orderGoodsRefund'); $router->resource('/horseman', 'LanzuServiceHorsemanController'); diff --git a/app/Models/ImsCjdcOrder.php b/app/Models/ImsCjdcOrder.php index 48f925c..f59a465 100644 --- a/app/Models/ImsCjdcOrder.php +++ b/app/Models/ImsCjdcOrder.php @@ -24,6 +24,7 @@ class ImsCjdcOrder extends Model public static function getOrdersData($oid) { + $orders = ImsCjdcOrder::with('user')->with('store') ->where('order_main_id', $oid)->get()->toArray(); if (count($orders)) { diff --git a/app/Models/LanzuStore.php b/app/Models/LanzuStore.php index b3fa664..c615af6 100644 --- a/app/Models/LanzuStore.php +++ b/app/Models/LanzuStore.php @@ -9,6 +9,6 @@ use Illuminate\Database\Eloquent\Model; class LanzuStore extends Model { use HasDateTimeFormatter; - protected $table = 'lanzu_store'; + protected $table = 'lanzu_store_new'; protected $dateFormat = 'U'; } diff --git a/resources/views/orderdetail.php b/resources/views/orderdetail.php index ac32641..a611779 100644 --- a/resources/views/orderdetail.php +++ b/resources/views/orderdetail.php @@ -50,8 +50,9 @@
¥{{goods.price}}
-{{refund_3}}
+{{refund_3}}
+{{refund_3}}
店铺备注: ({{item.note}})