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
]);
}
}