using System; using System.Collections.Generic; using System.Linq; using MySystem.Models; using Library; using LitJson; namespace MySystem { public class ActiveService { public readonly static ActiveService Instance = new ActiveService(); private ActiveService() { } public void Start(JobMqMsg jobInfo) { string content = ""; try { string Msg = CheckData(); // jobInfo.Status = Msg == "success" ? 1: 0; // jobInfo.Msg = Msg == "success" ? "执行完成": Msg; // RabbitMQClient.Instance.SendMsg(Newtonsoft.Json.JsonConvert.SerializeObject(jobInfo), "ActiveBack"); } catch (Exception ex) { if (!string.IsNullOrEmpty(content)) { Dictionary data = new Dictionary(); data.Add("ErrTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); data.Add("ErrMsg", ex.ToString()); LogHelper.Instance.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(data), "activeback_err"); } else { LogHelper.Instance.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "activeback_service"); } } } //检查机具扣费情况 private string CheckData() { DateTime StatDate = DateTime.Now.AddMonths(-1); DateTime StartDate = DateTime.Parse(StatDate.ToString("yyyy-MM") + "-01 00:00:00"); DateTime EndDate = StartDate.AddMonths(1); string TradeMonth = StatDate.ToString("yyyyMM"); WebCMSEntities db = new WebCMSEntities(); using (var tran = db.Database.BeginTransaction()) { try { List list = db.ActiveReward.Where(m => m.CreateDate >= StartDate && m.CreateDate < EndDate && m.Status == -1).ToList(); foreach (ActiveReward sub in list) { ActiveReward edit = db.ActiveReward.FirstOrDefault(m => m.Id == sub.Id); if (edit != null) { edit.Status = 0; db.SaveChanges(); } UserAccount account = db.UserAccount.FirstOrDefault(m => m.UserId == sub.UserId); if (account == null) { account = db.UserAccount.Add(new UserAccount() { Id = sub.UserId, CreateDate = DateTime.Now, UserId = sub.UserId, UserProperty = 0, UserType = 2, }).Entity; db.SaveChanges(); } decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额 decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额 decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额 account.BalanceAmount += sub.RewardAmount; account.TotalAmount += sub.RewardAmount; decimal AfterTotalAmount = account.TotalAmount; //变更后总金额 decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额 decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额 db.SaveChanges(); UserAccountRecord accountRecord = db.UserAccountRecord.Add(new UserAccountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = sub.UserId, //创客 ChangeType = 0, //变动类型 ProductType = sub.BrandId, //产品类型 ChangeAmount = sub.RewardAmount, //变更金额 BeforeTotalAmount = BeforeTotalAmount, //变更前总金额 AfterTotalAmount = AfterTotalAmount, //变更后总金额 BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额 AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额 AfterBalanceAmount = AfterBalanceAmount, //变更后余额 }).Entity; db.SaveChanges(); } tran.Commit(); } catch (Exception ex) { tran.Rollback(); ErrorMsg msg = new ErrorMsg() { Time = DateTime.Now, ErrorContent = ex.ToString(), }; LogHelper.Instance.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "ActiveServiceError"); } } db.Dispose(); return "success"; } } }