Files
addons
app_download_files
extend
hyhproject
admin
app
common
home
home2
behavior
common
conf
controller
model
Articles.php
Attributes.php
Base.php
Goods.php
GoodsVirtuals.php
HomeMenus.php
Imports.php
Reports.php
Settlements.php
ShopConfigs.php
ShopFreights.php
ShopRoles.php
ShopUsers.php
Shops.php
SpecItems.php
Users.php
validate
view
mobile2
wechat2
.htaccess
command.php
mobile
oss
static
thinkphp
upload
vendor
wxtmp
.gitignore
.htaccess
.user.ini
404.html
H5436787D.wgt
admin.php
app-release.apk
app_download.html
cash.lock
demo.php
get_version.php
get_version_new.php
index.html
index.php
reg.lock
robots.txt
qlg.tsgz.moe/hyhproject/home2/model/Settlements.php
2019-09-06 23:53:10 +08:00

246 lines
12 KiB
PHP
Executable File

<?php
namespace wstmart\home\model;
use think\Db;
use think\Loader;
/**
* ============================================================================
* 结算类
*/
class Settlements extends Base{
/**
* 获取已结算的结算单列表
*/
public function pageQuery(){
$shopId = (int)session('WST_USER.shopId');
$where = [];
$where['shopId'] = $shopId;
if(input('settlementNo')!='')$where['settlementNo'] = ['like','%'.input('settlementNo').'%'];
if((int)input('isFinish')>=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');
}
}