/// <summary> /// 更新一条数据 /// </summary> public bool Update(BCW.SSE.Model.SseBase model) { StringBuilder strSql = new StringBuilder(); strSql.Append("update tb_SseBase set "); strSql.Append("sseNo=@sseNo,"); strSql.Append("closePrice=@closePrice,"); strSql.Append("bz=@bz"); strSql.Append(" where id=@id"); SqlParameter[] parameters = { new SqlParameter("@sseNo", SqlDbType.Int, 4), new SqlParameter("@closePrice", SqlDbType.Decimal, 9), new SqlParameter("@bz", SqlDbType.NVarChar, 200), new SqlParameter("@id", SqlDbType.Int, 4) }; parameters[0].Value = model.sseNo; parameters[1].Value = model.closePrice; parameters[2].Value = model.bz; parameters[3].Value = model.id; int rows = SqlHelper.ExecuteSql(strSql.ToString(), parameters); if (rows > 0) { return(true); } else { return(false); } }
/// <summary> /// 取得每页记录 /// </summary> /// <param name="p_pageIndex">当前页</param> /// <param name="p_pageSize">分页大小</param> /// <param name="p_recordCount">返回总记录数</param> /// <param name="strWhere">查询条件</param> /// <returns>IList Luckpay</returns> public IList <BCW.SSE.Model.SseBase> GetSseBasePages(int p_pageIndex, int p_pageSize, string strWhere, out int p_recordCount) { IList <BCW.SSE.Model.SseBase> listSseBase = new List <BCW.SSE.Model.SseBase>(); string sTable = "tb_SseBase"; string sPkey = "id"; string sField = "id,sseNo,closePrice,bz"; string sCondition = strWhere; string sOrder = "sseNo Desc"; int iSCounts = 0; using (SqlDataReader reader = SqlHelper.RunProcedureMe(sTable, sPkey, sField, p_pageIndex, p_pageSize, sCondition, sOrder, iSCounts, out p_recordCount)) { //计算总页数 if (p_recordCount > 0) { int pageCount = BasePage.CalcPageCount(p_recordCount, p_pageSize, ref p_pageIndex); } else { return(listSseBase); } while (reader.Read()) { BCW.SSE.Model.SseBase objSseBase = new BCW.SSE.Model.SseBase(); objSseBase.id = reader.GetInt32(0); objSseBase.sseNo = reader.GetInt32(1); objSseBase.closePrice = reader.GetDecimal(2); objSseBase.bz = reader.GetString(3); listSseBase.Add(objSseBase); } } return(listSseBase); }
/// <summary> /// 增加一条数据 /// </summary> public int Add(BCW.SSE.Model.SseBase model) { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into tb_SseBase("); strSql.Append("sseNo,closePrice,bz)"); strSql.Append(" values ("); strSql.Append("@sseNo,@closePrice,@bz)"); strSql.Append(";select @@IDENTITY"); SqlParameter[] parameters = { new SqlParameter("@sseNo", SqlDbType.Int, 4), new SqlParameter("@closePrice", SqlDbType.Decimal, 9), new SqlParameter("@bz", SqlDbType.NVarChar, 200) }; parameters[0].Value = model.sseNo; parameters[1].Value = model.closePrice; parameters[2].Value = model.bz; object obj = SqlHelper.GetSingle(strSql.ToString(), parameters); if (obj == null) { return(0); } else { return(Convert.ToInt32(obj)); } }
/// <summary> /// 得到一个对象实体 /// </summary> public BCW.SSE.Model.SseBase DataRowToModel(DataRow row) { BCW.SSE.Model.SseBase model = new BCW.SSE.Model.SseBase(); if (row != null) { if (row["id"] != null && row["id"].ToString() != "") { model.id = int.Parse(row["id"].ToString()); } if (row["sseNo"] != null && row["sseNo"].ToString() != "") { model.sseNo = int.Parse(row["sseNo"].ToString()); } if (row["closePrice"] != null && row["closePrice"].ToString() != "") { model.closePrice = decimal.Parse(row["closePrice"].ToString()); } if (row["bz"] != null) { model.bz = row["bz"].ToString(); } } return(model); }
/// <summary> /// 得到一个对象实体 /// </summary> public BCW.SSE.Model.SseBase GetModel(int id) { StringBuilder strSql = new StringBuilder(); strSql.Append("select top 1 id,sseNo,closePrice,bz from tb_SseBase "); strSql.Append(" where id=@id"); SqlParameter[] parameters = { new SqlParameter("@id", SqlDbType.Int, 4) }; parameters[0].Value = id; BCW.SSE.Model.SseBase model = new BCW.SSE.Model.SseBase(); DataSet ds = SqlHelper.Query(strSql.ToString(), parameters); if (ds.Tables[0].Rows.Count > 0) { return(DataRowToModel(ds.Tables[0].Rows[0])); } else { return(null); } }
//查询是否已抓取当天的收盘数据 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&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&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); }