Commit ab172d63 authored by 技术部-任文超's avatar 技术部-任文超

Merge branch 'feature/20180108' into feature/junit_test

parents 485da10e 5147293c
......@@ -52,9 +52,7 @@ import java.util.Objects;
@RequestMapping("/user")
public class UserController implements IBaseController {
private static final Logger LOGGER = LoggerFactory.getLogger(UserController.class);
private final String pwdSalt = "_lkb";
@Autowired
private IUserService userService;
......@@ -188,7 +186,7 @@ public class UserController implements IBaseController {
}
String verificationCode = successResult.getMsg();
// 执行短信验证码检查
smsValidForFastLogin(phoneNo, verificationCode);
verifyPhoneAndCode(phoneNo, verificationCode);
User user = userService.findByPhoneWithCache(phoneNo);
if (user != null && !user.getEnable()) {
LOGGER.error("用户不存在,或者已经注销,phoneNo:{}",phoneNo);
......@@ -274,7 +272,7 @@ public class UserController implements IBaseController {
if (null == registerFrom) {
registerFrom = 1L;
}
smsValidForRegister(phoneNo, verificationCode);
verifyPhoneAndCode(phoneNo, verificationCode);
if (userService.exist(phoneNo)) {
LOGGER.info("用户注册失败,该手机号已经被注册:register -> registerFrom:{}, phoneNo:{}", registerFrom, phoneNo);
return JsonResult.buildErrorStateResult("该手机号已经被注册", null);
......@@ -338,7 +336,7 @@ public class UserController implements IBaseController {
if (password.length() < 6 || password.length() > 12) {
return JsonResult.buildErrorStateResult("密码应为6-12位", null);
}
smsValidForRegister(phoneNo, verificationCode);
verifyPhoneAndCode(phoneNo, verificationCode);
if (!userService.exist(phoneNo)) {
LOGGER.info("修改密码失败,该手机号尚未注册, registerFrom:{}, phoneNo:{}", registerFrom, phoneNo);
return JsonResult.buildErrorStateResult("该手机号尚未注册", null);
......@@ -441,7 +439,7 @@ public class UserController implements IBaseController {
}
private boolean validatePassword(String paramPass, String targetPassword) {
return StringUtils.defaultString(targetPassword, "").equals(PasswordUtil.MD5(paramPass.toLowerCase() + pwdSalt));
return StringUtils.defaultString(targetPassword, "").equals(PasswordUtil.MD5(paramPass.toLowerCase() + Constants.PASSWORD_SALT));
}
private JsonResult loginWithUserId(Long channelId, String appChannel, Long createdFrom, String userId, Merchant merchant,String dimension) {
......@@ -488,27 +486,14 @@ public class UserController implements IBaseController {
}
/**
* 注册时校验短信验证码
* @param phoneNo
* @param verificationCode
*/
private void smsValidForRegister(String phoneNo, String verificationCode) {
if (!smsService.validRegisterOrResetPasswdVerificationCode(phoneNo, verificationCode)) {
smsReSendOrNot(phoneNo);
LOGGER.info("用户快速注册,验证码校验失败,phoneNo:{} , verificationCode:{}", phoneNo, verificationCode);
throw new VerificationCodeErrorException("短信验证码错误");
}
}
/**
* 登录时校验短信验证码
* 校验短信验证码
* @param phoneNo
* @param verificationCode
*/
private void smsValidForFastLogin(String phoneNo, String verificationCode) {
if (!smsService.validateFastLoginVerificationCode(phoneNo, verificationCode)) {
private void verifyPhoneAndCode(String phoneNo, String verificationCode) {
if (!smsService.verifyPhoneAndCode(phoneNo, verificationCode)) {
smsReSendOrNot(phoneNo);
LOGGER.info("用户快速登录,验证码校验失败,phoneNo:{} , verificationCode:{}", phoneNo, verificationCode);
LOGGER.info("验证码校验失败,phoneNo:{} , verificationCode:{}", phoneNo, verificationCode);
throw new VerificationCodeErrorException("短信验证码错误");
}
}
......
package cn.quantgroup.xyqb.service.sms;
import cn.quantgroup.sms.SmsSender;
import cn.quantgroup.xyqb.model.sms.SmsResult;
/**
* 短信发送服务
......@@ -17,8 +16,12 @@ public interface ISmsService {
void sendAfterRegister(String phoneNo,String contentId);
boolean validRegisterOrResetPasswdVerificationCode(String phoneNo, String smsVerificationCode);
boolean validateFastLoginVerificationCode(String phoneNo, String verificationCode);
/**
* 验证手机号和验证码是否匹配
* @param phoneNo 手机号
* @param verificationCode 验证码(短信/语音)
* @return
*/
boolean verifyPhoneAndCode(String phoneNo, String verificationCode);
}
......@@ -17,7 +17,6 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
/**
* @author mengfan.feng
......@@ -82,24 +81,7 @@ public class SmsServiceImpl implements ISmsService {
* 检查验证码是否正确
*/
@Override
public boolean validRegisterOrResetPasswdVerificationCode(String phoneNo,
String smsVerificationCode) {
//if (StringUtils.isEmpty(smsVerificationCode) || smsVerificationCode.length() != SMS_VERIFICATION_MAXLEN) {
// return false;
//}
String key = Constants.REDIS_PREFIX_VERIFICATION_CODE + phoneNo;
String randomCode = stringRedisTemplate.opsForValue().get(key);
if (StringUtils.isEmpty(randomCode)) {
return false;
}
String[] arr = randomCode.split(":");
String uniqueId = arr[0];
String code = arr[1];
return confirmSms(smsVerificationCode, uniqueId, code);
}
@Override
public boolean validateFastLoginVerificationCode(String phoneNo, String verificationCode) {
public boolean verifyPhoneAndCode(String phoneNo, String verificationCode) {
String key = Constants.REDIS_PREFIX_VERIFICATION_CODE + phoneNo;
String randomCode = stringRedisTemplate.opsForValue().get(key);
if (StringUtils.isBlank(randomCode)) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment