/// <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); } }