first(); $results = DB::table('warehouse_stock_item as a') ->leftJoin('goods_skus as b', 'a.good_sku_id', '=', 'b.id') ->leftJoin('goods as c', 'a.good_id', '=', 'c.id') ->select('c.title as cn_name', 'b.title as title','a.buyer_at as buyer_ats', DB::row('DATE(a.buyer_at) as buyer_at'),'a.stock') ->where('b.title', '!=', '') ->groupBy('a.id') ->get(); $today=Carbon::today()->toDateString(); $currentDateTime = Carbon::now(); $endOfDay = Carbon::today()->endOfDay(); $secondsRemaining = $currentDateTime->diffInSeconds($endOfDay); $redis=new Redis(); foreach ($results as $k =>$v){ $ymd=explode('-',$v->buyer_at); $date = Carbon::create($ymd[0], $ymd[1], $ymd[2]); $date->addDays($stock->day_num); if ($today >= $date->toDateString()){ //报警 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->cn_name}规格{$v->title}即将过期,入库库存{$v->stock}/支"; $arr[$k]['created_at']=Carbon::now(); MessageStock::insert($arr); } } } Log::info('任务完成:check-shelflife'); } }