123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <?php
- /**
- * Created by PhpStorm.
- * User: songdb
- * Date: 2017/12/26
- * Time: 下午5:26
- */
- namespace App\Console\Commands\Trade;
- use App\Modules\Trade\Models\OrderStat;
- use App\Modules\Trade\Services\OrderStatService;
- use App\Modules\Channel\Services\ChannelService;
- use Log;
- use DB;
- use Illuminate\Console\Command;
- class GenerateOrderStat extends Command
- {
- /**
- * 执行命令 php artisan generate_order_stat
- *
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'generate_order_stat';
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = '渠道订单统计数据生成';
- /**
- * Execute the console command.
- *
- * @return mixed
- */
- public function handle()
- {
- print_r("======渠道订单统计数据生成 【任务执行开始】=====".date("y-m-d H:i:s"."\n"));
- Log::info("======渠道订单统计数据生成 【任务执行开始】=====".date("y-m-d H:i:s"."\n"));
- $channels = ChannelService::getAllChannels();
- $date = date('Y-m-d',strtotime('-1 day'));
- if(count($channels))
- {
- $channels->each(function($channel) use($date){
- OrderStatService::add($channel->id, $date);
- try{
- $this->GenerateSeasonOrderStat($channel->id, $date);
- }catch (\Exception $e){
- }
- });
- }
- Log::info("======渠道订单统计数据生成 【任务执行结束】=====".date("y-m-d H:i:s"."\n"));
- print_r("======渠道订单统计数据生成 【任务执行结束】=====".date("y-m-d H:i:s"."\n"));
- }
- public function GenerateSeasonOrderStat($distribution_channel_id,$date){
- $result = OrderStat::where('distribution_channel_id',$distribution_channel_id)->first();
- if(!$result) return ;
- //Or
- $sql_format = "SELECT `status`,count(*) as num,sum(price) as amount FROM orders WHERE distribution_channel_id = %s and created_at >= '%s' and created_at <='%s' and order_type = 'QUARTER' GROUP BY `status`";
- $sql = sprintf($sql_format,$distribution_channel_id,$date,$date.' 23:59:59');
- $season_result = DB::select($sql);
- $amount = 0;
- $paid_num = 0;
- $unpaid_num = 0;
- if($season_result){
- foreach ($season_result as $item){
- if($item->status == 'PAID'){
- $paid_num = $item->num;
- $amount = $item->amount;
- }
- if($item->status == 'UNPAID'){
- $unpaid_num = $item->num;
- }
- }
- }
- $result->yesterday_season_recharge_amount = $amount;
- $result->yesterday_season_recharge_paid_num = $paid_num;
- $result->yesterday_season_recharge_unpaid_num = $unpaid_num;
- if(date('d',strtotime($date)) == '01'){
- $result->last_month_season_recharge_amount = $result->current_month_season_recharge_amount;
- $result->last_month_season_recharge_paid_num = $result->current_month_season_recharge_paid_num;
- $result->last_month_season_recharge_unpaid_num = $result->current_month_season_recharge_unpaid_mum;
- $result->current_month_season_recharge_amount = $amount;
- $result->current_month_season_recharge_paid_num = $paid_num;
- $result->current_month_season_recharge_unpaid_num = $unpaid_num;
- }else{
- $result->current_month_season_recharge_amount += $amount;
- $result->current_month_season_recharge_paid_num += $paid_num;
- $result->current_month_season_recharge_unpaid_num += $unpaid_num;
- }
- $result->save();
- }
- }
|