private void Receive() // 接收短信 { if ((Betting_SMS_UserID == "") || (Betting_SMS_UserPassword == "") || (segg == null)) { return; } SMS.Eucp.Gateway.CallResult Result = segg.ReceiveSMS(); if (Result.Code < 0) { msg.Send("Receive SMS fail." + Result.Description); log.Write("Receive SMS fail." + Result.Description); return; } if (segg.rsc.Count < 1) { return; } // 写入数据库 DAL.Tables.T_SmsBettings t_SmsBettings = new DAL.Tables.T_SmsBettings(); for (int i = 0; i < segg.rsc.Count; i++) { t_SmsBettings.SMSID.Value = 0; t_SmsBettings.From.Value = segg.rsc[i].FromMobile; t_SmsBettings.Content.Value = segg.rsc[i].Content; t_SmsBettings.HandleResult.Value = 0; if (t_SmsBettings.Insert(ConnectionString) < 0) { msg.Send("Write SMS fail."); log.Write("Write SMS fail."); continue; } } }
private void Betting() // 解析,投注 { DAL.Tables.T_SmsBettings t_SmsBettings = new DAL.Tables.T_SmsBettings(); DataTable dt = t_SmsBettings.Open(ConnectionString, "", "HandleResult = 0", "[ID]"); if (dt == null) { msg.Send("Read SMS fail."); log.Write("Read SMS fail."); return; } foreach (DataRow dr in dt.Rows) { string ID = dr["ID"].ToString(); string Mobile = dr["From"].ToString().Trim(); string Content = Shove._Convert.ToDBC(dr["Content"].ToString()).Trim(); if ((Mobile == "") || (Content == "")) { t_SmsBettings.HandleResult.Value = -1; t_SmsBettings.HandleDescription.Value = "短信格式错误(1000)"; t_SmsBettings.Update(ConnectionString, "[ID] = " + ID); continue; } string[] Contents = Content.Split(';'); if ((Contents == null) || (Contents.Length != 6)) { t_SmsBettings.HandleResult.Value = -1; t_SmsBettings.HandleDescription.Value = "短信格式错误(1001)"; t_SmsBettings.Update(ConnectionString, "[ID] = " + ID); continue; } // 1;501;1;1;010203040506+01|010203040506+01;#2 站点ID;玩法ID;总份数;认购份数;号码|号码;#倍数 long SiteID = Shove._Convert.StrToLong(Contents[0], -1); if (SiteID < 0) { t_SmsBettings.HandleResult.Value = -1; t_SmsBettings.HandleDescription.Value = "短信格式错误(1002)"; t_SmsBettings.Update(ConnectionString, "[ID] = " + ID); continue; } if (new DAL.Tables.T_Sites().GetCount(ConnectionString, "[ID] = " + SiteID.ToString()) < 0) { t_SmsBettings.HandleResult.Value = -1; t_SmsBettings.HandleDescription.Value = "短信格式错误(1003)"; t_SmsBettings.Update(ConnectionString, "[ID] = " + ID); continue; } #region 投注 if (!Contents[5].StartsWith("#")) { t_SmsBettings.HandleResult.Value = -1; t_SmsBettings.HandleDescription.Value = "短信格式错误(1004)"; t_SmsBettings.Update(ConnectionString, "[ID] = " + ID); continue; } int PlayTypeID = Shove._Convert.StrToInt(Contents[1], -1); int Share = Shove._Convert.StrToInt(Contents[2], -1); int BuyShare = Shove._Convert.StrToInt(Contents[3], -1); string LotteryNumber = Contents[4].Trim(); int Multiple = Shove._Convert.StrToInt(Contents[5].Substring(1, Contents[5].Length - 1), -1); if ((PlayTypeID < 0) || (BuyShare < 0) || (Share < BuyShare) || (LotteryNumber == "") || (Multiple < 0)) { t_SmsBettings.HandleResult.Value = -1; t_SmsBettings.HandleDescription.Value = "短信格式错误(1005)"; t_SmsBettings.Update(ConnectionString, "[ID] = " + ID); continue; } // 根据手机获取用户 DataTable dtUsers = new DAL.Tables.T_Users().Open(ConnectionString, "[ID], Balance", "SiteID = " + SiteID.ToString() + " and Mobile = '" + Mobile + "' and isMobileValided = 1", ""); if ((dtUsers == null) || (dtUsers.Rows.Count != 1)) { t_SmsBettings.HandleResult.Value = -1; t_SmsBettings.HandleDescription.Value = "用户不存在(1006)"; t_SmsBettings.Update(ConnectionString, "[ID] = " + ID); continue; } long UserID = Shove._Convert.StrToLong(dtUsers.Rows[0]["ID"].ToString(), -1); double Balance = Shove._Convert.StrToDouble(dtUsers.Rows[0]["Balance"].ToString(), 0); if (UserID < 0) { t_SmsBettings.HandleResult.Value = -1; t_SmsBettings.HandleDescription.Value = "用户不存在(1007)"; t_SmsBettings.Update(ConnectionString, "[ID] = " + ID); continue; } // 获取彩种、同时也校验了玩法 DataTable dtLottery = new DAL.Tables.T_PlayTypes().Open(ConnectionString, "LotteryID, Price, MaxMultiple", "[ID] = " + PlayTypeID.ToString(), ""); if ((dtLottery == null) || (dtLottery.Rows.Count < 1)) { t_SmsBettings.HandleResult.Value = -1; t_SmsBettings.HandleDescription.Value = "短信格式错误(1008)"; t_SmsBettings.Update(ConnectionString, "[ID] = " + ID); continue; } int LotteryID = Shove._Convert.StrToInt(dtLottery.Rows[0]["LotteryID"].ToString(), -1); double Price = Shove._Convert.StrToDouble(dtLottery.Rows[0]["Price"].ToString(), -1); int MaxMultiple = Shove._Convert.StrToInt(dtLottery.Rows[0]["MaxMultiple"].ToString(), -1); if ((LotteryID < 0) || (Price < 2) || (Multiple > MaxMultiple)) { t_SmsBettings.HandleResult.Value = -1; t_SmsBettings.HandleDescription.Value = "短信格式错误(10090)"; t_SmsBettings.Update(ConnectionString, "[ID] = " + ID); continue; } // 校验投注号码,计算注数、金额 int Num = 0; LotteryNumber = GetLotteryNumber(LotteryID, PlayTypeID, LotteryNumber, ref Num); if (Num < 1) { t_SmsBettings.HandleResult.Value = -1; t_SmsBettings.HandleDescription.Value = "投注号码错误(1010)"; t_SmsBettings.Update(ConnectionString, "[ID] = " + ID); continue; } double Money = Num * Price * Multiple; // 获取期号 DataTable dtIsuse = new DAL.Tables.T_Isuses().Open(ConnectionString, "top 1 [ID]", "LotteryID = " + LotteryID.ToString() + " and GetDate() between StartTime and dbo.F_GetIsuseSystemEndTime([ID], " + PlayTypeID.ToString() + ") and IsOpened = 0", ""); if ((dtIsuse == null) || (dtIsuse.Rows.Count < 1)) { t_SmsBettings.HandleResult.Value = -1; t_SmsBettings.HandleDescription.Value = "奖期未开启(1011)"; t_SmsBettings.Update(ConnectionString, "[ID] = " + ID); continue; } long IsuseID = Shove._Convert.StrToLong(dtIsuse.Rows[0]["ID"].ToString(), -1); if (IsuseID < 0) { t_SmsBettings.HandleResult.Value = -1; t_SmsBettings.HandleDescription.Value = "奖期未开启(1012)"; t_SmsBettings.Update(ConnectionString, "[ID] = " + ID); continue; } // 校验余额 if (Balance < Money) { t_SmsBettings.HandleResult.Value = -1; t_SmsBettings.HandleDescription.Value = "投注卡账户余额不足(1013)"; t_SmsBettings.Update(ConnectionString, "[ID] = " + ID); continue; } // 投注 string ReturnDescription = ""; long SchemeID = InitiateScheme(SiteID, UserID, IsuseID, PlayTypeID, "本方案由用户手动编写短信代码投注(系统)", "短信ID:" + ID + "\r\n短信内容:" + Content, LotteryNumber, "", Multiple, Money, 0, Share, BuyShare, "", 0, ref ReturnDescription); if (SchemeID < 0) { t_SmsBettings.HandleResult.Value = -1; t_SmsBettings.HandleDescription.Value = ReturnDescription + "(1015)"; t_SmsBettings.Update(ConnectionString, "[ID] = " + ID); continue; } t_SmsBettings.SchemeID.Value = SchemeID; t_SmsBettings.HandleResult.Value = 1; t_SmsBettings.Update(ConnectionString, "[ID] = " + ID); #endregion } }