Beispiel #1
0
        //确认下注.
        public int CreateNewOrder(int sseNo, int buyType, Int64 money, int userId, int orderType, bool isAutoOrder)
        {
            int      id;
            int      _orderType = orderType; //酷币订单.
            int      _sseNo     = sseNo;     //期数.
            DateTime _buyTime   = System.DateTime.Now;
            int      _userId    = userId;
            int      _buyType   = buyType;
            Int64    _money     = money;

            BCW.SSE.Model.SseOrder _sseOrderMod = new BCW.SSE.Model.SseOrder();
            _sseOrderMod.orderType     = _orderType;
            _sseOrderMod.sseNo         = _sseNo;
            _sseOrderMod.orderDateTime = _buyTime;
            _sseOrderMod.userId        = _userId;
            _sseOrderMod.buyType       = Convert.ToBoolean(buyType);
            _sseOrderMod.buyMoney      = _money;
            _sseOrderMod.state         = 0;
            _sseOrderMod.bz            = "";
            _sseOrderMod.isAutoOrder   = isAutoOrder;

            id = new BCW.SSE.BLL.SseOrder().Add(_sseOrderMod);
            return(id);
        }
Beispiel #2
0
        //查询是否已抓取当天的收盘数据

        public bool GetNewSSEData()
        {
            this.xmlPath = "/Controls/SSE.xml";

            DateTime _openPrizeTime = DateTime.Parse(ub.GetSub("SSEOpen", xmlPath));

            //周末休市.
            if (System.DateTime.Now.DayOfWeek == DayOfWeek.Saturday || System.DateTime.Now.DayOfWeek == DayOfWeek.Sunday)
            {
                return(false);
            }

            //自动开奖,开奖时间不能早于设定的开奖时间
            if (autoOpenPrize == true && System.DateTime.Now < _openPrizeTime)
            {
                return(false);
            }


            BCW.SSE.BLL.SseBase _sseBase;


            //获取上次的记录.

            decimal _lastPrice = 0;

            //获取上一个开奖日数据
            _sseBase = new BCW.SSE.BLL.SseBase();
            DataSet _dsLastRecord = _sseBase.GetList(1, "", "sseNo desc");

            if (_dsLastRecord.Tables[0].Rows.Count > 0)
            {
                _lastPrice = decimal.Parse(_dsLastRecord.Tables[0].Rows[0]["closePrice"].ToString());
            }

            //开奖的期号

            string _sseNo = System.DateTime.Now.Year.ToString("#0000") + System.DateTime.Now.Month.ToString("#00") + System.DateTime.Now.Day.ToString("#00");

            _sseBase = new BCW.SSE.BLL.SseBase();
            DataSet _dataSet = _sseBase.GetList(string.Format("sseNo={0}", _sseNo));

            if (_dataSet.Tables[0].Rows.Count <= 0)
            {
                mIsOpenPrize = true;                 //正在开奖.

                //获取当天收盘价(调用新浪接口取数据).
                string _closePrice;
                if (closePrice == "0")
                {
                    _closePrice = new BCW.Service.GetStk().GetStkXMLFormat();
                }
                else
                {
                    _closePrice = closePrice;
                }
                BCW.SSE.Model.SseBase _sseModel = new BCW.SSE.Model.SseBase();
                _sseModel.sseNo      = int.Parse(_sseNo);
                _sseModel.closePrice = decimal.Parse(_closePrice);
                _sseModel.bz         = _sseModel.closePrice > _lastPrice ? "1" : _sseModel.closePrice < _lastPrice ? "0":"-1"; //1:涨  0:跌  -1:平
                _sseBase.Add(_sseModel);

                //开奖处理.
                //开出平局,处理退注. TODO by zhc 暂时用下面的循环先,数据量大时这种方式效率极差,日后改用数据批量更新.
                if (_sseModel.bz == "-1")
                {
                    DataSet ds = BCW.Data.SqlHelper.Query(string.Format("select * from tb_SseOrder where sseNo={0} and state=0", _sseNo));

                    if (ds != null && ds.Tables[0].Rows.Count > 0)
                    {
                        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                        {
                            //退还相应的币种.
                            int   _orderId   = int.Parse(ds.Tables[0].Rows[i]["id"].ToString());                  //订单用户ID.
                            int   _userId    = int.Parse(ds.Tables[0].Rows[i]["userId"].ToString());              //订单用户ID.
                            int   _moneyType = int.Parse(ds.Tables[0].Rows[i]["orderType"].ToString());           //订单货币类型.
                            Int64 _backMoney = (Int64)decimal.Parse(ds.Tables[0].Rows[i]["buyMoney"].ToString()); //订单金额.


                            //变更订单状态
                            BCW.SSE.Model.SseOrder modelSseOrder = new BCW.SSE.BLL.SseOrder().GetModel(_orderId);
                            modelSseOrder.bz = "2";                                    //2:特殊处理;记录一下订单是系统平局退回
                            new BCW.SSE.BLL.SseOrder().Update(modelSseOrder);


                            //退还酷币
                            string strLog = "";
                            if (_moneyType == 0)
                            {
                                new BCW.BLL.User().UpdateiGold(_userId, ( long )_backMoney, string.Format("上证【{0}】期平局退回|标识({1})", _sseNo, _orderId));
                                strLog = string.Format("上证【{0}】期平局退回|金额{1}),请注意查收", _sseNo, _backMoney.ToString("0") + ub.Get("SiteBz"));
                            }
                            //退还农场金币
                            else
                            {
                                new BCW.farm.BLL.NC_user().UpdateiGold(_userId, new BCW.BLL.User().GetUsName(_userId), ( long )_backMoney, string.Format("上证【{0}】期平局退回|标识({1})|获得{2}金币|结{3}金币)", _sseNo, _orderId, Math.Abs(_backMoney), (new BCW.farm.BLL.NC_user().GetGold(_userId) + _backMoney).ToString("#0")), 8);
                                strLog = string.Format("上证【{0}】期平局退回|金额{1}),请注意查收", _sseNo, _backMoney.ToString("0") + "金币");
                            }

                            //发内线
                            if (string.IsNullOrEmpty(strLog) == false)
                            {
                                new BCW.BLL.Guest().Add(0, _userId, new BCW.BLL.User().GetUsName(_userId), strLog);
                            }


                            //更新奖池.
                            IDataParameter[] _parameters = new SqlParameter[3];
                            _parameters[0]       = new SqlParameter("@orderId", SqlDbType.Int);
                            _parameters[1]       = new SqlParameter("@operType", SqlDbType.Int);
                            _parameters[2]       = new SqlParameter("@operUserId", SqlDbType.Int);
                            _parameters[0].Value = _orderId;            //订单ID.
                            _parameters[1].Value = 1;                   //系统退回
                            _parameters[2].Value = -1;                  //系统id为-1
                            BCW.Data.SqlHelper.ExecuteRunProcedure("sp_SseChangePrizePool", _parameters);
                        }
                    }
                }


                //如果正常涨跌,交由存储过程处理相关开奖逻辑

                //酷币开奖.
                IDataParameter[] _parameters2 = new SqlParameter[4];
                _parameters2[0]       = new SqlParameter("@sseNo", SqlDbType.Int);
                _parameters2[1]       = new SqlParameter("@prizeCalcRate", SqlDbType.Float);
                _parameters2[2]       = new SqlParameter("@poundageRate", SqlDbType.Float);
                _parameters2[3]       = new SqlParameter("@orderType", SqlDbType.Int);
                _parameters2[0].Value = _sseNo;                                     //订单ID.
                _parameters2[1].Value = ub.GetSub("SSEPrizeCalcRate", xmlPath);     //订单计奖率.
                _parameters2[2].Value = ub.GetSub("SSEPrizePoundageRate", xmlPath); //订单兑奖手续费率.
                _parameters2[3].Value = 0;
                BCW.Data.SqlHelper.ExecuteRunProcedure("sp_SseOpenPrize", _parameters2);


                //金币开奖.
                _parameters2[0]       = new SqlParameter("@sseNo", SqlDbType.Int);
                _parameters2[1]       = new SqlParameter("@prizeCalcRate", SqlDbType.Float);
                _parameters2[2]       = new SqlParameter("@poundageRate", SqlDbType.Float);
                _parameters2[3]       = new SqlParameter("@orderType", SqlDbType.Int);
                _parameters2[0].Value = _sseNo;                                     //订单ID.
                _parameters2[1].Value = ub.GetSub("SSEPrizeCalcRate", xmlPath);     //订单计奖率.
                _parameters2[2].Value = ub.GetSub("SSEPrizePoundageRate", xmlPath); //订单兑奖手续费率.
                _parameters2[3].Value = 1;
                BCW.Data.SqlHelper.ExecuteRunProcedure("sp_SseOpenPrize", _parameters2);



                //内线通知中奖玩家
                DataSet _dsGetPrizeUser = new BCW.SSE.BLL.SseGetPrize().GetList("sseNo =" + _sseNo);
                for (int i = 0; i < _dsGetPrizeUser.Tables[0].Rows.Count; i++)
                {
                    //发内线
                    //退还酷币
                    string strLog = "";
                    string getStr = "";
                    if (int.Parse(_dsGetPrizeUser.Tables[0].Rows[i]["orderType"].ToString()) == 0)
                    {
                        getStr = "[url=/bbs/game/SSE.aspx?sseVe=0&amp;act=getPirze]马上兑奖[/URL]";
                        strLog = string.Format("恭喜您在上证第{0}期赢得{1}", _sseNo, decimal.Parse(_dsGetPrizeUser.Tables[0].Rows[i]["prizeVal"].ToString()).ToString("#0") + ub.Get("SiteBz"));
                    }
                    //退还农场金币
                    else
                    {
                        getStr = "[url=/bbs/game/SSE.aspx?sseVe=1&amp;act=getPirze]马上兑奖[/URL]";
                        strLog = string.Format("恭喜您在上证第{0}期赢得{1}", _sseNo, decimal.Parse(_dsGetPrizeUser.Tables[0].Rows[i]["prizeVal"].ToString()).ToString("#0") + "金币");
                    }


                    new BCW.BLL.Guest().Add(0, int.Parse(_dsGetPrizeUser.Tables[0].Rows[i]["userId"].ToString()), new BCW.BLL.User().GetUsName(int.Parse(_dsGetPrizeUser.Tables[0].Rows[i]["userId"].ToString())), strLog + getStr);
                }


                mIsOpenPrize = false;
                return(true);
            }
            return(false);
        }