format('Y-m-d'); $roleIds = DB::table('roles') ->whereIn('identify', ['admin', 'businessmaster', 'business']) ->where('deleted_at', '=', 0) ->select('id') ->get()->pluck('id')->unique(); $users = DB::table('users')->join('user_has_roles', 'users.id', 'user_has_roles.user_id') ->whereIn('user_has_roles.role_id', $roleIds) ->where('users.deleted_at', '=', 0) ->where('users.status', '=', 1) ->select('id', 'username', 'email') ->get()->keyBy('id'); DB::table('books') ->where('end_date', '<>', '') ->where('end_date', '<=', $alertDate) ->orderBy('id', 'desc') ->select('id','name', 'start_date', 'end_date', 'cp_name', 'cp_id') ->chunk(300, function ($books) use ($users, $todayStr){ foreach ($books->chunk(30) as $iBooks) { $this->copyrightAlert($iBooks, $users, $todayStr); } }); } /** * 快到期书籍,邮件通知,内容管理后台消息通知 * @param $iBooks * @param $userCollect */ private function copyrightAlert($iBooks, $userCollect, $todayStr) { $emailStr = ''; $noticeStr = ''; foreach ($iBooks as $book) { $leftDay = intval(date_diff(date_create($todayStr), date_create($book->end_date))->format("%r%a")); if($leftDay > 0) { $emailStr .= 'bid='.$book->id. "
"; $emailStr .= '书名='.$book->name. "
"; $emailStr .= '版权开始日期='.$book->start_date. "
"; $emailStr .= '版权结束日期='.$book->end_date. "
"; $emailStr .= '版权剩余天数='. $leftDay . "天
"; $emailStr .= 'cp_name='.$book->cp_name. "
"; $emailStr .= 'cp_id='.$book->cp_id. "
"; $emailStr .= "==========================================
"; } else { $noticeStr .= 'bid='.$book->id. "
"; $noticeStr .= '书名='.$book->name. "
"; $noticeStr .= '版权开始日期='.$book->start_date. "
"; $noticeStr .= '版权结束日期='.$book->end_date. "
"; $noticeStr .= 'cp_name='.$book->cp_name. "
"; $noticeStr .= 'cp_id='.$book->cp_id. "
"; $noticeStr .= "==========================================
"; } } $users = []; foreach ($userCollect as $user) { $users[] = ['address' => $user->email, 'name' => $user->username]; } $params = [ 'subject' => sprintf('版权快到期预警[%s]', date('Y-m-d H:i:s')), 'body' => $emailStr ]; sendEmail($users,$params); NoticesService::addNotice([ 'title' => '书籍版权到期提醒', 'notice_type_id' => 2, 'type' => 1, 'is_popup' => 1, 'content' => $noticeStr ]); } }