Browse Source

售后监控

pull/9/head
liuyu 3 years ago
parent
commit
70df6b14fa
  1. 35
      config/define.php
  2. 96
      control/index.php
  3. 39
      view/templates/index/after_sale_list.html
  4. 9
      view/templates/index/order_list.html

35
config/define.php

@ -64,7 +64,42 @@
# 13:买家逾期,超过有效期 14:换货补寄待商家处理 15:换货补寄待用户处理 16:换货补寄成功 17:换货补寄失败 18:换货补寄待用户确认完成 21:待商家同意维修 22:待用户确认发货 24:维修关闭 25:维修成功 27:待用户确认收货 31:已同意拒收退款,待用户拒收 32:补寄待商家发货 # 13:买家逾期,超过有效期 14:换货补寄待商家处理 15:换货补寄待用户处理 16:换货补寄成功 17:换货补寄失败 18:换货补寄待用户确认完成 21:待商家同意维修 22:待用户确认发货 24:维修关闭 25:维修成功 27:待用户确认收货 31:已同意拒收退款,待用户拒收 32:补寄待商家发货
define('AFTER_SALES_STATUS_NO', 0); define('AFTER_SALES_STATUS_NO', 0);
define('AFTER_SALES_STATUS_BUYER_APPLIES_FOR_REFUND', 2); define('AFTER_SALES_STATUS_BUYER_APPLIES_FOR_REFUND', 2);
define('AFTER_SALES_STATUS_RETURN_REFUND', 3);
define('AFTER_SALES_STATUS_SELLER_AGREE_REFUND', 4);
define('AFTER_SALES_STATUS_PLATFORM_AGREE_REFUND', 5);
define('AFTER_SALES_STATUS_REFUSE_REFUND', 6);
define('AFTER_SALES_STATUS_RETURN_REFUND_AGREE', 7);
define('AFTER_SALES_STATUS_PLATFORM_PROCESSING', 8); define('AFTER_SALES_STATUS_PLATFORM_PROCESSING', 8);
define('AFTER_SALES_STATUS_PLATFORM_REFUSE_REFUND', 9);
define('AFTER_SALES_STATUS_REFUND_SUCC', 10);
define('AFTER_SALES_STATUS_BUYER_REVOKE', 11);
define('AFTER_SALES_STATUS_EXPECTED_UNHANDLED', 12);
$GLOBALS['after_sales_status'] = array(
AFTER_SALES_STATUS_NO => '无售后',
AFTER_SALES_STATUS_BUYER_APPLIES_FOR_REFUND => '买家申请退款,待商家处理',
AFTER_SALES_STATUS_RETURN_REFUND => '退货退款,待商家处理',
AFTER_SALES_STATUS_SELLER_AGREE_REFUND => '商家同意退款,退款中',
AFTER_SALES_STATUS_PLATFORM_AGREE_REFUND => '平台同意退款,退款中',
AFTER_SALES_STATUS_REFUSE_REFUND => '驳回退款,待买家处理',
AFTER_SALES_STATUS_RETURN_REFUND_AGREE => '已同意退货退款,待用户发货',
AFTER_SALES_STATUS_PLATFORM_REFUSE_REFUND => '平台拒绝退款,退款关闭',
AFTER_SALES_STATUS_REFUND_SUCC => '退款成功',
AFTER_SALES_STATUS_BUYER_REVOKE => '买家撤销',
AFTER_SALES_STATUS_EXPECTED_UNHANDLED => '买家逾期未处理,退款失败',
13 => '买家逾期,超过有效期',
14 => '换货补寄待商家处理',
15 => '换货补寄待用户处理',
16 => '换货补寄成功',
17 => '换货补寄失败',
18 => '换货补寄待用户确认完成',
21 => '待商家同意维修',
22 => '待用户确认发货',
24 => '维修关闭',
25 => '维修成功',
27 => '待用户确认收货',
31 => '已同意拒收退款,待用户拒收',
32 => '补寄待商家发货',
);
# 同步历史订单 # 同步历史订单

96
control/index.php

