MVC发送短信到存储数据库步骤代码

1.项目中创建一个Remote类库,添加一个TenXunYunSMS.cs

添加后在引用的NuGet包管理器中的浏览搜索qcloudsms_csharp下载

public class TenXunYunSMS
    {
        //appId
        public int appId;
        //appKey
        public string appKey = "";
        //短信模板ID
        private int tmplateId = 379257;
        //签名内容
        private string smsSign = "7hhhcn";
        /// <summary>
        /// 验证码
        /// </summary>
        public int Code { get; set; }
        /// <summary>
        /// 发送验证码
        /// </summary>
        /// <param name="phone"></param>
        /// <returns></returns>
        public void SetSMS(string phone)
        {
            Random random = new Random();
            int code = random.Next(100000, 999999);
            try
            {
                SmsSingleSender ssender = new SmsSingleSender(appId, appKey);
                var result = ssender.sendWithParam("86", phone,
                    tmplateId, new[] { code.ToString() }, smsSign, "", "");  // 签名参数未提供或者为空时,会使用默认签名发送短信
            }
            catch (JSONException ex)
            {
                throw;
            }
            catch (HTTPException ex)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw;
            }
            Code = code;
        }
    }

 

2.在数据库中创建一个表来存储用户接收到的验证码

create table Sms(
smsId int IDENTITY PRIMARY KEY,
smscode int not null,
userTel bigint not null,
smsTime datetime not null,
smsEfficacy datetime not null
)

3.在MVC中的Web.config里配置第三方提供的appId值和appKey值

 <add key="appId" value="xxxxxxxxxxxx"/>
 <add key="appKey" value="xxxxxxxxxxxxxxxxx"/>

4.在项目中添加一个实体SmsInfo类

public class SmsInfo
    {
        //序号
        public int smsId { get; set; }
        //验证码
        public int smscode  { get; set; }
        //手机号
        public Int64 TelPhone { get; set; }
        //验证码发送时间
        public DateTime smsTime { get; set; }
        //验证码失效时间
        public DateTime smsEfficacy { get; set; }

    }

5. .UI层 在网页中的"获取验证码"按钮添加一个click事件

$("#btn").click(function () {
        var tel = $("#tel").val();
        //使用ajax判断用户是否已经有了有效验证码
        $.ajax({
            type: "post",
            url: "/Login/Sms_Gains?tel=" + tel,
            success: function (result) {
                if (!result.Success) {
                    //使用.ajax异部刷新技术
                    $.ajax({
                        type: "post",
                        //调用Login控制器中的Sms_Gain()
                        url: "/Login/Sms_Gain?tel=" + tel,
                        success: function (result) {
                            if (result.Success) {
                                alert("信息发送成功");
                                ygc();
                            } else {
                                alert("信息发送失败");
                            }
                        },
                    })
                } else {
                    alert("信息已发送,不需要再次发送");
                }
            },
        })
    })

6.在Login控制器中添加

Sms_Gain(string tel)方法:向数据库添加一条消息

Sms_Gains(string tel)方法:从数据库查询用户是否已有验证码

//是否获取到验证码
 public JsonResult Sms_Gain(string tel)
    {
       //调用Operate 对象(Operate类只有一个属性bool类型的Success)
       Operate op = new Operate();
       //调用业务层的SmsGain类
       SmsGain s = new SmsGain();
       //调用业务层的SmsGain类的Sms_Gain(string tel)方法
       op.Success =s.Sms_Gain(tel);
       //返回结果
       return Json(op);
    }




//是否已有验证码
 public JsonResult Sms_Gains(string tel)
        {
            //调用Operate 对象(Operate类只有一个属性bool类型的Success)
            Operate op = new Operate();
            //调用业务层的SmsGain类
            SmsGain s = new SmsGain();
            //调用业务层的SmsGain类的Sms_Gain(string tel)方法
            op.Success = s.Sms_Gains(tel)>0;
            //返回结果
            return Json(op);
        }

