=0)$where['settlementStatus'] = (int)input('isFinish'); return Db::name('settlements')->alias('s')->where($where)->order('settlementId', 'desc') ->paginate(input('pagesize/d')); } /** * 获取未结算订单列表 */ public function pageUnSettledQuery(){ $where = []; if(input('orderNo')!='')$where['orderNo'] = ['like','%'.input('orderNo').'%']; $where['dataFlag'] = 1; $where['orderStatus'] = 2; $where['settlementId'] = 0; $where['shopId'] = (int)session('WST_USER.shopId'); $page = Db::name('orders')->where($where)->order('orderId', 'desc') ->field('orderId,orderNo,createTime,payType,goodsMoney,deliverMoney,totalMoney,commissionFee,realTotalMoney') ->paginate(input('pagesize/d'))->toArray(); if(count($page['Rows'])){ foreach ($page['Rows'] as $key => $v) { $page['Rows'][$key]['payTypeNames'] = WSTLangPayType($v['payType']); } } return $page; } /** * 结算指定的订单 */ public function settlement(){ $shopId = (int)session('WST_USER.shopId'); $ids = input('ids'); $where['dataFlag'] = 1; $where['orderStatus'] = 2; $where['settlementId'] = 0; $where['orderId'] = ['in',$ids]; $where['shopId'] = $shopId; $orders = Db::name('orders')->where($where)->field('orderId,payType,realTotalMoney,scoreMoney,commissionFee')->select(); if(empty($orders))return WSTReturn('没有需要结算的订单,请刷新后再核对!'); $settlementMoney = 0; $commissionFee = 0; //平台要收的佣金 $ids = []; foreach ($orders as $key => $v) { $ids[] = $v['orderId']; if($v['payType']==1){ $settlementMoney += $v['realTotalMoney']+$v['scoreMoney']; }else{ $settlementMoney += $v['scoreMoney']; } $commissionFee += abs($v['commissionFee']); } $shops = model('shops')->get($shopId); if(empty($shops))WSTReturn('无效的店铺结算账号!'); Db::startTrans(); try{ $areaNames = model('areas')->getParentNames($shops['bankAreaId']); $data = []; $data['settlementType'] = 0; $data['shopId'] = $shopId; $data['settlementMoney'] = $settlementMoney; $data['commissionFee'] = $commissionFee; $data['backMoney'] = $settlementMoney-$commissionFee; $data['settlementStatus'] = 0; $data['createTime'] = date('Y-m-d H:i:s'); $data['settlementNo'] = ''; $result = $this->save($data); if(false !== $result){ $this->settlementNo = $this->settlementId.(fmod($this->settlementId,7)); $this->save(); Db::name('orders')->where(['orderId'=>['in',$ids]])->update(['settlementId'=>$this->settlementId]); //修改商家订单情况 $commissionFee = -1*$commissionFee;//平台要收的佣金就等于商家要付的钱 $shops->noSettledOrderNum = $shops->noSettledOrderNum-count($orders); $shops->paymentMoney = $shops->paymentMoney + $commissionFee; $shops->noSettledOrderFee = $shops->noSettledOrderFee-$commissionFee; $shops->save(); Db::commit(); return WSTReturn('提交结算申请成功,请留意结算信息~',1); } }catch (\Exception $e) { Db::rollback();errLog($e); } return WSTReturn('提交结算申请失败',-1); } /** * 获取已结算订单 */ public function pageSettledQuery(){ $where = []; if(input('settlementNo')!='')$where['settlementNo'] = ['like','%'.input('settlementNo').'%']; if(input('orderNo')!='')$where['orderNo'] = ['like','%'.input('orderNo').'%']; if((int)input('isFinish')>=0)$where['settlementStatus'] = (int)input('isFinish'); $where['dataFlag'] = 1; $where['orderStatus'] = 2; $where['o.shopId'] = (int)session('WST_USER.shopId'); $page = Db::name('orders')->alias('o') ->join('__SETTLEMENTS__ s','o.settlementId=s.settlementId') ->join('__PAYMENTS__ p','o.payFrom=p.payCode')->where($where) ->field('orderId,orderNo,payType,goodsMoney,deliverMoney,totalMoney,o.commissionFee,realTotalMoney,s.settlementTime,s.settlementNo,p.payName')->order('s.settlementTime desc')->paginate(input('pagesize/d'))->toArray(); if(count($page['Rows'])){ foreach ($page['Rows'] as $key => $v) { $page['Rows'][$key]['commissionFee'] = abs($v['commissionFee']); $page['Rows'][$key]['payTypeNames'] = WSTLangPayType($v['payType']); } } return $page; } /** * 获取结算订单详情 */ public function getById(){ $shopId = (int)session('WST_USER.shopId'); $settlementId = (int)input('id'); $object = Db::name('settlements')->alias('st')->where(['settlementId'=>$settlementId,'st.shopId'=>$shopId])->join('__SHOPS__ s','s.shopId=st.shopId','left')->field('s.shopName,st.*')->find(); if(!empty($object)){ $object['list'] = Db::name('orders')->where(['settlementId'=>$settlementId]) ->field('orderId,orderNo,payType,goodsMoney,deliverMoney,realTotalMoney,totalMoney,scoreMoney,commissionFee,createTime') ->order('payType desc,orderId desc')->select(); } return $object; } /** * 导出订单 */ public function toExport(){ $name='已结算订单表'; $where = []; if(input('settlementNo')!='')$where['settlementNo'] = ['like','%'.input('settlementNo').'%']; if(input('orderNo')!='')$where['orderNo'] = ['like','%'.input('orderNo').'%']; if((int)input('isFinish')>=0)$where['settlementStatus'] = (int)input('isFinish'); $where['dataFlag'] = 1; $where['orderStatus'] = 2; $where['o.shopId'] = (int)session('WST_USER.shopId'); $page = Db::name('orders')->alias('o') ->join('__SETTLEMENTS__ s','o.settlementId=s.settlementId') ->join('__PAYMENTS__ p','o.payFrom=p.payCode')->where($where) ->field('orderId,orderNo,payType,goodsMoney,deliverMoney,totalMoney,o.commissionFee,realTotalMoney,s.settlementTime,s.settlementNo,p.payName')->order('s.settlementTime desc')->select(); if(count($page)){ foreach ($page as $key => $v) { $page[$key]['commissionFee'] = abs($v['commissionFee']); $page[$key]['payTypeNames'] = WSTLangPayType($v['payType']); } } Loader::import('phpexcel.PHPExcel.IOFactory'); $objPHPExcel = new \PHPExcel(); // 设置excel文档的属性 $objPHPExcel->getProperties()->setCreator("WSTMart")//创建人 ->setLastModifiedBy("WSTMart")//最后修改人 ->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(12); $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(25); $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(30); $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(30); $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(20); $objPHPExcel->getActiveSheet()->getStyle('A1:N1')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID); $objPHPExcel->getActiveSheet()->getStyle('A1:N1')->getFill()->getStartColor()->setARGB('333399'); $objPHPExcel->getActiveSheet()->setCellValue('A1', '订单编号')->setCellValue('B1', '支付方式')->setCellValue('C1', '商品总金额')->setCellValue('D1', '运费')->setCellValue('E1', '订单总金额') ->setCellValue('F1', '实付金额')->setCellValue('G1', '应付佣金')->setCellValue('H1', '结算方式')->setCellValue('I1', '结算单号')->setCellValue('J1', '结算时间'); $objPHPExcel->getActiveSheet()->getStyle('A1:J1')->applyFromArray($styleArray); for ($row = 0; $row < count($page); $row++){ $i = $row+2; $objPHPExcel->getActiveSheet() ->setCellValue('A'.$i, $page[$row]['orderNo']) ->setCellValue('B'.$i, $page[$row]['payTypeNames']) ->setCellValue('C'.$i, $page[$row]['goodsMoney']) ->setCellValue('D'.$i, $page[$row]['deliverMoney']) ->setCellValue('E'.$i, $page[$row]['totalMoney']) ->setCellValue('F'.$i, $page[$row]['realTotalMoney']) ->setCellValue('G'.$i, $page[$row]['commissionFee']) ->setCellValue('H'.$i, $page[$row]['payName']) ->setCellValue('I'.$i, $page[$row]['settlementNo']) ->setCellValue('J'.$i, $page[$row]['settlementTime']); } //输出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'); } }