public void AutoBuyChaseTicket(string gameName, string issueNumber) { TicketManager ticketManager = new TicketManager(DbAccess); UserManager userManager = new UserManager(DbAccess); IList <ChaseEntity> chaseList = ticketManager.GetChaseListByIssue(gameName, issueNumber, (int)ChaseStatus.Chasing); foreach (ChaseEntity chase in chaseList) { try { UserFacade userFacade = new UserFacade(); UserInfo user = userFacade.GetUserInfo(chase.UserId); if (user == null) { throw new Exception("用户不存在 - " + chase.UserId); } UserBalanceEntity balance = userManager.GetBalance(chase.UserId); if (balance == null) { throw new Exception("用户帐户不存在 - " + chase.UserId); } TicketEntity ticket = ticketManager.GetTicket(chase.TicketId); if (ticket == null) { throw new Exception("追号的票不存在 - " + chase.TicketId); } IList <TicketAnteCodeEntity> anteCodeList = ticketManager.GetAnteCodeListByTicket(chase.TicketId); List <string> codes = new List <string>(); foreach (TicketAnteCodeEntity anteCodeEntity in anteCodeList) { codes.Add(anteCodeEntity.AnteCode); } balance.Freeze -= chase.Money; userManager.ModifyBalance(balance); HPResponseInfo response = DoBuy(user, gameName, issueNumber, (BuyType)ticket.BuyType, codes, chase.Money, chase.Amount); if (response.Code == "0000") { chase.Status = (int)ChaseStatus.Finished; } else { chase.Status = (int)ChaseStatus.Error; } chase.ResponseCode = response.Code; chase.ResponseMessage = response.Message; ticketManager.ModifyChaseStatus(chase); } catch (Exception ex) { chase.Status = (int)ChaseStatus.Error; chase.ResponseCode = "9999"; chase.ResponseMessage = "未知异常 - " + ex.Message; ticketManager.ModifyChaseStatus(chase); HandleException(LogCategory.Ticket, "自动认购追号失败!", ex, chase); } } }
public void RequestGetMoney(string userId, int bankType, string bankName, string cardNumber, decimal money) { try { using (ILHDBTran tran = BeginTran()) { UserManager userManager = new UserManager(tran); MoneyManager moneyManager = new MoneyManager(tran); UserBalanceEntity balance = userManager.GetBalance(userId); if (money > balance.EnableMoney) { throw new FacadeException("余额不足"); } MoneyGetDetailEntity moneyGetRequest = new MoneyGetDetailEntity(); moneyGetRequest.UserId = userId; moneyGetRequest.BankType = bankType; moneyGetRequest.BankName = bankName; moneyGetRequest.BankCardNumber = cardNumber; moneyGetRequest.RequestMoney = money; moneyGetRequest.Status = (int)MoneyGetStatus.Requesting; moneyManager.AddMoneyGetRequest(moneyGetRequest); if (balance.Freeze.HasValue) { balance.Freeze = balance.Freeze.Value + money; } else { balance.Freeze = money; } userManager.ModifyBalance(balance); tran.Commit(); } } catch (FacadeException ex) { throw ex; } catch (Exception ex) { HandleException(LogCategory.Money, "申请提款失败!", ex); throw new FacadeException("申请提款失败!"); } }
public void ChaseTicket(IList <ChaseAddInfo> chaseList) { try { using (ILHDBTran tran = BeginTran()) { UserManager userManager = new UserManager(tran); TicketManager ticketManager = new TicketManager(tran); foreach (ChaseAddInfo chase in chaseList) { ChaseEntity chaseEntity = new ChaseEntity(); chaseEntity.TicketId = chase.TicketId; chaseEntity.GameName = chase.GameName; chaseEntity.IssuseNumber = chase.IssuseNumber; chaseEntity.Amount = chase.Amount; chaseEntity.Money = chase.Money; chaseEntity.UserId = chase.UserId; chaseEntity.Status = (int)ChaseStatus.Chasing; ticketManager.AddTicketChase(chaseEntity); UserBalanceEntity balance = userManager.GetBalance(chase.UserId); if (balance == null) { throw new FacadeException("帐户不存在,请先充值!"); } decimal balanceMoney = balance.Balance.HasValue ? balance.Balance.Value : 0; decimal freezeMoney = balance.Freeze.HasValue ? balance.Freeze.Value : 0; decimal enableMoney = balanceMoney - freezeMoney; if (enableMoney < chase.Money) { throw new FacadeException("帐户余额不足,请先充值!"); } // 更新用户余额 - 冻结金额 balance.Freeze += chase.Money; userManager.ModifyBalance(balance); } tran.Commit(); } } catch (Exception ex) { throw HandleException(LogCategory.Ticket, "添加追号失败!", ex); } }
public void AcceptRequestGetMoney(long id, string operateUserId, string message) { try { using (ILHDBTran tran = BeginTran()) { UserManager userManager = new UserManager(tran); MoneyManager moneyManager = new MoneyManager(tran); MoneyGetDetailEntity moneyGetDetail = moneyManager.GetMoneyGetDetailEntity(id); if (moneyGetDetail.Status != (int)MoneyGetStatus.Requesting) { throw new FacadeException("此请求已经被处理!"); } UserBalanceEntity balance = userManager.GetBalance(moneyGetDetail.UserId); if (balance.Freeze.Value < moneyGetDetail.RequestMoney) { throw new FacadeException("用户账户发生异常,冻结金额不足!"); } moneyGetDetail.Status = (int)MoneyGetStatus.Accepted; moneyGetDetail.ResponseUserId = operateUserId; moneyGetDetail.ResponseMoney = moneyGetDetail.RequestMoney; moneyGetDetail.ResponseMessage = message; moneyManager.ModifyMoneyGetResponseStatus(moneyGetDetail); balance.Freeze -= moneyGetDetail.RequestMoney; balance.Balance -= moneyGetDetail.RequestMoney; userManager.ModifyBalance(balance); tran.Commit(); } } catch (FacadeException ex) { throw ex; } catch (Exception ex) { HandleException(LogCategory.Money, "处理接受提款申请失败!", ex); throw new FacadeException("处理接受提款申请失败!"); } }
public void Register(UserInfo user, string password) { LoginEntity loginEntity = new LoginEntity(); loginEntity.UserId = user.UserId; loginEntity.UserName = user.UserName; loginEntity.IsCanLogin = true; UserBaseEntity userBaseEntity = new UserBaseEntity(); userBaseEntity.UserId = user.UserId; userBaseEntity.RealName = user.RealName; userBaseEntity.Email = user.Email; userBaseEntity.CardType = user.IdCardType; userBaseEntity.CardNumber = user.IdCardNumber; userBaseEntity.Mobile = user.Mobile; UserBalanceEntity balanceEntity = new UserBalanceEntity(); balanceEntity.UserId = user.UserId; balanceEntity.Balance = 0; balanceEntity.Freeze = 0; try { using (ILHDBTran tran = BeginTran()) { UserManager manager = new UserManager(tran); password = EncryptTool.MD5(password); manager.AddLogin(loginEntity, password); manager.AddUserBase(userBaseEntity); manager.AddBalance(balanceEntity); tran.Commit(); } } catch (Exception ex) { string errMsg = "注册新用户失败 - 系统异常,请联系系统管理员!"; throw HandleException(LogCategory.Register, errMsg, ex); } }
/// <summary> /// 是否满足升级条件 /// </summary> /// <param name="UserId"></param> /// <param name="LvId"></param> /// <returns></returns> public int judgeUpagentUser(int UserId, int LvId) { UpConditionBll Upbll = new UpConditionBll(); AgentuserBll userbll = new AgentuserBll(); AgentuserEntity userentity = userbll.selectById(UserId); AgentuserEntity upuserentity = new AgentuserEntity(); AgentuserUptagBll uptagbll = new AgentuserUptagBll(); UserlvBll lvbll = new UserlvBll(); UpAgentsEntity TableEntity = new UpAgentsEntity(); int YeworNo = 0; if (LvId > 3) { UserBalanceBll balbll = new UserBalanceBll(); UserBalanceEntity blentity = balbll.selectById(UserId); UpConditionEntity upthreeEntity = new UpConditionEntity(); int Uthreepid = 3; upthreeEntity = Upbll.selectById(Uthreepid); double PayMoney = upthreeEntity.PayMoney; if (blentity != null) { int UserPid = Query(UserId, Uthreepid); double BalancePrice = blentity.BalancePrice; int ReNum = blentity.ReNum; if (BalancePrice >= PayMoney) { YeworNo = 1; } } } if (LvId == 3) { UpConditionEntity upEntity = new UpConditionEntity(); int Upid = LvId - 1; upEntity = Upbll.selectById(Upid); int Upthree = upEntity.Upthree; string lvthreewhere = "Inviter=" + UserId + " and LvId=3 and State=1"; List <AgentuserEntity> listUser = userbll.selectByWhere(lvthreewhere); //直接邀请的人数 List <AgentuserEntity> JlistUser = AlllvThree(UserId); //间接人数和直接总合 string otherwhere = "StarInviter=" + UserId + " and LvId<3 and State=1"; List <AgentuserEntity> listotherUser = userbll.selectByWhere(otherwhere); if (listUser != null) { int UsrtNum = 0; foreach (var item in listUser) { UsrtNum++; } int UserotherNum = 0; if (listotherUser != null) { foreach (var itemother in listotherUser) { UserotherNum++; } } int UsrtNumTotal = UsrtNum + UserotherNum; if (UsrtNumTotal >= Upthree) { YeworNo = 1; } } } if (LvId == 2) { UpConditionEntity upEntity = new UpConditionEntity(); int Upid = LvId - 1; upEntity = Upbll.selectById(Upid); int Upthree = upEntity.Upthree; //总代个数 条件 int Uptwo = upEntity.Uptwo; //大总个数 条件 string lvthreewhere = "Inviter=" + UserId + " and LvId=3 and State=1"; string twowhere = "Inviter=" + UserId + " and LvId=2 and State=1"; string otherwhere = "StarInviter=" + UserId + " and LvId=1 and State=1"; List <AgentuserEntity> listthreeUser = userbll.selectByWhere(lvthreewhere); //直线总代个数 List <AgentuserEntity> listtwoUser = userbll.selectByWhere(twowhere); //直线大总个数 List <AgentuserEntity> listotherUser = userbll.selectByWhere(otherwhere); //直线邀请人 已经升级到大牌 List <AgentuserEntity> Listtwoall = AlllvTwo(UserId); int AllListtwoal = AllUserTwoandOne(UserId); if (listthreeUser != null && listtwoUser != null) { int UserthreeNum = 0; //直线总代个数 foreach (var itemtree in listthreeUser) { UserthreeNum++; } int UsertwoNum = 0;//已经升级到大总个数 foreach (var itemtwo in listtwoUser) { UsertwoNum++; } int UserotherNum = 0;//已经升级到大牌个数 if (listotherUser != null) { foreach (var itemother in listotherUser) { UserotherNum++; } } int AllUptwo = UserotherNum + UsertwoNum; //自己升级到大总和大牌总和 //满足升条件 1、总代+大总 +大牌个数>=10 也就是说 //1、大总和大牌 必须大于0 // 满足升级大牌得条件 //总代 直线 9 +1大总或者大牌 if (AllUptwo > 0 && UserthreeNum + UserotherNum + UsertwoNum >= Upthree + Uptwo) { YeworNo = 1; } if (AllListtwoal >= Uptwo && UserthreeNum + UserotherNum + UsertwoNum >= Upthree) { YeworNo = 1; } } } return(YeworNo); }
/// <summary> /// 把升级信息写入数据库 /// </summary> /// <param name="UserId"></param> /// <param name="LvId"></param> /// <returns></returns> public UpAgentsEntity UpagentUserEntity(int UserId, int LvId) { UpConditionBll Upbll = new UpConditionBll(); AgentuserBll userbll = new AgentuserBll(); AgentuserEntity userentity = userbll.selectById(UserId); UserBalanceBll balbll = new UserBalanceBll(); AgentuserUptagBll uptagbll = new AgentuserUptagBll(); UserlvBll lvbll = new UserlvBll(); UpAgentsEntity TableEntity = new UpAgentsEntity(); if (LvId > 3) { int Uppid = 3; UserBalanceEntity blentity = balbll.selectById(UserId); UpConditionEntity upthreeEntity = new UpConditionEntity(); upthreeEntity = Upbll.selectById(Uppid); double PayMoney = upthreeEntity.PayMoney; if (blentity != null) { double BalancePrice = blentity.BalancePrice; int ReNum = blentity.ReNum; if (BalancePrice >= PayMoney) { int UserPid = Query(UserId, Uppid); UserlvEntity nowlvEntity = lvbll.selectById(LvId); UserlvEntity pulvEntity = lvbll.selectById(Uppid); TableEntity.LvName = nowlvEntity.Name; TableEntity.UpingName = pulvEntity.Name; TableEntity.Name = userentity.Name; TableEntity.Mobile = userentity.Mobile; TableEntity.UserId = UserId; TableEntity.UpingLvid = Uppid; AgentReupEntityUserId(UserId, userentity.Inviter, UserPid); } } } if (LvId == 3) { int Upid = LvId - 1; int UserPid = Query(UserId, Upid); UserlvEntity nowlvEntity = lvbll.selectById(LvId); UserlvEntity pulvEntity = lvbll.selectById(Upid); TableEntity.LvName = nowlvEntity.Name; TableEntity.UpingName = pulvEntity.Name; TableEntity.Name = userentity.Name; TableEntity.Mobile = userentity.Mobile; TableEntity.UserId = UserId; TableEntity.UpingLvid = Upid; } if (LvId == 2) { int Upid = LvId - 1; UserlvEntity nowlvEntity = lvbll.selectById(LvId); UserlvEntity pulvEntity = lvbll.selectById(Upid); TableEntity.LvName = nowlvEntity.Name; TableEntity.UpingName = pulvEntity.Name; TableEntity.Name = userentity.Name; TableEntity.Mobile = userentity.Mobile; TableEntity.UserId = UserId; TableEntity.UpingLvid = Upid; } return(TableEntity); }
/// <summary> /// 更新投注响应状态 /// </summary> public void UpdateTicketStatus(TicketMappingInfo ticket, UserInfo user, HPResponseInfo response) { try { using (ILHDBTran tran = BeginTran()) { UserManager userManager = new UserManager(tran); TicketManager ticketManager = new TicketManager(tran); TicketDetailEntity tmp = ticketManager.GetFreezeTicketDetail(ticket.TicketId, user.UserId); if (tmp == null || tmp.Status != (int)TicketStatus.Requesting) { throw new FacadeException("帐户数据错误,请联系系统管理员!"); } UserBalanceEntity balance = userManager.GetBalance(user.UserId); if (balance == null) { throw new FacadeException("帐户不存在,请先充值!"); } TicketEntity entity = ticketManager.GetTicket(ticket.TicketId); if (entity == null) { throw new FacadeException("出票数据错误,请联系管理员!"); } if (response.Code == "0000") { entity.Status = (int)TicketStatus.Determinate; TicketDetailEntity detail = new TicketDetailEntity(); detail.UserId = user.UserId; detail.TicketId = ticket.TicketId; detail.BalanceBefore = tmp.BalanceAfter; detail.FreezeBefore = tmp.FreezeAfter; detail.PayMoney = tmp.PayMoney; detail.BalanceAfter = tmp.BalanceAfter - tmp.PayMoney; detail.FreezeAfter = tmp.FreezeAfter - tmp.PayMoney; detail.Status = (int)TicketStatus.Determinate; detail.Message = "落地 - 更新金额并解冻" + tmp.PayMoney; detail.CurrentTime = DateTime.Now; // 添加彩票购买明细日志记录 - 状态为落地 ticketManager.AddTicketDetail(detail); balance.Balance -= tmp.PayMoney; balance.Freeze -= tmp.PayMoney; userManager.ModifyBalance(balance); } else { entity.Status = (int)TicketStatus.Error; TicketDetailEntity detail = new TicketDetailEntity(); detail.UserId = user.UserId; detail.TicketId = ticket.TicketId; detail.BalanceBefore = tmp.BalanceAfter; detail.FreezeBefore = tmp.FreezeAfter; detail.PayMoney = tmp.PayMoney; detail.BalanceAfter = tmp.BalanceAfter; detail.FreezeAfter = tmp.FreezeAfter - tmp.PayMoney; detail.Status = (int)TicketStatus.Error; detail.Message = "错误 - " + response.Message + " - 恢复冻结金额" + ticket.Money; detail.CurrentTime = DateTime.Now; // 添加彩票购买明细日志记录 - 状态为错误 ticketManager.AddTicketDetail(detail); balance.Freeze -= tmp.PayMoney; userManager.ModifyBalance(balance); } entity.ResponseCode = response.Code; entity.ResponseMessage = response.Message; entity.ResponseTime = DateTime.Now; ticketManager.ModifyTicket(entity); tran.Commit(); } } catch (Exception ex) { throw HandleException(LogCategory.Ticket, "更新投注状态失败! - " + ex.Message, ex, ticket, response); } }
/// <summary> /// 投注购票 /// </summary> public void BuyTicket(TicketMappingInfo ticket, UserInfo user) { try { using (ILHDBTran tran = BeginTran()) { UserManager userManager = new UserManager(tran); TicketManager ticketManager = new TicketManager(tran); UserBalanceEntity balance = userManager.GetBalance(user.UserId); if (balance == null) { throw new FacadeException("帐户不存在,请先充值!"); } decimal balanceMoney = balance.Balance.HasValue ? balance.Balance.Value : 0; decimal freezeMoney = balance.Freeze.HasValue ? balance.Freeze.Value : 0; decimal enableMoney = balanceMoney - freezeMoney; if (enableMoney < ticket.Money) { throw new FacadeException("帐户余额不足,请先充值!"); } TicketDetailEntity detail = new TicketDetailEntity(); detail.UserId = user.UserId; detail.TicketId = ticket.TicketId; detail.BalanceBefore = balanceMoney; detail.FreezeBefore = freezeMoney; detail.PayMoney = ticket.Money; detail.BalanceAfter = balanceMoney; detail.FreezeAfter = freezeMoney + ticket.Money; detail.Status = (int)TicketStatus.Requesting; detail.Message = "投注 - 冻结金额" + ticket.Money; detail.CurrentTime = DateTime.Now; // 添加彩票购买明细日志记录 - 状态为请求中 ticketManager.AddTicketDetail(detail); // 更新用户余额 - 冻结金额 balance.Freeze += ticket.Money; userManager.ModifyBalance(balance); TicketEntity entity = new TicketEntity(); entity.TicketId = ticket.TicketId; entity.BuyType = (int)ticket.BuyType; entity.Amount = ticket.Amount; entity.Money = ticket.Money; entity.UserId = user.UserId; entity.GameName = ticket.IssueInfo.GameName; entity.IssuseNumber = ticket.IssueInfo.Number; entity.Status = (int)TicketStatus.Requesting; entity.RequestTime = DateTime.Now; ticketManager.AddTicket(entity); foreach (string code in ticket.AnteCodes) { TicketAnteCodeEntity anteCode = new TicketAnteCodeEntity(); anteCode.TicketId = ticket.TicketId; anteCode.AnteCode = code; ticketManager.AddAnteCode(anteCode); } tran.Commit(); } } catch (Exception ex) { throw HandleException(LogCategory.Ticket, "投注购票失败!", ex, ticket, user); } }
public void DistributeBonus(string gameName, string issueNumber) { try { using (ILHDBTran tran = BeginTran()) { BonusManager bonusManger = new BonusManager(tran); UserManager userManager = new UserManager(tran); BonusEntity bonusEntity = bonusManger.GetBonus(gameName, issueNumber); if (bonusEntity == null) { throw new Exception("要分派的奖期信息不存在 - " + gameName + ":" + issueNumber); } if (bonusEntity.IsDistributed) { throw new Exception("此奖期已经派奖 - " + gameName + ":" + issueNumber); } IList <BonusDetailEntity> bonusDetailList = bonusManger.GetBonusDetailList(gameName, issueNumber); TicketManager ticketManager = new TicketManager(tran); foreach (BonusDetailEntity bonusDetail in bonusDetailList) { TicketEntity ticket = ticketManager.GetTicket(bonusDetail.TicketId); if (ticket != null) { BonusDistributeEntity bonusDistribute = new BonusDistributeEntity(); bonusDistribute.TicketId = bonusDetail.TicketId; bonusDistribute.BonusLevel = bonusDetail.BonusLevel; bonusDistribute.UserId = ticket.UserId; bonusDistribute.GameName = bonusDetail.GameName; bonusDistribute.IssuseNumber = bonusDetail.IssuseNumber; bonusDistribute.PlayType = bonusDetail.PlayType; bonusDistribute.IsBombBonus = bonusDetail.IsBombBonus; bonusDistribute.BonusSize = bonusDetail.Size; bonusDistribute.Money = bonusDetail.Money; bonusManger.AddBonusDistribute(bonusDistribute); UserBalanceEntity balanceEntity = userManager.GetBalance(ticket.UserId); if (balanceEntity == null) { throw new Exception("异常 - 彩民的账户不存在 - " + ticket.UserId); } if (!balanceEntity.Balance.HasValue) { throw new Exception("异常 - 彩民的账户为空 - " + ticket.UserId); } balanceEntity.Balance += bonusDetail.Money; userManager.ModifyBalance(balanceEntity); } } bonusEntity.IsDistributed = true; bonusManger.ModifyBonusDistrbite(bonusEntity); tran.Commit(); } } catch (Exception ex) { string errMsg = "派奖失败 - " + gameName + ":" + issueNumber; throw HandleException(LogCategory.Distribute, errMsg, ex); } }