228 行
7.6 KiB
PHP
可执行文件
228 行
7.6 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace Make\Business;
|
|
|
|
use Common\Business\Export;
|
|
use Common\Model\RetailStoreModel;
|
|
use Make\Model\MakeOrderModel;
|
|
|
|
/**
|
|
* 配送订单类
|
|
* Class MakeOrder
|
|
* [
|
|
* 下载压缩包 downloadZip
|
|
* 生成导出文件 createExportFile
|
|
* 配送订单记录 orderRecord
|
|
* ]
|
|
* @package Make\Business
|
|
*/
|
|
class MakeOrder
|
|
{
|
|
|
|
/**
|
|
* 下载压缩包
|
|
* @param $param
|
|
*/
|
|
public function downloadZip($param)
|
|
{
|
|
$ExportClass = new Export();
|
|
$directory_name = I('get.directory_name');
|
|
if (is_dir($directory_name)) {
|
|
$zip = new \ZipArchive();
|
|
$dir = ltrim($directory_name, './');
|
|
$arr = explode('/', $dir);
|
|
unset($arr[count($arr) - 1]);
|
|
$zipName = implode('/', $arr);
|
|
$name = "码科订单导出";
|
|
$zip_url = './' . $zipName . '/' . $name . date('Y-m-d_H_i_s') . '.zip';
|
|
if ($zip->open($zip_url, \ZipArchive::CREATE) === TRUE) {
|
|
$ExportClass->addFileToZip($dir, $zip, $name); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
|
|
$zip->close(); //关闭处理的zip文件
|
|
if (!file_exists($zip_url)) { //判断文件是否存在
|
|
echo "文件不存在";
|
|
exit();
|
|
}
|
|
$file = fopen($zip_url, "r");
|
|
Header("Content-type:application/octet-stream");
|
|
header("Accept-Ranges: bytes");
|
|
header("Accept-Length: " . filesize($zip_url));
|
|
header("Content-Disposition: attachment; filename={$name}" . date('Y-m-d_H:i:s') . ".zip");
|
|
echo fread($file, filesize($zip_url));
|
|
fclose($file);
|
|
$ExportClass->delDirFile($directory_name); //删除文件夹下的所有文件
|
|
rmdir($directory_name); //删除当前文件夹
|
|
unlink($zip_url); //删除压缩包
|
|
}
|
|
} else {
|
|
echo '文件不存在';
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* 生成导出文件
|
|
* @param $param
|
|
* @return mixed
|
|
* @throws \PHPExcel_Exception
|
|
* @throws \PHPExcel_Reader_Exception
|
|
* @throws \PHPExcel_Writer_Exception
|
|
*/
|
|
public function createExportFile($param)
|
|
{
|
|
$page = $param['page'] ? $param['page'] : 1;
|
|
$limit = $param['limit'] ? $param['limit'] : 10;
|
|
$orderResult = $this->orderRecord($param);
|
|
$data = $orderResult['data']['list'] ? $orderResult['data']['list'] : [];
|
|
$directory_name = $param['directory_name'];
|
|
$filename = "码科订单导出";
|
|
$headArr = array(
|
|
array('id', 'ID'),
|
|
array('bill_order_number', '门店订单'),
|
|
array('order_number', '码科订单'),
|
|
array('storetag', '门店名称'),
|
|
array('rider_name', '骑手姓名'),
|
|
array('rider_mobile', '骑手手机号'),
|
|
array('distance', '配送距离'),
|
|
array('total_price', '配送费'),
|
|
array('accept_time', '接单时间'),
|
|
array('complete_time', '送达时间'),
|
|
array('status_name', ' 状态')
|
|
);
|
|
$str = $filename . ' 表格生成时间:' . date('Y-m-d H:i:s');
|
|
if (empty($directory_name)) {
|
|
$directory_name = "./Uploads/MakeExport/{$param['merchant_id']}/";
|
|
}
|
|
$parameter = [
|
|
'expTitle'=>$filename,
|
|
'expCellName'=>$headArr,
|
|
'expTableData'=>$data,
|
|
'common'=>$str,
|
|
'directory_name'=>$directory_name,
|
|
'page'=>$page,
|
|
];
|
|
$ExportClass = new Export();
|
|
$result = $ExportClass->generateXLS($parameter);
|
|
$res = array(
|
|
'status' => 1,
|
|
'type' => 1,
|
|
'directory_name' => $result['directory_name'],
|
|
'msg' => '请继续生成文件'
|
|
);
|
|
if(count($data) < $limit){
|
|
$res['type'] = 2;
|
|
$res['msg'] = '数据生成完毕';
|
|
}
|
|
return callBack(statusCode()['success'], $res['msg'], $res);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* 配送订单记录
|
|
* @param $param
|
|
* [
|
|
* merchant_id
|
|
* store_id
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function orderRecord($param)
|
|
{
|
|
$page = $param['page'];
|
|
$limit = $param['limit'];
|
|
$where = $this->orderRecordTerm($param);
|
|
try {
|
|
$MakeOrderModel = new MakeOrderModel();
|
|
$list = $MakeOrderModel->getSelect($where, '*', 'id desc', $page . ',' . $limit);
|
|
} catch (\Exception $e) {
|
|
return [];
|
|
}
|
|
if (!empty($list)) {
|
|
$count = $MakeOrderModel->getCount($where);
|
|
$StoreModel = new RetailStoreModel();
|
|
foreach ($list as $key => &$val) {
|
|
$val['index'] = $key + 1;
|
|
if (!empty($val['accept_time'])) {
|
|
$val['accept_time'] = date('Y-m-d H:i:s', $val['accept_time']);
|
|
}
|
|
if (!empty($val['complete_time'])) {
|
|
$val['complete_time'] = date('Y-m-d H:i:s', $val['complete_time']);
|
|
}
|
|
switch ($val['status']) {
|
|
case 'cancel':
|
|
$val['status_name'] = '订单已取消';
|
|
break;
|
|
case 'payed':
|
|
$val['status_name'] = '待接单';
|
|
break;
|
|
case 'accepted':
|
|
$val['status_name'] = '待取件';
|
|
break;
|
|
case 'geted':
|
|
$val['status_name'] = '配送中';
|
|
break;
|
|
case 'gotoed':
|
|
$val['status_name'] = '已完成';
|
|
break;
|
|
case 'completed':
|
|
$val['status_name'] = '已完成';
|
|
break;
|
|
}
|
|
$val['storetag'] = $StoreModel->getFindField([
|
|
'id' => $val['store_id']
|
|
], 'storetag');
|
|
}
|
|
}
|
|
return callBack(statusCode()['success'], "查询成功", ['list' => $list, 'count' => $count ? $count : 0]);
|
|
}
|
|
|
|
|
|
/**
|
|
* 配送订单记录的查询条件
|
|
* @param $param
|
|
* [
|
|
* merchant_id
|
|
* store_id
|
|
* add_time
|
|
* status
|
|
* order_number
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function orderRecordTerm($param)
|
|
{
|
|
if (!empty($param['add_time'])) {
|
|
$start_time = strtotime($param['add_time'][0]);
|
|
$end_time = strtotime($param['add_time'][1]);
|
|
$where['add_time'] = ['between', [$start_time, $end_time]];
|
|
}
|
|
if (!empty($param['status'])) {
|
|
switch ($param['status']) {
|
|
case 1:
|
|
$where['status'] = 'payed';
|
|
break;
|
|
case 2:
|
|
$where['status'] = 'accepted';
|
|
break;
|
|
case 3:
|
|
$where['status'] = 'geted';
|
|
break;
|
|
case 4:
|
|
$where['status'] = ['in', 'gotoed, completed'];
|
|
break;
|
|
case 5:
|
|
$where['status'] = 'cancel';
|
|
break;
|
|
}
|
|
}
|
|
if (!empty($param['order_number'])) {
|
|
$where['bill_order_number'] = $param['order_number'];
|
|
}
|
|
if (!empty($param['store_id'])) {
|
|
$where['store_id'] = $param['store_id'];
|
|
}
|
|
$where['merchant_id'] = $param['merchant_id'];
|
|
return $where;
|
|
}
|
|
} |