1.添加邮箱验证
This commit is contained in:
@@ -12,9 +12,11 @@ import com.github.benmanes.caffeine.cache.Caffeine;
|
||||
import com.google.zxing.WriterException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import vvpkassistant.Data.WxChatParam;
|
||||
import vvpkassistant.Tools.BcryptUtils;
|
||||
import vvpkassistant.Tools.CacheHolder;
|
||||
import vvpkassistant.Tools.QRCodeUtil;
|
||||
import vvpkassistant.Tools.VVTools;
|
||||
import vvpkassistant.User.mapper.UserDao;
|
||||
@@ -25,6 +27,7 @@ import vvpkassistant.User.model.DTO.UserModelDTO;
|
||||
import vvpkassistant.User.model.enumeration.LoginStatusEnum;
|
||||
import vvpkassistant.common.ErrorCode;
|
||||
import vvpkassistant.exception.BusinessException;
|
||||
import vvpkassistant.mail.model.MailModel;
|
||||
import vvpkassistant.mail.service.MailService;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@@ -53,6 +56,9 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserModel> implements
|
||||
.expireAfterWrite(2, TimeUnit.MINUTES)
|
||||
.build();
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public UserModelVO loginWithMail(UserModelDTO model) {
|
||||
|
||||
@@ -99,7 +105,7 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserModel> implements
|
||||
|
||||
// 用户有密码的情况下重新设置密码
|
||||
if (userInfo.getPassword() != null && userModelDTO.getOldPassword() != null) {
|
||||
if (BcryptUtils.matchPassword(userModelDTO.getOldPassword(), userInfo.getPassword())) {
|
||||
if (BcryptUtils.matchPassword(userInfo.getPassword(),userModelDTO.getOldPassword())) {
|
||||
userModelDTO.setPassword(BcryptUtils.encryptPassword(userModelDTO.getNewPassword()));
|
||||
}else {
|
||||
throw new BusinessException(ErrorCode.PASSWORD_ERROR,"旧密码不正确");
|
||||
@@ -150,6 +156,7 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserModel> implements
|
||||
userDao.updateById(oldUser);
|
||||
}
|
||||
UserModelVO userModelVO = BeanUtil.copyProperties(userModelEntity, UserModelVO.class);
|
||||
userModelVO.setHavaPassword(true);
|
||||
userModelVO.setNewAccount(true);
|
||||
userModelVO.setChatInfo(wxChatParam);
|
||||
return userModelVO;
|
||||
@@ -251,4 +258,77 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserModel> implements
|
||||
}
|
||||
log.info("-------确认登录成功uuid:{}-------", scanInfoDTO.getUuid());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOut(Integer id) {
|
||||
StpUtil.logout(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setPassWord(UserModelDTO userModelDTO) {
|
||||
UserModel userModel = userDao.selectById(userModelDTO.getId());
|
||||
if (userModel == null) {
|
||||
throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST);
|
||||
}
|
||||
if (userModel.getPassword()!= null){
|
||||
throw new BusinessException(ErrorCode.SYSTEM_ERROR,"已设置过密码");
|
||||
}
|
||||
if (userModelDTO.getPassword().length()< 6 ){
|
||||
throw new BusinessException(ErrorCode.PARAMS_ERROR,"密码长度不能小于 6 位");
|
||||
}
|
||||
if (!Objects.equals(userModelDTO.getPassword(), userModelDTO.getConfirmPassword())) {
|
||||
log.error("密码{},确认密码{}",userModelDTO.getPassword(),userModelDTO.getConfirmPassword());
|
||||
throw new BusinessException(ErrorCode.PARAMS_ERROR,"两次密码输入不一致");
|
||||
}else{
|
||||
UserModel saveEntity = BeanUtil.copyProperties(userModelDTO, UserModel.class);
|
||||
saveEntity.setPassword(BcryptUtils.encryptPassword(userModelDTO.getPassword()));
|
||||
return userDao.updateById(saveEntity) == 1 ;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object sendForgetPassWordMail(MailModel mailModel) {
|
||||
LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
UserModel userModel = userDao.selectOne(lambdaQueryWrapper
|
||||
.eq(UserModel::getEmail, mailModel.getMailAddress())
|
||||
.eq(UserModel::getStatus, 0)
|
||||
.eq(UserModel::getMailVerification, 0));
|
||||
if (userModel == null) {
|
||||
throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST);
|
||||
}
|
||||
|
||||
mailService.sendForgetPassWordMail(mailModel.getMailAddress(),userModel.getId());
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object resetPassWord(UserModelDTO userModelDTO) {
|
||||
Integer i = SaTempUtil.parseToken(userModelDTO.getToken(), Integer.class);
|
||||
UserModel userModel = userDao.selectById(i);
|
||||
if (userModel == null) {
|
||||
throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST);
|
||||
}
|
||||
if (userModelDTO.getPassword().equals(userModelDTO.getConfirmPassword())) {
|
||||
UserModel updateEntity = BeanUtil.copyProperties(userModelDTO, UserModel.class);
|
||||
updateEntity.setPassword(BcryptUtils.encryptPassword(updateEntity.getPassword()));
|
||||
return userDao.updateById(updateEntity) == 1;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateUserMail(MailModel mailModel) {
|
||||
String mail = CacheHolder.VERIFICATION_MAIL.getIfPresent(mailModel.getCode());
|
||||
if (mail != null && mail.isEmpty()) {
|
||||
throw new BusinessException(ErrorCode.SYSTEM_ERROR,"验证码过期或验证码错误");
|
||||
}
|
||||
LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
UserModel userModel = userDao.selectOne(lambdaQueryWrapper
|
||||
.eq(UserModel::getEmail, mail)
|
||||
.eq(UserModel::getStatus, 0));
|
||||
userModel.setEmail(mailModel.getMailAddress());
|
||||
mailService.sendVerificationMail(mailModel.getMailAddress(),userModel.getId());
|
||||
userModel.setMailVerification(1);
|
||||
return userDao.updateById(userModel) == 1;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user