验证码登录修改

master
Xusan 2024-05-21 13:59:07 +08:00
parent d908354926
commit f34ee35d91
5 changed files with 65 additions and 40 deletions

View File

@ -185,7 +185,7 @@ public class UserController {
@GetMapping(value = "loginByCode/{phone}/{code}") @GetMapping(value = "loginByCode/{phone}/{code}")
public ResultJson loginByCode(@PathVariable("phone") String phone,@PathVariable("code") String code) { public ResultJson loginByCode(@PathVariable("phone") String phone,@PathVariable("code") String code) {
return ResultJson.ok(service.loginByCode(phone,code)); return ResultJson.ok(service.loginByCode(phone,code.toUpperCase()));
} }

View File

@ -1,16 +1,22 @@
package com.whdc.model.entity; package com.whdc.model.entity;
import com.baomidou.mybatisplus.annotation.TableField;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;import lombok.experimental.Accessors; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.whdc.model.group.Insert; import com.whdc.model.group.Insert;
import com.whdc.model.group.Update; import com.whdc.model.group.Update;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;import java.io.Serializable; import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
@ -28,9 +34,9 @@ import java.util.Date;
public class LoginInfo extends Model<LoginInfo> implements Serializable { public class LoginInfo extends Model<LoginInfo> implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@TableId(value = "ID",type = IdType.AUTO) @TableId(value = "ID", type = IdType.AUTO)
@ApiModelProperty(value = "id") @ApiModelProperty(value = "id")
@NotNull(message = "id不能为空" , groups = {Update.class}) @NotNull(message = "id不能为空", groups = {Update.class})
private Integer id; private Integer id;
@ -40,14 +46,15 @@ public class LoginInfo extends Model<LoginInfo> implements Serializable {
@TableField("CREATE_ID") @TableField("CREATE_ID")
@ApiModelProperty(value = "新增人id") @ApiModelProperty(value = "新增人id")
@NotNull(message = "id不能为空" , groups = {Insert.class}) @NotNull(message = "id不能为空", groups = {Insert.class})
private String createId; private String createId;
@TableField("CREATE_TIME") @TableField("CREATE_TIME")
@ApiModelProperty(value = "新增时间") @ApiModelProperty(value = "新增时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime; private Date createTime;
@NotEmpty(message = "0:密码登录 1:验证码登录不能为空", groups = {Insert.class,Update.class}) @NotEmpty(message = "0:密码登录 1:验证码登录不能为空", groups = {Insert.class, Update.class})
@TableField("TYPE") @TableField("TYPE")
@ApiModelProperty(value = "0:密码登录 1:验证码登录") @ApiModelProperty(value = "0:密码登录 1:验证码登录")
private String type; private String type;

View File

@ -1,16 +1,22 @@
package com.whdc.model.entity; package com.whdc.model.entity;
import com.baomidou.mybatisplus.annotation.TableField;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;import lombok.experimental.Accessors; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.whdc.model.group.Insert; import com.whdc.model.group.Insert;
import com.whdc.model.group.Update; import com.whdc.model.group.Update;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;import java.io.Serializable; import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
@ -28,18 +34,18 @@ import java.util.Date;
public class User extends Model<User> implements Serializable { public class User extends Model<User> implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@TableId(value = "ID",type = IdType.AUTO) @TableId(value = "ID", type = IdType.AUTO)
@ApiModelProperty(value = "id") @ApiModelProperty(value = "id")
// @NotNull(message = "id不能为空" , groups = {Update.class}) // @NotNull(message = "id不能为空" , groups = {Update.class})
private Integer id; private Integer id;
@NotEmpty(message = "用户名不能为空", groups = {Insert.class,Update.class}) @NotEmpty(message = "用户名不能为空", groups = {Insert.class, Update.class})
@TableField("USERNAME") @TableField("USERNAME")
@ApiModelProperty(value = "用户名") @ApiModelProperty(value = "用户名")
private String username; private String username;
@NotEmpty(message = "密码不能为空", groups = {Insert.class,Update.class}) @NotEmpty(message = "密码不能为空", groups = {Insert.class, Update.class})
@TableField("PASSWORD") @TableField("PASSWORD")
@ApiModelProperty(value = "密码") @ApiModelProperty(value = "密码")
private String password; private String password;
@ -50,11 +56,12 @@ public class User extends Model<User> implements Serializable {
@TableField("AB_ID") @TableField("AB_ID")
@ApiModelProperty(value = "通讯录id") @ApiModelProperty(value = "通讯录id")
@NotEmpty(message = "通讯录id不能为空", groups = {Insert.class,Update.class}) @NotEmpty(message = "通讯录id不能为空", groups = {Insert.class, Update.class})
private Integer abId; private Integer abId;
@TableField("LAST_DATE") @TableField("LAST_DATE")
@ApiModelProperty(value = "最后登录时间") @ApiModelProperty(value = "最后登录时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date lastLoginDate; private Date lastLoginDate;
@TableField("ROLE") @TableField("ROLE")

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.whdc.model.group.Insert; import com.whdc.model.group.Insert;
import com.whdc.model.group.Update; import com.whdc.model.group.Update;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
@ -59,6 +60,7 @@ public class Versions extends Model<Versions> implements Serializable {
@TableField("CREATE_TIME") @TableField("CREATE_TIME")
@ApiModelProperty(value = "新增时间") @ApiModelProperty(value = "新增时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime; private Date createTime;
@TableField("TYPE") @TableField("TYPE")

View File

@ -1,5 +1,7 @@
package com.whdc.service.impl; package com.whdc.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -19,6 +21,7 @@ import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import com.whdc.utils.ResultJson; import com.whdc.utils.ResultJson;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpStatus;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
@ -150,9 +153,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
// 判断是否以发送 // 判断是否以发送
String key = REDIS_KEY + "code:" + phone; String key = REDIS_KEY + "code:" + phone;
String code = String.valueOf(stringRedisTemplate.opsForValue().get(key)); String code = String.valueOf(stringRedisTemplate.opsForValue().get(key));
if (StringUtils.isBlank(code)) { if (StringUtils.isBlank(code) || "null".equals(code)) {
// 生成验证码 // 生成验证码
String numCode = getNumCode(); String numCode = getNumCode().toUpperCase();
push(phone, numCode); push(phone, numCode);
stringRedisTemplate.opsForValue().set(key, numCode, 60, TimeUnit.SECONDS); stringRedisTemplate.opsForValue().set(key, numCode, 60, TimeUnit.SECONDS);
} else { } else {
@ -227,23 +230,24 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
String yzm2 = ""; //定义一个空的Atring变量用来接收生成的验证码 String yzm2 = ""; //定义一个空的Atring变量用来接收生成的验证码
for (int i = 0; i < 5; i++) { //循环5次每次生成一位5位验证码 for (int i = 0; i < 6; i++) {
//循环5次每次生成一位5位验证码
int a = yzm.nextInt(3); //验证码包括数字、大小写字母组成 yzm2 = yzm2 + yzm.nextInt(10);
switch (a) { //a: 0 1 2 // int a = yzm.nextInt(1); //验证码包括数字、大小写字母组成
case 0: // 数字 小写字母 大写字母 // switch (a) { //a: 0 1 2
char s = (char) (yzm.nextInt(26) + 65); // case 0: // 数字 小写字母 大写字母
yzm2 = yzm2 + s; // char s = (char) (yzm.nextInt(26) + 65);
break; // yzm2 = yzm2 + s;
case 1: // break;
char s1 = (char) (yzm.nextInt(26) + 97); // case 1:
yzm2 = yzm2 + s1; // char s1 = (char) (yzm.nextInt(26) + 97);
break; // yzm2 = yzm2 + s1;
case 2: // break;
int s2 = yzm.nextInt(10); // case 2:
yzm2 = yzm2 + s2; // int s2 = yzm.nextInt(10);
break; // yzm2 = yzm2 + s2;
} // break;
// }
} }
return yzm2; return yzm2;
} }
@ -259,9 +263,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
String content = "您正在登录湖北省防汛抗旱通讯录,验证码为:" + code + ",若非本人操作,请勿将验证码泄露他人。"; String content = "您正在登录湖北省防汛抗旱通讯录,验证码为:" + code + ",若非本人操作,请勿将验证码泄露他人。";
String body = "{\n" + String body = "{\n" +
" \"channel\": \"[phone]\",\n" + " \"channel\": [\"phone\"],\n" +
" \"content\": \"" + content + "\",\n" + " \"content\": \"" + content + "\",\n" +
" \"devices\": \"['" + phone + "']\",\n" + " \"devices\": [\"" + phone + "\"],\n" +
" \"foreignId\": \"" + UUID.randomUUID() + "\",\n" + " \"foreignId\": \"" + UUID.randomUUID() + "\",\n" +
" \"source\": \"山洪app\",\n" + " \"source\": \"山洪app\",\n" +
// " \"token\": \"\",\n" + // " \"token\": \"\",\n" +
@ -272,7 +276,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
String s = HttpUtil.sendPost("http://223.75.53.141:82/shpush/v1/push/", body); String s = HttpUtil.sendPost("http://223.75.53.141:82/shpush/v1/push/", body);
log.info("发送结果: " + s); log.info("发送结果: " + s);
JSONObject jsonObject = JSON.parseObject(s);
if (jsonObject.getInteger("code") != HttpStatus.SC_OK){
throw new MyException(jsonObject.getString("message"));
}
} }
@ -312,8 +319,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
} }
public static void main(String[] args) { public static void main(String[] args) {
String salt = UUID.randomUUID().toString().replaceAll("-", ""); // String salt = UUID.randomUUID().toString().replaceAll("-", "");
System.out.println(salt); // System.out.println(salt);
System.out.println(DigestUtils.md5DigestAsHex((salt + DEFAULT_PASSWORD).getBytes())); // System.out.println(DigestUtils.md5DigestAsHex((salt + DEFAULT_PASSWORD).getBytes()));
String numCode = getNumCode();
System.out.println();
} }
} }