using System; using System.Collections.Generic; using System.Linq; using Library; using MySystem.PxcModels; namespace MySystem { public class Utils { public readonly static Utils Instance = new Utils(); private Utils() { } /// /// 操作收支明细 /// /// /// /// public void OpAccount(int UserId, decimal Money, int ChangeType, bool IsTotal = true) { WebCMSEntities db = new WebCMSEntities(); UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId); if (account == null) { account = db.UserAccount.Add(new UserAccount() { Id = UserId, UserId = UserId, }).Entity; db.SaveChanges(); } decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额 decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额 decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额 account.BalanceAmount += Money; if(IsTotal) { account.TotalAmount += Money; } decimal AfterTotalAmount = account.TotalAmount; //变更后总金额 decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额 decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额 UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = UserId, //创客 ChangeType = ChangeType, //变动类型 ChangeAmount = Money, //变更金额 BeforeTotalAmount = BeforeTotalAmount, //变更前总金额 AfterTotalAmount = AfterTotalAmount, //变更后总金额 BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额 AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额 AfterBalanceAmount = AfterBalanceAmount, //变更后余额 }).Entity; db.SaveChanges(); db.Dispose(); } public void ToChargeAmount(int UserId, decimal Money) { WebCMSEntities db = new WebCMSEntities(); UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId); if (account == null) { account = db.UserAccount.Add(new UserAccount() { Id = UserId, UserId = UserId, }).Entity; db.SaveChanges(); } account.ToChargeAmount += Money; db.SaveChanges(); db.Dispose(); } /// /// 判断是否达标创客 /// /// /// public bool IsStandardUser(int UserId) { WebCMSEntities db = new WebCMSEntities(); // Users user = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users(); UserRankItem user = PosCouponPrizeService.Instance.GetUserLevel(UserId); if(user.UserType == 1) { return true; } if(user.LeaderLevel > 0) { Leaders leader = db.Leaders.FirstOrDefault(m => m.Id == UserId) ?? new Leaders(); if(leader.ExpiredDate > DateTime.Now) { return true; } } MpMainModels.WebCMSEntities mpdb = new MpMainModels.WebCMSEntities(); MpMainModels2.WebCMSEntities mpdb2 = new MpMainModels2.WebCMSEntities(); int couponCount = db.PosCoupons.Count(m => m.UserId == UserId && m.IsUse == 0); //1. 个人名下电签兑换券 + 大机兑换券 ≥ 3 // TODO:待确认条件 if(couponCount >= 3) { db.Dispose(); mpdb.Dispose(); mpdb2.Dispose(); return true; } else { List ids = new List(); ids.Add(10); ids.Add(11); ids.Add(77); ids.Add(78); ids.Add(79); bool orderCheck = db.Orders.Any(m => m.UserId == UserId && ids.Contains(m.ProductId)); //1. 商城下单过id为10、11、77、78、79的商品 if(orderCheck) { db.Dispose(); mpdb.Dispose(); mpdb2.Dispose(); return true; } else { //1. 激活POS机数量 + 激活来客吧商户数量 + 激活广电卡数量 ≥ 3 int ActiveCount = db.PosMachinesTwo.Count(m => m.BuyUserId == UserId && m.ActivationState == 1); int ActMerchantCount = mpdb.MerchantDepositOrder.Count(m => m.UserId == UserId && m.Status > 0) + mpdb2.MerchantDepositOrder.Count(m => m.UserId == UserId && m.Status > 0); if(ActiveCount + ActMerchantCount >= 3) { db.Dispose(); mpdb.Dispose(); mpdb2.Dispose(); return true; } } } db.Dispose(); mpdb.Dispose(); mpdb2.Dispose(); return false; } /// /// 预设职级 /// /// /// public void LeaderPreUserLevel(int UserId, int UserLevel, DateTime ExpiredDate) { WebCMSEntities db = new WebCMSEntities(); UserRankWhite rank = db.UserRankWhite.FirstOrDefault(m => m.Id == UserId); if(rank == null) { rank = db.UserRankWhite.Add(new UserRankWhite() { CreateDate = DateTime.Now, //设置时间 UserId = UserId, //用户 Id = UserId, }).Entity; db.SaveChanges(); } rank.Rank = UserLevel; rank.UpdateDate = ExpiredDate; db.SaveChanges(); db.Dispose(); } #region 获取创客职级 public int GetUserLevel(int Id) { WebCMSEntities db = new WebCMSEntities(); DateTime now = DateTime.Now; List Levels = new List(); Users user = db.Users.FirstOrDefault(m => m.Id == Id) ?? new Users(); UserRankWhite userRank = db.UserRankWhite.FirstOrDefault(m => m.Id == Id && m.UpdateDate > now) ?? new UserRankWhite(); LeaderRankWhite leaderRank = db.LeaderRankWhite.FirstOrDefault(m => m.Id == Id && m.UpdateDate > now) ?? new LeaderRankWhite(); OperatorRankWhite operatorRank = db.OperatorRankWhite.FirstOrDefault(m => m.Id == Id && m.UpdateDate > now) ?? new OperatorRankWhite(); Levels.Add(user.UserLevel); Levels.Add(userRank.Rank); Levels.Add(leaderRank.Rank); Levels.Add(operatorRank.Rank); db.Dispose(); return Levels.Max(); } #endregion #region 解析机具押金值,单位转换 public string TransferDeposit(PosMachinesTwo newpos, string Deposit) { decimal DepositNumber = decimal.Parse(function.CheckNum(Deposit)); if(DepositNumber == 0) { return ""; } WebCMSEntities db = new WebCMSEntities(); int BrandId = newpos.BrandId; KqProducts pro = db.KqProducts.FirstOrDefault(m => m.Id == BrandId) ?? new KqProducts(); if(pro.NoticeMoneyUnit == 1 && DepositNumber > 1000) { DepositNumber = DepositNumber / 100; } if(pro.NoticeMoneyUnit == 2 && DepositNumber < 1000) { DepositNumber = DepositNumber * 100; } db.Dispose(); return DepositNumber.ToString("f2"); } #endregion #region 运营中心额度变更 public void OperateAmountChange(OpModels.WebCMSEntities db, OpAmountItem param) { if(param.UseAmount <= 0) return; function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(param), "运营中心额度变更测试"); OpModels.UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == param.UserId); if (account == null) { account = db.UserAccount.Add(new OpModels.UserAccount() { Id = param.UserId, UserId = param.UserId, }).Entity; db.SaveChanges(); } decimal BeforeAmount = account.ValidForGetAmount + account.TotalAmt + account.ValidAmount; if(param.NoAccount == 0) { if(param.OperateType == 0 && param.UseTotalAmt > 0 && param.UseValidForGetAmount > 0 && param.UseValidAmount == 0) { account.TotalAmt -= param.UseTotalAmt; account.ValidForGetAmount += param.UseValidForGetAmount; } else { if(param.OperateType == 1) { account.TotalAmt += param.UseTotalAmt; account.ValidForGetAmount += param.UseValidForGetAmount; account.ValidAmount += param.UseValidAmount; } else if(param.OperateType == 2) { account.TotalAmt -= param.UseTotalAmt; account.ValidForGetAmount -= param.UseValidForGetAmount; account.ValidAmount -= param.UseValidAmount; } } } function.WriteLog("1", "运营中心额度变更测试"); decimal AfterAmount = account.ValidForGetAmount + account.TotalAmt + account.ValidAmount; OpModels.AmountRecordNew add = db.AmountRecordNew.Add(new OpModels.AmountRecordNew() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, ChangeTypeId = param.ChangeType, Remark = param.Remark, AfterValidForGetAmount = account.ValidForGetAmount, AfterTotalAmt = account.TotalAmt, AfterValidAmount = account.ValidAmount, OperateType = param.OperateType, AfterAmount = AfterAmount, BeforeAmount = BeforeAmount, UseAmount = param.UseAmount, UserId = param.UserId, UseValidForGetAmount = param.UseValidForGetAmount, UseTotalAmt = param.UseTotalAmt, UseValidAmount = param.UseValidAmount, DataType = param.DataType, DataId = param.DataId, }).Entity; function.WriteLog("2", "运营中心额度变更测试"); db.SaveChanges(); function.WriteLog("3\n\n", "运营中心额度变更测试"); } #endregion } }