<?php

declare (strict_types=1);

namespace app\command;

use think\facade\Db;
use app\api\model\User;
use app\api\model\dealer\User as DealerUserModel;
use think\console\Input;
use think\console\Output;
use app\api\model\PreSale;
use think\console\Command;
use app\api\model\PreSaleLog;
use app\api\model\PreSaleMessage;
use app\api\model\{Goods as GoodsModel};
use app\common\enum\user\UserTypeEnum;


//    /www/server/php/74/bin/php /server/wwwroot/yanzong/think CalDealerTime
class CalDealerTime extends Command
{
    protected function configure()
    {
        // 指令配置
        $this->setName('CalDealerTime')
            ->setDescription('自动计算分销时间');
    }

    protected function execute(Input $input, Output $output)
    {
        //todo wmc这边代码需要优化
        //$list = User::where('status', 1)
        $list = User::where('user_type', 'in', [UserTypeEnum::MEMBER,UserTypeEnum::DEALER])
            ->where('is_delete', '=', 0)
            //->where('store_id',10001)
            ->select();
            // print '<pre>';
            // print_r($list->toArray());
            // print '</pre>';
            // die;
        $del_fx_user_ids = [];  
        $del_hy_user_ids = [];   
        foreach ($list as $item) {
            //如果分销商到期,改成会员;并且删除分销商
            if(isset($item['fx_effective_time']) && strtotime($item['fx_effective_time']) <= strtotime(date('Y-m-d'))){
                $del_fx_user_ids[] = $item['user_id'];
                // User::where('user_id',$item['user_id'])->update([
                //     'user_type'=>UserTypeEnum::MEMBER
                // ]);
                // //分销商表软删除
                // DealerUserModel::where('user_id',$item['user_id'])->update(['is_delete'=>1]);
            }
            //如果会员到期,分销商到期了,改成普通用户
            if((strtotime($item['effective_time']) <= strtotime(date('Y-m-d'))) && (isset($item['fx_effective_time']) && strtotime($item['fx_effective_time']) <= strtotime(date('Y-m-d')))){
                $del_hy_user_ids[] = $item['user_id'];
                // User::where('user_id',$item['user_id'])->update([
                //     'user_type'=>UserTypeEnum::NORMAL
                // ]);
            }
            //如果会员到期,分销商根本没有,改成普通用户
            if((strtotime($item['effective_time']) <= strtotime(date('Y-m-d'))) && !isset($item['fx_effective_time'])){
                $del_hy_user_ids[] = $item['user_id'];
                // User::where('user_id',$item['user_id'])->update([
                //     'user_type'=>UserTypeEnum::NORMAL
                // ]);
            }

        }
        //var_dump([$del_fx_user_ids, $del_hy_user_ids]);die;
        Db::transaction(function () use ($del_fx_user_ids, $del_hy_user_ids) {
            //如果分销商到期,改成会员;并且删除分销商
            User::whereIn('user_id',$del_fx_user_ids)->update([
                'user_type'=>UserTypeEnum::MEMBER
            ]);
            //分销商表软删除
            DealerUserModel::whereIn('user_id',$del_fx_user_ids)->update(['is_delete'=>1]);

            //如果会员到期,分销商到期了/根本没有,改成普通用户
            User::whereIn('user_id',$del_hy_user_ids)->update([
                    'user_type'=>UserTypeEnum::NORMAL
                ]);

        });


    }


}