using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Hg.Complaint.Domain { /// /// 投诉处理类 /// public class ComplaintEventSingleton { private List _complaintEvents = new(); /// /// 投诉处理类 /// public ComplaintEventSingleton() { } /// /// 获取任务队列 /// /// public List GetComplaintEvents() => _complaintEvents; /// /// 移除任务队列 /// /// /// public List RemoveComplaint(int id) { if (_complaintEvents.Any(x => x.Id.Equals(id))) { _complaintEvents.Remove(_complaintEvents.First(x => x.Id == id)); } return _complaintEvents; } /// /// 批量移除任务队列 /// /// /// public List RemoveComplaints(List ids) { foreach (var id in ids) { RemoveComplaint(id); } return _complaintEvents; } /// /// 获取到期的未处理投诉 /// /// public List GetDueComplaint() { var now = DateTime.Now; var dueHours = DefaultHelper.DueHours; var data = new List(); foreach (var complaintEvent in _complaintEvents) { if (complaintEvent.Ctime.HasValue && (now - complaintEvent.Ctime.Value).TotalHours >= dueHours) { data.Add(complaintEvent); } } return data; } /// /// 添加需要计时的投诉处理 /// /// public void AddComplaintEvent(ComplaintEventDto complaintEvent) { RemoveComplaint(complaintEvent.Id); _complaintEvents.Add(complaintEvent); } /// /// 初始化需要计时的投诉处理 /// /// /// public List InitComplaintEvents(List complaintEvents) { _complaintEvents = complaintEvents; return _complaintEvents; } } }