215 行
7.8 KiB
PHP
可执行文件
215 行
7.8 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace Retail\Business;
|
|
|
|
use Common\Model\RetailStoreModel;
|
|
use Retail\Model\DaDaModel;
|
|
|
|
//[1.7.90]
|
|
|
|
/**
|
|
* 达达配送
|
|
* Class DaDa
|
|
* [
|
|
* getDdDeliveryList 获取DaDa配送记录
|
|
* getDdDeliveryTotal 达达获取统计
|
|
* handleMap 处理条件
|
|
* ]
|
|
* @package Retail\Business
|
|
* @author GuYunQinFeng
|
|
*/
|
|
class DaDa
|
|
{
|
|
/**
|
|
* 获取DaDa配送记录
|
|
* @param $param
|
|
* $param['order_type'] 订单类型 1普通 2拼团 3秒杀 4预售
|
|
* $param['order_id'] 门店订单ID
|
|
* $param['merchant_id']商户ID
|
|
* $param['store_id'] 筛选的门店ID
|
|
* $param['status'] 订单状态 1未完成 2已完成
|
|
* $param['page'] 页码
|
|
* $param['limit'] 每页数量
|
|
* @return array
|
|
*/
|
|
public function getDdDeliveryList($param)
|
|
{
|
|
$where = $this->handleMap($param);
|
|
$DaDaModel = new DaDaModel();
|
|
if ($param['page'] && $param['limit']) {
|
|
$list = $DaDaModel->getSelect($where, '', 'add_time desc', "{$param['page']}, {$param['limit']}");
|
|
} else {
|
|
$list = $DaDaModel->getSelect($where, '', 'add_time desc');
|
|
}
|
|
if ($list) {
|
|
$RetailStoreModel = new RetailStoreModel();
|
|
$storeIdArr = [];
|
|
$storeInfoArr = [];
|
|
foreach ($list as $key => &$val) {
|
|
$val['index'] = $key + 1;
|
|
$val['add_time'] = date('Y-m-d H:i:s', $val['add_time']);
|
|
$val['update_time'] = date('Y-m-d H:i:s', $val['update_time']);
|
|
switch ($val['order_status']) {
|
|
case 1:
|
|
$val['order_status'] = '待接单';
|
|
break;
|
|
case 2:
|
|
$val['order_status'] = '待取货';
|
|
break;
|
|
case 3:
|
|
$val['order_status'] = '配送中';
|
|
break;
|
|
case 4:
|
|
$val['order_status'] = '已完成';
|
|
break;
|
|
case 5:
|
|
switch ($val['cancel_from']) {
|
|
case 1:
|
|
$val['order_status'] = '配送员取消';
|
|
break;
|
|
case 2:
|
|
$val['order_status'] = '商家取消';
|
|
break;
|
|
case 3:
|
|
$val['order_status'] = '系统或客服取消取消';
|
|
break;
|
|
default:
|
|
$val['order_status'] = '已取消';
|
|
break;
|
|
}
|
|
break;
|
|
case 7:
|
|
$val['order_status'] = '已过期';
|
|
break;
|
|
case 8:
|
|
$val['order_status'] = '指派单';
|
|
break;
|
|
case 9:
|
|
$val['order_status'] = '妥投异常之物品返回中';
|
|
break;
|
|
case 10:
|
|
$val['order_status'] = '妥投异常之物品返回完成';
|
|
break;
|
|
case 1000:
|
|
$val['order_status'] = '创建达达运单失败';
|
|
break;
|
|
}
|
|
if (in_array($val['store_id'], $storeIdArr)) {
|
|
$val['store_name'] = $storeInfoArr[$val['store_id']]['name'];
|
|
} else {
|
|
$val['store_name'] = $RetailStoreModel->getFindField(['id' => $val['store_id']], 'storetag');
|
|
$storeIdArr[] = $val['store_id'];
|
|
$storeInfoArr[$val['store_id']]['name'] = $val['store_name'];
|
|
}
|
|
switch ($val['order_genre']) {
|
|
case 1:
|
|
$val['order_type'] = '商城订单';
|
|
break;
|
|
case 2:
|
|
$val['order_type'] = '拼团订单';
|
|
break;
|
|
case 3:
|
|
$val['order_type'] = '秒杀订单';
|
|
break;
|
|
}
|
|
}
|
|
$count = $DaDaModel->getCount($where);
|
|
return callBack(statusCode()['success'], '数据获取成功', [
|
|
'list' => $list,
|
|
'count' => $count,
|
|
]);
|
|
} else {
|
|
return callBack(statusCode()['success'], '暂无数据', [
|
|
'list' => [],
|
|
'count' => 0,
|
|
]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 达达获取统计
|
|
* @param $param
|
|
* $param['order_type'] 订单类型 1普通 2拼团 3秒杀 4预售
|
|
* $param['order_id'] 门店订单ID
|
|
* $param['merchant_id']商户ID
|
|
* $param['store_id'] 筛选的门店ID
|
|
* $param['status'] 订单状态 1未完成 2已完成
|
|
* $param['page'] 页码
|
|
* $param['limit'] 每页数量
|
|
* @return array
|
|
*/
|
|
public function getDdDeliveryTotal($param)
|
|
{
|
|
$where = $this->handleMap($param);
|
|
$DaDaModel = new DaDaModel();
|
|
$order_count = $DaDaModel->getCount($where);
|
|
if (empty($param['status']) || $param['status'] == 2) {
|
|
$where['order_status'] = 4;
|
|
$complete = $DaDaModel->getCount($where);
|
|
//配送费
|
|
$cost_total = $DaDaModel->getSum($where, 'fee');
|
|
if ($param['status'] == 2) {
|
|
$default_total = 0;
|
|
} else {
|
|
//违约金
|
|
$where['order_status'] = 5;
|
|
$default_total = $DaDaModel->getSum($where, 'deduct_fee');
|
|
}
|
|
} else {
|
|
$complete = 0;
|
|
$cost_total = 0;
|
|
//违约金
|
|
$where['order_status'] = 5;
|
|
$default_total = $DaDaModel->getSum($where, 'deduct_fee');
|
|
}
|
|
return callBack(statusCode()['success'], '数据获取成功', [
|
|
'order_count' => $order_count ? $order_count : 0,
|
|
'complete' => $complete ? $complete : 0,
|
|
'cost_total' => $cost_total ? $cost_total : 0.00,
|
|
'default_total' => $default_total ? $default_total : 0.00,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 处理条件
|
|
* @param $param
|
|
* $param['order_type'] 订单类型 1普通 2拼团 3秒杀 4预售
|
|
* $param['order_id'] 门店订单ID
|
|
* $param['merchant_id']商户ID
|
|
* $param['store_id'] 筛选的门店ID
|
|
* $param['status'] 订单状态 1未完成 2已完成
|
|
* $param['page'] 页码
|
|
* $param['limit'] 每页数量
|
|
* @return array
|
|
*/
|
|
public function handleMap($param)
|
|
{
|
|
$time = $param['time'];
|
|
if (!empty($param['order_type'])) {
|
|
$where['order_genre'] = $param['order_type'];
|
|
}
|
|
if (!empty($param['order_id'])) {
|
|
$where['order_no'] = ['like', '%' . $param['order_id'] . '%'];
|
|
}
|
|
if (!empty($param['status'])) {
|
|
$where['order_status'] = $param['status'] == 2 ? 4 : ['neq', 4];
|
|
}
|
|
if (!empty($time)) {
|
|
if (!is_array($time)) {
|
|
$time = explode(',', $time);
|
|
}
|
|
$start_time = strtotime($time[0]);
|
|
$end_time = strtotime($time[1]);
|
|
$where['add_time'] = ['between', [$start_time, $end_time]];
|
|
} else if ($param['is_export']) {
|
|
//默认导出当日记录
|
|
$where['add_time'] = ['between', [strtotime(date('Y-m-d 00:00:00')), time()]];
|
|
}
|
|
if ($param['store_id']) {
|
|
$where['store_id'] = $param['store_id'];
|
|
}
|
|
$where['merchant_id'] = $param['merchant_id'];
|
|
return $where;
|
|
}
|
|
}
|