| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | <?php/** * Created by PhpStorm. * User: tandunzhao * Date: 2017/11/20 * Time: 下午5:26 */namespace App\Console\Commands;use App\Modules\Book\Models\Book;use App\Modules\Subscribe\Services\BookOrderService;use App\Modules\User\Services\ReadRecordService;use DB;use Illuminate\Console\Command;use Log;class WholeBookOrderData extends Command{    /**     * 执行命令 检查图书封面     *     * The name and signature of the console command.     *     * @var string     */    protected $signature = 'wholeBookOrderData';    /**     * The console command description.     *     * @var string     */    protected $description = '整本书订购的统计';    /**     * Execute the console command.     *     * @return mixed     */    public function handle()    {        Log::info('wholeBookOrderData start command');        $this->loadWholeBookOrderInfo();        Log::info('wholeBookOrderData end command');    }    function loadWholeBookOrderInfo()    {        $bookArray = [];        $lastCidArray = [];        $pageSize = 10000;        $totalCount = BookOrderService::getCount();        $totalPageCount = Ceil($totalCount / $pageSize); ////总页数        for ($pageIndex = 0; $pageIndex < $totalPageCount; $pageIndex++) {            $startIndex = $pageIndex * $pageSize;            $orderInfo = BookOrderService::getOrderInfos($startIndex, $startIndex + $pageSize);            foreach ($orderInfo as $orderItem) {                $bid = $orderItem->bid;                $readRecod = ReadRecordService::getRecordByUidBid($orderItem->uid, $bid);                if ($readRecod) {                    $read_cid = explode($readRecod, '_')[0];                    if (isset($lastCidArray[$bid])) {                        $last_cid = $lastCidArray[$bid];                    } else {                        $cidInfo = Book::where('id', $bid)->select('last_cid')->first();                        $last_cid = $cidInfo->last_cid;                        $lastCidArray[$bid] = $last_cid;                    }                    if ($read_cid == $last_cid) {                        $bookArray[$bid] = isset($bookArray[$bid]) ? ($bookArray[$bid] + 1) : 1;                    }                }            }        }        foreach ($bookArray as $bid => $count) {            DB::table('temp_book_order_stats')->where('bid', $bid)->update(['read_end_sub_user_num' => $count]);        }    }}
 |