using Newtonsoft.Json; using System; using System.Data.Entity; using System.Linq; using System.Text; using WX.CRM.Common; using WX.CRM.IBLL.Res; using WX.CRM.Model.Entity; namespace WX.CRM.BLL.Res { public class RES_RESETRULELOG_BL : DbContextRepository, IRES_RESETRULELOG { public ResReSetRuleLogView GetReSetTime() { var model = new ResReSetRuleLogView(); using (var db = new crmContext()) { var info = db.RES_RESETRULELOG.Where(p => p.ISEXE == 0).OrderByDescending(p => p.RESETTIME).FirstOrDefault(); if (info != null) { model.ID = info.ID; model.RESETTIME = info.RESETTIME; model.RESETSHORTDAY = info.RESETTIME.ToString("yyyy-MM-dd"); model.RESETSHORTTIME = info.RESETTIME.ToShortTimeString(); } } return model; } public DateTime? GetExeTime() { using (var db = new crmContext()) { var q = db.RES_RESETRULELOG.Where(p => p.ISEXE == 1).OrderByDescending(p => p.EXETIME).FirstOrDefault(); if (q != null) return q.EXETIME; return null; } } public bool Save(ResReSetRuleLogDto dto) { if (dto.ID.HasValue) { var model = Get(p => p.ID == dto.ID.Value); if (model != null) { model.RESETTIME = DateTime.Parse(dto.RESETDAY + " " + dto.RESETTIME + ":00"); if (model.RESETTIME <= DateTime.Now) { model.RESETTIME = model.RESETTIME.AddDays(1); } model.ISEXE = 0; return Update(model); } } else { var model = new RES_RESETRULELOG() { ID = new Base.SEQUENCES_BL().Seq_base_get(), RESETTIME = DateTime.Parse(dto.RESETDAY + " " + dto.RESETTIME + ":00"), ISEXE = 0 }; if (model.RESETTIME <= DateTime.Now) { model.RESETTIME = model.RESETTIME.AddDays(1); } return Add(model) > 0; } return false; } public bool Exec(decimal id) { using (var db = new crmContext()) { //using (var trans = db.Database.BeginTransaction()) //{ try { var info = db.RES_RESETRULELOG.FirstOrDefault(p => p.ID == id); if (info != null) { info.ISEXE = 1; info.EXETIME = DateTime.Now; var entry = db.Entry(info); db.Set().Attach(info); entry.State = EntityState.Modified; } var model = new RES_RESETRULELOG() { ID = new Base.SEQUENCES_BL().Seq_base_get(), RESETTIME = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + (string.IsNullOrEmpty(info.RESETTIME.ToShortTimeString()) ? "00:00:00" : info.RESETTIME.ToShortTimeString())).AddDays(1), ISEXE = 0 }; db.RES_RESETRULELOG.Add(model); db.SaveChanges(); //trans.Commit(); return true; } catch (Exception ex) { LogHelper.Error(ex); //trans.Rollback(); return false; } //} } } public bool Exec(int? sid) { try { var url = Common.Utility.GetSettingOrNullByKey("ReSetRuleUrl"); var channel = Utility.GetSettingOrNullByKey("Channel"); if (string.IsNullOrEmpty(url)) { LogHelper.Info("ReSetRuleUrl未配置"); return false; } if (string.IsNullOrEmpty(channel)) { LogHelper.Info("Channel未配置"); return false; } var ssid = 0; if (sid.HasValue) { ssid = sid.Value; } var reqUrl = url + "?ch=" + channel + "&sid=" + ssid.ToString(); var rsp = Utility.PostData(reqUrl, Encoding.UTF8); var rspObj = JsonConvert.DeserializeAnonymousType(rsp, new { result = false, retcode = 0, retmsg = string.Empty }); //LogHelper.Info("rsp:" + rspObj.ToJson()); if (rspObj.result) { var model = new RES_RESETRULELOG() { ID = new Base.SEQUENCES_BL().Seq_base_get(), RESETTIME = DateTime.Now, ISEXE = 1 }; Add(model); } return rspObj.result; } catch (Exception ex) { LogHelper.Error(ex); return false; } } } }