/// <summary> /// 订单投注后加入Redis待拆票列表(追号订单) /// </summary> public static void AddOrderToWaitSplitList(string gameCode, RedisWaitTicketOrderList orderList) { if (orderList == null || orderList.OrderList.Count <= 0 || string.IsNullOrEmpty(orderList.KeyLine)) { return; } //把追号订单以keyline为key存入 var db = RedisHelperEx.DB_Chase_Order; foreach (var item in orderList.OrderList) { //var json = JsonHelper.Serialize<RedisWaitTicketOrder>(item); var json = item.ToJsonDataFormat(true); db.RPush(orderList.KeyLine, json); } //把keyline存入Waiting_Chase_Order_List var fullKey = string.Format("{0}_{1}", RedisKeys.Key_Waiting_Chase_Order_List, gameCode); db.RPush(fullKey, orderList.KeyLine); }
/// <summary> /// 把SQL中的订单加入Redis待拆票库中 /// </summary> public static string AddOrderToWaitSplitList(string schemeId) { var logList = new List <string>(); try { logList.Add(string.Format("开始处理订单{0}", schemeId)); var manager = new Sports_Manager(); var order = manager.QuerySports_Order_Running(schemeId); if (order == null) { throw new LogicException("订单数据为空"); } var codeList = manager.QuerySportsAnteCodeBySchemeId(schemeId); if (codeList == null || codeList.Count <= 0) { throw new LogicException("订单投注号码为空"); } if (order.SchemeType == (int)SchemeType.ChaseBetting) { logList.Add("订单是【追号订单】"); var detail = new SchemeManager().QueryOrderDetail(schemeId); if (detail == null) { throw new Exception("OrderDetail数据为空"); } var scheme = manager.QueryLotteryScheme(schemeId); if (scheme == null) { throw new Exception("LotteryScheme数据为空"); } //检查keyline在Redis库中存不存在 var db = RedisHelperEx.DB_Chase_Order; var fullKey = string.Format("{0}_{1}", RedisKeys.Key_Waiting_Chase_Order_List, order.GameCode); var chaseKeyLineArray = db.LRange(fullKey, 0, -1);//.Result; foreach (var k in chaseKeyLineArray) { if (string.IsNullOrEmpty(k)) { continue; } if (k.ToString() == scheme.KeyLine) { logList.Add("追号列表中已存在KeyLine."); //取出所有追号列表 var chaseList = db.LRange <RedisWaitTicketOrder>(scheme.KeyLine, 0, -1);//.Result; //清空key db.Del(scheme.KeyLine); //修改canchase为true后,添加key var orderList2 = new RedisWaitTicketOrderList(); orderList2.KeyLine = scheme.KeyLine; orderList2.StopAfterBonus = detail.StopAfterBonus; var findCurrentOrder = false; foreach (var item in chaseList) { // var orderJson = item.ToString(); var chaseOrder = item;// JsonHelper.Deserialize<RedisWaitTicketOrder>(orderJson); if (chaseOrder.RunningOrder != null) { chaseOrder.RunningOrder.CanChase = !findCurrentOrder; if (chaseOrder.RunningOrder.SchemeId == schemeId) { findCurrentOrder = true; } orderList2.OrderList.Add(chaseOrder); } } AddOrderToWaitSplitList(order.GameCode, orderList2); logList.Add("重新添加成功。"); return(string.Join(Environment.NewLine, logList)); } //throw new Exception("追号列表中已存在KeyLine"); } var schemeList = manager.QueryLotterySchemeByKeyLine(scheme.KeyLine); if (schemeList == null || schemeList.Count <= 0) { throw new Exception("schemeList为空"); } var orderList = new RedisWaitTicketOrderList(); orderList.KeyLine = scheme.KeyLine; orderList.StopAfterBonus = detail.StopAfterBonus; foreach (var item in schemeList) { var running = manager.QuerySports_Order_Running(item.SchemeId); if (running == null) { continue; } orderList.OrderList.Add(new RedisWaitTicketOrder { KeyLine = scheme.KeyLine, StopAfterBonus = detail.StopAfterBonus, SchemeType = (SchemeType)order.SchemeType, AnteCodeList = codeList, RunningOrder = running }); } if (orderList.OrderList == null || orderList.OrderList.Count <= 0) { throw new Exception("OrderList数据为空"); } orderList.OrderList[0].RunningOrder.CanChase = true; AddOrderToWaitSplitList(order.GameCode, orderList); } else if (order.SchemeBettingCategory == (int)SchemeBettingCategory.SingleBetting) { logList.Add("订单是【单式上传订单】"); var singleCode = manager.QuerySingleScheme_AnteCode(schemeId); if (singleCode == null) { throw new LogicException("单式号码数据为空"); } AddOrderToWaitSplitList(new RedisWaitTicketOrderSingle { RunningOrder = order, AnteCode = singleCode, }); } else { logList.Add("订单是【普通订单】"); AddOrderToWaitSplitList(new RedisWaitTicketOrder { KeyLine = order.SchemeId, AnteCodeList = codeList, RunningOrder = order, SchemeType = (SchemeType)order.SchemeType, StopAfterBonus = true, }); } logList.Add("添加完成"); } catch (Exception ex) { logList.Add(ex.Message); } return(string.Join(Environment.NewLine, logList)); }