一、買家申請退貨
文件路徑:shop/controllers/Buyer/Service/ReturnCtl.php
~~~
//根據URL參數act,判斷視圖
if ($act == "detail")
{
$data = $this->detail();
$this->view->setMet('detail');
$d = $data;
}
elseif ($act == "add")
{
$data = $this->add();
if ($data == -3)
{
$this->view->setMet('error3');
}elseif($data == -4){
$this->view->setMet('error4');
}
elseif ($data == -1)
{
$this->view->setMet('error2');
}
elseif ($data == 0)
{
$this->view->setMet('error');
}
else
{
$this->view->setMet('add');
}
}
~~~
視圖:shop/views/default/Buyer/Service/ReturnCtl/add.php
退貨表單提交:
~~~
$('#form').validator({
......
}).on("click", "#handle_submit", function (e)
{
submit_trigger
? $(e.delegateTarget).trigger("validate")
: submit_trigger = false;
});
~~~
方法:addReturn()
~~~
//退貨
if ($goods['order_goods_status'] == Order_StateModel::ORDER_FINISH)
{
if(strstr($order['payment_name'],'白條支付')){
$flag2 = false;
}
$field['return_goods_return'] = 1; //需要退貨
//查詢是否存在該訂單商品的退貨申請信息,且該申請未被賣家拒絕,以此判斷是否重新提交退貨申請
//只有以前沒有提交過該商品的退貨申請,且未被賣家拒絕的情況下,才可以提交退貨申請
$return = $this->orderReturnModel->getByWhere(array(
'order_goods_id' => $goods_id,
'return_type' => Order_ReturnModel::RETURN_TYPE_GOODS,
'return_state:!=' => Order_ReturnModel::RETURN_SELLER_UNPASS
));
}
~~~
二、賣家審核退貨申請Seller_Service_Return&met=goodsReturn&act=detail
文件路徑:shop/controllers/Seller/Service/ReturnCtl.php
~~~
//根據URL參數act,判斷視圖
if ($act == "detail")
{
$data = $this->detail();
$this->view->setMet('detail');
}
~~~
視圖:shop/views/default/Seller/Service/ReturnCtl/detail.php
賣家審核表單提交:
~~~
$('#form').validator({
//審核
......
}).on("click", "#handle_submit", function (e)
{
ajax_url = SITE_URL + '?ctl=Seller_Service_Return&met=agreeReturn&typ=json';
$(e.delegateTarget).trigger("validate");
}).on("click", "#handle_close", function (e)
{
ajax_url = SITE_URL + '?ctl=Seller_Service_Return&met=closeReturn&typ=json';
$(e.delegateTarget).trigger("validate");
});
~~~
審核同意方法:agreeReturn()
~~~
$data['return_shop_message'] = $return_shop_message;
if ($return['return_goods_return'] == Order_ReturnModel::RETURN_GOODS_RETURN)
{
$data['return_state'] = Order_ReturnModel::RETURN_SELLER_PASS;
}
else
{
$data['return_state'] = Order_ReturnModel::RETURN_SELLER_GOODS;
}
$data['return_shop_handle'] = Order_ReturnModel::RETURN_SELLER_PASS;
$data['return_shop_time'] = get_date_time();
$flag = $this->orderReturnModel->editReturn($order_return_id, $data);
~~~
審核不同意方法:closeReturn()
~~~
$data['return_shop_message'] = $return_shop_message;
$data['return_state'] = Order_ReturnModel::RETURN_SELLER_UNPASS;
$data['return_shop_handle'] = Order_ReturnModel::RETURN_SELLER_UNPASS;
$data['return_shop_time'] = get_date_time();
$rs_row = array();
$this->orderReturnModel->sql->startTransactionDb();
$edit_flag = $this->orderReturnModel->editReturn($order_return_id, $data);
~~~
三、賣家確認收獲
文件路徑:shop/controllers/Seller/Service/ReturnCtl.php
視圖:shop/views/default/Seller/Service/ReturnCtl/detail.php
~~~
$('#form2').validator({
ignore: ':hidden',
theme: 'yellow_right',
timely: 1,
stopOnError: false,
fields: {},
valid: function (form)
{
//表單驗證通過,提交表單
$.ajax({
url: SITE_URL + '?ctl=Seller_Service_Return&met=agreeGoods&typ=json',
data: $("#form2").serialize(),
success: function (a)
{
if (a.status == 200)
{
location.href = "./index.php?ctl=Seller_Service_Return&met=<?php if ($data['order_goods_id'])
{
echo "goodsReturn";
}
else
{
echo "orderReturn";
}?>&act=detail&id=" + order_return_id;
}
else
{
Public.tips.error('<?=__('操作失敗!')?>');
}
}
});
}
}).on("click", "#handle_goods", function (e)
{
$(e.delegateTarget).trigger("validate");
});
~~~
方法:agreeGoods()
~~~
$data['return_state'] = Order_ReturnModel::RETURN_SELLER_GOODS;
$flag = $this->orderReturnModel->editReturn($order_return_id, $data);
check_rs($flag,$rs_row);
//如果訂單為分銷商采購單,扣除分銷商的錢
if($order_base['order_source_id'])
{
$dist_order = $Order_BaseModel -> getOneByWhere(array('order_id'=>$order_base['order_source_id']));
if(!empty($dist_order)){
$dist_return_order = $this->orderReturnModel->getOneByWhere(array('order_number'=>$dist_order['order_id'],'return_type'=>$return['return_type']));
$flag = $this->orderReturnModel->editReturn($dist_return_order['order_return_id'], $data);
check_rs($flag,$rs_row);
}
~~~
四、平臺審核
文件路徑:shop/controllers/Api/Trade/ReturnCtl.php
視圖:shop_admin/view/default/Trade/ReturnCtl/detail.php
JS:shop_admin/static/default/js/controllers/trade/return/detail.js
五、賣家退貨管理
文件路徑:shop/controllers/Seller/Service/ReturnCtl.php
* 退貨流程:申請退貨->賣家同意->買家退貨->退貨成功
* 退貨狀態:
~~~
//模型:shop/models/Order/ReturnModel.php
public function __construct()
{
parent::__construct();
$this->return_state = array(
'1' => __("等待賣家審核"),
'2' => __("賣家審核通過"),
'3' => __("賣家審核未通過"),
'4' => __("等待平臺審核"),
'5' => __("退款/貨完成"),
);
$this->return_type = array(
'1' => __("退款"),
'2' => __("退貨"),
'3' => __("虛擬訂單退款")
);
}
~~~
* 視圖:根據URL獲得參數act的值,判斷視圖
~~~
if ($act == "detail")
{
$data = $this->detail();
$this->view->setMet('detail');
}
else
{
//goodsReturn.php
}
~~~
1.退貨管理列表
方法:goodsReturn()、listReturn()
~~~
$data = $this->listReturn(Order_ReturnModel::RETURN_TYPE_ORDER);
public function listReturn($type)
{
$data = $this->orderReturnModel->getReturnList($cond_row, array('return_add_time' => 'DESC'), $page, $rows);
}
~~~
2.查看退貨詳情
視圖:shop/views/default/Seller/Service/ReturnCtl/detail.php
* 賣家同意退貨方法:agreeReturn()
~~~
//判斷該筆退款金額的訂單是否已經結算
$Order_BaseModel = new Order_BaseModel();
$order_base = $Order_BaseModel->getOne($return['order_number']);
//判斷該筆訂單是否已經收貨,如果沒有收貨的話,不扣除賣家資金。已確認收貨則扣除賣家資金
if($order_base['order_status'] == $Order_StateModel::ORDER_FINISH )
{
$order_finish = false;
//獲取用戶的賬戶資金資源
$key = Yf_Registry::get('shop_api_key');
$formvars = array();
$user_id = Perm::$userId;
$formvars['user_id'] = $user_id;
$formvars['app_id'] = Yf_Registry::get('shop_app_id');
$money_row = get_url_with_encrypt($key, sprintf('%s?ctl=Api_User_Info&met=getUserResourceInfo&typ=json', Yf_Registry::get('paycenter_api_url')), $formvars);
$user_money = 0;
$user_money_frozen = 0;
if ($money_row['status'] == '200')
{
$money = $money_row['data'];
$user_money = $money['user_money'];
$user_money_frozen = $money['user_money_frozen'];
}
$shop_return_amount = $return['return_cash'] - $return['return_commision_fee'];
//獲取該店鋪最新的結算結束日期
$Order_SettlementModel = new Order_SettlementModel();
$settlement_last_info = $Order_SettlementModel->getLastSettlementByShopid(Perm::$shopId, $return['order_is_virtual']);
if($settlement_last_info)
{
$settlement_unixtime = $settlement_last_info['os_end_date'] ;
}
else
{
$settlement_unixtime = '';
}
$settlement_unixtime = strtotime($settlement_unixtime);
$order_finish_time = $order_base['order_finished_time'];
$order_finish_unixtime = strtotime($order_finish_time);
fb($settlement_unixtime);
if($settlement_unixtime >= $order_finish_unixtime )
{
//結算時間大于訂單完成時間。需要扣除賣家的現金賬戶
$money = $user_money;
$pay_type = 'cash';
}
else
{
//結算時間小于訂單完成時間。需要扣除賣家的凍結資金,如果凍結資金不足就扣除賬戶余額
$money = $user_money_frozen + $user_money;
$pay_type = 'frozen_cash';
}
}
else
{
$order_finish = true;
}
~~~
* 賣家確認收貨:agreeGoods()
~~~
$data['return_state'] = Order_ReturnModel::RETURN_SELLER_GOODS;
$flag = $this->orderReturnModel->editReturn($order_return_id, $data);
check_rs($flag,$rs_row);
//如果訂單為分銷商采購單,扣除分銷商的錢
if($order_base['order_source_id'])
{
$dist_order = $Order_BaseModel -> getOneByWhere(array('order_id'=>$order_base['order_source_id']));
if(!empty($dist_order)){
$dist_return_order = $this->orderReturnModel->getOneByWhere(array('order_number'=>$dist_order['order_id'],'return_type'=>$return['return_type']));
$flag = $this->orderReturnModel->editReturn($dist_return_order['order_return_id'], $data);
check_rs($flag,$rs_row);
}
~~~
* 賣家不同意退貨方法:closeReturn()
`$edit_flag = $this->orderReturnModel->editReturn($order_return_id, $data);`
六、買家退貨管理
1.退貨申請列表
文件路徑:shop/controllers/Buyer/Service/ReturnCtl.php
視圖:shop/views/default/Buyer/Service/ReturnCtl/index.php
`$data = $this->orderReturnModel->getReturnList($cond_row, array('return_add_time' => 'DESC'), $page, $rows);`
2.退貨詳情
文件路徑:shop/controllers/Buyer/Service/ReturnCtl.php
視圖:shop/views/default/Buyer/Service/ReturnCtl/detail.php
~~~
//查找退貨單信息
$data = $this->orderReturnModel->getReturn($cond_row);
//查找訂單信息
$order_base = $this->orderBaseModel->getOne($data['order_number']);
//如果下單這為當前用戶 或者此訂單是主管賬號支付訂單并且當前用戶是主管賬號,則當前用戶可以查看該筆訂單的退款退貨狀態
if($order_base['buyer_user_id'] == Perm::$userId || ($order_base['order_sub_pay'] == Order_StateModel::SUB_USER_PAY && $order_base['order_sub_user'] == Perm::$userId))
{
if ($data['return_type'] == Order_ReturnModel::RETURN_TYPE_GOODS)
{
$data['text'] = __("退貨");
}
else
{
$data['text'] = __("退款");
}
if($data['order_goods_id'])
{
$data['refund_goods'] = $this->orderGoodsModel->getOne($data['order_goods_id']);
}
$data['order'] = $order_base;
$return_limit = $this->orderReturnModel->getByWhere(array(
'order_number' => $data['order']['order_id'],
'return_state:!=' => Order_ReturnModel::RETURN_SELLER_UNPASS
));
$cash = 0;
foreach ($return_limit as $v)
{
$cash += $v['return_cash'];
}
$data['return_limit'] = $cash;
~~~
- 序言
- 系統要求
- 版本更新日志
- 遠豐商城技術對接說明
- 開發指導
- 系統架構
- 負載集群
- 云存儲
- 框架內容
- 基礎
- 開發規范
- 目錄結構
- 架構
- 架構總覽
- 數據庫
- 數據庫連接
- 基本使用
- 緩存
- 配置
- 路由
- 數據字典
- ucenter
- shop
- paycenter
- ucenter_admin
- shop_admin
- paycenter_admin
- shop1
- shop2
- shop3
- 通訊內容
- 商家中心
- 頂部導航欄
- 店鋪信息欄
- 店鋪及商品提示欄
- 交易提示欄
- 銷售情況統計欄
- 集群架構圖
- 單品銷量排行欄
- 店鋪運營推廣欄
- 平臺聯系方式欄
- 訂單物流
- 商品
- 商品列表
- 商品詳情
- 商品發布與編輯
- 分銷商品
- 關聯版式
- 商品規格
- 圖片空間
- 淘寶導入
- 訂單流程
- 交易訂單
- 訂單退款/退貨
- 促銷
- 團購管理
- 加價購
- 限時折扣
- 滿即送
- 代金券管理
- 分銷
- 店鋪
- 店鋪設置
- 自銷產品供應商
- 實體店鋪
- 品牌申請
- 店鋪信息
- 消費者保障服務
- 門店賬號
- 分銷商--產品供應商
- 分銷明細
- 批發市場
- 商家微信公眾號
- 售后服務
- 咨詢管理
- 投訴管理
- 退款管理
- 退貨管理
- 雜項
- 遠程上傳圖片
- 接口(廢棄,參考最外層接口項)
- 接口說明
- 品牌
- 商品規格
- 商品類型
- 商品分類
- 商品
- 訂單
- 商品/店鋪收藏
- 足跡
- 退款及退貨
- 商家店鋪
- 會員
- 入駐協議
- 訂單接口
- 商品接口
- 訂單物流接口
- 商家中心接口
- 促銷接口
- 快遞鳥物流接口
- 代金券接口
- 首頁版塊
- 團購
- 平臺紅包
- 限時折扣接口
- 拼團接口
- wap首頁模板
- JS
- 銀聯支付
- 多語言
- 商品評分
- 圖片加載
- 買家申請退款退貨
- 商家退款退貨
- 平臺退款退貨
- 添加發票
- 提交訂單
- 確認訂單
- 運費銷售區域
- 獲取會員地址
- 充值
- 導出XLS
- 商城系統集成
- 多語言實現
- 三級分銷推廣鏈接發展推廣員
- app.ini.php
- 去分銷
- 版本更新
- 物流支持
- 運營人員建議
- 業務邏輯
- 統計結算
- 客服消息
- 賬號
- 三級分銷
- IM
- 配置
- 平臺帳號
- 活動數據表說明
- 接口
- 數據庫中間鍵
- MyCat的優勢
- 概念說明
- Mycat的下載及安裝
- 參數配置案列
- Mycat讀寫分離
- 基本命令
- 常見錯誤