/// <summary> /// 获取指写号码所属号段 /// </summary> /// <param name="strPhone"></param> /// <param name="pPhoneSection"></param> /// <returns></returns> private int GetPhoneSectionNum(string strPhone, Dictionary <string, int> pPhoneSection) { //判断是否有非法字符 if (!DataVerify.IsNumber(strPhone)) { return(-1); } int iLen = strPhone.Length; if (iLen > 12 || iLen < 11) { return(-1); } string strHeader = strPhone.Substring(0, 3); try { char[] charArray = strPhone.ToCharArray(); if (0x30 == charArray[0]) //第一位是0 { if (0x30 == charArray[1]) //第二位也是0 { return(-1); } else if (0x31 == charArray[1] && 0x30 != charArray[2]) //第二位是1,但是第三位不是0 { return(-1); } else { if (iLen < 10 || iLen > 12) { return(-1);//错误 } else { return(6); //小灵通 } } } if (0x31 == charArray[0] && 11 == iLen) //手机号 { //匹配手机号段 if (pPhoneSection.ContainsKey(strHeader)) { return(pPhoneSection[strHeader]); } else { return(-1); } } else { return(-1); } } catch { } return(-1); }
/// <summary> /// 对外的信息发送接口 /// </summary> /// <param name="strUserID"></param> /// <param name="strPwd"></param> /// <param name="strPhone"></param> /// <param name="strMsg"></param> /// <param name="strSubport"></param> /// <returns></returns> public string SendMessage(string strUserID, string strPwd, string strPhone, string strMsg, string strSubport) { //此处传进来的参数已经经过了空参数与非法参数的检查 if (string.IsNullOrEmpty(strUserID) || string.IsNullOrEmpty(strPwd) || string.IsNullOrEmpty(strPhone) || string.IsNullOrEmpty(strMsg)) { return("-1"); //参数为空 } //验证账号密码、子端口格式 if (!DataVerify.IsIllegalUser(strUserID) || !DataVerify.IsIllegalUser(strPwd)) { return("-2"); //账号或者密码非法 } else if (!string.IsNullOrEmpty(strSubport)) { if (!DataVerify.IsNumber(strSubport) || strSubport.Length > 6) { return("-3"); //子端口格式非法 } //strSubport = ""; } //获取用户信息,判断密码是否正确 SmsUserData objUser = new SmsUserData(); DataCache.GetCacheUser(strUserID, strPwd, ref objUser); if (object.Equals(null, objUser)) { //用户名或密码错误 return("-11"); } //判断账号是否被禁用 if (objUser.Status == 1)//账号被禁用,0正常,1禁用 { return("-12"); } //如果余额已经小于等于0 if (objUser.Balance <= 0) { return("-15"); //余额不足 } //判断信息内容是否超长[加上签名后的],也就是说可以发的长度是设置长度减去签名长度 int iMsgLen = 0; strMsg = strMsg + objUser.SignStr.Trim(); iMsgLen = strMsg.Length; if (iMsgLen > objUser.MaxLen) { return("-13"); } //判断是否有非法关键词 if (objUser.IsCheckIllegal == 1) //需要检测非法关键词 { if (IsContainIllegal(strMsg)) { return("-14"); } } string[] strPhoneArray = strPhone.Split(','); if (strPhoneArray.Length > objUser.MaxCount) { return("-16"); //发送号码数太多 } if (strPhoneArray.Length < objUser.MinCount) { return("-17"); //发送号码数太少 } SmsMsgSendStr objMsg = new SmsMsgSendStr(); GetPhoneList(strPhoneArray, objUser, objMsg); //获取通道信息 if (!GetSpgateInfo(objUser, objMsg)) { return("-18"); //有通道未绑定 } //获取信息拆分结果 GetSpliteMsg(objUser, objMsg, strMsg); //计算扣费数 int iTotalCount = ComputeTotalFee(objUser, objMsg);//进行扣费处理,此处难在信息的拆分上[计算一条信息要扣多少条] if (iTotalCount == 0) { return("-19"); //无有效号码 } //验证完毕,扣余额。开始发送,如果余额不足,则不扣,在存储过程中扣费 if (!new SmsUser().UpdateBalance(strUserID, iTotalCount)) { return("-15"); //扣除余额失败,余额不足 } //发送 SendMessage(objUser, objMsg, strSubport, iTotalCount); return("1"); }