发表于: 2020-07-08 23:21:40

1 1208


今天完成的事情:

学员报名系统加上手机,邮箱,头像的字段,接口中添加对应的字段。

修改前一个任务的代码,数据库中account加上手机,邮箱,头像字段:

pojo类中也添加对应字段:

package com.jnshu.pojo;

public class Account {
private Long id;

   private String username;

   private String password;

   private int phone;

   private String img;

   private String email;

   private Long createat;

   private String createby;

   private Long updateat;

   private String updateby;

   public Long getId() {
return id;
   }

public void setId(Long id) {
this.id = id;
   }

public String getUsername() {
return username;
   }

public void setUsername(String username) {
this.username = username;
   }

public String getPassword() {
return password;
   }

public void setPassword(String password) {
this.password = password;
   }

public int getPhone() {
return phone;
   }

public void setPhone(int phone) {
this.phone = phone;
   }

public String getImg() {
return img;
   }

public void setImg(String img) {
this.img = img;
   }

public String getEmail() {
return email;
   }

public void setEmail(String email) {
this.email = email;
   }

public Long getCreateat() {
return createat;
   }

public void setCreateat(Long createat) {
this.createat = createat;
   }

public String getCreateby() {
return createby;
   }

public void setCreateby(String createby) {
this.createby = createby;
   }

public Long getUpdateat() {
return updateat;
   }

public void setUpdateat(Long updateat) {
this.updateat = updateat;
   }

public String getUpdateby() {
return updateby;
   }

public void setUpdateby(String updateby) {
this.updateby = updateby;
   }

@Override
   public String toString() {
return "Account{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
   }

public Account() {
}

public Account(Long id) {
this.id = id;
   }
}