@ -33,6 +33,8 @@ class index extends publicBase {
$this->ajax_json(true, 'succ', $list); $this->ajax_json(true, 'succ', $list);
} }
public function order_list() {}
public function ajax_get_order_list() { public function ajax_get_order_list() {
$shopinfo = $this->get_shopinfo(); $shopinfo = $this->get_shopinfo();
@ -54,6 +56,19 @@ class index extends publicBase {
$goodsid2skuid2info[$goods['goods_id']][$goods['sku_id']] = $goods; $goodsid2skuid2info[$goods['goods_id']][$goods['sku_id']] = $goods;
} }
$GLOBALS['order_status2class'] = array(
ORDER_STATUS_WAIT_DELIVER_GOODS => 'list_status_grey01',
ORDER_STATUS_DELIVERED => 'list_status_grey01',
ORDER_STATUS_SIGNED_FOR => 'list_status_yellow01',
);
$GLOBALS['refund_status2class'] = array(
REFUND_STATUS_NO_AFTER_SALES => 'list_status_grey01',
REFUND_STATUS_ING => 'list_status_red01',
REFUND_STATUS_AFTER_SALE_ING => 'list_status_yellow01',
REFUND_STATUS_SUCC => 'list_status_green01',
);
$nlist = array(); $nlist = array();
foreach ($list as $info) { foreach ($list as $info) {
@ -66,9 +81,8 @@ class index extends publicBase {
$ninfo['goods_name'] = $goodsid2skuid2info[$info['goods_id']][$info['sku_id']]['goods_name'].' '.$goodsid2skuid2info[$info['goods_id']][$info['sku_id']]['sku_name']; $ninfo['goods_name'] = $goodsid2skuid2info[$info['goods_id']][$info['sku_id']]['goods_name'].' '.$goodsid2skuid2info[$info['goods_id']][$info['sku_id']]['sku_name'];
$ninfo['goods_id'] = $info['goods_id']; $ninfo['goods_id'] = $info['goods_id'];
$ninfo['sku_id'] = $info['sku_id']; $ninfo['sku_id'] = $info['sku_id'];
$ninfo['is_wait_deliver_goods'] = $info['order_status']==ORDER_STATUS_WAIT_DELIVER_GOODS ? true : false; $ninfo['order_status_class'] = $GLOBALS['order_status2class'][$info['order_status']];
$ninfo['is_refund'] = $info['refund_status']==REFUND_STATUS_NO_AFTER_SALES ? false : true; $ninfo['refund_status_class'] = $GLOBALS['refund_status2class'][$info['refund_status']];
$ninfo['is_refund_succ'] = $info['refund_status']==REFUND_STATUS_SUCC ? true : false;
$nlist['data'][] = $ninfo; $nlist['data'][] = $ninfo;
} }
@ -78,44 +92,17 @@ class index extends publicBase {
$this->ajax_json(true, 'succ', $nlist); $this->ajax_json(true, 'succ', $nlist);
} }
public function order_list() { public function after_sale_list() {}
$url = '/index/order_list';
public function ajax_get_after_sale_order_list() {
$shopinfo = $this->get_shopinfo(); $shopinfo = $this->get_shopinfo();
$uid = $shopinfo['uid']; $page = $this->get('page')+0;
$shop_id = $shopinfo['id']; $pagesize = $this->get('limit')+0;
$order_status = $this->get('order_status')+0;
if ($order_status) $url .= '/order_status/'.$order_status;
$refund_status = $this->get('refund_status')+0;
if ($refund_status) $url .= '/refund_status/'.$refund_status;
$obj = new mOrder(); $obj = new mOrder();
$count = $obj->getOrdersCount($uid, $shop_id, $order_status, $refund_status); $list = $obj->getOrderList($shopinfo['uid'], $shopinfo['id'], 0, REFUND_STATUS_AFTER_SALE_ING, $page, $pagesize);
if (empty($list)) $this->ajax_json(false, 'empty list');
// 分页
$page = new Page();
$page->setTotalnum($count);
$page->setUrl($url.'/page/');
$curpage = $this->get('page')>0 ? $this->get('page') : 1;
$page->setPage($curpage);
$pagesize = $page->pagesize = 50;
$this->view['page_list'] = $page->getPageList();
$this->view['curpage'] = $curpage;
if ($curpage > 1) $this->view['prev_page'] = $page->url . ($curpage - 1); //上一页连接
if ($curpage < $page->totalpage) $this->view['post_page'] = $page->url . ($curpage + 1); //下一页连接
//只取出当前页显示
$list = $obj->getOrderList($uid, $shop_id, $order_status, $refund_status, $curpage, $pagesize);
$this->view['list'] = $list ? $list : array();
$this->view['order_status'] = $GLOBALS['order_status'];
$this->view['refund_status'] = $GLOBALS['refund_status'];
if (empty($list)) return true;
$goods_ids = array_unique(array_column($list, 'goods_id')); $goods_ids = array_unique(array_column($list, 'goods_id'));
@ -127,7 +114,42 @@ class index extends publicBase {
foreach ($goods_list as $goods) { foreach ($goods_list as $goods) {
$goodsid2skuid2info[$goods['goods_id']][$goods['sku_id']] = $goods; $goodsid2skuid2info[$goods['goods_id']][$goods['sku_id']] = $goods;
} }
$this->view['goodsid2skuid2info'] = $goodsid2skuid2info;
$GLOBALS['order_status2class'] = array(
ORDER_STATUS_WAIT_DELIVER_GOODS => 'list_status_grey01',
ORDER_STATUS_DELIVERED => 'list_status_red01',
ORDER_STATUS_SIGNED_FOR => 'list_status_yellow01',
);
$GLOBALS['refund_status2class'] = array(
REFUND_STATUS_NO_AFTER_SALES => 'list_status_grey01',
REFUND_STATUS_ING => 'list_status_red01',
REFUND_STATUS_AFTER_SALE_ING => 'list_status_yellow01',
REFUND_STATUS_SUCC => 'list_status_green01',
);
$nlist = array();
foreach ($list as $info) {
$ninfo = array();
$ninfo['order_sn'] = $info['order_sn'];
$ninfo['pay_time'] = $info['pay_time'];
$ninfo['pay_amount'] = $info['pay_amount'];
$ninfo['order_status_desc'] = $GLOBALS['order_status'][$info['order_status']];
$ninfo['refund_status_desc'] = $GLOBALS['refund_status'][$info['refund_status']];
$ninfo['after_sales_status_desc'] = $GLOBALS['after_sales_status'][$info['after_sales_status']];
$ninfo['goods_name'] = $goodsid2skuid2info[$info['goods_id']][$info['sku_id']]['goods_name'].' '.$goodsid2skuid2info[$info['goods_id']][$info['sku_id']]['sku_name'];
$ninfo['goods_id'] = $info['goods_id'];
$ninfo['sku_id'] = $info['sku_id'];
$ninfo['order_status_class'] = $GLOBALS['order_status2class'][$info['order_status']];
$ninfo['refund_status_class'] = $GLOBALS['refund_status2class'][$info['refund_status']];
$nlist['data'][] = $ninfo;
}
$nlist['total'] = $obj->getOrdersCount($shopinfo['uid'], $shopinfo['id'], 0, REFUND_STATUS_AFTER_SALE_ING)+0;
$this->ajax_json(true, 'succ', $nlist);
} }
public function export_wait_deliver_goods_tids() { public function export_wait_deliver_goods_tids() {

39
view/templates/index/after_sale_list.html

@ -6,7 +6,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link href="/images/pdd_icon.png" rel="icon"> <link href="/images/pdd_icon.png" rel="icon">
<title>首页</title> <title>售后监控</title>
<link rel="stylesheet" href="/css/layui.css"/> <link rel="stylesheet" href="/css/layui.css"/>
<link rel="stylesheet" href="/css/admin_style.css"/> <link rel="stylesheet" href="/css/admin_style.css"/>
<link rel="stylesheet" href="/css/common.css"/> <link rel="stylesheet" href="/css/common.css"/>
@ -30,7 +30,7 @@
<div class="admin-table-list-header"> <div class="admin-table-list-header">
<div><span>售后监控/</span></div> <div><span>售后监控/</span></div>
<div><span>售后列表</span></div> <div><span>售后列表</span></div>
<div><span>导出列表</span></div> <div><a href="/index/export_wait_deliver_goods_tids"><span>导出列表</span></a></div>
</div> </div>
<table class="layui-hide" id="deliver_remind_list" lay-filter="deliver-remind-table"></table> <table class="layui-hide" id="deliver_remind_list" lay-filter="deliver-remind-table"></table>
</div> </div>
@ -70,40 +70,41 @@ layui.use(['element', 'layer', 'util', 'table'], function(){
var showTips = null; var showTips = null;
table.render({ table.render({
elem: '#deliver_remind_list' elem: '#deliver_remind_list'
,url:'/tpl/ajax_sale_monitor_list' ,url:'/index/ajax_get_after_sale_order_list'
,toolbar: false ,toolbar: false
,title: '用户数据表' ,title: '用户数据表'
,totalRow: false ,totalRow: false
,className:'deliver_remind_list_table_class' ,className:'deliver_remind_list_table_class'
,cols: [[ ,cols: [[
{field:'goods_name', title:'商品名称'} {field:'goods_name', title:'商品名称',
templet: function(d){
return '<a href="https://mobile.yangkeduo.com/goods.html?goods_id='+d.goods_id+'&sku_id='+d.sku_id+'" target="_blank">'+d.goods_name+'</a>';
}}
,{field:'tid', title:'订单号' ,{field:'tid', title:'订单号'
,templet: function(d){ ,templet: function(d){
return '<span data-clipboard-text="'+d.tid+'" title="点击复制" class="admin-table-td-outter admin-table-td-outter-'+d.tid+'">'+ d.tid +'&nbsp;<span class="icon-uniE90E admin-table-td-outter-font admin-table-td-outter-font-'+d.tid+'"></span></span>'; return '<span data-clipboard-text="'+d.order_sn+'" title="点击复制" class="admin-table-td-outter admin-table-td-outter-'+d.order_sn+'">'+d.order_sn+'&nbsp;<span class="icon-uniE90E admin-table-td-outter-font admin-table-td-outter-font-'+d.order_sn+'"></span></span>';
}} }}
,{field:'count_down', title:'售后时间' ,{field:'pay_time', title:'支付时间'
,templet: function(d){ ,templet: function(d){
return '<span>'+d.sale_date+'</span>'; return '<span>'+d.pay_time+'</span>';
}} }}
,{field:'income', title:'收入(元)'} ,{field:'pay_amount', title:'支付金额(元)'}
,{field:'order_status', title:'订单状态' ,{field:'order_status', title:'订单状态'
,templet: function(d){ ,templet: function(d){
if(d.order_status == 1) return '<span class="list_status_grey01">待发货</span>'; return '<span class="'+d.order_status_class+'">'+d.order_status_desc+'</span>';
if(d.order_status == 2) return '<span class="list_status_yellow01">已签收</span>'; }}
return '<span class="list_status_red01">待签收</span>'; ,{field:'refund_status_desc', title:'退款状态'
,templet: function(d){
return '<span class="'+d.refund_status_class+'">'+d.refund_status_desc+'</span>';
}} }}
,{field:'status', title:'状态' ,{field:'after_sales_status_desc', title:'售后状态'
,templet: function(d){ ,templet: function(d){
if(d.status == 1) return '<span class="list_status_grey02">退款中</span>'; return '<span class="list_status_yellow01">'+d.after_sales_status_desc+'</span>';
if(d.status == 2) return '<span class="list_status_grey02">补寄中</span>';
if(d.status == 3) return '<span class="list_status_grey02">待补寄</span>';
if(d.status == 4) return '<span class="list_status_grey02">待签收</span>';
if(d.status == 5) return '<span class="list_status_grey02">平台…</span>';
return '<span class="list_status_yellow01">待处理</span>';
}} }}
,{field:'option', title:'操作' ,{field:'option', title:'操作'
,templet: function(d){ ,templet: function(d){
return '<span style="color:rgba(61, 127, 255, 1);font-size: 14px;cursor: pointer;">处理</span>'; return '<a href="https://mms.pinduoduo.com/aftersales/aftersale_list" target="_blank"><span style="color:rgba(61, 127, 255, 1);font-size: 14px;cursor: pointer;">去处理</span></a>';
}} }}
]] ]]
,page: true ,page: true

9
view/templates/index/order_list.html

@ -6,7 +6,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link href="/images/pdd_icon.png" rel="icon"> <link href="/images/pdd_icon.png" rel="icon">
<title>首页</title> <title>订单列表</title>
<link rel="stylesheet" href="/css/layui.css"/> <link rel="stylesheet" href="/css/layui.css"/>
<link rel="stylesheet" href="/css/admin_style.css"/> <link rel="stylesheet" href="/css/admin_style.css"/>
<link rel="stylesheet" href="/css/common.css"/> <link rel="stylesheet" href="/css/common.css"/>
@ -91,14 +91,11 @@ layui.use(['element', 'layer', 'util', 'table'], function(){
,{field:'pay_amount', title:'支付金额(元)'} ,{field:'pay_amount', title:'支付金额(元)'}
,{field:'order_status_desc', title:'订单状态' ,{field:'order_status_desc', title:'订单状态'
,templet: function(d){ ,templet: function(d){
if(d.is_wait_deliver_goods == false) return '<span class="list_status_grey01">'+d.order_status_desc+'</span>'; return '<span class="'+d.order_status_class+'">'+d.order_status_desc+'</span>';
return '<span class="list_status_yellow01">'+d.order_status_desc+'</span>';
}} }}
,{field:'refund_status_desc', title:'退款状态' ,{field:'refund_status_desc', title:'退款状态'
,templet: function(d){ ,templet: function(d){
if(d.is_refund == false) return '<span class="list_status_grey02">'+d.refund_status_desc+'</span>'; return '<span class="'+d.refund_status_class+'">'+d.refund_status_desc+'</span>';
if(d.is_refund_succ == true) return '<span class="list_status_green01">'+d.refund_status_desc+'</span>';
return '<span class="list_status_red01">'+d.refund_status_desc+'</span>';
}} }}
]] ]]

Loading…
Cancel
Save