7.在业务层的SmsGain类中添加Sms_Gain(string tel)方法Sms_Gains(string tel)方法

        public bool Sms_Gain(string tel) {
            //第三方接口TenXunYunSMS的对象
            TenXunYunSMS t = new TenXunYunSMS();
            try
            {
                //给TenXunYunSMS对象的appId从Web.config配置中拿出
                t.appId = Convert.ToInt32(ConfigurationManager.AppSettings["appId"]);
                //给TenXunYunSMS对象的appKey 从Web.config配置中拿出
                t.appKey = ConfigurationManager.AppSettings["appKey"];
                t.SetSMS(tel);
            }
            catch (Exception)
            {
                return false;
            }
            //数据库添加信息
            //实体类SmsInfo对象值
            SmsInfo s = new SmsInfo();
            s.smscode = t.Code; 
            s.TelPhone =Convert.ToInt64(tel);
            s.smsTime = DateTime.Now;
            s.smsEfficacy = DateTime.Now.AddMinutes(5);
            //数据访问层的SSmsInfo
            SSmsInfo ss = new SSmsInfo();
            return ss.insetsmsInfo(s)>0;
        }




//是否已有验证码
   public int Sms_Gains(string tel)
        {
            SSmsInfo ss = new SSmsInfo();
            return ss.selectsmss(tel);
        }

8.数据访问层的SSmsInfo的insetsmsInfo(SmsInfo s)方法和 selectsmss(string tel)方法

public int insetsmsInfo(SmsInfo s)
        {
            string sql = @"INSERT INTO [MiShop].[dbo].[Sms]
           ([smscode]
           ,[userTel]
           ,[smsTime]
           ,[smsEfficacy])
     VALUES
           (@smscode
           , @userTel
           , @smsTime
           , @smsEfficacy)";
           
            SqlParameter[] parameters = {
                new SqlParameter()
                {
                    DbType = DbType.Int32,
                    ParameterName = "@smscode",
                    Value = s.smscode
                },
                new SqlParameter()
                {
                    DbType = DbType.Int64,
                    ParameterName = "@userTel",
                    Value = s.TelPhone
                },
                new SqlParameter()
                {
                    DbType = DbType.DateTime,
                    ParameterName = "@smsTime",
                    Value = s.smsTime
                },
                new SqlParameter()
                {
                    DbType = DbType.DateTime,
                    ParameterName = "@smsEfficacy",
                    Value =s.smsEfficacy
                }
             };
            SqlHelper db = new SqlHelper();
            return db.ExcuteNoQuery(sql,parameters);
        }









public int selectsmss(string tel)
        {
            string sql = @"select COUNT(1) from dbo.Sms where userTel=@userTel and                     
                         smsEfficacy>@smsEfficacy";
            SqlParameter[] parameters = {
                
                new SqlParameter()
                {
                    DbType = DbType.Int64,
                    ParameterName = "@userTel",
                    Value =Convert.ToInt64(tel)
                },
                new SqlParameter()
                {
                    DbType = DbType.DateTime,
                    ParameterName = "@smsEfficacy",
                    Value = DateTime.Now
                }
            };
            SqlHelper db = new SqlHelper();
            return db.ExecuteReader(sql, parameters);
        }

9.工具类SqlHelper 的ExcuteNoQuery(string sql, SqlParameter[] parameters)方法ExecuteReader(string sql, SqlParameter[] parameters)方法

 public int ExcuteNoQuery(string sql, SqlParameter[] parameters) {
            try
            {
                //1:创建连接 
                conn = new SqlConnection(config);
                //2:打开连接 
                conn.Open();
                //3;创建SqlCommand对象
                SqlCommand comm = new SqlCommand(sql, conn);
                //4:预处理 
                if (parameters != null)
                {
                    comm.Parameters.AddRange(parameters);
                }
                //5:执行sql语句 (ExcuteNonQuery)
                i= comm.ExecuteNonQuery();
                //6:处理返回结果、
                return i;
            }
            catch (Exception ex)
            {
                return i;
            }
            finally {
                conn.Close();
            }
        }






 public int ExecuteReader(string sql, SqlParameter[] parameters)
        {
            try
            {
                //1:创建连接 
                conn = new SqlConnection(config);
                //2:打开连接 
                conn.Open();
                //3;创建SqlCommand对象
                SqlCommand comm = new SqlCommand(sql, conn);
                //4:预处理 
                if (parameters != null)
                {
                    comm.Parameters.AddRange(parameters);
                }
                //5:执行sql语句 (ExcuteNonQuery)
                i =Convert.ToInt32(comm.ExecuteScalar());
                //6:处理返回结果、
                return i;
            }
            catch (Exception ex)
            {
                return i;
            }
            finally
            {
                conn.Close();
            }
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值