修改队友的AccountMapper.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jnshu.dao.AccountMapper">
   <insert id="insert" parameterType="com.jnshu.pojo.Account">
   insert into account (id, username, password, phone, img, email,createat, createby,
updateat, updateby)
values (#{id,jdbcType=BIGINT}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{phone,jdbcType=INTEGER},
#{img,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, #{createat,jdbcType=BIGINT}, #{createby,jdbcType=VARCHAR},
#{updateat,jdbcType=BIGINT}, #{updateby,jdbcType=VARCHAR})
</insert>
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
   delete from account
where id = #{id,jdbcType=BIGINT}
</delete>
   <update id="updateByPrimaryKeySelective" parameterType="com.jnshu.pojo.Account">
       update account
<set>
           <if test="username != null">
               username = #{username,jdbcType=BIGINT},
</if>
           <if test="password != null">
               password = #{password,jdbcType=BIGINT},
</if>
           <if test="phone != null">
               phone = #{phone,jdbcType=INTEGER},
</if>
           <if test="img != null">
               img = #{img,jdbcType=VARCHAR},
</if>
           <if test="email != null">
               email = #{email,jdbcType=VARCHAR},
</if>
           <if test="createat != null">
               createat = #{createat,jdbcType=BIGINT},
</if>
           <if test="createby != null">
               createby = #{createby,jdbcType=VARCHAR},
</if>
           <if test="updateat != null">
               updateat = #{updateat,jdbcType=BIGINT},
</if>
           <if test="updateby != null">
               updateby = #{updateby,jdbcType=VARCHAR},
</if>
       </set>
       where id = #{id,jdbcType=BIGINT}
</update>
   <select id="select" parameterType="Account" resultType="Account">
       select * from account
<where>
           <if test="id != null">
               id = #{id,jdbcType=BIGINT}
</if>
           <if test="username != null">
               and username = #{username,jdbcType=VARCHAR}
</if>
           <if test="password != null">
               and password = #{password,jdbcType=VARCHAR}
</if>
       </where>
   </select>
   <select id="selectAccount" parameterType="String" resultType="Account">
       select * from account where username = #{username}
</select>
</mapper>


完成容联短信DEMO:

首先注册容联云。

1. 去容联控制台首页获取开发者主账号, 获取ACCOUNT SID及AUTH TOKEN

2. 应用管理设置默认应用-> 编辑 -> 短信验证码->APP ID

3.在官网下载Demo示例:

4.下载完解压得到:

5.使用idea打开demo,按照说明填写:

package com.cloopen.rest.demo;

import com.cloopen.rest.sdk.CCPRestSmsSDK;

import java.util.HashMap;
import java.util.Set;

public class SDKTestSendTemplateSMS {

/**
   * @param args
   */
  public static void main(String[] args) {
HashMap<String, Object> result = null;

     //初始化SDK
     CCPRestSmsSDK restAPI = new CCPRestSmsSDK();
     
     //******************************注释*********************************************
     //*初始化服务器地址和端口                                                       *
     //*沙盒环境(用于应用开发调试):restAPI.init("sandboxapp.cloopen.com", "8883");*
     //*生产环境(用户应用上线使用):restAPI.init("app.cloopen.com", "8883");       *
     //*******************************************************************************
     restAPI.init("sandboxapp.cloopen.com", "8883");
     
     //******************************注释*********************************************
     //*初始化主帐号和主帐号令牌,对应官网开发者主账号下的ACCOUNT SID和AUTH TOKEN     *
     //*ACOUNT SID和AUTH TOKEN在登陆官网后,在“应用-管理控制台”中查看开发者主账号获取*
     //*参数顺序:第一个参数是ACOUNT SID,第二个参数是AUTH TOKEN。                   *
     //*******************************************************************************
     restAPI.setAccount("8aaf0708732220a601732c5089d8053c", "e68ee368f4f44f8882580eeb4797e56c");
     
     
     //******************************注释*********************************************
     //*初始化应用ID                                                                 *
     //*测试开发可使用“测试Demo”的APP ID,正式上线需要使用自己创建的应用的App ID     *
     //*应用ID的获取:登陆官网,在“应用-应用列表”,点击应用名称,看应用详情获取APP ID*
     //*******************************************************************************
     restAPI.setAppId("8aaf0708732220a601732c508ad70542");
     
     
     //******************************注释****************************************************************
     //*调用发送模板短信的接口发送短信                                                                  *
     //*参数顺序说明:                                                                                  *
     //*第一个参数:是要发送的手机号码,可以用逗号分隔,一次最多支持100个手机号                          *
     //*第二个参数:是模板ID,在平台上创建的短信模板的ID值;测试的时候可以使用系统的默认模板,id为1。    *
     //*系统默认模板的内容为“【云通讯】您使用的是云通讯短信模板,您的验证码是{1},请于{2}分钟内正确输入”*
     //*第三个参数是要替换的内容数组。                                                                                               *
     //**************************************************************************************************
     
     //**************************************举例说明***********************************************************************
     //*假设您用测试Demo的APP ID,则需使用默认模板ID 1,发送手机号是13800000000,传入参数为6532和5,则调用方式为           *
     //*result = restAPI.sendTemplateSMS("13800000000","1" ,new String[]{"6532","5"});                                                       *
     //*则13800000000手机号收到的短信内容是:【云通讯】您使用的是云通讯短信模板,您的验证码是6532,请于5分钟内正确输入     *
     //*********************************************************************************************************************
     result = restAPI.sendTemplateSMS("13387660408","1" ,new String[]{"6532","5"});
     
     System.out.println("SDKTestGetSubAccounts result=" + result);
     if("000000".equals(result.get("statusCode"))){
//正常返回输出data包体信息(map)
        HashMap<String,Object> data = (HashMap<String, Object>) result.get("data");
        Set<String> keySet = data.keySet();
        for(String key:keySet){
Object object = data.get(key);
           System.out.println(key +" = "+object);
        }
}else{
//异常返回输出错误码和错误信息
        System.out.println("错误码=" + result.get("statusCode") +" 错误信息= "+result.get("statusMsg"));
     }
}

}

6.最后测试:

这是由于还没有绑定测试号码,去官网添加即可,添加之后再次运行:

手机收到短信:



接下来将它加到之前的任务中:

加一个生成随机验证码的工具类:

   public static String getRandLength(int intLength){
       Random random = new Random();
       // 获取随机数
       double pross (random.nextDouble()) Math.pow(10intLength);

       // 将获取的随机数转换为字符串
       String fixLengthString String.valueOf(pross);

       // 返回固定长度随机数
       return fixLengthString.substring(1intLength+1);
   }

SDKTest:

package com.jnshu.util;

import com.cloopen.rest.sdk.CCPRestSmsSDK;
import java.util.HashMap;
import java.util.Set;

public class SDKTest {

private String AccountSid;
  private String AccountToken;
  private String Rand_Code = RandNum.getRandLength(4);

  public SDKTest(String accountSid, String accountToken) {
AccountSid = accountSid;
     AccountToken = accountToken;
  }

public String getRand_Code() {
return Rand_Code;
  }

public boolean getSMS(String phone) {
HashMap<String, Object> result = null;
     // 初始化SDK
     CCPRestSmsSDK restAPI = new CCPRestSmsSDK();
     /* 初始化服务器地址和端口   */
     // 沙盒模式 | 内测模式
     restAPI.init("sandboxapp.cloopen.com", "8883");
     // 生产环境
     // restAPI.init("app.cloopen.com", "8883");

     /* 初始化主账号和主令牌 ACOUNT SID和AUTH TOKEN在登陆官网后,在“应用-管理控制台”中查看开发者主账号获取 */
     restAPI.setAccount(AccountSid, AccountToken);
     /* 初始化应用ID 应用ID的获取:登陆官网,在“应用-应用列表”,点击应用名称,看应用详情获取APP ID */
     restAPI.setAppId("8aaf0708732220a601732c508ad70542");

     /* 发送短信 */
     //*第一个参数:是要发送的手机号码,可以用逗号分隔,一次最多支持100个手机号                          *
     //*第二个参数:是模板ID,在平台上创建的短信模板的ID值;测试的时候可以使用系统的默认模板,id为1。    *
     //*系统默认模板的内容为“【云通讯】您使用的是云通讯短信模板,您的验证码是{1},请于{2}分钟内正确输入”*
     //*第三个参数是要替换的内容数组。
     /* 给17050071261按照官网模板 1 发送验证码 6543 5分钟后失效 */
     result = restAPI.sendTemplateSMS(phone, "1", new String[]{Rand_Code,"5"});
     System.out.println(Rand_Code);
     /* 输出发送返回信息 */
     System.out.println("SDKTestGetSubAccounts result=" + result);
     if("000000".equals(result.get("statusCode"))){
//正常返回输出data包体信息(map)
        HashMap<String,Object> data = (HashMap<String, Object>) result.get("data");
        Set<String> keySet = data.keySet();
        for(String key:keySet){
Object object = data.get(key);
           System.out.println(key +" = "+object);
        }
return true;
     }else{
//异常返回输出错误码和错误信息
        System.out.println("错误码=" + result.get("statusCode") +" 错误信息= "+result.get("statusMsg"));
        return false;
     }
}
}

SmsController:

package com.jnshu.controller;

import com.jnshu.util.SDKTest;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class SmsController {

private static Logger logger = Logger.getLogger(SmsController.class);

   @RequestMapping("getSms")
public void getSms(String phone){
SDKTest sdk = new SDKTest("8aaf0708732220a601732c5089d8053c","e68ee368f4f44f8882580eeb4797e56c");
       sdk.getSMS(phone);
   }
}

jsp页面加个按钮:

<div class="container">
        <h1 style="color: white; margin: 0; text-align: center">注 册</h1>
        <form action="" method="post">
   用户名<label><input type="text" name="username" placeholder="请输入用户名"/></label><br>
   密码<label><input type="password" name="password" placeholder="请输入密码" /></label><br>
   手机<input type='text' onkeyup="value=value.replace(/^(0+)|[^\d]+/g,'')" name="phone" placeholder="请输入手机号"><input type="submit" formaction="getSms" value="获取短信验证码"/><br>
   验证码: <input type="text" id="sms"><br>
            <input type="submit" formaction="register" value="注册"/>
            <p class="change_link">
                <span class="text">已经有账户?</span>
                <a href="/task7/tologin" class="to_login"> 去登录 </a>
            </p>
   </form>
   </div>

测试:

结果:


这里有点问题,点获取验证码之后虽然验证码发送成功了,但是页面跳转了,这不是我需要的效果。现在需要的是点击这个按钮只发送请求不跳转页面。


收获:

初步学会使用容联云短信接口


明天计划完成的事情:

完善一下代码,校验验证码,以及使用手机登录,最主要解决这个跳转的问题。


返回列表 返回列表
评论

    分享到