2
0

userExpiryCheck.ts 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { Cron } from "https://deno.land/x/croner@7.0.0/dist/croner.js"
  2. import debug from "debug"
  3. const log = debug('service:user-expiry-check')
  4. interface UserExpiryCheckConfig {
  5. cronSchedule: string
  6. endpoint: string
  7. }
  8. const defaultConfig: UserExpiryCheckConfig = {
  9. cronSchedule: '0 0 * * *', // 每天凌晨执行
  10. endpoint: '/api/users/check-expired'
  11. }
  12. export function initUserExpiryCheck(config: Partial<UserExpiryCheckConfig> = {}) {
  13. const finalConfig = { ...defaultConfig, ...config }
  14. try {
  15. new Cron(finalConfig.cronSchedule, async () => {
  16. log('开始执行学员有效期检查任务')
  17. try {
  18. const response = await fetch(finalConfig.endpoint)
  19. const data = await response.json()
  20. log('学员有效期检查完成,结果: %o', data)
  21. } catch (error) {
  22. log('调用检查接口失败: %o', error)
  23. }
  24. })
  25. log('学员有效期定时检查服务已启动')
  26. } catch (error) {
  27. log('定时任务初始化失败: %o', error)
  28. throw error
  29. }
  30. }