文件
mashangyoujiu/Application/Retail/Business/DaDa.class.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;
}
}