123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- using System;
- using System.Linq;
- using System.Data;
- using System.Threading;
- using Library;
- using LitJson;
- using MySystem.Models.Push;
- using System.Collections.Generic;
- namespace MySystem
- {
- public class RePushHelper
- {
- public readonly static RePushHelper Instance = new RePushHelper();
- private RePushHelper()
- {
- }
- public void Start()//启动
- {
- Thread thread = new Thread(threadStart);
- thread.IsBackground = true;
- thread.Start();
- }
- private void threadStart()
- {
- while (true)
- {
- DoSomeThing();
- Thread.Sleep(5000);
- }
- }
- //要执行的方法
- public void DoSomeThing()
- {
- WebCMSEntities db = new WebCMSEntities();
- //查找开通推送的商户
- DateTime now = DateTime.Now;
- var pushs = db.RePushQueue.Select(m => new { m.Id, m.Times, m.RePushUrl, m.PushDataEncrypt, m.RePushDate }).Where(m => m.Times <= 15 && m.RePushDate <= now).ToList();
- foreach(var push in pushs)
- {
- string NoticeUrl = push.RePushUrl;
- string PushDataEncrypt = push.PushDataEncrypt;
- int Status = 0;
- // string result = function.PostWebRequest(NoticeUrl, PushDataEncrypt, "application/json");
- // if(result.Contains("\"code\":\"200\""))
- // {
- // Status = 1;
- // }
- RePushQueue edit = db.RePushQueue.FirstOrDefault(m => m.Id == push.Id);
- if(edit != null)
- {
- if(Status == 1)
- {
- PushRecord record = db.PushRecord.FirstOrDefault(m => m.Id == edit.PushRecordId);
- if(record != null)
- {
- record.Status = 1;
- }
- db.RePushQueue.Remove(edit);
- }
- else
- {
- if(edit.Times >= 15)
- {
- PushRecord record = db.PushRecord.FirstOrDefault(m => m.Id == edit.PushRecordId);
- if(record != null)
- {
- record.Status = -1;
- }
- }
- else
- {
- edit.Times += 1;
- edit.RePushDate = GetNextTime(edit.Times);
- }
- }
- db.SaveChanges();
- }
- }
- db.Dispose();
- }
- public DateTime GetNextTime(int num)
- {
- if(num == 1) return DateTime.Now.AddSeconds(15);
- if(num == 2) return DateTime.Now.AddSeconds(15);
- if(num == 3) return DateTime.Now.AddSeconds(30);
- if(num == 4) return DateTime.Now.AddMinutes(3);
- if(num == 5) return DateTime.Now.AddMinutes(10);
- if(num == 6) return DateTime.Now.AddMinutes(20);
- if(num == 7) return DateTime.Now.AddMinutes(30);
- if(num == 8) return DateTime.Now.AddMinutes(30);
- if(num == 9) return DateTime.Now.AddMinutes(30);
- if(num == 10) return DateTime.Now.AddMinutes(60);
- if(num == 11) return DateTime.Now.AddHours(3);
- if(num == 12) return DateTime.Now.AddHours(3);
- if(num == 13) return DateTime.Now.AddHours(3);
- if(num == 14) return DateTime.Now.AddHours(6);
- if(num == 15) return DateTime.Now.AddHours(6);
- return DateTime.Now;
- }
-
- }
- }
|