110 lines
3.2 KiB
PHP
Executable File
110 lines
3.2 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Console\Commands\Report;
|
|
|
|
use App\Model\Order;
|
|
use App\Model\Report\ReportDaySeller;
|
|
use App\Model\Seller\Seller;
|
|
use App\Model\Seller\ShopBill;
|
|
use App\Utils\Helps;
|
|
use Illuminate\Console\Command;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class GenerateDaySeller extends Command
|
|
{
|
|
/**
|
|
* 这个就是命令名称
|
|
*/
|
|
protected $signature = 'report:generate_day_seller {cdate?}';
|
|
|
|
/**
|
|
* 命令的说明描述
|
|
* @var string
|
|
*/
|
|
protected $description = '';
|
|
|
|
/**
|
|
* 创建命令的构造方法。
|
|
* @param string $words 传入的字符参数
|
|
* @return void
|
|
*/
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
}
|
|
|
|
/**
|
|
* 命令的具体执行触发方法
|
|
* @return mixed
|
|
*/
|
|
public function handle()
|
|
{
|
|
$cdate = $this->argument('cdate');
|
|
if (!$cdate) {
|
|
$cdate = date('Ymd', strtotime('-1 day'));
|
|
}
|
|
|
|
Seller::chunkById(500, function ($sellers) use ($cdate) {
|
|
foreach ($sellers as $seller) {
|
|
$this->report($seller, $cdate);
|
|
}
|
|
});
|
|
}
|
|
|
|
public function report(Seller $seller, $cdate)
|
|
{
|
|
$chupiaoMoneyRow = Order::select([
|
|
DB::raw('sum(IF(type = 3, union_money, money)) as m')
|
|
])
|
|
->usable()
|
|
->where('draft_date', $cdate)
|
|
->where('draft_user_id', $seller->id)
|
|
->first();
|
|
$chupiaoMoney = $chupiaoMoneyRow ? $chupiaoMoneyRow->m : 0;
|
|
$sendMoneyRow = Order::select([
|
|
DB::raw('sum(IF(type = 3, union_send_prize, lottery_send_prize)) as m')
|
|
])
|
|
->usable()
|
|
->where('send_date', $cdate)
|
|
->where('send_user_id', $seller->id)
|
|
->first();
|
|
$sendMoney = $sendMoneyRow ? $sendMoneyRow->m : 0;
|
|
|
|
$winMoneyRow = Order::select([
|
|
DB::raw('sum(IF(type = 3, union_should_send_prize, lottery_should_send_prize)) as m')
|
|
])
|
|
->usable()
|
|
->where('draft_date', $cdate)
|
|
->where('draft_user_id', $seller->id)
|
|
->first();
|
|
$winMoney = $winMoneyRow ? $winMoneyRow->m : 0;
|
|
|
|
$incrMoney = ShopBill::where('created_date', $cdate)
|
|
->where('type', ShopBill::TYPE_SELLER_INCR)
|
|
->where('seller_id', $seller->id)
|
|
->sum('money');
|
|
|
|
$reduceMoney = ShopBill::where('created_date', $cdate)
|
|
->where('type', ShopBill::TYPE_SELLER_REDUCE)
|
|
->where('seller_id', $seller->id)
|
|
->sum('money');
|
|
|
|
$report = ReportDaySeller::where('seller_id', $seller->id)
|
|
->where('cdate', $cdate)
|
|
->first();
|
|
if (!$report) {
|
|
$report = new ReportDaySeller();
|
|
}
|
|
$report->seller_id = $seller->id;
|
|
$report->shop_id = $seller->shop_id;
|
|
$report->cdate = $cdate;
|
|
$report->chupiao_money = Helps::floatFormat($chupiaoMoney);
|
|
$report->send_prize = Helps::floatFormat($sendMoney);
|
|
$report->win_prize = Helps::floatFormat($winMoney);
|
|
$report->incr_money = Helps::floatFormat($incrMoney);
|
|
$report->reduce_money = Helps::floatFormat($reduceMoney);
|
|
$report->save();
|
|
return $report;
|
|
}
|
|
}
|