love_php/app/Exports/Sheets/LoveIncomDetail.php

80 lines
3.0 KiB
PHP
Raw Normal View History

2026-04-02 09:20:51 +08:00
<?php
namespace App\Exports\Sheets;
use App\Models\Order;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Concerns\WithStrictNullComparison;
use Maatwebsite\Excel\Concerns\WithTitle;
use Maatwebsite\Excel\Events\AfterSheet;
class LoveIncomDetail implements FromCollection, WithTitle, WithEvents, WithStrictNullComparison, ShouldAutoSize
{
protected $start_date, $end_date;
public function __construct($start_date, $end_date)
{
$this->start_date = $start_date;
$this->end_date = $end_date;
}
public function collection()
{
$start_date = $this->start_date;
$end_date = $this->end_date;
Log::info($start_date.'---'.$end_date);
$orders = Order::with('refundOrders')->where('pay_status','PAID')->whereBetween('created_at', [$start_date, $end_date])->get();
$rows = [
["深圳福恋智能信息科技有限公司
友福小程序会员收入明细表", '', '', '', '','','','',''],
['ID',"订单号", '商品名册好难过', '订单金额', '订单退款金额', '微信上手续费', '提现手续费', '订单时间', '月份']
];
$sum = 0;
foreach ($orders as $order) {
$refund_price = $order->refundOrders->sum('refund_fee');
$sum += $order->price;
$rows[] = [$order->id, $order->trade_no, $order->goods,$order->price, $refund_price, 0.006, 0, $order->created_at, date('m', strtotime($start_date))];
}
return collect($rows);
}
public function registerEvents(): array
{
return [
AfterSheet::class => function(AfterSheet $event) {
//设置列宽
$arr = ['B','C','D','E','F',"G","H",'I'];
foreach ($arr as $value) {
$event->sheet->getDelegate()->getColumnDimension($value)->setWidth(20);
}
//自动换行
$event->sheet->getStyle("A1:F1")->getAlignment()->setWrapText(TRUE);
$event->sheet->getDelegate()->getRowDimension(1)->setRowHeight(50);
// //设置行高,$i为数据行数
for ($i = 2; $i<=1265; $i++) {
$event->sheet->getDelegate()->getRowDimension($i)->setRowHeight(30);
}
// //设置区域单元格垂直居中
$event->sheet->getDelegate()->getStyle('A1:K1265')->getAlignment()->setVertical('center');
// //设置区域单元格水平居中
$event->sheet->getDelegate()->getStyle('A1:K1265')->getAlignment()->setHorizontal('center');
//合并单元格
$event->sheet->getDelegate()->mergeCells('A1:I1');
}
];
}
/**
* @return string
*/
public function title(): string
{
return '友福小程序会员收入明细';
}
}