Browse Source

商品退款

master
lanzu_qinsheng 5 years ago
parent
commit
4599253aff
  1. 34
      app/Admin/Common/Rpc.php
  2. 13
      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);
}
}

13
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;
@ -150,6 +151,18 @@ class ImsCjdcOrderMainController extends AdminController
}
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