diff --git a/dq-financial-api/src/main/java/com/daqing/financial/hrauth/UserLoginControllerApi.java b/dq-financial-api/src/main/java/com/daqing/financial/hrauth/UserLoginControllerApi.java
new file mode 100644
index 00000000..5a32c03c
--- /dev/null
+++ b/dq-financial-api/src/main/java/com/daqing/financial/hrauth/UserLoginControllerApi.java
@@ -0,0 +1,30 @@
+package com.daqing.financial.hrauth;
+
+import com.daqing.framework.domain.hrms.request.LoginRequest;
+import com.daqing.framework.domain.hrms.request.UserLoginRequest;
+import com.daqing.framework.model.response.ResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * @Author: gongsj.
+ * @Description: 登录controllerApi定义
+ * @Date:Created in 2020/09/07 11:33.
+ * @Modified By:
+ */
+@Api(value = "登录相关操作", tags = "提供登录相关操作")
+public interface UserLoginControllerApi {
+
+ /**
+ * 验证手机号及验证码
+ */
+ @ApiOperation(value = "验证手机号及验证码", notes = "验证手机号及验证码")
+ ResponseResult verifyMobile(UserLoginRequest user);
+
+ @ApiOperation(value = "重置密码")
+ ResponseResult getBackPwd(UserLoginRequest user);
+
+ @ApiOperation(value = "登录")
+ ResponseResult login(LoginRequest loginRequest);
+
+}
diff --git a/dq-financial-hrms-auth/pom.xml b/dq-financial-hrms-auth/pom.xml
index e9b706df..51f3e298 100644
--- a/dq-financial-hrms-auth/pom.xml
+++ b/dq-financial-hrms-auth/pom.xml
@@ -89,6 +89,11 @@
mybatis-plus-boot-starter
3.0.5
-->
+
+ com.daqing.financial
+ dq-financial-api
+ 0.0.1-SNAPSHOT
+
diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/UserLoginController.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/UserLoginController.java
index ed2ad65f..195035db 100644
--- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/UserLoginController.java
+++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/UserLoginController.java
@@ -1,5 +1,6 @@
package com.daqing.financial.hrauth.controller;
+import com.daqing.financial.hrauth.UserLoginControllerApi;
import com.daqing.financial.hrauth.service.UserLoginService;
import com.daqing.framework.domain.hrms.request.LoginRequest;
import com.daqing.framework.domain.hrms.request.UserLoginRequest;
@@ -19,7 +20,7 @@ import javax.validation.Valid;
@RestController
@RequestMapping("/hrms/auth/userlogin")
@Api(tags = {"登录"})
-public class UserLoginController {
+public class UserLoginController implements UserLoginControllerApi {
@Autowired
private UserLoginService userLoginService;
@@ -36,7 +37,15 @@ public class UserLoginController {
return "Hello";
}
+ @PostMapping("/verifyMobile")
+ @ApiOperation(value = "验证手机号及验证码")
+ public ResponseResult verifyMobile(@RequestBody @Valid UserLoginRequest user){
+ UserLoginRequest result = userLoginService.verifyMobile(user);
+ return ResponseResult.SUCCESS(result);
+ }
+
@PostMapping("/getBackPwd")
+ @ApiOperation(value = "重置密码")
public ResponseResult getBackPwd(@RequestBody @Valid UserLoginRequest user){
boolean result = userLoginService.getBackPwd(user);
return result ? ResponseResult.SUCCESS() : ResponseResult.FAIL();
diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/UserLoginService.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/UserLoginService.java
index 583a4618..47481c74 100644
--- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/UserLoginService.java
+++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/UserLoginService.java
@@ -12,6 +12,7 @@ import com.daqing.framework.model.response.ResponseResult;
*/
public interface UserLoginService extends IService {
Boolean getBackPwd(UserLoginRequest user);
+ UserLoginRequest verifyMobile(UserLoginRequest user);
//登录
ResponseResult login(LoginRequest loginRequest);
diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserLoginServiceImpl.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserLoginServiceImpl.java
index 824f8f49..1d3c0fac 100644
--- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserLoginServiceImpl.java
+++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserLoginServiceImpl.java
@@ -43,10 +43,10 @@ public class UserLoginServiceImpl extends ServiceImpl
}*/
/**
- * 忘记密码
+ * 验证手机号及验证码
*/
@Override
- public Boolean getBackPwd(UserLoginRequest user){
+ public UserLoginRequest verifyMobile(UserLoginRequest user){
//判断重置密码参数是否为空
if(StringUtils.isEmpty(user.getPhoneAccount())){
ExceptionCast.cast(HrmsCode.PHNOE_ACCOUNT_NOT_EMPTY);
@@ -54,9 +54,7 @@ public class UserLoginServiceImpl extends ServiceImpl
if(StringUtils.isEmpty(user.getVerifyCode())){
ExceptionCast.cast(HrmsCode.VERIFY_CODE_ILLEGAL);
}
- if(StringUtils.isEmpty(user.getNewPwd())){
- ExceptionCast.cast(HrmsCode.NEW_PASSWORD_NOT_EMPTY);
- }
+
//校验手机账号是否存在
/* int count = this.count(new QueryWrapper()
.eq("phone_account", user.getPhoneAccount()));*/
@@ -65,13 +63,38 @@ public class UserLoginServiceImpl extends ServiceImpl
if (count == 0) {
ExceptionCast.cast(HrmsCode.PHNOE_ACCOUNT_NOT_EXIST);
}
- //根据手机号查询相关信息
- UserEntity userEntity = baseMapper.selectByPhoneAccount(user.getPhoneAccount());
//判断验证码是否匹配
String verify = "123456";
if(!verify.equals(user.getVerifyCode())){
ExceptionCast.cast(HrmsCode.VERIFY_CODE_ILLEGAL);
}
+ return user;
+ }
+
+
+ /**
+ * 重置密码
+ */
+ @Override
+ public Boolean getBackPwd(UserLoginRequest user){
+ //判断重置密码参数是否为空
+ if(StringUtils.isEmpty(user.getNewPwd())){
+ ExceptionCast.cast(HrmsCode.NEW_PASSWORD_NOT_EMPTY);
+ }
+ if(StringUtils.isEmpty(user.getConfirmPwd())){
+ ExceptionCast.cast(HrmsCode.CONFIRM_PWD_NOT_EMPTY);
+ }
+ if(!user.getConfirmPwd().equals(user.getNewPwd())){
+ ExceptionCast.cast(HrmsCode.TWICE_PWD_DIFFERENT);
+ }
+
+ //根据手机号查询相关信息
+ UserEntity userEntity = baseMapper.selectByPhoneAccount(user.getPhoneAccount());
+
+ //新密码不能与账号相同
+ if(user.getNewPwd().equals(userEntity.getAccount())){
+ ExceptionCast.cast(HrmsCode.NEW_PASSWORD_DIFFERENT);
+ }
String newMD5 = Md5Util.md5(user.getNewPwd()+userEntity.getId());
//根据手机号码修改密码
diff --git a/dq-financial-hrms/src/main/java/com/daqing/financial/hrms/controller/DeptController.java b/dq-financial-hrms/src/main/java/com/daqing/financial/hrms/controller/DeptController.java
index 11e198a3..4561f4be 100644
--- a/dq-financial-hrms/src/main/java/com/daqing/financial/hrms/controller/DeptController.java
+++ b/dq-financial-hrms/src/main/java/com/daqing/financial/hrms/controller/DeptController.java
@@ -6,6 +6,8 @@ import com.daqing.framework.domain.hrms.DepartmentVO;
import com.daqing.framework.domain.hrms.DeptEntity;
import com.daqing.framework.domain.hrms.request.DeptAddRequest;
import com.daqing.framework.model.response.ResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -21,6 +23,7 @@ import java.util.List;
*/
@RestController
@RequestMapping("hrms/dept")
+@Api(tags = {"测试swagger"})
public class DeptController implements DeptControllerApi {
@Autowired
@@ -34,6 +37,7 @@ public class DeptController implements DeptControllerApi {
*/
@Override
@PostMapping("/save")
+ @ApiOperation(value = "111")
//@RequiresPermissions("hrms:dept:save")
public ResponseResult save(@RequestBody DeptAddRequest deptAddRequest) {
boolean result = deptService.saveDept(deptAddRequest);
diff --git a/dq-framework-common/dq-framework-common.iml b/dq-framework-common/dq-framework-common.iml
new file mode 100644
index 00000000..f683c485
--- /dev/null
+++ b/dq-framework-common/dq-framework-common.iml
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dq-framework-common/pom.xml b/dq-framework-common/pom.xml
index 2207e522..893d737a 100644
--- a/dq-framework-common/pom.xml
+++ b/dq-framework-common/pom.xml
@@ -115,23 +115,40 @@
spring-cloud-starter-alibaba-nacos-config
+
com.auth0
java-jwt
3.3.0
+
com.alibaba
fastjson
1.2.70
+
org.springframework.boot
spring-boot-starter-data-redis
2.1.8.RELEASE
+
+
+
+ com.github.suxingli
+ aliyuncs
+ 1.0.1
+
+
+
+ com.aliyun
+ aliyun-java-sdk-dysmsapi
+ 1.1.0
+
+
diff --git a/dq-framework-common/src/main/java/com/daqing/framework/util/BasePage.java b/dq-framework-common/src/main/java/com/daqing/framework/util/BasePage.java
new file mode 100644
index 00000000..ad2d5da3
--- /dev/null
+++ b/dq-framework-common/src/main/java/com/daqing/framework/util/BasePage.java
@@ -0,0 +1,9 @@
+package com.daqing.framework.util;
+
+import lombok.Data;
+//分页工具类
+@Data
+public class BasePage {
+ private int page = 0;
+ private int size = 10;
+}
diff --git a/dq-framework-common/src/main/java/com/daqing/framework/util/RandomUtil.java b/dq-framework-common/src/main/java/com/daqing/framework/util/RandomUtil.java
new file mode 100644
index 00000000..39277703
--- /dev/null
+++ b/dq-framework-common/src/main/java/com/daqing/framework/util/RandomUtil.java
@@ -0,0 +1,15 @@
+package com.daqing.framework.util;
+
+import java.util.Random;
+
+public class RandomUtil {
+ public static String getRandomNum(int num) {
+ String str = "0123456789";
+ StringBuilder sb = new StringBuilder(4);
+ for (int i = 0; i < num; i++) {
+ char ch = str.charAt(new Random().nextInt(str.length()));
+ sb.append(ch);
+ }
+ return sb.toString();
+ }
+}
diff --git a/dq-framework-common/src/main/java/com/daqing/framework/util/SendSMS.java b/dq-framework-common/src/main/java/com/daqing/framework/util/SendSMS.java
new file mode 100644
index 00000000..34587a05
--- /dev/null
+++ b/dq-framework-common/src/main/java/com/daqing/framework/util/SendSMS.java
@@ -0,0 +1,80 @@
+package com.daqing.framework.util;
+
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
+import com.aliyuncs.http.MethodType;
+import com.aliyuncs.profile.DefaultProfile;
+import com.aliyuncs.profile.IClientProfile;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class SendSMS {
+
+
+ public static void main(String[] args){
+ String mobile="13888888888";//需要接受短信验证码的手机号
+ String sendTemplate="SMS_134188888";//短信模板ID,需要去阿里云平台申请,审核通过后方能使用,通常是以"SMS_"开头字符串
+ String code = (int)((Math.random() * 9 + 1) * 100000)+ "";//要发送给用户的短信验证码,行业通常使用六位纯数字
+
+ String result= sendCode(mobile,sendTemplate,code);
+ if(result!=null&&"OK".equals(result.toUpperCase())){
+ System.out.println("短信发送成功");
+ }else{
+ System.out.println("短信发送失败");
+ }
+
+ }
+ /**
+ * 通过阿里云平台发送短信,如果发送成功,返回"OK" ;否则返回的是错误信息
+ * @param mobile 要接收该短信的用户手机号
+ * @param sendTemplate 短信模板id,此处将其封装为变量,是为了由该方法的调用者决定自己来发送哪种类型的短信验证码,比如注册,重置密码类的
+ * @param code 您将发送到用户手机的短信验证码
+ */
+ public static String sendCode(String mobile,String sendTemplate,String code){
+ //请求失败这里会抛ClientException异常
+ String result="";
+ try {
+ //设置超时时间-可自行调整
+ System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
+ System.setProperty("sun.net.client.defaultReadTimeout", "10000");
+ //初始化ascClient需要的几个参数
+ final String product = "Dysmsapi";//短信API产品名称(短信产品名固定,无需修改)
+ final String domain = "dysmsapi.aliyuncs.com";//短信API产品域名(接口地址固定,无需修改)
+ //替换成你的AK
+ final String accessKeyId = "LTAI3IJDEVkXgY0E";//你的accessKeyId,参考本文档步骤2
+ final String accessKeySecret = "kmnOeksdTEauInvea9Hf6dqssDdvho";//你的accessKeySecret,参考本文档步骤2
+ //初始化ascClient,暂时不支持多region(请勿修改)
+ IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId,
+ accessKeySecret);
+ DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
+ IAcsClient acsClient = new DefaultAcsClient(profile);
+ //组装请求对象
+ SendSmsRequest request = new SendSmsRequest();
+ //使用post提交
+ request.setMethod(MethodType.POST);
+ //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式;发送国际/港澳台消息时,接收号码格式为00+国际区号+号码,如“0085200000000”
+ request.setPhoneNumbers(mobile);
+ //必填:短信签名-可在短信控制台中找到
+ request.setSignName("");//注意要与你在短信控制台中的签名一致
+ //必填:短信模板-可在短信控制台中找到
+ request.setTemplateCode(sendTemplate);
+ //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
+ //友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败
+// request.setTemplateParam("{\"name\":\"Tom\", \"code\":\"123\"}");
+ request.setTemplateParam("{\"code\":\""+code+"\"}");
+ //可选-上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)
+ //request.setSmsUpExtendCode("90997");
+ //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
+// request.setOutId("yourOutId");
+
+ SendSmsResponse response = acsClient.getAcsResponse(request);
+ result=response.getCode();
+ } catch (Exception e) {
+ result=e.getMessage();
+ }
+ return result;
+ }
+
+}
\ No newline at end of file
diff --git a/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/request/UserLoginRequest.java b/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/request/UserLoginRequest.java
index 13b39d2c..c6428064 100644
--- a/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/request/UserLoginRequest.java
+++ b/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/request/UserLoginRequest.java
@@ -30,4 +30,8 @@ public class UserLoginRequest implements Serializable {
*/
@Pattern(regexp = "^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*).{6,20}$",message = "密码格式不正确!")
private String newPwd;
+ /**
+ * 确认密码
+ */
+ private String confirmPwd;
}
diff --git a/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/response/HrmsCode.java b/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/response/HrmsCode.java
index 52fcc512..cbfea710 100644
--- a/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/response/HrmsCode.java
+++ b/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/response/HrmsCode.java
@@ -27,6 +27,9 @@ public enum HrmsCode implements ResultCode {
NEW_PASSWORD_ILLEGAL(false,33004,"新密码格式不正确!"),
VERIFY_CODE_ILLEGAL(false,33005,"验证码不匹配!"),
PHNOE_ACCOUNT_NOT_EXIST(false,33006,"手机号码不存在!"),
+ CONFIRM_PWD_NOT_EMPTY(false,33007,"确认密码不能为空!"),
+ TWICE_PWD_DIFFERENT(false,33008,"两次输入密码不一致!"),
+ NEW_PASSWORD_DIFFERENT(false,33008,"输入的新密码不能与账号相同!"),
EMP_POSITION_EXSIT(false, 22006, "该职位下已关联员工!");
diff --git a/dq-govern-gateway/pom.xml b/dq-govern-gateway/pom.xml
index f34cda2e..1cbbb367 100644
--- a/dq-govern-gateway/pom.xml
+++ b/dq-govern-gateway/pom.xml
@@ -20,11 +20,6 @@
-
org.springframework.cloud
@@ -53,27 +48,11 @@
1.18.12
-
- com.auth0
- java-jwt
- 3.3.0
-
-
org.springframework.boot
spring-boot-starter-data-redis
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
+
diff --git a/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/config/ApiGlobalFilter.java b/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/config/ApiGlobalFilter.java
index 27639e65..53ad45d0 100644
--- a/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/config/ApiGlobalFilter.java
+++ b/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/config/ApiGlobalFilter.java
@@ -1,7 +1,6 @@
package com.daqing.financial.gateway.config;
import com.alibaba.fastjson.JSONObject;
-import com.daqing.financial.gateway.util.JwtUtil;
import com.daqing.financial.gateway.util.RedisUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
@@ -86,7 +85,7 @@ public class ApiGlobalFilter implements GlobalFilter, Ordered {
*/
private Long verifyJWT(String token){
String id = RedisUtil.get("dq:token:"+token);
- return JwtUtil.verifyToken(token);
+ return Long.parseLong(id);
}
@Override
diff --git a/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/util/JwtUtil.java b/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/util/JwtUtil.java
index af0d0001..a59c22dd 100644
--- a/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/util/JwtUtil.java
+++ b/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/util/JwtUtil.java
@@ -1,71 +1,71 @@
-package com.daqing.financial.gateway.util;
-
-
-import com.auth0.jwt.JWT;
-import com.auth0.jwt.algorithms.Algorithm;
-import com.daqing.financial.gateway.SpringContextHolder;
-
-import java.util.Date;
-import java.util.Set;
-
-/**
- * @author zcw
- * @version 1.0
- * @date 2019/11/23 11:06
- * @description jwt工具类
- */
-public class JwtUtil {
-
- private final static Algorithm algorithm = SpringContextHolder.getBean("algorithm", Algorithm.class);
-
- //private final static OdcProperties properties = SpringContextHolder.getBean("odcProperties", OdcProperties.class);
-
- /**
- * 创建token
- *
- * @param userId;
- * @param timeout; 单位是秒
- */
- public static String createJwtToken(Long userId, long timeout) {
- return JWT.create()
- .withClaim("member", userId)
- .withExpiresAt(new Date(System.currentTimeMillis() + timeout * 1000))
- .sign(algorithm);
- }
-
- /**
- * token正确且有效,则返回userId
- */
- public static Long verifyToken(String token) {
- try {
- String noBearerToken = token.replaceFirst("Bearer ", "");
- Long userId = JWT.require(algorithm)
- .build()
- .verify(noBearerToken)
- .getClaim("member")
- .asLong();
- if (RedisUtil.get(getRedisKey(userId, noBearerToken)) != null) {
- return userId;
- }
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- return null;
- }
-
- public static String getRedisKey(Long userId, String token) {
- return String.format("dq:token:%d:%s", userId, token);
- }
-
- public static void putTokenToRedis(Long userId, String token, long times) {
- RedisUtil.setEx(getRedisKey(userId, token), "nothing", times);
- }
-
- public static void removeTokenByUserId(Long userId) {
- Set tokenSet = RedisUtil.keys(getRedisKey(userId, "*"));
- for (String key : tokenSet) {
- RedisUtil.del(key);
- }
- }
-}
+//package com.daqing.financial.gateway.util;
+//
+//
+//import com.auth0.jwt.JWT;
+//import com.auth0.jwt.algorithms.Algorithm;
+//import com.daqing.financial.gateway.SpringContextHolder;
+//
+//import java.util.Date;
+//import java.util.Set;
+//
+///**
+// * @author zcw
+// * @version 1.0
+// * @date 2019/11/23 11:06
+// * @description jwt工具类
+// */
+//public class JwtUtil {
+//
+// private final static Algorithm algorithm = SpringContextHolder.getBean("algorithm", Algorithm.class);
+//
+// //private final static OdcProperties properties = SpringContextHolder.getBean("odcProperties", OdcProperties.class);
+//
+// /**
+// * 创建token
+// *
+// * @param userId;
+// * @param timeout; 单位是秒
+// */
+// public static String createJwtToken(Long userId, long timeout) {
+// return JWT.create()
+// .withClaim("member", userId)
+// .withExpiresAt(new Date(System.currentTimeMillis() + timeout * 1000))
+// .sign(algorithm);
+// }
+//
+// /**
+// * token正确且有效,则返回userId
+// */
+// public static Long verifyToken(String token) {
+// try {
+// String noBearerToken = token.replaceFirst("Bearer ", "");
+// Long userId = JWT.require(algorithm)
+// .build()
+// .verify(noBearerToken)
+// .getClaim("member")
+// .asLong();
+// if (RedisUtil.get(getRedisKey(userId, noBearerToken)) != null) {
+// return userId;
+// }
+// } catch (Exception e) {
+// e.printStackTrace();
+// return null;
+// }
+// return null;
+// }
+//
+// public static String getRedisKey(Long userId, String token) {
+// return String.format("dq:token:%d:%s", userId, token);
+// }
+//
+// public static void putTokenToRedis(Long userId, String token, long times) {
+// RedisUtil.setEx(getRedisKey(userId, token), "nothing", times);
+// }
+//
+// public static void removeTokenByUserId(Long userId) {
+// Set tokenSet = RedisUtil.keys(getRedisKey(userId, "*"));
+// for (String key : tokenSet) {
+// RedisUtil.del(key);
+// }
+// }
+//}
diff --git a/dq-govern-gateway/src/main/resources/jwt.properties b/dq-govern-gateway/src/main/resources/jwt.properties
index d8152474..9212031c 100644
--- a/dq-govern-gateway/src/main/resources/jwt.properties
+++ b/dq-govern-gateway/src/main/resources/jwt.properties
@@ -1 +1 @@
-jwt.ignoreUrlList=/apiHrmsAuth/hrms/auth/userlogin/getBackPwd,/apiHrmsAuth/hrms/auth/userlogin/login
+jwt.ignoreUrlList=/apiHrmsAuth/hrms/auth/userlogin/getBackPwd,/apiHrmsAuth/hrms/auth/userlogin/login,/apiHrmsAuth/hrms/auth/userlogin/verifyMobile
\ No newline at end of file