|
@@ -50,6 +50,14 @@ class Aftersale extends Common
|
|
|
->autopage()->select();
|
|
|
// ->paginate($this->request->param('list_rows', 10));
|
|
|
|
|
|
+ //综合状态
|
|
|
+ foreach($aftersales as $key => $aftersale){
|
|
|
+
|
|
|
+ $aftersale['status_show_text'] = $aftersale['aftersale_status_text'].','.$aftersale['refund_status_text'];
|
|
|
+
|
|
|
+ $aftersales[$key] = $aftersale;
|
|
|
+ }
|
|
|
+
|
|
|
$this->success('获取成功', $aftersales);
|
|
|
}
|
|
|
|
|
@@ -65,6 +73,13 @@ class Aftersale extends Common
|
|
|
$this->error(__('No Results were found'));
|
|
|
}
|
|
|
|
|
|
+ //寄回地址
|
|
|
+ $aftersale_address = Db::name('shopro_aftersale_address')->order('is_default','desc')->order('id desc')->find();
|
|
|
+ $aftersale['aftersale_address'] = $aftersale_address;
|
|
|
+
|
|
|
+ //综合状态
|
|
|
+ $aftersale['status_show_text'] = $aftersale['aftersale_status_text'].','.$aftersale['refund_status_text'];
|
|
|
+
|
|
|
$this->success('获取成功', $aftersale);
|
|
|
}
|
|
|
|
|
@@ -85,21 +100,15 @@ class Aftersale extends Common
|
|
|
$content = $params['content'] ?? '';
|
|
|
$images = $params['images'] ? json_decode(htmlspecialchars_decode($params['images']),true) : [];
|
|
|
|
|
|
- //寄回信息
|
|
|
- $express_id = $params['express_id'] ?? 0;
|
|
|
- $express_no = $params['express_no'] ?? '';
|
|
|
- if($type == 'return'){
|
|
|
- if(!$express_id || !$express_no){
|
|
|
- error_stop('请输入快递公司和运单号');
|
|
|
- }
|
|
|
-
|
|
|
- $express = Db::name('shopro_data_express')->where('id',$express_id)->find();
|
|
|
- if(!$express){
|
|
|
- error_stop('请输入快递公司和运单号');
|
|
|
- }
|
|
|
+ //申请退款金额
|
|
|
+ $refund_money = round(floatval($params['apply_refund_price']), 2);
|
|
|
+ if ($refund_money <= 0) {
|
|
|
+ $this->error('请输入正确的退款金额');
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
//订单状态:已支付,已完成
|
|
|
$order = OrderModel::canAftersale()->where('user_id', $user->id)->lock(true)->where('id', $order_id)->find();
|
|
|
if (!$order) {
|
|
@@ -119,6 +128,24 @@ class Aftersale extends Common
|
|
|
error_stop('当前订单商品不可申请售后');
|
|
|
}
|
|
|
|
|
|
+ //apply_refund_price 限制金额
|
|
|
+ $ordernew = OrderModel::withTrashed()->with('items')->find($order_id);
|
|
|
+ if (!$ordernew) {
|
|
|
+ $this->error('订单不存在');
|
|
|
+ }
|
|
|
+ $items = $ordernew->items;
|
|
|
+ $items = array_column($items, null, 'id');
|
|
|
+
|
|
|
+ // 当前订单已退款总金额
|
|
|
+ $refunded_money = array_sum(array_column($items, 'refund_fee'));
|
|
|
+ // 剩余可退款金额
|
|
|
+ $refund_surplus_money = bcsub($order->pay_fee, (string)$refunded_money, 2);
|
|
|
+ // 如果退款金额大于订单支付总金额
|
|
|
+ if (bccomp((string)$refund_money, $refund_surplus_money, 2) === 1) {
|
|
|
+ $this->error('退款总金额不能大于实际支付金额');
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
$aftersale = new AftersaleModel();
|
|
|
$aftersale->aftersale_sn = get_sn($user->id, 'A');
|
|
|
$aftersale->user_id = $user->id;
|
|
@@ -141,15 +168,12 @@ class Aftersale extends Common
|
|
|
$aftersale->dispatch_fee = $item['dispatch_fee'];
|
|
|
$aftersale->aftersale_status = AftersaleModel::AFTERSALE_STATUS_NOOPER; // 未处理
|
|
|
$aftersale->refund_status = AftersaleModel::REFUND_STATUS_NOREFUND; // 未退款
|
|
|
+ $aftersale->apply_refund_price = $refund_money;
|
|
|
$aftersale->refund_fee = 0;
|
|
|
$aftersale->reason = $reason;
|
|
|
$aftersale->content = $content;
|
|
|
|
|
|
- if($type == 'return'){
|
|
|
- $aftersale->express_name = $express['name'];
|
|
|
- $aftersale->express_code = $express['code'];
|
|
|
- $aftersale->express_no = $express_no;
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
$aftersale->save();
|
|
|
|
|
@@ -174,6 +198,53 @@ class Aftersale extends Common
|
|
|
$this->success('申请成功', $aftersale);
|
|
|
}
|
|
|
|
|
|
+ //售后寄回
|
|
|
+ public function send(){
|
|
|
+ $user = auth_user();
|
|
|
+
|
|
|
+ $id = input('id',0,'intval');
|
|
|
+ $express_id = input('express_id',0,'intval');
|
|
|
+ $express_no = input('express_no','','intval');
|
|
|
+ if(!$id || !$express_id || !$express_no){
|
|
|
+ $this->error();
|
|
|
+ }
|
|
|
+
|
|
|
+ $express = Db::name('shopro_data_express')->where('id',$express_id)->find();
|
|
|
+ if(!$express){
|
|
|
+ $this->error('请输入正确的快递公司');
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ $aftersale = Db::name('shopro_order_aftersale')->where('id',$id)->where('user_id',$user['id'])->find();
|
|
|
+ if (!$aftersale) {
|
|
|
+ $this->error('售后订单不存在');
|
|
|
+ }
|
|
|
+
|
|
|
+ if($aftersale['type'] != 'return'){
|
|
|
+ $this->error('退货退款的订单才需要寄回商品');
|
|
|
+ }
|
|
|
+
|
|
|
+ // 同意并处理中
|
|
|
+ if($aftersale['aftersale_status'] != AftersaleModel::AFTERSALE_STATUS_ING){
|
|
|
+ $this->error('商家还没有同意售后');
|
|
|
+ }
|
|
|
+
|
|
|
+ // 不要重复寄回
|
|
|
+ if(!empty($aftersale['express_no'])){
|
|
|
+ $this->error('已经寄回了无需重复操作');
|
|
|
+ }
|
|
|
+
|
|
|
+ $data = [
|
|
|
+ 'express_name' => $express['name'],
|
|
|
+ 'express_code' => $express['code'],
|
|
|
+ 'express_no' => $express_no,
|
|
|
+ ];
|
|
|
+ $rs = Db::name('shopro_order_aftersale')->where('id',$id)->update($data);
|
|
|
+
|
|
|
+ $this->success('操作成功');
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
//取消售后
|
|
|
public function cancel()
|
|
|
{
|