You've already forked qlg.tsgz.moe
							
							
		
			
				
	
	
		
			159 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
<?php
 | 
						|
namespace wstmart\admin\model;
 | 
						|
use think\Db;
 | 
						|
use think\Loader;
 | 
						|
/**
 | 
						|
 * ============================================================================
 | 
						|
 * 商品类
 | 
						|
 */
 | 
						|
class Carts extends Base{
 | 
						|
     /**
 | 
						|
      *  购物车列表
 | 
						|
      */
 | 
						|
	public function cartsByPage(){
 | 
						|
		$shopName=input('shopName');
 | 
						|
		$loginName=input('loginName');
 | 
						|
		$goodsName=input('goodsName');
 | 
						|
		$where = [];
 | 
						|
		$where['g.goodsStatus'] = 1;
 | 
						|
		$where['g.dataFlag'] = 1;
 | 
						|
		$where['g.isSale'] = 1;
 | 
						|
		if($shopName!="")$where['shopName']=['like',"%$shopName%"];
 | 
						|
		if($loginName!="")$where['loginName']=['like',"%$loginName%"];
 | 
						|
		if($goodsName!="")$where['goodsName']=['like',"%$goodsName%"];
 | 
						|
		$result=$this->alias('c')
 | 
						|
		->join('__USERS__ u','u.userId=c.userId','left')
 | 
						|
		->join('__GOODS__ g','g.goodsId=c.goodsId','left')
 | 
						|
		->join('__SHOPS__ s','s.shopId=g.shopId','left')
 | 
						|
		->where($where)
 | 
						|
		->field('u.loginName,shopPrice,sum(cartNum)cartNum,goodsName,shopName,goodsImg,goodsCatIdPath,g.goodsId')
 | 
						|
		->order('cartNum desc')
 | 
						|
		->group('u.userId,g.goodsId')
 | 
						|
		->paginate(input('limit/d'))->toArray();
 | 
						|
		$keyCats = model('GoodsCats')->listKeyAll();
 | 
						|
		foreach ($result['Rows'] as $key => $v){
 | 
						|
			$result['Rows'][$key]['totalPrice']=$v['cartNum']*$v['shopPrice'];
 | 
						|
			$result['Rows'][$key]['goodsCatName'] = self::getGoodsCatNames($v['goodsCatIdPath'],$keyCats);
 | 
						|
		}
 | 
						|
		return $result;
 | 
						|
	}
 | 
						|
	public function getGoodsCatNames($goodsCatPath, $keyCats){
 | 
						|
		$catIds = explode("_",$goodsCatPath);
 | 
						|
		$catNames = array();
 | 
						|
		for($i=0,$k=count($catIds);$i<$k;$i++){
 | 
						|
			if($catIds[$i]=='')continue;
 | 
						|
			if(isset($keyCats[$catIds[$i]]))$catNames[] = $keyCats[$catIds[$i]];
 | 
						|
		}
 | 
						|
		return implode("→",$catNames);
 | 
						|
	}
 | 
						|
	//导出数据
 | 
						|
	public function toExport(){
 | 
						|
		$name='购物车数据';
 | 
						|
		$shopName=input('shopName');
 | 
						|
		$loginName=input('loginName');
 | 
						|
		$goodsName=input('goodsName');
 | 
						|
		$where = [];
 | 
						|
		$where['g.goodsStatus'] = 1;
 | 
						|
		$where['g.dataFlag'] = 1;
 | 
						|
		$where['g.isSale'] = 1;
 | 
						|
		if($shopName!="")$where['shopName']=['like',"%$shopName%"];
 | 
						|
		if($loginName!="")$where['loginName']=['like',"%$loginName%"];
 | 
						|
		if($goodsName!="")$where['goodsName']=['like',"%$goodsName%"];
 | 
						|
		$page=$this->alias('c')
 | 
						|
		->join('__USERS__ u','u.userId=c.userId','left')
 | 
						|
		->join('__GOODS__ g','g.goodsId=c.goodsId','left')
 | 
						|
		->join('__SHOPS__ s','s.shopId=g.shopId','left')
 | 
						|
		->where($where)
 | 
						|
		->field('u.loginName,shopPrice,sum(cartNum)cartNum,goodsName,shopName,goodsImg,goodsCatIdPath,g.goodsId')
 | 
						|
		->order('cartNum desc')
 | 
						|
		->group('u.userId,g.goodsId')
 | 
						|
		->select();
 | 
						|
		// dump($page);
 | 
						|
		$keyCats = model('GoodsCats')->listKeyAll();
 | 
						|
		foreach ($page as $key => $v){
 | 
						|
			$page[$key]['totalPrice']=$v['cartNum']*$v['shopPrice'];
 | 
						|
			$page[$key]['goodsCatName'] = self::getGoodsCatNames($v['goodsCatIdPath'],$keyCats);
 | 
						|
		}
 | 
						|
		Loader::import('phpexcel.PHPExcel.IOFactory');
 | 
						|
        $objPHPExcel = new \PHPExcel();
 | 
						|
        // 设置excel文档的属性
 | 
						|
        $objPHPExcel->getProperties()->setCreator("heyuanhui")//创建人
 | 
						|
        ->setLastModifiedBy("heyuanhui")//最后修改人
 | 
						|
        ->setTitle($name)//标题
 | 
						|
        ->setSubject($name)//题目
 | 
						|
        ->setDescription($name)//描述
 | 
						|
        ->setKeywords("订单")//关键字
 | 
						|
        ->setCategory("Test result file");//种类
 | 
						|
    
 | 
						|
        // 开始操作excel表
 | 
						|
        $objPHPExcel->setActiveSheetIndex(0);
 | 
						|
        // 设置工作薄名称
 | 
						|
        $objPHPExcel->getActiveSheet()->setTitle(iconv('gbk', 'utf-8', 'Sheet'));
 | 
						|
        // 设置默认字体和大小
 | 
						|
        $objPHPExcel->getDefaultStyle()->getFont()->setName(iconv('gbk', 'utf-8', ''));
 | 
						|
        $objPHPExcel->getDefaultStyle()->getFont()->setSize(11);
 | 
						|
        $styleArray = array(
 | 
						|
                'font' => array(
 | 
						|
                        'bold' => true,
 | 
						|
                        'color'=>array(
 | 
						|
                                'argb' => 'ffffffff',
 | 
						|
                        )
 | 
						|
                ),
 | 
						|
                'borders' => array (
 | 
						|
                        'outline' => array (
 | 
						|
                                'style' => \PHPExcel_Style_Border::BORDER_THIN,  //设置border样式
 | 
						|
                                'color' => array ('argb' => 'FF000000'),     //设置border颜色
 | 
						|
                        )
 | 
						|
                )
 | 
						|
        );
 | 
						|
        //设置宽
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(55);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(40);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getStyle('A1:H1')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
 | 
						|
        $objPHPExcel->getActiveSheet()->getStyle('A1:H1')->getFill()->getStartColor()->setARGB('333399');
 | 
						|
        
 | 
						|
        $objPHPExcel->getActiveSheet()
 | 
						|
                                ->setCellValue('A1', '用户名称')
 | 
						|
                                ->setCellValue('B1', '商品名称')
 | 
						|
                                ->setCellValue('C1', '购物车数量')
 | 
						|
                                ->setCellValue('D1', '单品价格')
 | 
						|
                                ->setCellValue('E1', '总价')
 | 
						|
                                ->setCellValue('F1', '所属店铺')
 | 
						|
                                ->setCellValue('G1', '所属分类');
 | 
						|
        $objPHPExcel->getActiveSheet()->getStyle('A1:G1')->applyFromArray($styleArray);
 | 
						|
    
 | 
						|
        for ($row = 0; $row < count($page); $row++){
 | 
						|
            $i = $row+2;
 | 
						|
            $objPHPExcel->getActiveSheet()
 | 
						|
                                ->setCellValue('A'.$i, $page[$row]['loginName'])
 | 
						|
                                ->setCellValue('B'.$i, $page[$row]['goodsName'])
 | 
						|
                                ->setCellValue('C'.$i, $page[$row]['cartNum'])
 | 
						|
                                ->setCellValue('D'.$i, $page[$row]['shopPrice'])
 | 
						|
                                ->setCellValue('E'.$i, $page[$row]['totalPrice'])
 | 
						|
                                ->setCellValue('F'.$i, $page[$row]['shopName'])
 | 
						|
                                ->setCellValue('G'.$i, $page[$row]['goodsCatName']);
 | 
						|
 | 
						|
        }
 | 
						|
        //输出EXCEL格式
 | 
						|
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
 | 
						|
        // 从浏览器直接输出$filename
 | 
						|
        header('Content-Type:application/csv;charset=UTF-8');
 | 
						|
        header("Pragma: public");
 | 
						|
        header("Expires: 0");
 | 
						|
        header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
 | 
						|
        header("Content-Type:application/force-download");
 | 
						|
        header("Content-Type:application/vnd.ms-excel;");
 | 
						|
        header("Content-Type:application/octet-stream");
 | 
						|
        header("Content-Type:application/download");
 | 
						|
        header('Content-Disposition: attachment;filename="'.$name.'.xls"');
 | 
						|
        header("Content-Transfer-Encoding:binary");
 | 
						|
        $objWriter->save('php://output');
 | 
						|
	}
 | 
						|
}
 |