TG.WXCRM.V4/BLL/Res/RES_RESETRULELOG_BL.cs

172 lines
5.5 KiB
C#

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<RES_RESETRULELOG>, 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<RES_RESETRULELOG>().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;
}
}
}
}