Browse Source

商品退款

master
lanzu_qinsheng 5 years ago
parent
commit
4599253aff
  1. 34
      app/Admin/Common/Rpc.php
  2. 49
      app/Admin/Controllers/ImsCjdcOrderMainController.php
  3. 43
      app/Admin/Extensions/MyDetailPage.php
  4. 1
      app/Admin/routes.php
  5. 1
      app/Models/ImsCjdcOrder.php
  6. 2
      app/Models/LanzuStore.php
  7. 5
      resources/views/orderdetail.php

34
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);
}
}

49
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']);
}
}

43
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(() => {
});
}

1
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');

1
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)) {

2
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';
}

5
resources/views/orderdetail.php

@ -50,8 +50,9 @@
</div>
<p class="mb-0" style="color: red;font-size: 1.4rem;">{{goods.price}}</p>
<el-button type="danger" style="float: right;" @click="refundNote(goods.name)" v-if="state==4">{{refund_2}}</el-button>
<p style="float: right;" v-if="goods.status==3">{{refund_3}}</p>
<el-button type="danger" style="float: right;" @click="refundNote(goods.name,goods.id,item.id)" v-if="state==4&&show_refund_2">{{refund_2}}</el-button>
<p style="float: right; color: red" v-if="goods.status==3">{{refund_3}}</p>
<p style="float: right; color: red" v-if="show_refund_3">{{refund_3}}</p>
</div>
</div>
<p v-if="item.note">店铺备注: ({{item.note}})</p>

Loading…
Cancel
Save