first(); $stocksQuery = DB::table('goods_skus AS a') ->select( 'a.id', 'a.title', 'a.num', 'a.stock','a.updated_at', DB::raw('b.title AS good_name'), DB::raw('SUM(a.num - a.stock) AS stocks') ) ->leftJoin('goods AS b', 'a.goods_id', '=', 'b.id') ->where('a.num', '!=', 0) ->where('a.stock', '!=', 0) ->groupBy('id') ->havingRaw("stocks < $stock->active_piece"); $stocks = $stocksQuery->get(); $currentDateTime = Carbon::now(); $endOfDay = Carbon::today()->endOfDay(); $secondsRemaining = $currentDateTime->diffInSeconds($endOfDay); $redis=new Redis(); $arr=[]; foreach ($stocks as $k=>$v){ if (!$redis->exists($stock->cn_name.'::'.$v->title)){ $redis->setex($stock->cn_name.'::'.$v->title,$secondsRemaining,$v->stock); $arr[$k]['title']=$stock->cn_name; $arr[$k]['user_id']=$stock->user_id; $arr[$k]['stock_notice_id']=$stock->id; $arr[$k]['content']=Carbon::now()->format('Y-m-d')." 商品{$v->good_name}规格{$v->title}需要补货,当前库存{$v->num}/支,可售库存{$v->stock}/支"; $arr[$k]['created_at']=Carbon::now(); MessageStock::insert($arr); } } Log::info('任务完成:check-replenish'); } }