2510 行
130 KiB
PHP
可执行文件
2510 行
130 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace Retail\Controller;
|
|
|
|
use Common\Business\DownFile;
|
|
use Common\Business\OperateMGoods;
|
|
use Common\Model\RetailStoreModel;
|
|
use Common\Model\SkuGoodsViewModel;
|
|
use Common\Model\SkuMGoodsViewModel;
|
|
use Common\Order\Statistics;
|
|
use Think\Controller;
|
|
|
|
//[1.8.50]
|
|
class ExporttableController extends BaseController
|
|
{
|
|
/**
|
|
* 门店商品档案导出
|
|
* @throws \PHPExcel_Exception
|
|
* @throws \PHPExcel_Reader_Exception
|
|
* @throws \PHPExcel_Writer_Exception
|
|
*/
|
|
public function goods()
|
|
{
|
|
$platform_type = $this->role_info['platform_type'] ? $this->role_info['platform_type'] : 1;
|
|
$store_id = $this->store_id;
|
|
if (IS_POST) {
|
|
$page = I('post.page') ? I('post.page') : 1;
|
|
$limit = 1000;
|
|
$directory_name = I('post.directory_name');
|
|
$param = array(
|
|
'store_id' => $store_id,
|
|
'platform_type'=>$platform_type,
|
|
'merchant_id'=>$this->merchant_id,
|
|
'showpurch_price' => session('global_store_jurisdiction')['showpurch_price'], //进价查看权限
|
|
'identity' => I('session.identity'), //寄售类型
|
|
'page' => $page, //页
|
|
'limit' => $limit, //每页数量
|
|
'need_goods_num' => true,
|
|
'need_img' => true,
|
|
'fields' => array(
|
|
'id',
|
|
'goods_class_id',
|
|
'goods_name',
|
|
'goods_number',
|
|
'goods_code',
|
|
'purchase_price',
|
|
'retail_price',
|
|
'online_price',
|
|
'store_mem_status',
|
|
'store_mem_price',
|
|
'plus_mem_status',
|
|
'plus_price',
|
|
'online_state',
|
|
'shop_mem_status',
|
|
'shop_mem_price',
|
|
'vip_online_state',
|
|
'vip_retail_state',
|
|
'integral_mem_status',
|
|
'integral',
|
|
'guide_royalty_state',
|
|
'guide_royalty_custom_state',
|
|
'guide_royalty_price',
|
|
'guide_royalty_online_price',
|
|
'goods_num',
|
|
'more_num',
|
|
'less_num',
|
|
'sell_num',
|
|
'fictitious_num',
|
|
'company',
|
|
'weight_value',
|
|
'sku_weight_value',
|
|
'specifications',
|
|
'pricing_method',
|
|
'production_date',
|
|
'shelf_life',
|
|
'status',
|
|
'goods_img_id',
|
|
'third_goods_code'
|
|
),
|
|
'attribute_state' => I('post.attribute_state'), //规格 1无规格 2规格
|
|
'keyword' => I('post.keyword'), //搜索关键词
|
|
'keyword_type' => I('post.keyword_type'), //关键词搜索类型 1货号 2条码 3名称
|
|
'order_type' => I('post.order_type'), //排序规则
|
|
'condition_name' => I('post.condition_name'), //排序规则关键词
|
|
'pricing_method' => I('post.pricing_method'),
|
|
'online_state' => I('post.online_state'),
|
|
'recovery_type' => I('post.recovery_type'), //2回收站
|
|
'advance_sale_status' => I('post.advance_sale_status'),
|
|
// 按照商品类别搜索
|
|
'person1' => I('post.person1'),
|
|
'person2' => I('post.person2'),
|
|
'person3' => I('post.person3'),
|
|
);
|
|
$SkuGoodsViewModel = new SkuGoodsViewModel();
|
|
$ret = $SkuGoodsViewModel->getGoodsList($param);
|
|
if (empty($ret['data'])) {
|
|
$this->ajaxReturn(array(
|
|
'status' => 0,
|
|
'msg' => '暂无商品可导出'
|
|
));
|
|
}
|
|
//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
|
|
import("Vendor.PHPExcel.PHPExcel");
|
|
import("Vendor.PHPExcel.Writer.Excel5");
|
|
import("Vendor.PHPExcel.IOFactory.php");
|
|
$filename = "storeGoods_NO.{$page}";
|
|
$headArr = array(
|
|
array('id', 'ID'),
|
|
array('cate_name', '分类'),
|
|
array('goods_name', '商品名称'),
|
|
array('goods_number', '货号'),
|
|
array('goods_code', '条码'),
|
|
array('purchase_price', '成本价'),
|
|
array('retail_price', '零售价'),
|
|
array('online_price', '线上价'),
|
|
array('store_mem_name', '是否开启店内会员价'),
|
|
array('store_mem_price', '店内会员价格'),
|
|
array('plus_mem_name', ' plus会员价开关'),
|
|
array('plus_price', 'Plus员价'),
|
|
array('online_state_name', '是否在商城出售'),
|
|
array('shop_mem_name', '是否开启商城会员价'),
|
|
array('shop_mem_price', '线上会员价'),
|
|
array('vip_online_name', '线上折扣'),
|
|
array('vip_retail_name', '线下折扣'),
|
|
array('integral_mem_name', '会员购买获得积分'),
|
|
array('integral', '会员消费送积分'),
|
|
array('guide_royalty_name', ' 购买该商品获得提成的状态'),
|
|
array('guide_royalty_custom_name', ' 导购员获得提成自定义状态'),
|
|
array('guide_royalty_price', ' 导购员线下固定金提成'),
|
|
array('guide_royalty_online_price', ' 导购员线上固定金提成'),
|
|
array('goods_num', '商品系统库存'),
|
|
array('more_num', '库存上限(超量值)'),
|
|
array('less_num', '库存下限(预警值)'),
|
|
array('sell_num', '已售数量'),
|
|
array('fictitious_num', '虚拟销量'),
|
|
array('company', '单位'),
|
|
array('weight_value', '重量(单位:kg)'),
|
|
array('specifications', '规格'),
|
|
array('pricing_method_name', '称重'),
|
|
array('production_date', '生产日期'),
|
|
array('shelf_life', '到期时间'),
|
|
array('status_name', '状态'),
|
|
array('goods_img', '图片'),
|
|
);
|
|
//第三方平台
|
|
if ($platform_type == 2) {
|
|
$headArr[] = ['third_goods_code', '第三方平台商品编码'];
|
|
}
|
|
$str = $filename . ' 表格生成时间:' . date('Y-m-d H:i:s');
|
|
if (!$directory_name) {
|
|
$num = createKey();
|
|
$directory_name = "./Uploads/storeGoodsExcel/{$store_id}/{$num}";
|
|
}
|
|
$this->setExcel($filename, $headArr, $ret['data'], $str, $directory_name);
|
|
$res = array(
|
|
'status' => 1,
|
|
'type' => 1,
|
|
'directory_name' => $directory_name,
|
|
'msg' => '请继续生成文件'
|
|
);
|
|
if (count($ret['data']) < $limit) {
|
|
$res['type'] = 2;
|
|
$res['msg'] = '数据生成完毕';
|
|
}
|
|
$this->ajaxReturn($res);
|
|
} else if (IS_GET) {
|
|
$directory_name = I('get.directory_name');
|
|
$online_state = I('get.online_state');
|
|
$attribute_state = I('get.attribute_state');
|
|
if (is_dir($directory_name)) {
|
|
$zip = new \ZipArchive();
|
|
$dir = ltrim($directory_name, './');
|
|
$arr = explode('/', $dir);
|
|
unset($arr[count($arr) - 1]);
|
|
$zipName = implode('/', $arr);
|
|
$name = $online_state == 1 ? '商城商品档案导出' : ($attribute_state == 1 ? '无规格商品导出' : '商品档案导出');
|
|
$zip_url = './' . $zipName . '/' . $name . date('Y-m-d_H_i_s') . '.zip';
|
|
|
|
if ($zip->open($zip_url, \ZipArchive::CREATE) === TRUE) {
|
|
|
|
$this->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);
|
|
|
|
$this->delDirFile($directory_name); //删除文件夹下的所有文件
|
|
rmdir($directory_name); //删除当前文件夹
|
|
unlink($zip_url); //删除压缩包
|
|
}
|
|
} else {
|
|
echo '文件不存在';
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 商户商品档案导出
|
|
* @throws \PHPExcel_Exception
|
|
* @throws \PHPExcel_Reader_Exception
|
|
* @throws \PHPExcel_Writer_Exception
|
|
*/
|
|
public function mGoods()
|
|
{
|
|
$platform_type = $this->role_info['platform_type'] ? $this->role_info['platform_type'] : 1;
|
|
$merchant_id = $this->merchant_id;
|
|
if (IS_POST) {
|
|
$page = I('post.page') ? I('post.page') : 1;
|
|
$limit = 1000;
|
|
$directory_name = I('post.directory_name');
|
|
$param = array(
|
|
'merchant_id' => $merchant_id,
|
|
'page' => $page, //页
|
|
'limit' => $limit, //每页数量
|
|
'need_goods_num' => true,
|
|
'need_img' => true,
|
|
'fields' => array(
|
|
'id',
|
|
'goods_class_id',
|
|
'goods_name',
|
|
'good_number',
|
|
'goods_code',
|
|
'purch_price',
|
|
'retail_price',
|
|
'online_price',
|
|
'store_mem_status',
|
|
'store_mem_price',
|
|
'plus_mem_status',
|
|
'plus_price',
|
|
'online_state',
|
|
'shop_mem_status',
|
|
'shop_mem_price',
|
|
'vip_online_state',
|
|
'vip_retail_state',
|
|
'more_num',
|
|
'less_num',
|
|
'company',
|
|
'weight_value',
|
|
'sku_weight_value',
|
|
'specifications',
|
|
'can_exchange_weigh',
|
|
'status',
|
|
'goods_image_id',
|
|
'third_goods_code'
|
|
),
|
|
'keyword' => I('post.keyword'),
|
|
'keyword_type' => I('post.keyword_type'),
|
|
'can_exchange_weigh' => I('post.can_exchange_weigh'),
|
|
'condition_name' => I("post.condition_name"), //排序规则关键词
|
|
'order_type' => I("post.order_type"), //排序规则
|
|
//按照商品类别搜索
|
|
'person1' => I('post.person1'),
|
|
'person2' => I('post.person2'),
|
|
'person3' => I('post.person3'),
|
|
'issellonline' => I('post.issellonline'), //商城出售状态
|
|
'attribute_state' => I('post.attribute'), //规格 1无规格 2规格
|
|
'recovery_type' => I('post.recovery_type'), //2回收站
|
|
);
|
|
$SkuGoodsViewModel = new OperateMGoods();
|
|
$ret = $SkuGoodsViewModel->getMerGoodsList($param);
|
|
if (empty($ret['data'])) {
|
|
$this->ajaxReturn(array(
|
|
'status' => 0,
|
|
'msg' => '暂无商品可导出'
|
|
));
|
|
}
|
|
//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
|
|
import("Vendor.PHPExcel.PHPExcel");
|
|
import("Vendor.PHPExcel.Writer.Excel5");
|
|
import("Vendor.PHPExcel.IOFactory.php");
|
|
$filename = "storeGoods_NO.{$page}";
|
|
$headArr = array(
|
|
array('id', 'ID'),
|
|
array('cate_name', '分类'),
|
|
array('goods_name', '商品名称'),
|
|
array('good_number', '货号'),
|
|
array('goods_code', '条码'),
|
|
array('purch_price', '成本价'),
|
|
array('retail_price', '零售价'),
|
|
array('online_price', '线上价'),
|
|
array('store_mem_name', '是否开启店内会员价'),
|
|
array('store_mem_price', '店内会员价格'),
|
|
array('plus_mem_name', ' plus会员价开关'),
|
|
array('plus_price', 'Plus员价'),
|
|
array('online_state_name', '是否在商城出售'),
|
|
array('shop_mem_name', '是否开启商城会员价'),
|
|
array('shop_mem_price', '线上会员价'),
|
|
array('vip_online_name', '线上折扣'),
|
|
array('vip_retail_name', '线下折扣'),
|
|
array('more_num', '库存上限(超量值)'),
|
|
array('less_num', '库存下限(预警值)'),
|
|
array('company', '单位'),
|
|
array('weight_value', '重量(单位:kg)'),
|
|
array('specifications', '规格'),
|
|
array('can_exchange_weigh_name', '称重'),
|
|
array('status_name', '状态'),
|
|
array('goods_img', '图片'),
|
|
);
|
|
//第三方平台
|
|
if ($platform_type == 2) {
|
|
$headArr[] = ['third_goods_code', '第三方平台商品编码'];
|
|
}else{
|
|
$headArr[] = ['goods_num', '商品系统库存'];
|
|
}
|
|
$str = $filename . ' 表格生成时间:' . date('Y-m-d H:i:s');
|
|
if (!$directory_name) {
|
|
$directory_str = createKey();
|
|
$directory_name = "./Uploads/MerGoodsExcel/{$merchant_id}/{$directory_str}";
|
|
}
|
|
$this->setExcel($filename, $headArr, $ret['data'], $str, $directory_name);
|
|
$res = array(
|
|
'status' => 1,
|
|
'type' => 1,
|
|
'directory_name' => $directory_name,
|
|
'msg' => '请继续生成文件'
|
|
);
|
|
if (count($ret['data']) < $limit) {
|
|
$res['type'] = 2;
|
|
$res['msg'] = '数据生成完毕';
|
|
}
|
|
$this->ajaxReturn($res);
|
|
} else if (IS_GET) {
|
|
$directory_name = I('get.directory_name');
|
|
$attribute = I('get.attribute');
|
|
if (is_dir($directory_name)) {
|
|
$zip = new \ZipArchive();
|
|
$dir = ltrim($directory_name, './');
|
|
$arr = explode('/', $dir);
|
|
unset($arr[count($arr) - 1]);
|
|
$zipName = implode('/', $arr);
|
|
$name = $attribute == 1 ? '无规格商品导出' : '商品档案导出';
|
|
$zip_url = './' . $zipName . '/' . $name . date('Y-m-d_H_i_s') . '.zip';
|
|
|
|
if ($zip->open($zip_url, \ZipArchive::CREATE) === TRUE) {
|
|
|
|
$this->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);
|
|
|
|
$this->delDirFile($directory_name); //删除文件夹下的所有文件
|
|
rmdir($directory_name); //删除当前文件夹
|
|
unlink($zip_url); //删除压缩包
|
|
}
|
|
} else {
|
|
echo '文件不存在';
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 门店规格商品导出
|
|
*/
|
|
public function SkuGoodsTable()
|
|
{
|
|
$global_store_jurisdiction = session('global_store_jurisdiction');
|
|
$storeid = session('storeid');
|
|
//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
|
|
import("Vendor.PHPExcel.PHPExcel");
|
|
import("Vendor.PHPExcel.Writer.Excel5");
|
|
import("Vendor.PHPExcel.IOFactory.php");
|
|
//按照商品类别搜索
|
|
$condition_name = I('get.condition_name');
|
|
$order_type = I('get.order_type');
|
|
if ($condition_name == 2) { //货号
|
|
$order = "g.sku_goods_number";
|
|
} else {
|
|
$order = "g.id";
|
|
}
|
|
if ($order_type == 2) { //降序
|
|
$ascending_order = 'desc';
|
|
} else {
|
|
$ascending_order = 'asc';
|
|
}
|
|
$where['g.store_id'] = $storeid;
|
|
$where['g.state'] = 0;
|
|
//规格商品列表
|
|
$sku_goods = M('retail_sku_goods as g')
|
|
->join("ls_retail_store_sale_goods as s on g.id=s.sku_id")
|
|
->where($where)
|
|
->order("$order $ascending_order")
|
|
->field('g.goods_id,g.weight_value,g.purchase_price,g.online_price,g.retail_price,g.sku_num,g.shop_mem_price,g.store_mem_price,g.plus_price,g.add_time,g.status,g.sku_goods_number,g.sku_code,g.less_num,g.more_num,g.guide_royalty_price,g.guide_royalty_online_price,s.goods_num,s.goods_name,s.sku_name')
|
|
->select();
|
|
foreach ($sku_goods as &$value) {
|
|
if ($global_store_jurisdiction['showpurch_price'] == 2) {
|
|
$value['purchase_price'] = "***";
|
|
} else {
|
|
$value['purchase_price'] = round($value['purchase_price'], 2);
|
|
}
|
|
$value['retail_price'] = round($value['retail_price'], 2);
|
|
$value['goods_num'] = round($value['goods_num'], 3);
|
|
$value['sku_num'] = round($value['sku_num'], 3);
|
|
$value['shop_mem_price'] = round($value['shop_mem_price'], 2);
|
|
$value['store_mem_price'] = round($value['store_mem_price'], 2);
|
|
$value['plus_price'] = round($value['plus_price'], 2);
|
|
$value['add_time'] = date('Y-m-d H:i:s', $value['add_time']);
|
|
$value['less_num'] = round($value['less_num'], 3);
|
|
$value['more_num'] = round($value['more_num'], 3);
|
|
$value['guide_royalty_price'] = round($value['guide_royalty_price'], 2);
|
|
$value['guide_royalty_online_price'] = round($value['guide_royalty_online_price'], 2);
|
|
$value['weight_value'] = $value['weight_value'] ? round($value['weight_value'], 3) : '';
|
|
}
|
|
$filename = "规格商品导出";
|
|
$headArr = array(
|
|
array('goods_name', '商品名称'),
|
|
array('sku_name', '规格名称'),
|
|
array('sku_goods_number', '货号'),
|
|
array('sku_code', '条码'),
|
|
array('weight_value', '重量(单位:kg)'),
|
|
array('purchase_price', '成本价'),
|
|
array('retail_price', '零售价'),
|
|
array('goods_num', '商品库存'),
|
|
array('sku_num', '规格基数'),
|
|
array('shop_mem_price', '商城会员价格'),
|
|
array('store_mem_price', '店内会员价格'),
|
|
array('plus_price', 'plus会员价'),
|
|
array('add_time', '添加时间'),
|
|
array('less_num', '规格预警'),
|
|
array('more_num', '规格超量'),
|
|
array('guide_royalty_price', '导购员线下固定金提成'),
|
|
array('guide_royalty_online_price', '导购员线上固定金提成'),
|
|
);
|
|
$str = $filename . ',导出日期:' . date('Y-m-d H:i:s');
|
|
$this->getExcel($filename, $headArr, $sku_goods, $str);
|
|
}
|
|
|
|
public function goods_new()
|
|
{
|
|
$global_store_jurisdiction = session('global_store_jurisdiction');
|
|
$storeid = session('storeid');
|
|
//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
|
|
import("Vendor.PHPExcel.PHPExcel");
|
|
import("Vendor.PHPExcel.Writer.Excel5");
|
|
import("Vendor.PHPExcel.IOFactory.php");
|
|
//按照商品类别搜索
|
|
//按照商品类别搜索
|
|
$person1 = I('get.person1');
|
|
$person2 = I('get.person2');
|
|
$person3 = I('get.person3');
|
|
$flag = 0;
|
|
if (!empty($person3)) {
|
|
$where['g.goods_class_id'] = $person3;
|
|
} else if (!empty($person2)) {
|
|
$class = M('retail_goods_class as c2')
|
|
->join('ls_retail_goods_class as c3 on c2.id=c3.pid')
|
|
->where(array('c2.id' => $person2, 'c3.status' => 0))
|
|
->field('c3.id')->select();
|
|
$flag = 1;
|
|
} else if (!empty($person1)) {
|
|
$class = M('retail_goods_class as c1')
|
|
->join('ls_retail_goods_class as c2 on c1.id=c2.pid')
|
|
->join('ls_retail_goods_class as c3 on c2.id=c3.pid AND c3.status=0', 'LEFT')
|
|
->where(array('c1.id' => $person1, 'c2.status' => 0))
|
|
->field('c2.id,c3.id as c3_id')->select();
|
|
$flag = 1;
|
|
}
|
|
if (!empty($class)) {
|
|
$arr = array();
|
|
foreach ($class as &$val) {
|
|
if (!in_array($val['id'], $arr)) {
|
|
$arr[] = $val['id'];
|
|
}
|
|
if (!empty($val['c3_id'])) {
|
|
if (!in_array($val['c3_id'], $arr)) {
|
|
$arr[] = $val['c3_id'];
|
|
}
|
|
}
|
|
}
|
|
$str = implode(',', $arr);
|
|
$where['g.goods_class_id'] = array('in', $str . ',' . ($person2 ? $person2 : $person1));
|
|
} else if ($flag == 1) {
|
|
$where['g.goods_class_id'] = $person2 ? $person2 : $person1;
|
|
}
|
|
$where['g.storeid'] = $storeid;
|
|
$where['g.status'] = array('in', array(0, 1));
|
|
//商品列表
|
|
$goods = M('retail_goods as g')
|
|
->join('ls_retail_goods_class as c on c.id=g.goods_class_id')
|
|
->where($where)
|
|
->order('g.goods_class_id desc,g.status asc')
|
|
->field('g.*,c.class_name,c.type as c_type,c.pid as c_pid')
|
|
->select();
|
|
|
|
foreach ($goods as &$value) {
|
|
//查询出分类名称
|
|
if ($value['c_type'] == 2) {
|
|
$value['class_name'] = M('retail_goods_class')->where(array('id' => $value['c_pid']))->getField('class_name');
|
|
} else if ($value['c_type'] == 3) {
|
|
$_class = M('retail_goods_class as c2')
|
|
->join('ls_retail_goods_class as c1 on c2.pid=c1.id')
|
|
->where(array('c2.id' => $value['c_pid']))
|
|
->field('c1.class_name,c2.class_name as c2_class_name')
|
|
->find();
|
|
$value['class_name'] = $_class['class_name'] . '/' . $_class['c2_class_name'] . '/' . $value['class_name'];
|
|
}
|
|
//判断出商品的状态以及是否允许修改折扣价
|
|
if ($value['status'] == 0) {
|
|
$value['status_name'] = '正常';
|
|
} elseif ($value['status'] == 1) {
|
|
$value['status_name'] = '已下架';
|
|
} elseif ($value['status'] == 2) {
|
|
$value['status_name'] = '已删除';
|
|
}
|
|
if ($value['issellonline'] == 0) {
|
|
$value['issellonline_name'] = '否';
|
|
} else {
|
|
$value['issellonline_name'] = '是';
|
|
}
|
|
$value['goods_code'] = $value['goods_code'] ? $value['goods_code'] : '';
|
|
$value['good_number'] = $value['good_number'] ? $value['good_number'] : '';
|
|
if ($value['vip_online_state'] == 0) {
|
|
$value['vip_online_state'] = '关闭';
|
|
} else {
|
|
$value['vip_online_state'] = '开启';
|
|
}
|
|
if ($value['vip_retail_state'] == 0) {
|
|
$value['vip_retail_state'] = '关闭';
|
|
} else {
|
|
$value['vip_retail_state'] = '开启';
|
|
}
|
|
if ($value['attribute'] == 2) {
|
|
$value['purch_price'] = '规格进价';
|
|
// $value['last_purch_price'] = '规格进价';
|
|
$value['plus_price'] = '规格plus会员价';
|
|
}
|
|
if ($value['plus_mem_status'] != 1) {
|
|
$value['plus_price'] = '未开启';
|
|
}
|
|
if ($global_store_jurisdiction['showpurch_price'] == 2) {
|
|
$value['purch_price'] = '***';
|
|
$value['last_purch_price'] = '***';
|
|
}
|
|
}
|
|
$filename = "门店商品明细";
|
|
$headArr = array(
|
|
array('goods_name', '商品名称'),
|
|
array('goods_code', '条码'),
|
|
array('good_number', '货号'),
|
|
array('class_name', '所属分类'),
|
|
//array('purch_price', '成本价'),
|
|
array('purch_price', '进货价'),
|
|
array('retail_price', '零售价'),
|
|
array('online_price', '线上价'),
|
|
array('plus_price', 'plus会员价'),
|
|
array('issellonline_name', '是否在商城出售'),
|
|
array('vip_online_state', '线上折扣'),
|
|
array('vip_retail_state', '线下折扣'),
|
|
array('goods_num', '商品系统库存'),
|
|
array('more_num', '库存上限(超量值)'),
|
|
array('less_num', '库存下限(预警值)'),
|
|
array('sell_num', '已售数量'),
|
|
array('company', '单位'),
|
|
array('specifications', '规格'),
|
|
);
|
|
$str = $filename . ',导出日期:' . date('Y-m-d H:i:s');
|
|
$this->getExcel($filename, $headArr, $goods, $str);
|
|
}
|
|
|
|
public function goods_new_three()
|
|
{
|
|
$global_store_jurisdiction = session('global_store_jurisdiction');
|
|
$storeid = session('storeid');
|
|
//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
|
|
import("Vendor.PHPExcel.PHPExcel");
|
|
import("Vendor.PHPExcel.Writer.Excel5");
|
|
import("Vendor.PHPExcel.IOFactory.php");
|
|
//按照商品类别搜索
|
|
//按照商品类别搜索
|
|
$person1 = I('get.person1');
|
|
$person2 = I('get.person2');
|
|
$person3 = I('get.person3');
|
|
$flag = 0;
|
|
if (!empty($person3)) {
|
|
$where['g.goods_class_id'] = $person3;
|
|
} else if (!empty($person2)) {
|
|
$class = M('retail_goods_class as c2')
|
|
->join('ls_retail_goods_class as c3 on c2.id=c3.pid')
|
|
->where(array('c2.id' => $person2, 'c3.status' => 0))
|
|
->field('c3.id')->select();
|
|
$flag = 1;
|
|
} else if (!empty($person1)) {
|
|
$class = M('retail_goods_class as c1')
|
|
->join('ls_retail_goods_class as c2 on c1.id=c2.pid')
|
|
->join('ls_retail_goods_class as c3 on c2.id=c3.pid AND c3.status=0', 'LEFT')
|
|
->where(array('c1.id' => $person1, 'c2.status' => 0))
|
|
->field('c2.id,c3.id as c3_id')->select();
|
|
$flag = 1;
|
|
}
|
|
if (!empty($class)) {
|
|
$arr = array();
|
|
foreach ($class as &$val) {
|
|
if (!in_array($val['id'], $arr)) {
|
|
$arr[] = $val['id'];
|
|
}
|
|
if (!empty($val['c3_id'])) {
|
|
if (!in_array($val['c3_id'], $arr)) {
|
|
$arr[] = $val['c3_id'];
|
|
}
|
|
}
|
|
}
|
|
$str = implode(',', $arr);
|
|
$where['g.goods_class_id'] = array('in', $str . ',' . ($person2 ? $person2 : $person1));
|
|
} else if ($flag == 1) {
|
|
$where['g.goods_class_id'] = $person2 ? $person2 : $person1;
|
|
}
|
|
$where['g.storeid'] = $storeid;
|
|
$where['g.status'] = array('in', array(0, 1));
|
|
//商品列表
|
|
$goods = M('retail_goods as g')
|
|
->join('ls_retail_goods_class as c on c.id=g.goods_class_id')
|
|
->where($where)
|
|
->order('g.goods_class_id desc,g.status asc')
|
|
->field('g.*,c.class_name,c.type as c_type,c.pid as c_pid')
|
|
->select();
|
|
|
|
foreach ($goods as &$value) {
|
|
//查询出分类名称
|
|
if ($value['c_type'] == 2) {
|
|
$value['class_name'] = M('retail_goods_class')->where(array('id' => $value['c_pid']))->getField('class_name');
|
|
} else if ($value['c_type'] == 3) {
|
|
$_class = M('retail_goods_class as c2')
|
|
->join('ls_retail_goods_class as c1 on c2.pid=c1.id')
|
|
->where(array('c2.id' => $value['c_pid']))
|
|
->field('c1.class_name,c2.class_name as c2_class_name')
|
|
->find();
|
|
$value['class_name'] = $_class['class_name'] . '/' . $_class['c2_class_name'] . '/' . $value['class_name'];
|
|
}
|
|
//判断出商品的状态以及是否允许修改折扣价
|
|
if ($value['status'] == 0) {
|
|
$value['status_name'] = '正常';
|
|
} elseif ($value['status'] == 1) {
|
|
$value['status_name'] = '已下架';
|
|
} elseif ($value['status'] == 2) {
|
|
$value['status_name'] = '已删除';
|
|
}
|
|
if ($value['issellonline'] == 0) {
|
|
$value['issellonline_name'] = '否';
|
|
} else {
|
|
$value['issellonline_name'] = '是';
|
|
}
|
|
$value['goods_code'] = $value['goods_code'] ? $value['goods_code'] : '';
|
|
$value['good_number'] = $value['good_number'] ? $value['good_number'] : '';
|
|
if ($value['vip_online_state'] == 0) {
|
|
$value['vip_online_state'] = '关闭';
|
|
} else {
|
|
$value['vip_online_state'] = '开启';
|
|
}
|
|
if ($value['vip_retail_state'] == 0) {
|
|
$value['vip_retail_state'] = '关闭';
|
|
} else {
|
|
$value['vip_retail_state'] = '开启';
|
|
}
|
|
if ($value['attribute'] == 2) {
|
|
$value['purch_price'] = '规格成本价';
|
|
$value['last_purch_price'] = '规格进价';
|
|
}
|
|
if ($global_store_jurisdiction['showpurch_price'] == 2) {
|
|
$value['purch_price'] = '***';
|
|
$value['last_purch_price'] = '***';
|
|
}
|
|
}
|
|
$filename = "门店商品明细";
|
|
$headArr = array(
|
|
array('goods_name', '商品名称'),
|
|
array('goods_code', '条码'),
|
|
array('good_number', '货号'),
|
|
array('class_name', '所属分类'),
|
|
array('purch_price', '成本价'),
|
|
array('last_purch_price', '进货价'),
|
|
array('retail_price', '零售价'),
|
|
array('online_price', '线上价'),
|
|
array('issellonline_name', '是否在商城出售'),
|
|
array('vip_online_state', '线上折扣'),
|
|
array('vip_retail_state', '线下折扣'),
|
|
array('goods_num', '商品系统库存'),
|
|
array('more_num', '库存上限(超量值)'),
|
|
array('less_num', '库存下限(预警值)'),
|
|
array('sell_num', '已售数量'),
|
|
array('company', '单位'),
|
|
array('specifications', '规格'),
|
|
);
|
|
$str = $filename . ',导出日期:' . date('Y-m-d H:i:s');
|
|
$this->getExcel($filename, $headArr, $goods, $str);
|
|
}
|
|
|
|
public function goodstwo_new()
|
|
{
|
|
$global_store_jurisdiction = session('global_store_jurisdiction');
|
|
$storeid = session('storeid');
|
|
//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
|
|
import("Vendor.PHPExcel.PHPExcel");
|
|
import("Vendor.PHPExcel.Writer.Excel5");
|
|
import("Vendor.PHPExcel.IOFactory.php");
|
|
//按照商品类别搜索
|
|
$person1 = I('get.person1');
|
|
$person2 = I('get.person2');
|
|
$person3 = I('get.person3');
|
|
$flag = 0;
|
|
if (!empty($person3)) {
|
|
$where['g.goods_class_id'] = $person3;
|
|
} else if (!empty($person2)) {
|
|
$class = M('retail_goods_class as c2')
|
|
->join('ls_retail_goods_class as c3 on c2.id=c3.pid')
|
|
->where(array('c2.id' => $person2, 'c3.status' => 0))
|
|
->field('c3.id')->select();
|
|
$flag = 1;
|
|
} else if (!empty($person1)) {
|
|
$class = M('retail_goods_class as c1')
|
|
->join('ls_retail_goods_class as c2 on c1.id=c2.pid')
|
|
->join('ls_retail_goods_class as c3 on c2.id=c3.pid AND c3.status=0', 'LEFT')
|
|
->where(array('c1.id' => $person1, 'c2.status' => 0))
|
|
->field('c2.id,c3.id as c3_id')->select();
|
|
$flag = 1;
|
|
}
|
|
if (!empty($class)) {
|
|
$arr = array();
|
|
foreach ($class as &$val) {
|
|
if (!in_array($val['id'], $arr)) {
|
|
$arr[] = $val['id'];
|
|
}
|
|
if (!empty($val['c3_id'])) {
|
|
if (!in_array($val['c3_id'], $arr)) {
|
|
$arr[] = $val['c3_id'];
|
|
}
|
|
}
|
|
}
|
|
$str = implode(',', $arr);
|
|
$where['g.goods_class_id'] = array('in', $str . ',' . ($person2 ? $person2 : $person1));
|
|
} else if ($flag == 1) {
|
|
$where['g.goods_class_id'] = $person2 ? $person2 : $person1;
|
|
}
|
|
$where['g.storeid'] = $storeid;
|
|
$where['g.issellonline'] = 1;
|
|
$where['g.status'] = array('in', array(0, 1));
|
|
//商品列表
|
|
$goods = M('retail_goods as g')
|
|
->join('ls_retail_goods_class as c on c.id=g.goods_class_id')
|
|
->where($where)
|
|
->order('g.status asc,g.good_number desc')
|
|
->field('g.*,c.class_name,c.type as c_type,c.pid as c_pid')
|
|
->select();
|
|
foreach ($goods as &$value) {
|
|
//查询出分类名称
|
|
if ($value['c_type'] == 2) {
|
|
$value['class_name'] = M('retail_goods_class')->where(array('id' => $value['c_pid']))->getField('class_name');
|
|
} else if ($value['c_type'] == 3) {
|
|
$_class = M('retail_goods_class as c2')
|
|
->join('ls_retail_goods_class as c1 on c2.pid=c1.id')
|
|
->where(array('c2.id' => $value['c_pid']))
|
|
->field('c1.class_name,c2.class_name as c2_class_name')
|
|
->find();
|
|
$value['class_name'] = $_class['class_name'] . '/' . $_class['c2_class_name'] . '/' . $value['class_name'];
|
|
}
|
|
//判断出商品的状态以及是否允许修改折扣价
|
|
if ($value['status'] == 0) {
|
|
$value['status_name'] = '正常';
|
|
} elseif ($value['status'] == 1) {
|
|
$value['status_name'] = '已下架';
|
|
} elseif ($value['status'] == 2) {
|
|
$value['status_name'] = '已删除';
|
|
}
|
|
if ($value['issellonline'] == 0) {
|
|
$value['issellonline_name'] = '否';
|
|
} else {
|
|
$value['issellonline_name'] = '是';
|
|
}
|
|
$value['goods_code'] = $value['goods_code'] ? $value['goods_code'] : '';
|
|
$value['good_number'] = $value['good_number'] ? $value['good_number'] : '';
|
|
if ($value['vip_online_state'] == 0) {
|
|
$value['vip_online_state'] = '关闭';
|
|
} else {
|
|
$value['vip_online_state'] = '开启';
|
|
}
|
|
if ($value['vip_retail_state'] == 0) {
|
|
$value['vip_retail_state'] = '关闭';
|
|
} else {
|
|
$value['vip_retail_state'] = '开启';
|
|
}
|
|
if ($value['attribute'] == 2) {
|
|
$value['purch_price'] = '规格成本价';
|
|
$value['last_purch_price'] = '规格进价';
|
|
$value['plus_price'] = '规格plus会员价';
|
|
}
|
|
if ($value['plus_mem_status'] != 1) {
|
|
$value['plus_price'] = '未开启';
|
|
}
|
|
if ($global_store_jurisdiction['showpurch_price'] == 2) {
|
|
$value['purch_price'] = '***';
|
|
$value['last_purch_price'] = '***';
|
|
}
|
|
}
|
|
$filename = "门店商品明细";
|
|
$headArr = array(
|
|
array('goods_name', '商品名称'),
|
|
array('goods_code', '条码'),
|
|
array('good_number', '货号'),
|
|
array('class_name', '所属分类'),
|
|
array('purch_price', '成本价'),
|
|
array('last_purch_price', '进货价'),
|
|
array('retail_price', '零售价'),
|
|
array('online_price', '线上价'),
|
|
array('plus_price', 'plus会员价'),
|
|
array('issellonline_name', '是否在商城出售'),
|
|
array('vip_online_state', '线上折扣'),
|
|
array('vip_retail_state', '线下折扣'),
|
|
array('goods_num', '商品系统库存'),
|
|
array('more_num', '库存上限(超量值)'),
|
|
array('less_num', '库存下限(预警值)'),
|
|
array('sell_num', '已售数量'),
|
|
array('company', '单位'),
|
|
array('specifications', '规格'),
|
|
);
|
|
$str = $filename . ',导出日期:' . date('Y-m-d H:i:s');
|
|
$this->getExcel($filename, $headArr, $goods, $str);
|
|
}
|
|
|
|
public function goodstwo_new_three()
|
|
{
|
|
$global_store_jurisdiction = session('global_store_jurisdiction');
|
|
$storeid = session('storeid');
|
|
//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
|
|
import("Vendor.PHPExcel.PHPExcel");
|
|
import("Vendor.PHPExcel.Writer.Excel5");
|
|
import("Vendor.PHPExcel.IOFactory.php");
|
|
//按照商品类别搜索
|
|
$person1 = I('get.person1');
|
|
$person2 = I('get.person2');
|
|
$person3 = I('get.person3');
|
|
$flag = 0;
|
|
if (!empty($person3)) {
|
|
$where['g.goods_class_id'] = $person3;
|
|
} else if (!empty($person2)) {
|
|
$class = M('retail_goods_class as c2')
|
|
->join('ls_retail_goods_class as c3 on c2.id=c3.pid')
|
|
->where(array('c2.id' => $person2, 'c3.status' => 0))
|
|
->field('c3.id')->select();
|
|
$flag = 1;
|
|
} else if (!empty($person1)) {
|
|
$class = M('retail_goods_class as c1')
|
|
->join('ls_retail_goods_class as c2 on c1.id=c2.pid')
|
|
->join('ls_retail_goods_class as c3 on c2.id=c3.pid AND c3.status=0', 'LEFT')
|
|
->where(array('c1.id' => $person1, 'c2.status' => 0))
|
|
->field('c2.id,c3.id as c3_id')->select();
|
|
$flag = 1;
|
|
}
|
|
if (!empty($class)) {
|
|
$arr = array();
|
|
foreach ($class as &$val) {
|
|
if (!in_array($val['id'], $arr)) {
|
|
$arr[] = $val['id'];
|
|
}
|
|
if (!empty($val['c3_id'])) {
|
|
if (!in_array($val['c3_id'], $arr)) {
|
|
$arr[] = $val['c3_id'];
|
|
}
|
|
}
|
|
}
|
|
$str = implode(',', $arr);
|
|
$where['g.goods_class_id'] = array('in', $str . ',' . ($person2 ? $person2 : $person1));
|
|
} else if ($flag == 1) {
|
|
$where['g.goods_class_id'] = $person2 ? $person2 : $person1;
|
|
}
|
|
$where['g.storeid'] = $storeid;
|
|
$where['g.issellonline'] = 1;
|
|
$where['g.status'] = array('in', array(0, 1));
|
|
//商品列表
|
|
$goods = M('retail_goods as g')
|
|
->join('ls_retail_goods_class as c on c.id=g.goods_class_id')
|
|
->where($where)
|
|
->order('g.status asc,g.good_number desc')
|
|
->field('g.*,c.class_name,c.type as c_type,c.pid as c_pid')
|
|
->select();
|
|
foreach ($goods as &$value) {
|
|
//查询出分类名称
|
|
if ($value['c_type'] == 2) {
|
|
$value['class_name'] = M('retail_goods_class')->where(array('id' => $value['c_pid']))->getField('class_name');
|
|
} else if ($value['c_type'] == 3) {
|
|
$_class = M('retail_goods_class as c2')
|
|
->join('ls_retail_goods_class as c1 on c2.pid=c1.id')
|
|
->where(array('c2.id' => $value['c_pid']))
|
|
->field('c1.class_name,c2.class_name as c2_class_name')
|
|
->find();
|
|
$value['class_name'] = $_class['class_name'] . '/' . $_class['c2_class_name'] . '/' . $value['class_name'];
|
|
}
|
|
//判断出商品的状态以及是否允许修改折扣价
|
|
if ($value['status'] == 0) {
|
|
$value['status_name'] = '正常';
|
|
} elseif ($value['status'] == 1) {
|
|
$value['status_name'] = '已下架';
|
|
} elseif ($value['status'] == 2) {
|
|
$value['status_name'] = '已删除';
|
|
}
|
|
if ($value['issellonline'] == 0) {
|
|
$value['issellonline_name'] = '否';
|
|
} else {
|
|
$value['issellonline_name'] = '是';
|
|
}
|
|
$value['goods_code'] = $value['goods_code'] ? $value['goods_code'] : '';
|
|
$value['good_number'] = $value['good_number'] ? $value['good_number'] : '';
|
|
if ($value['vip_online_state'] == 0) {
|
|
$value['vip_online_state'] = '关闭';
|
|
} else {
|
|
$value['vip_online_state'] = '开启';
|
|
}
|
|
if ($value['vip_retail_state'] == 0) {
|
|
$value['vip_retail_state'] = '关闭';
|
|
} else {
|
|
$value['vip_retail_state'] = '开启';
|
|
}
|
|
if ($value['attribute'] == 2) {
|
|
$value['purch_price'] = '规格成本价';
|
|
$value['last_purch_price'] = '规格进价';
|
|
}
|
|
if ($global_store_jurisdiction['showpurch_price'] == 2) {
|
|
$value['purch_price'] = '***';
|
|
$value['last_purch_price'] = '***';
|
|
}
|
|
}
|
|
$filename = "门店商品明细";
|
|
$headArr = array(
|
|
array('goods_name', '商品名称'),
|
|
array('goods_code', '条码'),
|
|
array('good_number', '货号'),
|
|
array('class_name', '所属分类'),
|
|
array('purch_price', '成本价'),
|
|
array('last_purch_price', '进货价'),
|
|
array('retail_price', '零售价'),
|
|
array('online_price', '线上价'),
|
|
array('issellonline_name', '是否在商城出售'),
|
|
array('vip_online_state', '线上折扣'),
|
|
array('vip_retail_state', '线下折扣'),
|
|
array('goods_num', '商品系统库存'),
|
|
array('more_num', '库存上限(超量值)'),
|
|
array('less_num', '库存下限(预警值)'),
|
|
array('sell_num', '已售数量'),
|
|
array('company', '单位'),
|
|
array('specifications', '规格'),
|
|
);
|
|
$str = $filename . ',导出日期:' . date('Y-m-d H:i:s');
|
|
$this->getExcel($filename, $headArr, $goods, $str);
|
|
}
|
|
|
|
// 商品分类导出(商品行业上线后废弃)
|
|
public function goodsclass()
|
|
{
|
|
// header("Content-Type: text/html;charset=utf-8");
|
|
$store_id = session('storeid');
|
|
//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
|
|
import("Vendor.PHPExcel.PHPExcel");
|
|
import("Vendor.PHPExcel.Writer.Excel5");
|
|
import("Vendor.PHPExcel.IOFactory.php");
|
|
$merchant_id = M('retail_store')->where(array('id' => $store_id))->getField('merchantid');
|
|
|
|
$map = array(
|
|
'c1.merchantid' => $merchant_id,
|
|
'c1.status' => 0,
|
|
'c1.type' => 1,
|
|
);
|
|
$fields = array(
|
|
'c1.class_name as c1_class_name',
|
|
'c2.class_name as c2_class_name',
|
|
'c3.class_name as c3_class_name',
|
|
'c1.code as c1_code',
|
|
'c2.code as c2_code',
|
|
'c3.code as c3_code',
|
|
'c1.type as c1_type',
|
|
'c2.type as c2_type',
|
|
'c3.type as c3_type',
|
|
'c1.id as c1_id',
|
|
'c2.id as c2_id',
|
|
'c3.id as c3_id',
|
|
's1.online_state as s1_online_state',
|
|
's2.online_state as s2_online_state',
|
|
's3.online_state as s3_online_state',
|
|
);
|
|
$class_list = M('retail_goods_class as c1')
|
|
->join('ls_retail_goods_class as c2 on c2.pid=c1.id AND c2.type=2 AND c2.status=0', 'LEFT')
|
|
->join('ls_retail_goods_class as c3 on c3.pid=c2.id AND c3.type=3 AND c3.status=0', 'LEFT')
|
|
->join('ls_store_goods_class as s1 on s1.class_id=c1.id AND s1.store_id=' . $store_id, 'LEFT')
|
|
->join('ls_store_goods_class as s2 on s2.class_id=c2.id AND s2.store_id=' . $store_id, 'LEFT')
|
|
->join('ls_store_goods_class as s3 on s3.class_id=c3.id AND s3.store_id=' . $store_id, 'LEFT')
|
|
->where($map)
|
|
->order('c1.code,c1.id,c2.code,c2.id,c3.code,c3.id')
|
|
->field($fields)
|
|
->select();
|
|
$export_class = array();
|
|
$arrIdList = array();
|
|
if (!empty($class_list)) {
|
|
foreach ($class_list as $value) {
|
|
if (!in_array($value['c1_id'], $arrIdList)) {
|
|
$temp = array(
|
|
'id' => $value['c1_id'],
|
|
'class_name' => $value['c1_class_name'],
|
|
'p_name' => '一级分类',
|
|
'p_name_path' => $value['c1_class_name'],
|
|
'code' => $value['c1_code'],
|
|
'online_state' => $value['s1_online_state'] ? '显示' : '不显示',
|
|
);
|
|
$export_class[] = $temp;
|
|
$arrIdList[] = $value['c1_id'];
|
|
}
|
|
if (!empty($value['c2_id']) && !in_array($value['c2_id'], $arrIdList)) {
|
|
$temp = array(
|
|
'id' => $value['c2_id'],
|
|
'class_name' => $value['c2_class_name'],
|
|
'p_name' => '二级分类',
|
|
'p_name_path' => $value['c1_class_name'] . "/" . $value['c2_class_name'],
|
|
'code' => $value['c2_code'],
|
|
'online_state' => $value['s2_online_state'] ? '显示' : '不显示',
|
|
);
|
|
$export_class[] = $temp;
|
|
$arrIdList[] = $value['c2_id'];
|
|
}
|
|
if (!empty($value['c3_type'])) {
|
|
$temp = array(
|
|
'id' => $value['c3_id'],
|
|
'class_name' => $value['c3_class_name'],
|
|
'p_name' => '三级分类',
|
|
'p_name_path' => $value['c1_class_name'] . "/" . $value['c2_class_name'] . "/" . $value['c3_class_name'],
|
|
'code' => $value['c3_code'],
|
|
'online_state' => $value['s3_online_state'] ? '显示' : '不显示',
|
|
);
|
|
$export_class[] = $temp;
|
|
}
|
|
}
|
|
} else {
|
|
$export_class = array();
|
|
}
|
|
$file_name = "商品分类明细";
|
|
$header = array(
|
|
array('class_name', '分类名称'),
|
|
array('code', '编码'),
|
|
array('p_name', '分类级别'),
|
|
array('p_name_path', '分类详情'),
|
|
array('online_state', '商城是否显示'),
|
|
);
|
|
$str = $file_name . ',导出日期:' . date('Y-m-d H:i:s');
|
|
$this->getExcel($file_name, $header, $export_class, $str);
|
|
}
|
|
|
|
|
|
/**
|
|
* 导出表格
|
|
* @param $expTitle
|
|
* @param $expCellName
|
|
* @param $expTableData
|
|
* @param string $str
|
|
* @throws \PHPExcel_Exception
|
|
* @throws \PHPExcel_Reader_Exception
|
|
* @throws \PHPExcel_Writer_Exception
|
|
*/
|
|
private function getExcel($expTitle, $expCellName, $expTableData, $str = "")
|
|
{
|
|
$xlsTitle = iconv('utf-8', 'gb2312', $expTitle); //文件名称
|
|
$fileName = $expTitle . date('_YmdHis'); //or $xlsTitle 文件名称可根据自己情况设定
|
|
$cellNum = count($expCellName);
|
|
$dataNum = count($expTableData);
|
|
$common = $str;
|
|
vendor("PHPExcel.PHPExcel");
|
|
ob_clean();
|
|
$objPHPExcel = new \PHPExcel();
|
|
$cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ');
|
|
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('A1:' . $cellName[$cellNum - 1] . '1'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $common);
|
|
// $objPHPExcel->setActiveSheetIndex(1)->setCellValue('A1', $str);
|
|
for ($i = 0; $i < $cellNum; $i++) {
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i] . '2', $expCellName[$i][1]);
|
|
}
|
|
|
|
for ($i = 0; $i < $dataNum; $i++) {
|
|
for ($j = 0; $j < $cellNum; $j++) {
|
|
$objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j] . ($i + 3), ' ' . $expTableData[$i][$expCellName[$j][0]]);
|
|
}
|
|
}
|
|
foreach ($cellName as $value) {
|
|
$objPHPExcel->getActiveSheet()->getColumnDimension($value)->setWidth(20);
|
|
}
|
|
header('pragma:public');
|
|
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $xlsTitle . '.xls"');
|
|
header("Content-Disposition:attachment;filename=$fileName.xls"); //attachment新窗口打印inline本窗口打印
|
|
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
|
|
$objWriter->save('php://output');
|
|
exit();
|
|
}
|
|
|
|
/**
|
|
* 写入表格 把表格保存在服务器
|
|
* @param $expTitle
|
|
* @param $expCellName
|
|
* @param $expTableData
|
|
* @param string $common
|
|
* @param string $directory_name
|
|
* @throws \PHPExcel_Exception
|
|
* @throws \PHPExcel_Reader_Exception
|
|
* @throws \PHPExcel_Writer_Exception
|
|
*/
|
|
public function setExcel($expTitle, $expCellName, $expTableData, $common = "", $directory_name = "./Public")
|
|
{
|
|
$fileName = $expTitle; //or $xlsTitle 文件名称可根据自己情况设定
|
|
$cellNum = count($expCellName);
|
|
$dataNum = count($expTableData);
|
|
vendor("PHPExcel.PHPExcel");
|
|
ob_clean();
|
|
$objPHPExcel = new \PHPExcel();
|
|
$cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ');
|
|
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('A1:' . $cellName[$cellNum - 1] . '1'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $common);
|
|
for ($i = 0; $i < $cellNum; $i++) {
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i] . '2', $expCellName[$i][1]);
|
|
}
|
|
for ($i = 0; $i < $dataNum; $i++) {
|
|
for ($j = 0; $j < $cellNum; $j++) {
|
|
$objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j] . ($i + 3), ' ' . $expTableData[$i][$expCellName[$j][0]]);
|
|
}
|
|
}
|
|
foreach ($cellName as $value) {
|
|
$objPHPExcel->getActiveSheet()->getColumnDimension($value)->setWidth(25);
|
|
}
|
|
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
|
|
$this->createDir($directory_name); //生成文件目录
|
|
$path = "{$directory_name}/{$fileName}.xls";
|
|
$objWriter->save($path);
|
|
}
|
|
|
|
/**
|
|
* 生成文件目录
|
|
* @param $directory_name 目录地址
|
|
*/
|
|
private function createDir($directory_name)
|
|
{
|
|
if (!is_dir($directory_name)) {
|
|
$temp = ltrim($directory_name, './');
|
|
$arr = explode('/', $temp);
|
|
$str = './';
|
|
foreach ($arr as $key => $sv) {
|
|
if (!is_dir("{$str}/{$sv}")) {
|
|
mkdir("{$str}/{$sv}", 0777);
|
|
}
|
|
$str = "{$str}/{$sv}";
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 删除目录下的所有文件
|
|
* @param $dir 目录地址
|
|
*/
|
|
private function delDirFile($dir)
|
|
{
|
|
$dh = opendir($dir);
|
|
while ($file = readdir($dh)) {
|
|
if ($file != "." && $file != "..") {
|
|
$full_path = $dir . "/" . $file;
|
|
if (!is_dir($full_path)) {
|
|
unlink($full_path);
|
|
} else {
|
|
$this->delDirFile($full_path);
|
|
}
|
|
}
|
|
}
|
|
|
|
closedir($dh);
|
|
}
|
|
|
|
/**
|
|
* 添加Excel表格到压缩包
|
|
* @param $path
|
|
* @param $zip
|
|
* @param string $name
|
|
*/
|
|
private function addFileToZip($path, $zip, $name = '商品档案导出')
|
|
{
|
|
$handler = opendir($path); //打开当前文件夹由$path指定。
|
|
$index = 0;
|
|
while (($filename = readdir($handler)) !== false) {
|
|
if ($filename != "." && $filename != "..") { //文件夹文件名字为'.'和‘..',不要对他们进行操作
|
|
if (is_dir($path . "/" . $filename)) { // 如果读取的某个对象是文件夹,则递归
|
|
$this->addFileToZip($path . "/" . $filename, $zip, $name);
|
|
} else { //将文件加入zip对象
|
|
$num = ++$index;
|
|
$sName = date("ymd") . $name . "-第" . $num . "页.xls";
|
|
$dir = iconv("utf-8", "gb2312", $sName);
|
|
$zip->addFile($path . "/" . $filename, $dir);
|
|
}
|
|
}
|
|
}
|
|
@closedir($handler);
|
|
}
|
|
|
|
// 商品导出页面
|
|
public function goodsquantity()
|
|
{
|
|
$this->display();
|
|
}
|
|
|
|
public function new_goodsquantity()
|
|
{
|
|
$this->display();
|
|
}
|
|
|
|
public function quantityList()
|
|
{
|
|
$storeid = session('storeid');
|
|
$where['l.storeid'] = $storeid;
|
|
$keyword = I('get.keyword');
|
|
if (!empty($keyword)) {
|
|
$where['goods_name|goods_code|goods_number'] = $keyword;
|
|
}
|
|
$where['l.type'] = I('get.type');
|
|
$start = I('get.start');
|
|
$end = I('get.end');
|
|
$s = strtotime($start . ' 00:00:00');
|
|
$e = strtotime($end . ' 23:59:59');
|
|
$where['l.addtime'] = array('between', array($s, $e));
|
|
$logs = M('retail_quantity_logs')->alias('l')
|
|
->join('ls_retail_goods as g on g.id=l.goods_id', 'LEFT')
|
|
->where($where)
|
|
->field('l.*,g.goods_name,g.goods_code,g.goods_number,g.pricing_method')
|
|
->order('l.addtime desc, l.id desc')
|
|
->select();
|
|
foreach ($logs as $key => &$value) {
|
|
$logs[$key]['time'] = date('Y-m-d H:i:s', $value['addtime']);
|
|
//商品来源
|
|
if ($value['supplier_id'] == 0) {
|
|
if ($value['type'] == 1) {
|
|
$logs[$key]['supplier_name'] = '自采';
|
|
if ($logs[$key]['remark'] == '盘点增加') {
|
|
$logs[$key]['supplier_name'] = '盘点';
|
|
}
|
|
} else {
|
|
$logs[$key]['supplier_name'] = '出售';
|
|
if ($logs[$key]['remark'] == '盘点减少') {
|
|
$logs[$key]['supplier_name'] = '盘点';
|
|
}
|
|
}
|
|
} else if ($value['supplier_id'] == -1) {
|
|
$logs[$key]['supplier_name'] = '报损';
|
|
} else if ($value['supplier_id'] == -2) {
|
|
$logs[$key]['supplier_name'] = '调出';
|
|
} else if ($value['supplier_id'] == -3) {
|
|
$logs[$key]['supplier_name'] = '退货出库';
|
|
} else if ($value['supplier_id'] == -9) {
|
|
$logs[$key]['supplier_name'] = '同步';
|
|
} else {
|
|
if ($value['type'] == 1) {
|
|
$logs[$key]['supplier_name'] = M("retail_supplier")->where(array('id' => $value['supplier_id']))->getField("supplier_name");
|
|
$logs[$key]['supplier_name'] = $logs[$key]['supplier_name'] . "(供货商)";
|
|
} else {
|
|
$logs[$key]['supplier_name'] = '出售';
|
|
}
|
|
}
|
|
|
|
if ($value['type'] == 1) {
|
|
$logs[$key]['type'] = '增加';
|
|
} else {
|
|
$logs[$key]['type'] = '减少';
|
|
}
|
|
$value['key'] = $key + 1;
|
|
$logs[$key]['goods_code'] = $logs[$key]['goods_code'] ? $logs[$key]['goods_code'] : '';
|
|
$logs[$key]['goods_number'] = $logs[$key]['goods_number'] ? $logs[$key]['goods_number'] : '';
|
|
}
|
|
$rt['code'] = 0;
|
|
$rt['msg'] = '';
|
|
$rt['count'] = count($logs);
|
|
$rt['data'] = $logs;
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
|
|
// 导出单品出入库数据
|
|
public function exportquantityList()
|
|
{
|
|
$storeid = session('storeid');
|
|
$where['l.storeid'] = $storeid;
|
|
$keyword = I('get.keyword');
|
|
if (!empty($keyword)) {
|
|
$name['goods_name|goods_code|good_number'] = $keyword;
|
|
$name['storeid'] = $storeid;
|
|
$ids = M('retail_goods')->where($name)->field('id')->select();
|
|
$new_id = '';
|
|
foreach ($ids as $key => &$value) {
|
|
$new_id .= $value['id'] . ',';
|
|
}
|
|
$arr_ids = explode(',', trim($new_id, ','));
|
|
$where['l.goods_id'] = array('in', $arr_ids);
|
|
}
|
|
$where['l.type'] = I('get.type');
|
|
$start = I('get.start');
|
|
$end = I('get.end');
|
|
$s = strtotime($start . ' 00:00:00');
|
|
$e = strtotime($end . ' 23:59:59');
|
|
$where['l.addtime'] = array('between', array($s, $e));
|
|
$logs = M('retail_quantity_logs')->alias('l')
|
|
->join('ls_retail_goods as g on g.id=l.goods_id', 'LEFT')
|
|
->where($where)
|
|
->field('l.*,g.goods_name,g.goods_code,g.good_number')
|
|
->order('l.addtime desc')
|
|
->select();
|
|
foreach ($logs as $key => &$value) {
|
|
$logs[$key]['time'] = date('Y-m-d H:i:s', $value['addtime']);
|
|
//商品来源
|
|
if ($value['supplier_id'] == 0) {
|
|
if ($value['type'] == 1) {
|
|
$logs[$key]['supplier_name'] = '自采';
|
|
if ($logs[$key]['remark'] == '盘点增加') {
|
|
$logs[$key]['supplier_name'] = '盘点';
|
|
}
|
|
} else {
|
|
$logs[$key]['supplier_name'] = '出售';
|
|
if ($logs[$key]['remark'] == '盘点减少') {
|
|
$logs[$key]['supplier_name'] = '盘点';
|
|
}
|
|
}
|
|
} else if ($value['supplier_id'] == -1) {
|
|
$logs[$key]['supplier_name'] = '报损';
|
|
} else if ($value['supplier_id'] == -2) {
|
|
$logs[$key]['supplier_name'] = '调出';
|
|
} else if ($value['supplier_id'] == -3) {
|
|
$logs[$key]['supplier_name'] = '退货出库';
|
|
} else {
|
|
if ($value['type'] == 1) {
|
|
$logs[$key]['supplier_name'] = M("retail_supplier")->where(array('id' => $value['supplier_id']))->getField("supplier_name");
|
|
$logs[$key]['supplier_name'] = $logs[$key]['supplier_name'] . "(供货商)";
|
|
} else {
|
|
$logs[$key]['supplier_name'] = '出售';
|
|
}
|
|
}
|
|
|
|
if ($value['type'] == 1) {
|
|
$logs[$key]['type'] = '增加';
|
|
} else {
|
|
$logs[$key]['type'] = '减少';
|
|
}
|
|
$value['key'] = $key + 1;
|
|
$logs[$key]['goods_code'] = $logs[$key]['goods_code'] ? $logs[$key]['goods_code'] : '';
|
|
$logs[$key]['good_number'] = $logs[$key]['good_number'] ? $logs[$key]['good_number'] : '';
|
|
}
|
|
import("Vendor.PHPExcel.PHPExcel");
|
|
import("Vendor.PHPExcel.Writer.Excel5");
|
|
import("Vendor.PHPExcel.IOFactory.php");
|
|
$str2 = I('get.type') == 1 ? '入库' : '出库';
|
|
$filename = '商品(' . $logs[0]['goods_name'] . ")" . $str2 . "明细";
|
|
$headArr = array(
|
|
array('goods_name', '商品名称'),
|
|
array('goods_code', '条码'),
|
|
array('good_number', '货号'),
|
|
array('type', '操作类型'),
|
|
array('time', '操作时间'),
|
|
array('supplier_name', '供货商/来源'),
|
|
array('original_stock', '变动前库存'), array('present_stock', '变动后库存'),
|
|
array('do_num', '操作数量'),
|
|
array('remark', '备注'),
|
|
);
|
|
$str = $filename . ',导出日期:' . date('Y-m-d H:i:s');
|
|
$this->getExcel($filename, $headArr, $logs, $str);
|
|
}
|
|
|
|
// 导出盘点单商品
|
|
public function exporttablecheck()
|
|
{
|
|
$global_store_jurisdiction = I('session.global_store_jurisdiction'); // 权限
|
|
$showpurch_price = $global_store_jurisdiction['showpurch_price'] ? $global_store_jurisdiction['showpurch_price'] : 2; // 查看进价权限
|
|
$id = I('get.id');
|
|
$storeid = session('storeid');
|
|
$merchantid = M('retail_store')->where(array('id' => $storeid))->getField("merchantid");
|
|
$where['merchantid'] = $merchantid;
|
|
$where['storeid'] = $storeid;
|
|
$where['pd_order_id'] = $id;
|
|
$orderlist = M('retail_goods_pd')->where($where)->select();
|
|
foreach ($orderlist as $k => &$v) {
|
|
$v['index'] = $k + 1;
|
|
if ($v['attribute'] == 2) {
|
|
$v['goods_code'] = $v['sku_code'] ? $v['sku_code'] : '--';
|
|
$sku_list = M('retail_sku_goods')->where(array('id' => $v['sku_id']))->getField("sku_id_list");
|
|
$sku_list = explode(',', $sku_list);
|
|
$sku_name = '';
|
|
foreach ($sku_list as $skuk => &$skuv) {
|
|
$sku_name .= ',' . M('retail_sku_list')->where(array('id' => $skuv))->getField("name");
|
|
}
|
|
$v['goods_name'] = $v['goods_name'] . $sku_name;
|
|
} else if ($v['attribute'] == 1) {
|
|
$v['goods_code'] = $v['goods_code'] ? $v['goods_code'] : '--';
|
|
$v['sku_id'] = '';
|
|
}
|
|
$v['good_number'] = $v['good_number'] ? $v['good_number'] : '--';
|
|
$v['change_num'] = round($v['pd_num'] - $v['goods_num'], 2);
|
|
if ($showpurch_price == 2) {
|
|
$v['all_money'] = '*';
|
|
$v['purch_price'] = '*';
|
|
} else {
|
|
$v['all_money'] = round(($v['pd_num'] - $v['goods_num']) * $v['purch_price'], 2);
|
|
}
|
|
}
|
|
$str2 = "日期:" . date('Y-m-d H:i:s', time());
|
|
$filename = "商品盘点(" . $str2 . ")明细";
|
|
$headArr = array(
|
|
array('goods_name', '商品名称'),
|
|
array('goods_code', '条码'),
|
|
array('good_number', '货号'),
|
|
array('purch_price', '进价'),
|
|
array('retail_price', '零售价'),
|
|
array('goods_num', '商品系统库存'),
|
|
array('pd_num', '盘点(实际)库存'),
|
|
array('change_num', '盈亏数量'),
|
|
array('all_money', '盈亏金额'),
|
|
);
|
|
$str = $filename . ',导出日期:' . date('Y-m-d H:i:s');
|
|
$this->getExcel($filename, $headArr, $orderlist, $str);
|
|
}
|
|
|
|
// 导出超量商品数据
|
|
public function exporttablegoodsmore()
|
|
{
|
|
$storeid = session('storeid');
|
|
$merchantid = session('ls_userinfo')['merchantid'];
|
|
//接收查询条件
|
|
$keyword = I('get.keyword');
|
|
if (!empty($keyword)) {
|
|
$where['g.goods_number|g.goods_name'] = $keyword;
|
|
}
|
|
//按照商品类别搜索
|
|
$person1 = I('get.person1');
|
|
$person2 = I('get.person2');
|
|
$person3 = I('get.person3');
|
|
$flag = 0;
|
|
if (!empty($person3)) {
|
|
$where['g.goods_class_id'] = $person3;
|
|
} else if (!empty($person2)) {
|
|
$class = M('retail_goods_class as c2')
|
|
->join('ls_retail_goods_class as c3 on c2.id=c3.pid')
|
|
->where(array('c2.id' => $person2, 'c3.status' => 0))
|
|
->field('c3.id')->select();
|
|
$flag = 1;
|
|
} else if (!empty($person1)) {
|
|
$class = M('retail_goods_class as c1')
|
|
->join('ls_retail_goods_class as c2 on c1.id=c2.pid')
|
|
->join('ls_retail_goods_class as c3 on c2.id=c3.pid AND c3.status=0', 'LEFT')
|
|
->where(array('c1.id' => $person1, 'c2.status' => 0))
|
|
->field('c2.id,c3.id as c3_id')->select();
|
|
$flag = 1;
|
|
}
|
|
if (!empty($class)) {
|
|
$arr = array();
|
|
foreach ($class as &$val) {
|
|
if (!in_array($val['id'], $arr)) {
|
|
$arr[] = $val['id'];
|
|
}
|
|
if (!empty($val['c3_id'])) {
|
|
if (!in_array($val['c3_id'], $arr)) {
|
|
$arr[] = $val['c3_id'];
|
|
}
|
|
}
|
|
}
|
|
$str = implode(',', $arr);
|
|
$where['g.goods_class_id'] = array('in', $str . ',' . ($person2 ? $person2 : $person1));
|
|
} else if ($flag == 1) {
|
|
$where['g.goods_class_id'] = $person2 ? $person2 : $person1;
|
|
}
|
|
$where['g.store_id'] = $storeid;
|
|
$where['g.status'] = array('in', array(0, 1));
|
|
//商品列表
|
|
$goods = M('retail_goods')->alias('g')
|
|
->join('ls_retail_goods as rg on g.id=rg.id', 'LEFT')
|
|
->order('g.status asc')
|
|
->where($where)
|
|
->where('g.goods_num >rg.more_num')
|
|
->select();
|
|
$goods_class = M('retail_goods_class')->where(array('merchantid' => $merchantid, 'status' => 0))->select();
|
|
foreach ($goods as $key => &$value) {
|
|
//查询出分类名称
|
|
foreach ($goods_class as $k => $v) {
|
|
if ($value['goods_class_id'] == $v['id']) {
|
|
$goods[$key]['cate_name'] = $v['class_name'];
|
|
break;
|
|
}
|
|
}
|
|
$goods[$key]['index'] = $key + 1;
|
|
if ($value['status'] == 0) {
|
|
$goods[$key]['status_name'] = '正常';
|
|
} elseif ($value['status'] == 1) {
|
|
$goods[$key]['status_name'] = '已下架';
|
|
} elseif ($value['status'] == 2) {
|
|
$goods[$key]['status_name'] = '已删除';
|
|
}
|
|
$goods[$key]['goods_code'] = $goods[$key]['goods_code'] ? $goods[$key]['goods_code'] : '';
|
|
}
|
|
$filename = "门店超量商品明细";
|
|
$headArr = array(
|
|
array('index', '序号'),
|
|
array('goods_name', '商品名称'),
|
|
array('goods_code', '条码'),
|
|
array('goods_number', '货号'),
|
|
array('cate_name', '所属分类'),
|
|
array('purchase_price', '进货价'),
|
|
array('retail_price', '零售价'),
|
|
array('online_price', '线上价'),
|
|
array('goods_num', '商品系统库存'),
|
|
array('more_num', '库存上限(超量值)'),
|
|
);
|
|
$str = $filename . ',导出日期:' . date('Y-m-d H:i:s');
|
|
$this->getExcel($filename, $headArr, $goods, $str);
|
|
}
|
|
|
|
// 无规格导出不足商品数据
|
|
public function exporttablegoodsless()
|
|
{
|
|
$storeid = session('storeid');
|
|
$merchantid = session('ls_userinfo')['merchantid'];
|
|
$keyword = I('get.keyword');
|
|
if (!empty($keyword)) {
|
|
$where['goods_number|goods_name'] = $keyword;
|
|
}
|
|
//按照商品类别搜索
|
|
$person1 = I('get.person1');
|
|
$person2 = I('get.person2');
|
|
$person3 = I('get.person3');
|
|
$flag = 0;
|
|
if (!empty($person3)) {
|
|
$where['goods_class_id'] = $person3;
|
|
} else if (!empty($person2)) {
|
|
$class = M('retail_goods_class as c2')
|
|
->join('ls_retail_goods_class as c3 on c2.id=c3.pid')
|
|
->where(array('c2.id' => $person2, 'c3.status' => 0))
|
|
->field('c3.id')->select();
|
|
$flag = 1;
|
|
} else if (!empty($person1)) {
|
|
$class = M('retail_goods_class as c1')
|
|
->join('ls_retail_goods_class as c2 on c1.id=c2.pid')
|
|
->join('ls_retail_goods_class as c3 on c2.id=c3.pid AND c3.status=0', 'LEFT')
|
|
->where(array('c1.id' => $person1, 'c2.status' => 0))
|
|
->field('c2.id,c3.id as c3_id')->select();
|
|
$flag = 1;
|
|
}
|
|
if (!empty($class)) {
|
|
$arr = array();
|
|
foreach ($class as &$val) {
|
|
if (!in_array($val['id'], $arr)) {
|
|
$arr[] = $val['id'];
|
|
}
|
|
if (!empty($val['c3_id'])) {
|
|
if (!in_array($val['c3_id'], $arr)) {
|
|
$arr[] = $val['c3_id'];
|
|
}
|
|
}
|
|
}
|
|
$str = implode(',', $arr);
|
|
$where['goods_class_id'] = array('in', $str . ',' . ($person2 ? $person2 : $person1));
|
|
} else if ($flag == 1) {
|
|
$where['goods_class_id'] = $person2 ? $person2 : $person1;
|
|
}
|
|
$where['store_id'] = $storeid;
|
|
$where['status'] = array('in', array(0, 1));
|
|
$where['attribute_state'] = 1;
|
|
$where['_string'] = "goods_num - less_num <= 0";
|
|
//商品列表
|
|
$goods = M('retail_goods')
|
|
->order('status asc')
|
|
->where($where)
|
|
->select();
|
|
$goods_class = M('retail_goods_class')->where(array('merchantid' => $merchantid, 'status' => 0))->select();
|
|
foreach ($goods as $key => &$value) {
|
|
//查询出分类名称
|
|
foreach ($goods_class as $k => $v) {
|
|
if ($value['goods_class_id'] == $v['id']) {
|
|
$goods[$key]['cate_name'] = $v['class_name'];
|
|
break;
|
|
}
|
|
}
|
|
//商品状态
|
|
if ($value['status'] == 0) {
|
|
$goods[$key]['status_name'] = '正常';
|
|
} elseif ($value['status'] == 1) {
|
|
$goods[$key]['status_name'] = '已下架';
|
|
} elseif ($value['status'] == 2) {
|
|
$goods[$key]['status_name'] = '已删除';
|
|
}
|
|
$goods[$key]['index'] = $key + 1;
|
|
$goods[$key]['goods_code'] = $goods[$key]['goods_code'] ? $goods[$key]['goods_code'] : '';
|
|
}
|
|
$filename = "门店无规格不足商品明细";
|
|
$headArr = array(
|
|
array('index', '序号'),
|
|
array('goods_name', '商品名称'),
|
|
array('goods_code', '条码'),
|
|
array('goods_number', '货号'),
|
|
array('cate_name', '所属分类'),
|
|
array('purchase_price', '进价'),
|
|
array('retail_price', '零售价'),
|
|
array('goods_num', '商品系统库存'),
|
|
array('less_num', '库存下限(预警值)'),
|
|
);
|
|
$str = $filename . ',导出日期:' . date('Y-m-d H:i:s');
|
|
$this->getExcel($filename, $headArr, $goods, $str);
|
|
}
|
|
|
|
//规格导出
|
|
public function exporttableSkuLess()
|
|
{
|
|
$storeid = session('storeid');
|
|
$map['store_id'] = $storeid;
|
|
$map['status'] = 1;
|
|
$map['state'] = 0;
|
|
$map['_string'] = "goods_num - less_num <= 0";
|
|
$goods = M('retail_sku_goods')
|
|
->page($_GET['page'], $_GET['limit'])
|
|
->where($map)
|
|
->select();
|
|
foreach ($goods as $key => &$val) {
|
|
$goodsInfo = M('retail_goods')->where(array('id' => $val['goods_id']))->field("goods_name,goods_class_id,purchase_price,goods_number")->find();
|
|
$class_name = M('retail_goods_class')->where(array('id' => $goodsInfo['goods_class_id']))->getField("class_name");
|
|
$val['index'] = $key + 1;
|
|
$val['goods_number'] = $goodsInfo['goods_number'];
|
|
$val['goods_code'] = $val['sku_code'];
|
|
$val['cate_name'] = $class_name;
|
|
$val['status_name'] = '正常';
|
|
$val['less_num'] = round($val['less_num']);
|
|
$str = '';
|
|
$sku_list = explode(",", $val['sku_id_list']);
|
|
if ($sku_list) {
|
|
foreach ($sku_list as $k => &$v) {
|
|
$str .= ',' . M('retail_sku_list')->where(array('id' => $v))->getField("name");
|
|
}
|
|
}
|
|
$val['goods_name'] = $goodsInfo['goods_name'] . $str;
|
|
}
|
|
$filename = "门店规格不足商品明细";
|
|
$headArr = array(
|
|
array('index', '序号'),
|
|
array('goods_name', '商品名称'),
|
|
array('goods_code', '条码'),
|
|
array('goods_number', '货号'),
|
|
array('cate_name', '所属分类'),
|
|
array('purchase_price', '进价'),
|
|
array('retail_price', '零售价'),
|
|
array('goods_num', '商品系统库存'),
|
|
array('less_num', '库存下限(预警值)'),
|
|
);
|
|
$str = $filename . ',导出日期:' . date('Y-m-d H:i:s');
|
|
$this->getExcel($filename, $headArr, $goods, $str);
|
|
}
|
|
|
|
/**
|
|
* 2018-11-22 会员信息导出(会员列表接口更新后可删除)
|
|
*/
|
|
public function exportVipInfo()
|
|
{
|
|
$merchant_id = session("merchant_userinfo")['id'];
|
|
if (!$merchant_id) {
|
|
$this->error("无权访问");
|
|
}
|
|
$data = I('get.');
|
|
$keyword = $data['keyword'];
|
|
$status = $data['status'];
|
|
$storeid = $data['storeid'];
|
|
$section = json_decode(htmlspecialchars_decode($data['section']), true);
|
|
$add_time = $section['time'];
|
|
//查询条件
|
|
if (!empty($keyword)) {
|
|
$where['nickname|mobile_phone|card_key'] = array('like', "%" . $keyword . "%");
|
|
}
|
|
if (!empty($storeid)) {
|
|
$where['storeid'] = $storeid;
|
|
}
|
|
switch ($status) {
|
|
case 0:
|
|
$where['status'] = array('neq', 2);
|
|
break;
|
|
case 1:
|
|
$where['status'] = 1;
|
|
break;
|
|
case 3:
|
|
$where['status'] = 3;
|
|
break;
|
|
case 4:
|
|
$where['status'] = 4;
|
|
break;
|
|
default:
|
|
$where['status'] = array('neq', 2);
|
|
break;
|
|
}
|
|
if (!empty($section['integral'])) {
|
|
//积分区间
|
|
$str = strpos($section['integral'], "-");
|
|
if ($str) {
|
|
$integral = explode('-', $section['integral']);
|
|
$where['integral'] = array('between', array($integral[0], $integral[1]));
|
|
} else {
|
|
$where['integral'] = array('egt', $section['integral']);
|
|
}
|
|
}
|
|
if (!empty($section['balance'])) {
|
|
//余额区间
|
|
$str = strpos($section['balance'], '-');
|
|
if ($str) {
|
|
$balance = explode('-', $section['balance']);
|
|
$where['balance'] = array('between', array($balance[0], $balance[1]));
|
|
} else {
|
|
$where['balance'] = array('egt', $section['balance']);
|
|
}
|
|
}
|
|
if (!empty($section['time'])) {
|
|
switch ($section['type']) {
|
|
case 1:
|
|
//激活时间
|
|
$start_time = strtotime($add_time[0]);
|
|
$end_time = strtotime($add_time[1]);
|
|
$where['addtime'] = array('between', array($start_time, $end_time));
|
|
break;
|
|
case 2:
|
|
//生日时间
|
|
$where['birthday'] = array('between', array($add_time[0], $add_time[1]));
|
|
break;
|
|
case 3:
|
|
//沉睡时间
|
|
$start_time = strtotime($add_time[0]);
|
|
$end_time = strtotime($add_time[1]);
|
|
$map = array(
|
|
'merchant_id' => $merchant_id,
|
|
'vid' => array('gt', 0),
|
|
'add_time' => array('between', array($start_time, $end_time))
|
|
);
|
|
if (!empty($storeid)) {
|
|
$map['store_id'] = $storeid;
|
|
}
|
|
$vidArr = M('retail_bill_order')->where($map)->group('vid')->getField("vid", true);
|
|
if (!empty($vidArr)) {
|
|
$where['id'] = array('not in', $vidArr);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if ($section['type'] == 4 && !empty($section['purchase'])) {
|
|
//复购次数
|
|
$tap = array(
|
|
'merchant_id' => $merchant_id,
|
|
'vid' => array('gt', 0)
|
|
);
|
|
if (!empty($section['time'])) {
|
|
$start_time = strtotime($add_time[0]);
|
|
$end_time = strtotime($add_time[1]);
|
|
$tap['add_time'] = array('between', array($start_time, $end_time));
|
|
}
|
|
if (!empty($storeid)) {
|
|
$tap['store_id'] = $storeid;
|
|
}
|
|
$vidArr = M('retail_bill_order')->where($tap)->group('vid')->having('count(id)>' . $section['purchase'])->getField("vid", true);
|
|
if (!empty($vidArr)) {
|
|
$where['id'] = array('in', $vidArr);
|
|
} else {
|
|
$where['id'] = 0;
|
|
}
|
|
}
|
|
$where['plus_type'] = 3;
|
|
$where['merchantid'] = $merchant_id;
|
|
$vip_info = M('retail_vip')
|
|
->where($where)
|
|
->order('id desc')
|
|
->select();
|
|
foreach ($vip_info as $key => &$val) {
|
|
$val['index'] = $key + 1;
|
|
if ($val['storeid']) {
|
|
$val['storetag'] = M('retail_store')->where(array('id' => $val['storeid']))->getField('storetag');
|
|
}
|
|
$val['addtime'] = date('Y-m-d H:i:s', $val['addtime']);
|
|
if (empty($val['birthday'])) {
|
|
$val['birthday'] = '未设置';
|
|
}
|
|
$one = M('retail_vip_integral')
|
|
->where(array('min_integral' => array('ELT', $val['grade_integral']), 'merchantid' => $merchant_id))
|
|
->order('min_integral desc')
|
|
->find();
|
|
$val['grade'] = $one ? $one['cardname'] : '默认会员';
|
|
$val['discount'] = $one ? $one['discount'] * 100 . '%' : '不打折';
|
|
$val['name'] = $val['name'] ? $val['name'] : "未设置";
|
|
$val['balance'] = $val['balance'] ? $val['balance'] : "0.00";
|
|
$val['nickname'] = $val['nickname'] ? $val['nickname'] : "未设置";
|
|
$val['name'] = $val['name'] ? $val['name'] : "未设置";
|
|
$val['name'] = $val['name'] . '/' . $val['nickname'];
|
|
if (empty($val['card_key'])) {
|
|
$val['card_key'] = '暂无';
|
|
}
|
|
switch ($val['status']) {
|
|
case 1:
|
|
$val['statusname'] = "正常会员";
|
|
break;
|
|
case 3:
|
|
$val['statusname'] = "冻结会员";
|
|
break;
|
|
case 4:
|
|
$val['statusname'] = "挂失会员";
|
|
break;
|
|
}
|
|
}
|
|
$filename = "会员信息统计";
|
|
$headArr = array(
|
|
array('index', '序号'),
|
|
array('name', '姓名/昵称'),
|
|
array('mobile_phone', '手机号'),
|
|
array('card_key', '实体卡'),
|
|
array('birthday', '生日'),
|
|
array('grade', '会员卡类型'),
|
|
array('discount', '折扣'),
|
|
array('balance', '余额'),
|
|
array('integral', '积分'),
|
|
array('storetag', '激活门店'),
|
|
array('addtime', '激活时间'),
|
|
array('statusname', '会员状态'),
|
|
);
|
|
$str = $filename . ',导出日期:' . date('Y-m-d H:i:s');
|
|
$this->getExcel($filename, $headArr, $vip_info, $str);
|
|
}
|
|
|
|
/**
|
|
* 商户-导出销售统计
|
|
*/
|
|
public function exportStoreSaleData()
|
|
{
|
|
$Statistics = new Statistics();
|
|
$param['merchant_id'] = $this->merchant_id;
|
|
$param['date'] = I('get.date') ? explode(',', I('get.date')) : '';
|
|
$param['type'] = 1;
|
|
$result = $Statistics->getStoreSaleDataList($param);
|
|
if ($result['status'] != 1) {
|
|
echo json_encode($result);
|
|
exit;
|
|
}
|
|
$filename = "所有门店销售汇总";
|
|
$common = date('Y-m-d H:i:s', $result['data']['search_date'][0]) . '至' . date('Y-m-d H:i:s', $result['data']['search_date'][1]) . ',导出时间:' . date('Y-m-d H:i:s');
|
|
$this->getStoreSaleDataExcel($filename, $result['data']['store_data'], $result['data']['recharge'], $result['data']['other_pay'], $common);
|
|
}
|
|
|
|
private function getStoreSaleDataExcel($filename, $expTableData, $recharge, $other_pay, $common = "")
|
|
{
|
|
$filename = iconv('utf-8', 'gb2312', $filename); //文件名称
|
|
$_fileName = $filename . date('_YmdHis'); //or $xlsTitle 文件名称可根据自己情况设定
|
|
vendor("PHPExcel.PHPExcel");
|
|
ob_clean();
|
|
$objPHPExcel = new \PHPExcel();
|
|
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('A1:AO1'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $common);
|
|
|
|
$cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ', 'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BK', 'BL', 'BM', 'BN', 'BO', 'BP', 'BQ', 'BR', 'BS', 'BT', 'BU', 'BV', 'BW', 'BX', 'BY', 'BZ', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'CG', 'CH', 'CI', 'CJ', 'CK', 'CL', 'CM', 'CN', 'CO', 'CP', 'CQ', 'CR', 'CS', 'CT', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DA', 'DB', 'DC', 'DD', 'DE', 'DF', 'DG', 'DH', 'DI', 'DJ', 'DK', 'DL', 'DM', 'DN', 'DO', 'DP', 'DQ', 'DR', 'DS', 'DT', 'DU', 'DV', 'DW', 'DX', 'DY', 'DZ', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF', 'EG', 'EH', 'EI', 'EJ', 'EK', 'EL', 'EM', 'EN', 'EO', 'EP', 'EQ', 'ER', 'ES', 'ET', 'EU', 'EV', 'EW', 'EX', 'EY', 'EZ');
|
|
|
|
//表头
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('A2:A4'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A2', '门店');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('B2:B4'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B2', '渠道');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('C2:C4'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C2', '净销售额');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('D2:D4'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('D2', '销售额');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('E2:E4'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('E2', '销售笔数');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('F2:F4'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('F2', '退款金额');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('G2:G4'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('G2', '退款笔数');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('H2:K3'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('H2', '微信支付');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('H4', '销售金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('I4', '销售笔数');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('J4', '退款金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('K4', '退款笔数');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('L2:O3'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('L2', '会员卡支付');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('L4', '销售金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('M4', '销售笔数');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('N4', '退款金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('O4', '退款笔数');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('P2:S3'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('P2', '支付宝支付');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('P4', '销售金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('Q4', '销售笔数');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('R4', '退款金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('S4', '退款笔数');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('T2:W3'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('T2', '现金支付');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('T4', '销售金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('U4', '销售笔数');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('V4', '退款金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('W4', '退款笔数');
|
|
|
|
$key_index = 23;
|
|
$other_len = count($other_pay) * 4;
|
|
if (!empty($other_pay)) {
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index] . '2:' . $cellName[$key_index + $other_len - 1] . '2'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index] . '2', '其他支付');
|
|
foreach ($other_pay as $k => $o) {
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index] . '3:' . $cellName[$key_index + 3] . '3'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index] . '3', $o['name']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index] . '4', '销售金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 1] . '4', '销售笔数');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 2] . '4', '退款金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 3] . '4', '退款笔数');
|
|
$key_index += 4;
|
|
}
|
|
}
|
|
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index] . '2:' . $cellName[$key_index + 22] . '2'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index] . '2', '会员充值');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index] . '3:' . $cellName[$key_index] . '4'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index] . '3', '类型');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index + 1] . '3:' . $cellName[$key_index + 3] . '3'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 1] . '3', '店内');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 1] . '4', '微信');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 2] . '4', '支付宝');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 3] . '4', '现金');
|
|
|
|
$key_index += 3;
|
|
$arr = array(
|
|
'门店后台赠送',
|
|
'门店小助手赠送',
|
|
'门店后台扣除',
|
|
'门店小助手扣除',
|
|
'收银员扣除',
|
|
'收银员小助手扣除',
|
|
'门店会员余额退款',
|
|
'收银员会员余额退款',
|
|
'订单退款',
|
|
'小程序',
|
|
'公众号',
|
|
'商户后台充值',
|
|
'商户后台赠送',
|
|
'商户小助手赠送',
|
|
'商户后台扣除',
|
|
'商户小助手扣除',
|
|
'实际充值金额',
|
|
'总赠送金额',
|
|
'总扣除金额',
|
|
'商户退款',
|
|
);
|
|
foreach ($arr as $nIndex => $name) {
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index + $nIndex + 1] . '3:' . $cellName[$key_index + $nIndex + 1] . '4'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + $nIndex + 1] . '3', $name);
|
|
}
|
|
//标题部分结束
|
|
$all_key_index = $key_index + 9;
|
|
foreach ($expTableData as $key => $val) {
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('A' . ($key * 3 + 5) . ':A' . ($key * 3 + 7)); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A' . ($key * 3 + 5), $val['store_name']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B' . ($key * 3 + 5), '小计');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C' . ($key * 3 + 5), $val['total']['money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('D' . ($key * 3 + 5), $val['total']['sell_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('E' . ($key * 3 + 5), $val['total']['sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('F' . ($key * 3 + 5), $val['total']['refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('G' . ($key * 3 + 5), $val['total']['refund_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('H' . ($key * 3 + 5), $val['wechat']['sell_money']); //微信
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('I' . ($key * 3 + 5), $val['wechat']['sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('J' . ($key * 3 + 5), $val['wechat']['refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('K' . ($key * 3 + 5), $val['wechat']['refund_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('L' . ($key * 3 + 5), $val['vip']['sell_money']); //会员卡
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('M' . ($key * 3 + 5), $val['vip']['sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('N' . ($key * 3 + 5), $val['vip']['refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('O' . ($key * 3 + 5), $val['vip']['refund_num']);
|
|
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('P' . ($key * 3 + 5), $val['alipay']['sell_money']); //支付宝
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('Q' . ($key * 3 + 5), $val['alipay']['sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('R' . ($key * 3 + 5), $val['alipay']['refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('S' . ($key * 3 + 5), $val['alipay']['refund_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('T' . ($key * 3 + 5), $val['cash']['sell_money']); //现金
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('U' . ($key * 3 + 5), $val['cash']['sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('V' . ($key * 3 + 5), $val['cash']['refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('W' . ($key * 3 + 5), $val['cash']['refund_num']);
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('P' . ($key * 3 + 7) . ':' . $cellName[23 + $other_len - 1] . ($key * 3 + 7)); //合并单元格
|
|
$key_index = 23;
|
|
if (!empty($other_pay)) {
|
|
foreach ($val['other'] as $k => $o) {
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index] . ($key * 3 + 5), $o['sell_money']); //其他
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 1] . ($key * 3 + 5), $o['sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 2] . ($key * 3 + 5), $o['refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 3] . ($key * 3 + 5), $o['refund_num']);
|
|
$key_index += 4;
|
|
}
|
|
}
|
|
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B' . ($key * 3 + 6), '店内');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C' . ($key * 3 + 6), $val['total']['line_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('D' . ($key * 3 + 6), $val['total']['line_sell_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('E' . ($key * 3 + 6), $val['total']['line_sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('F' . ($key * 3 + 6), $val['total']['line_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('G' . ($key * 3 + 6), $val['total']['line_refund_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('H' . ($key * 3 + 6), $val['wechat']['line_sell_money']); //微信
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('I' . ($key * 3 + 6), $val['wechat']['line_sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('J' . ($key * 3 + 6), $val['wechat']['line_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('K' . ($key * 3 + 6), $val['wechat']['line_refund_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('L' . ($key * 3 + 6), $val['vip']['line_sell_money']); //会员卡
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('M' . ($key * 3 + 6), $val['vip']['line_sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('N' . ($key * 3 + 6), $val['vip']['line_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('O' . ($key * 3 + 6), $val['vip']['line_refund_num']);
|
|
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('P' . ($key * 3 + 6), $val['alipay']['line_sell_money']); //支付宝
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('Q' . ($key * 3 + 6), $val['alipay']['line_sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('R' . ($key * 3 + 6), $val['alipay']['line_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('S' . ($key * 3 + 6), $val['alipay']['line_refund_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('T' . ($key * 3 + 6), $val['cash']['line_sell_money']); //现金
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('U' . ($key * 3 + 6), $val['cash']['line_sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('V' . ($key * 3 + 6), $val['cash']['line_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('W' . ($key * 3 + 6), $val['cash']['line_refund_num']);
|
|
|
|
$key_index = 23;
|
|
if (!empty($other_pay)) {
|
|
foreach ($val['other'] as $k => $o) {
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index] . ($key * 3 + 6), $o['line_sell_money']); //其他
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 1] . ($key * 3 + 6), $o['line_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 2] . ($key * 3 + 6), $o['line_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 3] . ($key * 3 + 6), $o['line_refund_num']);
|
|
$key_index += 4;
|
|
}
|
|
}
|
|
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B' . ($key * 3 + 7), '商城');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C' . ($key * 3 + 7), $val['total']['online_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('D' . ($key * 3 + 7), $val['total']['online_sell_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('E' . ($key * 3 + 7), $val['total']['online_sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('F' . ($key * 3 + 7), $val['total']['online_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('G' . ($key * 3 + 7), $val['total']['online_refund_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('H' . ($key * 3 + 7), $val['wechat']['online_sell_money']); //微信
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('I' . ($key * 3 + 7), $val['wechat']['online_sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('J' . ($key * 3 + 7), $val['wechat']['online_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('K' . ($key * 3 + 7), $val['wechat']['online_refund_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('L' . ($key * 3 + 7), $val['vip']['online_sell_money']); //会员卡
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('M' . ($key * 3 + 7), $val['vip']['online_sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('N' . ($key * 3 + 7), $val['vip']['online_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('O' . ($key * 3 + 7), $val['vip']['online_refund_num']);
|
|
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index] . ($key * 3 + 5) . ':' . $cellName[$key_index] . ($key * 3 + 6)); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index] . ($key * 3 + 5), '充值');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index] . ($key * 3 + 7), '赠送');
|
|
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index + 1] . ($key * 3 + 5) . ':' . $cellName[$key_index + 1] . ($key * 3 + 6)); //合并单元格
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index + 2] . ($key * 3 + 5) . ':' . $cellName[$key_index + 2] . ($key * 3 + 6)); //合并单元格
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index + 3] . ($key * 3 + 5) . ':' . $cellName[$key_index + 3] . ($key * 3 + 6)); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 1] . ($key * 3 + 5), $val['line_recharge']['wechat_recharge']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 2] . ($key * 3 + 5), $val['line_recharge']['alipay_recharge']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 3] . ($key * 3 + 5), $val['line_recharge']['cash_recharge']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 1] . ($key * 3 + 7), $val['line_recharge']['wechat_give']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 2] . ($key * 3 + 7), $val['line_recharge']['alipay_give']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 3] . ($key * 3 + 7), $val['line_recharge']['cash_give']);
|
|
|
|
$z = 1;
|
|
$key_index += 3;
|
|
foreach ($val['update_balance'] as $update_balance) {
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index + $z] . ($key * 3 + 5) . ':' . $cellName[$key_index + $z] . ($key * 3 + 7)); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + $z] . ($key * 3 + 5), $update_balance);
|
|
$z++;
|
|
}
|
|
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A' . ($key * 3 + 5) . ':' . $cellName[$key_index + $z] . ($key * 3 + 7))->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
|
|
if (($key * 3 + 3) % 6 == 0 || ($key * 3 + 4) % 6 == 0 || ($key * 3 + 5) % 6 == 0) {
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A' . ($key * 3 + 5) . ':' . $cellName[$key_index + $z] . ($key * 3 + 7))->getFill()->getStartColor()->setARGB('FFF9FAFC');
|
|
} else {
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A' . ($key * 3 + 5) . ':' . $cellName[$key_index + $z] . ($key * 3 + 7))->getFill()->getStartColor()->setARGB('FFFFFFFF');
|
|
}
|
|
}
|
|
$storeNum = count($expTableData);
|
|
|
|
$zz = 1;
|
|
foreach ($recharge as $r) {
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$all_key_index + $zz] . '5:' . $cellName[$all_key_index + $zz] . ($storeNum * 3 + 4)); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$all_key_index + $zz] . '5', $r);
|
|
$zz++;
|
|
}
|
|
|
|
$all_key_index = $all_key_index + $zz;
|
|
|
|
$styleThinBlackBorderOutline = array(
|
|
'borders' => array(
|
|
'allborders' => array( //allborders 表示全部线框
|
|
'style' => \PHPExcel_Style_Border::BORDER_THIN, //设置border样式
|
|
'color' => array('argb' => 'FFDDDDDD'), //设置border颜色
|
|
),
|
|
),
|
|
);
|
|
$count = ($storeNum * 3) + 5;
|
|
foreach ($cellName as $key => $value) {
|
|
if ($key >= $all_key_index) {
|
|
break;
|
|
}
|
|
for ($i = 2; $i <= 4; $i++) {
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $i)->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $i)->getFill()->getStartColor()->setARGB('FFF3F9FF');
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $i)->getFont()->getColor()->setARGB('FF333333');
|
|
$objPHPExcel->getActiveSheet()->getRowDimension($i)->setRowHeight('30');
|
|
$objPHPExcel->getActiveSheet()->getStyle($value . $i)->applyFromArray($styleThinBlackBorderOutline);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $i)->getFont()->setBold(true);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $i)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
|
|
}
|
|
for ($j = 5; $j <= $count; $j++) {
|
|
if ($key < 7 && ($j - 2) % 3 == 0) {
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $j)->getFont()->setBold(true);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $j)->getFont()->getColor()->setARGB('FF333333');
|
|
} else {
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $j)->getFont()->getColor()->setARGB('FF666666');
|
|
}
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $j)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $j)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
|
|
$objPHPExcel->getActiveSheet()->getStyle($value . $j)->applyFromArray($styleThinBlackBorderOutline);
|
|
$objPHPExcel->getActiveSheet()->getRowDimension($j)->setRowHeight('30');
|
|
}
|
|
$objPHPExcel->getActiveSheet()->getColumnDimension($value)->setWidth(20);
|
|
}
|
|
header('pragma:public');
|
|
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $filename . '.xls"');
|
|
header("Content-Disposition:attachment;filename=$_fileName.xls"); //attachment新窗口打印inline本窗口打印
|
|
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
|
|
$objWriter->save('php://output');
|
|
exit();
|
|
}
|
|
|
|
/**
|
|
* 门店-销售统计导出
|
|
*/
|
|
public function exportOneStoreSaleData()
|
|
{
|
|
$Statistics = new Statistics();
|
|
$param['merchant_id'] = $this->merchant_id;
|
|
$param['store_id'] = $this->store_id;
|
|
$param['date'] = I('get.date') ? explode(',', I('get.date')) : '';
|
|
$param['type'] = 2;
|
|
$result = $Statistics->getStoreSaleDataList($param);
|
|
if ($result['status'] != 1) {
|
|
echo json_encode($result);
|
|
exit;
|
|
}
|
|
$filename = "销售汇总";
|
|
$common = '';
|
|
if (!empty($date)) {
|
|
$common .= $date[0] . '至' . $date[1];
|
|
}
|
|
$common .= '导出时间:' . date('Y-m-d H:i:s');
|
|
$this->getOneStoreSaleDataExcel($filename, $result['data']['store_data'], $result['data']['other_pay'], $common);
|
|
}
|
|
|
|
private function getOneStoreSaleDataExcel($filename, $expTableData, $other_pay, $common = "")
|
|
{
|
|
$filename = iconv('utf-8', 'gb2312', $filename); //文件名称
|
|
$_fileName = $filename . date('_YmdHis'); //or $xlsTitle 文件名称可根据自己情况设定
|
|
vendor("PHPExcel.PHPExcel");
|
|
ob_clean();
|
|
$objPHPExcel = new \PHPExcel();
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('A1:Ak1'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $common);
|
|
|
|
$cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ', 'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BK', 'BL', 'BM', 'BN', 'BO', 'BP', 'BQ', 'BR', 'BS', 'BT', 'BU', 'BV', 'BW', 'BX', 'BY', 'BZ', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'CG', 'CH', 'CI', 'CJ', 'CK', 'CL', 'CM', 'CN', 'CO', 'CP', 'CQ', 'CR', 'CS', 'CT', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DA', 'DB', 'DC', 'DD', 'DE', 'DF', 'DG', 'DH', 'DI', 'DJ', 'DK', 'DL', 'DM', 'DN', 'DO', 'DP', 'DQ', 'DR', 'DS', 'DT', 'DU', 'DV', 'DW', 'DX', 'DY', 'DZ', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF', 'EG', 'EH', 'EI', 'EJ', 'EK', 'EL', 'EM', 'EN', 'EO', 'EP', 'EQ', 'ER', 'ES', 'ET', 'EU', 'EV', 'EW', 'EX', 'EY', 'EZ');
|
|
//表头
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('A2:A4'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A2', '日期');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('B2:B4'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B2', '渠道');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('C2:C4'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C2', '净销售额');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('D2:D4'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('D2', '销售额');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('E2:E4'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('E2', '销售笔数');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('F2:F4'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('F2', '退款金额');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('G2:G4'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('G2', '退款笔数');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('H2:K3'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('H2', '微信支付');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('H4', '销售金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('I4', '销售笔数');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('J4', '退款金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('K4', '退款笔数');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('L2:O3'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('L2', '会员卡支付');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('L4', '销售金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('M4', '销售笔数');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('N4', '退款金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('O4', '退款笔数');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('P2:S3'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('P2', '支付宝支付');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('P4', '销售金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('Q4', '销售笔数');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('R4', '退款金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('S4', '退款笔数');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('T2:W3'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('T2', '现金支付');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('T4', '销售金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('U4', '销售笔数');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('V4', '退款金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('W4', '退款笔数');
|
|
|
|
$key_index = 23;
|
|
$other_len = count($other_pay) * 4;
|
|
if (!empty($other_pay)) {
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index] . '2:' . $cellName[$key_index + $other_len - 1] . '2'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index] . '2', '其他支付');
|
|
foreach ($other_pay as $k => $o) {
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index] . '3:' . $cellName[$key_index + 3] . '3'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index] . '3', $o['name']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index] . '4', '销售金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 1] . '4', '销售笔数');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 2] . '4', '退款金额');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 3] . '4', '退款笔数');
|
|
$key_index += 4;
|
|
}
|
|
}
|
|
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index] . '2:' . $cellName[$key_index + 15] . '2'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index] . '2', '会员充值');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index] . '3:' . $cellName[$key_index] . '4'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index] . '3', '类型');
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index + 1] . '3:' . $cellName[$key_index + 3] . '3'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 1] . '3', '店内');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 1] . '4', '微信');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 2] . '4', '支付宝');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 3] . '4', '现金');
|
|
|
|
$key_index += 3;
|
|
$arr = array(
|
|
'门店会员余额退款',
|
|
'收银员会员余额退款',
|
|
'门店后台赠送',
|
|
'门店小助手赠送',
|
|
'门店后台扣除',
|
|
'门店小助手扣除',
|
|
'收银员收银端扣除',
|
|
'收银员小助手扣除',
|
|
'商品退款',
|
|
'实际充值金额',
|
|
'赠送金额',
|
|
'总扣除',
|
|
);
|
|
foreach ($arr as $nIndex => $name) {
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index + $nIndex + 1] . '3:' . $cellName[$key_index + $nIndex + 1] . '4'); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + $nIndex + 1] . '3', $name);
|
|
}
|
|
//标题部分结束
|
|
$all_key_index = $key_index + 12;
|
|
foreach ($expTableData as $key => $val) {
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('A' . ($key * 3 + 5) . ':A' . ($key * 3 + 7)); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A' . ($key * 3 + 5), $val['date']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B' . ($key * 3 + 5), '小计');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C' . ($key * 3 + 5), $val['total']['money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('D' . ($key * 3 + 5), $val['total']['sell_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('E' . ($key * 3 + 5), $val['total']['sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('F' . ($key * 3 + 5), $val['total']['refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('G' . ($key * 3 + 5), $val['total']['refund_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('H' . ($key * 3 + 5), $val['wechat']['sell_money']); //微信
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('I' . ($key * 3 + 5), $val['wechat']['sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('J' . ($key * 3 + 5), $val['wechat']['refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('K' . ($key * 3 + 5), $val['wechat']['refund_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('L' . ($key * 3 + 5), $val['vip']['sell_money']); //会员卡
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('M' . ($key * 3 + 5), $val['vip']['sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('N' . ($key * 3 + 5), $val['vip']['refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('O' . ($key * 3 + 5), $val['vip']['refund_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('P' . ($key * 3 + 5), $val['alipay']['sell_money']); //支付宝
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('Q' . ($key * 3 + 5), $val['alipay']['sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('R' . ($key * 3 + 5), $val['alipay']['refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('S' . ($key * 3 + 5), $val['alipay']['refund_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('T' . ($key * 3 + 5), $val['cash']['sell_money']); //现金
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('U' . ($key * 3 + 5), $val['cash']['sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('V' . ($key * 3 + 5), $val['cash']['refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('W' . ($key * 3 + 5), $val['cash']['refund_num']);
|
|
|
|
$key_index = 23;
|
|
if (!empty($other_pay)) {
|
|
foreach ($val['other'] as $k => $o) {
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index] . ($key * 3 + 5), $o['sell_money']); //其他
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 1] . ($key * 3 + 5), $o['sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 2] . ($key * 3 + 5), $o['refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 3] . ($key * 3 + 5), $o['refund_num']);
|
|
$key_index += 4;
|
|
}
|
|
}
|
|
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B' . ($key * 3 + 6), '店内');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C' . ($key * 3 + 6), $val['total']['line_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('D' . ($key * 3 + 6), $val['total']['line_sell_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('E' . ($key * 3 + 6), $val['total']['line_sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('F' . ($key * 3 + 6), $val['total']['line_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('G' . ($key * 3 + 6), $val['total']['line_refund_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('H' . ($key * 3 + 6), $val['wechat']['line_sell_money']); //微信
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('I' . ($key * 3 + 6), $val['wechat']['line_sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('J' . ($key * 3 + 6), $val['wechat']['line_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('K' . ($key * 3 + 6), $val['wechat']['line_refund_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('L' . ($key * 3 + 6), $val['vip']['line_sell_money']); //会员卡
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('M' . ($key * 3 + 6), $val['vip']['line_sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('N' . ($key * 3 + 6), $val['vip']['line_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('O' . ($key * 3 + 6), $val['vip']['line_refund_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('P' . ($key * 3 + 6), $val['alipay']['line_sell_money']); //支付宝
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('Q' . ($key * 3 + 6), $val['alipay']['line_sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('R' . ($key * 3 + 6), $val['alipay']['line_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('S' . ($key * 3 + 6), $val['alipay']['line_refund_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('T' . ($key * 3 + 6), $val['cash']['line_sell_money']); //现金
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('U' . ($key * 3 + 6), $val['cash']['line_sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('V' . ($key * 3 + 6), $val['cash']['line_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('W' . ($key * 3 + 6), $val['cash']['line_refund_num']);
|
|
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('P' . ($key * 3 + 7) . ':' . $cellName[23 + $other_len - 1] . ($key * 3 + 7)); //合并单元格
|
|
|
|
$key_index = 23;
|
|
if (!empty($other_pay)) {
|
|
foreach ($val['other'] as $k => $o) {
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index] . ($key * 3 + 6), $o['line_sell_money']); //其他
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 1] . ($key * 3 + 6), $o['line_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 2] . ($key * 3 + 6), $o['line_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 3] . ($key * 3 + 6), $o['line_refund_num']);
|
|
$key_index += 4;
|
|
}
|
|
}
|
|
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B' . ($key * 3 + 7), '商城');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C' . ($key * 3 + 7), $val['total']['online_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('D' . ($key * 3 + 7), $val['total']['online_sell_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('E' . ($key * 3 + 7), $val['total']['online_sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('F' . ($key * 3 + 7), $val['total']['online_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('G' . ($key * 3 + 7), $val['total']['online_refund_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('H' . ($key * 3 + 7), $val['wechat']['online_sell_money']); //微信
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('I' . ($key * 3 + 7), $val['wechat']['online_sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('J' . ($key * 3 + 7), $val['wechat']['online_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('K' . ($key * 3 + 7), $val['wechat']['online_refund_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('L' . ($key * 3 + 7), $val['vip']['online_sell_money']); //会员卡
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('M' . ($key * 3 + 7), $val['vip']['online_sell_num']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('N' . ($key * 3 + 7), $val['vip']['online_refund_money']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('O' . ($key * 3 + 7), $val['vip']['online_refund_num']);
|
|
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index] . ($key * 3 + 5) . ':' . $cellName[$key_index] . ($key * 3 + 6)); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index] . ($key * 3 + 5), '充值');
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index] . ($key * 3 + 7), '赠送');
|
|
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index + 1] . ($key * 3 + 5) . ':' . $cellName[$key_index + 1] . ($key * 3 + 6)); //合并单元格
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index + 2] . ($key * 3 + 5) . ':' . $cellName[$key_index + 2] . ($key * 3 + 6)); //合并单元格
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index + 3] . ($key * 3 + 5) . ':' . $cellName[$key_index + 3] . ($key * 3 + 6)); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 1] . ($key * 3 + 5), $val['line_recharge']['wechat_recharge']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 2] . ($key * 3 + 5), $val['line_recharge']['alipay_recharge']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 3] . ($key * 3 + 5), $val['line_recharge']['cash_recharge']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 1] . ($key * 3 + 7), $val['line_recharge']['wechat_give']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 2] . ($key * 3 + 7), $val['line_recharge']['alipay_give']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + 3] . ($key * 3 + 7), $val['line_recharge']['cash_give']);
|
|
|
|
|
|
$z = 1;
|
|
$key_index += 3;
|
|
foreach ($val['update_balance'] as $update_balance) {
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells($cellName[$key_index + $z] . ($key * 3 + 5) . ':' . $cellName[$key_index + $z] . ($key * 3 + 7)); //合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$key_index + $z] . ($key * 3 + 5), $update_balance);
|
|
$z++;
|
|
}
|
|
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A' . ($key * 3 + 5) . ':' . $cellName[$key_index + $z - 1] . ($key * 3 + 7))->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
|
|
if (($key * 3 + 3) % 6 == 0 || ($key * 3 + 4) % 6 == 0 || ($key * 3 + 5) % 6 == 0) {
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A' . ($key * 3 + 5) . ':' . $cellName[$key_index + $z - 1] . ($key * 3 + 7))->getFill()->getStartColor()->setARGB('FFF9FAFC');
|
|
} else {
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A' . ($key * 3 + 5) . ':' . $cellName[$key_index + $z - 1] . ($key * 3 + 7))->getFill()->getStartColor()->setARGB('FFFFFFFF');
|
|
}
|
|
}
|
|
$styleThinBlackBorderOutline = array(
|
|
'borders' => array(
|
|
'allborders' => array( //allborders 表示全部线框
|
|
'style' => \PHPExcel_Style_Border::BORDER_THIN, //设置border样式
|
|
'color' => array('argb' => 'FFDDDDDD'), //设置border颜色
|
|
),
|
|
),
|
|
);
|
|
$storeNum = count($expTableData);
|
|
$count = ($storeNum * 3) + 5;
|
|
foreach ($cellName as $key => $value) {
|
|
if ($key > $all_key_index) {
|
|
break;
|
|
}
|
|
for ($i = 2; $i <= 4; $i++) {
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $i)->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $i)->getFill()->getStartColor()->setARGB('FFF3F9FF');
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $i)->getFont()->getColor()->setARGB('FF333333');
|
|
$objPHPExcel->getActiveSheet()->getRowDimension($i)->setRowHeight('30');
|
|
$objPHPExcel->getActiveSheet()->getStyle($value . $i)->applyFromArray($styleThinBlackBorderOutline);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $i)->getFont()->setBold(true);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $i)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
|
|
}
|
|
if ($storeNum) {
|
|
for ($j = 5; $j <= $count; $j++) {
|
|
if ($key < 7 && ($j - 2) % 3 == 0) {
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $j)->getFont()->setBold(true);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $j)->getFont()->getColor()->setARGB('FF333333');
|
|
} else {
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $j)->getFont()->getColor()->setARGB('FF666666');
|
|
}
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $j)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle($value . $j)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
|
|
$objPHPExcel->getActiveSheet()->getStyle($value . $j)->applyFromArray($styleThinBlackBorderOutline);
|
|
$objPHPExcel->getActiveSheet()->getRowDimension($j)->setRowHeight('30');
|
|
}
|
|
}
|
|
|
|
$objPHPExcel->getActiveSheet()->getColumnDimension($value)->setWidth(20);
|
|
}
|
|
|
|
header('pragma:public');
|
|
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $filename . '.xls"');
|
|
header("Content-Disposition:attachment;filename=$_fileName.xls"); //attachment新窗口打印inline本窗口打印
|
|
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
|
|
$objWriter->save('php://output');
|
|
exit();
|
|
}
|
|
|
|
public function exportTable()
|
|
{
|
|
$table_name = I('get.table_name');
|
|
if (empty($table_name)) {
|
|
exit;
|
|
}
|
|
$Model = new \Think\Model();
|
|
$exist = M()->query("show tables like '" . $table_name . "'");
|
|
if (!$exist) {
|
|
exit;
|
|
}
|
|
$table = $Model->query("select * from information_schema.columns where table_name='" . $table_name . "' and table_schema='csls'");
|
|
$tempArr = array();
|
|
foreach ($table as $key => $value) {
|
|
$temp = array(
|
|
'index' => ($key + 1),
|
|
'column_name' => $value['column_name'], //字段名
|
|
'column_key' => $value['column_key'] == 'PRI' ? '是' : '', //是否主键
|
|
'is_nullable' => $value['is_nullable'] == 'YES' ? '是' : '否', //是否为空
|
|
'column_type' => $value['column_type'], //字段类型
|
|
'column_comment' => $value['column_comment'], //注释
|
|
);
|
|
$tempArr[] = $temp;
|
|
}
|
|
$filename = $table_name . "表";
|
|
import("Vendor.PHPExcel.PHPExcel");
|
|
import("Vendor.PHPExcel.Writer.Excel5");
|
|
import("Vendor.PHPExcel.IOFactory.php");
|
|
$headArr = array(
|
|
array('index', '序号'),
|
|
array('column_name', '字段名'),
|
|
array('column_key', '主键'),
|
|
array('is_nullable', '是否为空'),
|
|
array('column_type', '类型'),
|
|
array('column_comment', '注释'),
|
|
);
|
|
$title = $filename . ',导出日期:' . date('Y-m-d H:i:s');
|
|
$this->getExcel($filename, $headArr, $tempArr, $title);
|
|
}
|
|
|
|
/**
|
|
* 文件导出封装
|
|
* 2020/8/14
|
|
* @param string $directory_name
|
|
* @param string $name
|
|
* @return array
|
|
*/
|
|
public function fileZipAddToDel($directory_name, $name)
|
|
{
|
|
$zip = new \ZipArchive();
|
|
if (!$directory_name) {
|
|
return ['status' => 0, 'msg' => '缺少参数'];
|
|
}
|
|
if (is_dir($directory_name)) {
|
|
$dir = ltrim($directory_name, './');
|
|
$arr = explode('/', $dir);
|
|
unset($arr[count($arr) - 1]);
|
|
$zipName = implode('/', $arr);
|
|
$zip_url = './' . $zipName . '/' . $name . date('Y-m-d-H-i-s') . '.zip';
|
|
if ($zip->open($zip_url, \ZipArchive::CREATE) === TRUE) {
|
|
|
|
$this->addFileToZip($dir, $zip, $name); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
|
|
$zip->close(); //关闭处理的zip文件
|
|
|
|
if (!file_exists($zip_url)) { //判断文件是否存在
|
|
return ['status' => 0, 'msg' => '文件不存在'];
|
|
}
|
|
$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);
|
|
|
|
$this->delDirFile($directory_name); //删除文件夹下的所有文件
|
|
rmdir($directory_name); //删除当前文件夹
|
|
unlink($zip_url); //删除压缩包
|
|
|
|
return ['status' => 1, 'msg' => '文件导出成功'];
|
|
}
|
|
} else {
|
|
return ['status' => 0, 'msg' => '文件不存在'];
|
|
}
|
|
}
|
|
}
|