|
@@ -1,13 +1,20 @@
|
|
package cn.iselab.mooctest.user.web.logic.impl;
|
|
package cn.iselab.mooctest.user.web.logic.impl;
|
|
|
|
|
|
import cn.iselab.mooctest.rpc.user.data.UserDTO;
|
|
import cn.iselab.mooctest.rpc.user.data.UserDTO;
|
|
|
|
+import cn.iselab.mooctest.user.configure.MailProperties;
|
|
|
|
+import cn.iselab.mooctest.user.constants.VerifyConstants;
|
|
import cn.iselab.mooctest.user.constants.ResponseStatus;
|
|
import cn.iselab.mooctest.user.constants.ResponseStatus;
|
|
import cn.iselab.mooctest.user.data.ResponseResult;
|
|
import cn.iselab.mooctest.user.data.ResponseResult;
|
|
import cn.iselab.mooctest.user.model.User;
|
|
import cn.iselab.mooctest.user.model.User;
|
|
import cn.iselab.mooctest.user.model.UserIntegral;
|
|
import cn.iselab.mooctest.user.model.UserIntegral;
|
|
|
|
+import cn.iselab.mooctest.user.model.VerifyCode;
|
|
import cn.iselab.mooctest.user.service.IntegralService;
|
|
import cn.iselab.mooctest.user.service.IntegralService;
|
|
|
|
+import cn.iselab.mooctest.user.service.MailService;
|
|
import cn.iselab.mooctest.user.service.UserService;
|
|
import cn.iselab.mooctest.user.service.UserService;
|
|
|
|
+import cn.iselab.mooctest.user.service.VerifyCodeService;
|
|
import cn.iselab.mooctest.user.util.EncryptionUtil;
|
|
import cn.iselab.mooctest.user.util.EncryptionUtil;
|
|
|
|
+import cn.iselab.mooctest.user.util.MSUtil;
|
|
|
|
+import cn.iselab.mooctest.user.web.data.UserVO;
|
|
import cn.iselab.mooctest.user.web.exception.HttpBadRequestException;
|
|
import cn.iselab.mooctest.user.web.exception.HttpBadRequestException;
|
|
import cn.iselab.mooctest.user.web.logic.BaseLogic;
|
|
import cn.iselab.mooctest.user.web.logic.BaseLogic;
|
|
import cn.iselab.mooctest.user.web.logic.UserLogic;
|
|
import cn.iselab.mooctest.user.web.logic.UserLogic;
|
|
@@ -16,6 +23,7 @@ import org.apache.commons.validator.routines.EmailValidator;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
+import javax.mail.MessagingException;
|
|
import java.sql.Timestamp;
|
|
import java.sql.Timestamp;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
@@ -35,6 +43,15 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
|
|
@Autowired
|
|
@Autowired
|
|
private IntegralService integralService;
|
|
private IntegralService integralService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private MailService mailService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private VerifyCodeService verifyCodeService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private MailProperties mailProperties;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public UserDTO getUserByEmail(String s) {
|
|
public UserDTO getUserByEmail(String s) {
|
|
User user = userService.findByEmail(s);
|
|
User user = userService.findByEmail(s);
|
|
@@ -222,33 +239,48 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public ResponseResult<UserDTO> registerAccount(UserDTO userDTO) {
|
|
|
|
|
|
+ public ResponseResult<UserDTO> registerAccount(UserVO userVO) {
|
|
ResponseResult<UserDTO> result = new ResponseResult<>();
|
|
ResponseResult<UserDTO> result = new ResponseResult<>();
|
|
- if(!userDTO.getEmail().trim().isEmpty() && !userDTO.getPassword().trim().isEmpty()) {
|
|
|
|
- if(userService.findByEmail(userDTO.getEmail()) != null){
|
|
|
|
- result.init(ResponseStatus.FAILED, "该邮箱已被注册", userDTO);
|
|
|
|
|
|
+ if(!userVO.getEmail().trim().isEmpty() && !userVO.getPassword().trim().isEmpty()) {
|
|
|
|
+ if(userService.findByEmail(userVO.getEmail()) != null){
|
|
|
|
+ result.init(ResponseStatus.FAILED, "该邮箱已被注册", userVO);
|
|
|
|
+ LOG.error(result.getMsg());
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+ if (!EmailValidator.getInstance().isValid(userVO.getEmail())){
|
|
|
|
+ result.init(ResponseStatus.FAILED, "注册邮箱非法", userVO);
|
|
|
|
+ LOG.error(result.getMsg());
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+ if (userVO.getName().length()>50 || userVO.getName().length()<2){
|
|
|
|
+ result.init(ResponseStatus.FAILED, "姓名长度非法,应在2~50位", userVO);
|
|
LOG.error(result.getMsg());
|
|
LOG.error(result.getMsg());
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
- if (!EmailValidator.getInstance().isValid(userDTO.getEmail())){
|
|
|
|
- result.init(ResponseStatus.FAILED, "注册邮箱非法", userDTO);
|
|
|
|
|
|
+ if (userVO.getPassword().length() > 16 || userVO.getPassword().length() < 6){
|
|
|
|
+ result.init(ResponseStatus.FAILED, "密码长度非法,应在6~16位", userVO);
|
|
LOG.error(result.getMsg());
|
|
LOG.error(result.getMsg());
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
- if (userDTO.getName().length()>50 || userDTO.getName().length()<2){
|
|
|
|
- result.init(ResponseStatus.FAILED, "姓名长度非法,应在2~50位", userDTO);
|
|
|
|
|
|
+ if (! userVO.getPassword2().trim().equals(userVO.getPassword())){
|
|
|
|
+ result.init(ResponseStatus.FAILED, "两次密码不一致,请重新输入", userVO);
|
|
LOG.error(result.getMsg());
|
|
LOG.error(result.getMsg());
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
- if (userDTO.getPassword().length() > 16 || userDTO.getPassword().length() < 6){
|
|
|
|
- result.init(ResponseStatus.FAILED, "密码长度非法,应在6~16位", userDTO);
|
|
|
|
|
|
+
|
|
|
|
+ if(! verifyCodeService.validateVerifyCode("email", userVO.getEmail(), userVO.getVerifyCode())){
|
|
|
|
+ result.init(ResponseStatus.FAILED, "请确认验证码输入正确", userVO);
|
|
LOG.error(result.getMsg());
|
|
LOG.error(result.getMsg());
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
+
|
|
try{
|
|
try{
|
|
- User user = userWrapper.unwrap(userDTO);
|
|
|
|
- user.setAvailability(0);
|
|
|
|
- user.setPassword(EncryptionUtil.encryptMD5(user.getPassword()));
|
|
|
|
|
|
+ userVO.setPassword(EncryptionUtil.encryptMD5(userVO.getPassword()));
|
|
|
|
+ userVO.setAvailability(1);
|
|
|
|
+ userVO.setCreateTime(new Timestamp(System.currentTimeMillis()).getTime());
|
|
|
|
+ userVO.setManualCheckValid(true);
|
|
|
|
+ User user = userWrapper.unwrap(userVO);
|
|
|
|
+
|
|
userService.register(user);
|
|
userService.register(user);
|
|
result.init(ResponseStatus.SUCCESS, "注册成功!请前往登录!", userWrapper.wrap(user));
|
|
result.init(ResponseStatus.SUCCESS, "注册成功!请前往登录!", userWrapper.wrap(user));
|
|
}catch (Exception e){
|
|
}catch (Exception e){
|
|
@@ -258,7 +290,7 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
|
|
}
|
|
}
|
|
|
|
|
|
}else{
|
|
}else{
|
|
- result.init(ResponseStatus.FAILED, "帐号和密码不可为空", userDTO);
|
|
|
|
|
|
+ result.init(ResponseStatus.FAILED, "帐号和密码不可为空", userVO);
|
|
LOG.error(result.getMsg());
|
|
LOG.error(result.getMsg());
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
@@ -279,16 +311,26 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
|
|
LOG.error(result.getMsg());
|
|
LOG.error(result.getMsg());
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
- if (userDTO.getName().length()>50 || userDTO.getName().length()<2){
|
|
|
|
- result.init(ResponseStatus.FAILED, "姓名长度非法,应在2~50位", userDTO.getName());
|
|
|
|
- LOG.error(result.getMsg());
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
- if (userDTO.getPassword().length() > 16 || userDTO.getPassword().length() < 6){
|
|
|
|
- result.init(ResponseStatus.FAILED, "密码长度非法,应在6~16位", userDTO.getPassword());
|
|
|
|
- LOG.error(result.getMsg());
|
|
|
|
|
|
+
|
|
|
|
+ VerifyCode verifyCode = new VerifyCode();
|
|
|
|
+ verifyCode.setType("email");
|
|
|
|
+ verifyCode.setReceiver(receiver);
|
|
|
|
+ verifyCode.setCode(MSUtil.generateRandomVeriCode());
|
|
|
|
+ verifyCode.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
|
+ verifyCode.setExpiredTime(new Timestamp(System.currentTimeMillis()+ VerifyConstants.TIME_OUT));
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ mailService.sendVerifyEmail(mailProperties.getUsername(),
|
|
|
|
+ verifyCode.getReceiver(),
|
|
|
|
+ verifyCode.getCode());
|
|
|
|
+ } catch (MessagingException e) {
|
|
|
|
+ result.init(ResponseStatus.FAILED, "邮件发送出错,请检查邮箱是否正确", receiver);
|
|
|
|
+ LOG.error(result.getMsg(),e);
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
- return null;
|
|
|
|
|
|
+ verifyCodeService.saveVerifyCode(verifyCode);
|
|
|
|
+ result.init(ResponseStatus.SUCCESS, "邮件发送成功!", receiver);
|
|
|
|
+ LOG.info(result.getMsg()+"-Email: " + receiver + "-code: "+ verifyCode.getCode());
|
|
|
|
+ return result;
|
|
}
|
|
}
|
|
}
|
|
}
|