Ejemplo n.º 1
0
 /// <summary>
 /// 添加订单(单式)到Redis库,本方法决定拆票或不拆票
 /// </summary>
 public static void AddOrderToRedis(string gameCode, RedisWaitTicketOrderSingle order)
 {
     if (BettingHelper.CanRequestBet(gameCode))
     {
         //可以拆票
         DoSplitOrderTicketWithThread_Single(order);
     }
     else
     {
         //不能拆票
         AddOrderToWaitSplitList(order);
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 订单投注后加入Redis待拆票列表(单式投注)
        /// </summary>
        public static void AddOrderToWaitSplitList(RedisWaitTicketOrderSingle order)
        {
            if (order == null || order.RunningOrder == null || order.AnteCode == null)
            {
                return;
            }

            var fullKey = string.Format("{0}_{1}_{2}", RedisKeys.Key_Waiting_Order_List, "Single", order.RunningOrder.GameCode.ToUpper());
            //var json = JsonHelper.Serialize<RedisWaitTicketOrderSingle>(order);
            var json = order.ToJsonDataFormat(true);
            var db   = RedisHelperEx.DB_NoTicket_Order;

            db.RPush(fullKey, json);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 多线程执行拆票(单式投注)
        /// </summary>
        public static void DoSplitOrderTicketWithThread_Single(RedisWaitTicketOrderSingle order)
        {
            if (order == null || order.AnteCode == null)
            {
                return;
            }

            ThreadPool.QueueUserWorkItem((o) =>
            {
                try
                {
                    DoSplitOrderTicket_Single(o as RedisWaitTicketOrderSingle);
                }
                catch (Exception ex)
                {
                    Log4Log.Error("Redis_DoSplitOrderTicket_Single-DoSplitOrderTicketWithThread_Single", ex);
                }
            }, order);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 执行拆票(单式投注)
        /// </summary>
        public static void DoSplitOrderTicket_Single(RedisWaitTicketOrderSingle order)
        {
            //if (!BusinessHelper.CanRequestBet(order.RunningOrder.GameCode))
            //    return;

            var sportsManager = new Sports_Manager();
            var oldCount      = sportsManager.QueryTicketCount(order.RunningOrder.SchemeId);

            if (oldCount <= 0)
            {
                //清理冻结
                if (order.RunningOrder.SchemeType == (int)SchemeType.ChaseBetting)
                {
                    BusinessHelper.Payout_Frozen_To_End(BusinessHelper.FundCategory_Betting, order.RunningOrder.UserId, order.RunningOrder.SchemeId, string.Format("订单{0}出票完成,扣除冻结{1:N2}元", order.RunningOrder.SchemeId, order.RunningOrder.TotalMoney), order.RunningOrder.TotalMoney);
                }

                #region 拆票

                new Sports_Business().RequestTicketByGateway_SingleScheme_New(new GatewayTicketOrder_SingleScheme
                {
                    AllowCodes      = order.AnteCode.AllowCodes,
                    Amount          = order.RunningOrder.Amount,
                    ContainsMatchId = order.AnteCode.ContainsMatchId,
                    FileBuffer      = order.AnteCode.FileBuffer,
                    GameCode        = order.RunningOrder.GameCode,
                    GameType        = order.RunningOrder.GameType,
                    IsRunningTicket = true,
                    IssuseNumber    = order.RunningOrder.IssuseNumber,
                    IsVirtualOrder  = false,
                    OrderId         = order.RunningOrder.SchemeId,
                    PlayType        = order.RunningOrder.PlayType,
                    SelectMatchId   = order.AnteCode.SelectMatchId,
                    TotalMoney      = order.RunningOrder.TotalMoney,
                    UserId          = order.RunningOrder.UserId,
                });

                //new Thread(() =>
                //{
                try
                {
                    //生成文件
                    var json = Encoding.UTF8.GetString(order.AnteCode.FileBuffer);
                    var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "CacheData", "Orders", DateTime.Today.ToString("yyyyMMdd"), order.RunningOrder.GameCode, order.RunningOrder.SchemeId.Substring(0, 10));
                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
                    var fileName = Path.Combine(path, string.Format("{0}.json", order.RunningOrder.SchemeId));
                    File.WriteAllText(fileName, json, Encoding.UTF8);
                }
                catch (Exception)
                {
                }
                //}).Start();


                #endregion

                //更新订单状态
                UpdateOrderTicketStatus(order.RunningOrder.SchemeId);

                //触发出票完成接口
                BusinessHelper.ExecPlugin <IComplateTicket>(new object[] { order.RunningOrder.UserId, order.RunningOrder.SchemeId, order.RunningOrder.TotalMoney, order.RunningOrder.TotalMoney });
            }
        }