From e3ce60f69a24d8ff66fb7bd077d3b41b252c6237 Mon Sep 17 00:00:00 2001 From: ziin Date: Sun, 8 Feb 2026 15:17:50 +0800 Subject: [PATCH] =?UTF-8?q?chore(service):=20=E6=B3=A8=E9=87=8A=E6=8E=89?= =?UTF-8?q?=E9=82=AE=E4=BB=B6=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=E5=B9=B6?= =?UTF-8?q?=E6=B8=85=E7=90=86=E7=94=A8=E6=88=B7=E6=A8=A1=E5=9E=8B=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +- .xcodemap/config/xcodemap-class-filter.yaml | 23 - .../vvpkassistant/User/model/UserModel.java | 14 +- .../User/service/UserService.java | 58 +- .../User/service/UserServiceImpl.java | 636 ++++----- .../controller/UserController.java | 206 ++- .../mail/service/MailService.java | 20 +- .../mail/service/MailServiceImpl.java | 1168 ++++++++--------- 8 files changed, 1045 insertions(+), 1083 deletions(-) delete mode 100644 .xcodemap/config/xcodemap-class-filter.yaml diff --git a/.gitignore b/.gitignore index 8e8184f..f09b618 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,7 @@ # BlueJ files *.ctxt - +` # Mobile Tools for Java (J2ME) .mtj.tmp/ @@ -27,3 +27,4 @@ replay_pid* /.idea/ /target/ /AGENTS.md +/.xcodemap/ diff --git a/.xcodemap/config/xcodemap-class-filter.yaml b/.xcodemap/config/xcodemap-class-filter.yaml deleted file mode 100644 index 7667b5c..0000000 --- a/.xcodemap/config/xcodemap-class-filter.yaml +++ /dev/null @@ -1,23 +0,0 @@ -autoDetectedPackages: -- vvpkassistant -enableAutoDetect: true -entryDisplayConfig: - excludedPathPatterns: [] - skipJsCss: true -funcDisplayConfig: - skipConstructors: false - skipFieldAccess: true - skipFieldChange: true - skipGetters: false - skipNonProjectPackages: false - skipPrivateMethods: false - skipSetters: false -ignoreSameClassCall: null -ignoreSamePackageCall: null -includedPackagePrefixes: null -includedParentClasses: null -name: xcodemap-filter -recordMode: all -sourceDisplayConfig: - color: blue -startOnDebug: false diff --git a/src/main/java/vvpkassistant/User/model/UserModel.java b/src/main/java/vvpkassistant/User/model/UserModel.java index 84da83a..5cea450 100644 --- a/src/main/java/vvpkassistant/User/model/UserModel.java +++ b/src/main/java/vvpkassistant/User/model/UserModel.java @@ -6,22 +6,12 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data -@TableName("user") +@TableName("system_users") public class UserModel { @TableId(type = IdType.AUTO) private Integer id; // 主键 - private String nickName; // 昵称 - private String phoneNumber; // 手机号码 - private String headerIcon; // 头像 - private String openid; // openid - private String sessionKey; // session key + private String nickname; // 昵称 private Integer status; // 用户状态 0 正常 其他业务逻辑待定 - private Long createTime; // 创建时间 private String userChatId; // 聊天使用的id,使用微信的openid作为标识 private Integer points; // 用户积分 - private Integer inviterId; // 邀请人id - private String email; - private String password; - private Integer mailVerification; - private String userName; } diff --git a/src/main/java/vvpkassistant/User/service/UserService.java b/src/main/java/vvpkassistant/User/service/UserService.java index f652470..c83c751 100644 --- a/src/main/java/vvpkassistant/User/service/UserService.java +++ b/src/main/java/vvpkassistant/User/service/UserService.java @@ -14,34 +14,34 @@ import vvpkassistant.mail.model.MailModel; * @date: 2025/8/4 16:19 */ public interface UserService extends IService { - UserModelVO loginWithMail(UserModelDTO model); - - UserModelVO updateUserInfo(UserModelDTO userModelDTO); - - UserModelVO addUserWithMail(UserModelDTO model); - - Boolean activateAccount(String token); - - Boolean verificationMail(String token); - - Object generatedQrcode(); - - Object checkQrcode(String uuid); - - LoginInfoDTO scanQrcode(ScanInfoDTO scanInfoDTO); - - void confirm(ScanInfoDTO scanInfoDTO); - - void logOut(Integer id); - - boolean setPassWord(UserModelDTO userModelDTO); - - Object sendForgetPassWordMail(MailModel mailModel); - - Object resetPassWord(UserModelDTO userModelDTO); - - Boolean updateUserMail(MailModel mailModel); - - Boolean checkUserName(UserModelDTO userModelDTO); +// UserModelVO loginWithMail(UserModelDTO model); +// +// UserModelVO updateUserInfo(UserModelDTO userModelDTO); +// +// UserModelVO addUserWithMail(UserModelDTO model); +// +// Boolean activateAccount(String token); +// +// Boolean verificationMail(String token); +// +// Object generatedQrcode(); +// +// Object checkQrcode(String uuid); +// +// LoginInfoDTO scanQrcode(ScanInfoDTO scanInfoDTO); +// +// void confirm(ScanInfoDTO scanInfoDTO); +// +// void logOut(Integer id); +// +// boolean setPassWord(UserModelDTO userModelDTO); +// +// Object sendForgetPassWordMail(MailModel mailModel); +// +// Object resetPassWord(UserModelDTO userModelDTO); +// +// Boolean updateUserMail(MailModel mailModel); +// +// Boolean checkUserName(UserModelDTO userModelDTO); } diff --git a/src/main/java/vvpkassistant/User/service/UserServiceImpl.java b/src/main/java/vvpkassistant/User/service/UserServiceImpl.java index c83063f..a4146bc 100644 --- a/src/main/java/vvpkassistant/User/service/UserServiceImpl.java +++ b/src/main/java/vvpkassistant/User/service/UserServiceImpl.java @@ -57,323 +57,323 @@ public class UserServiceImpl extends ServiceImpl implements .build(); - - - @Override - public UserModelVO loginWithMail(UserModelDTO model) { - if (model.getUserNameOrEmail().isEmpty()){ - throw new BusinessException(ErrorCode.PARAMS_ERROR,"用户名或邮箱不能为空"); - } - - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(UserModel::getEmail,model.getUserNameOrEmail()) - .or() - .eq(UserModel::getUserName,model.getUserNameOrEmail()) - .in(UserModel::getStatus, 0,2); - - UserModel userModel = userDao.selectOne(lambdaQueryWrapper); - if (userModel == null) { - throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST); - } - - String password = userModel.getPassword(); - UserModelVO userModelVO = BeanUtil.copyProperties(userModel, UserModelVO.class); - if (BcryptUtils.matchPassword(password, model.getPassword())) { - StpUtil.login(userModel.getId()); - userModelVO.setToken(StpUtil.getTokenValue()); - userModelVO.setChatInfo(wxChatParam); - return userModelVO; - }else { - throw new BusinessException(ErrorCode.PASSWORD_ERROR); - } - } - - @Override - public UserModelVO updateUserInfo(UserModelDTO userModelDTO) { - - UserModel userInfo = userDao.selectById(userModelDTO.getId()); - if (userInfo == null) { - throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST); - } -// 用户没有密码的情况下设置密码 - if (userInfo.getPassword() == null && userModelDTO.getNewPassword() != null) { - if (!userModelDTO.getNewPassword().isEmpty()){ - if (userModelDTO.getNewPassword().length()<6){ - throw new BusinessException(ErrorCode.PARAMS_ERROR,"密码长度不能小于 6 位"); - } - userModelDTO.setPassword(BcryptUtils.encryptPassword(userModelDTO.getNewPassword())); - } - } - if (userModelDTO.getEmail() != null) { - mailService.sendVerificationMail(userModelDTO.getEmail(), userModelDTO.getId()); - } - -// 用户有密码的情况下重新设置密码 - if (userInfo.getPassword() != null && userModelDTO.getOldPassword() != null) { - if (BcryptUtils.matchPassword(userInfo.getPassword(),userModelDTO.getOldPassword())) { - userModelDTO.setPassword(BcryptUtils.encryptPassword(userModelDTO.getNewPassword())); - }else { - throw new BusinessException(ErrorCode.PASSWORD_ERROR,"旧密码不正确"); - } - } - - UserModel userModel = BeanUtil.copyProperties(userModelDTO, UserModel.class); - int i = userDao.updateById(userModel); - // 返回结果 - UserModel afterUserInfo = userDao.selectById(userModel.getId()); - UserModelVO userModelVO = BeanUtil.copyProperties(afterUserInfo, UserModelVO.class); - userModelVO.setNewAccount(false); - if (i == 1){ - return userModelVO; - }else { - throw new BusinessException(ErrorCode.SYSTEM_ERROR); - } - } - - @Override - public UserModelVO addUserWithMail(UserModelDTO userModelDTO) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - - - LambdaQueryWrapper usernameWrapper = new LambdaQueryWrapper<>(); - - lambdaQueryWrapper.eq(UserModel::getEmail,userModelDTO.getEmail()); - UserModel userModel = userDao.selectOne(lambdaQueryWrapper); - - - UserModel usernameModel = userDao.selectOne(usernameWrapper - .eq(UserModel::getUserName, userModelDTO.getUserName())); - - if (userModel != null) { - throw new BusinessException(ErrorCode.MAIL_ALREADY_EXIST); - } - if (usernameModel != null) { - throw new BusinessException(ErrorCode.USERNAME_ALREADY_EXIST); - } - if (userModelDTO.getPassword().length() < 6 ){ - throw new BusinessException(ErrorCode.PARAMS_ERROR,"密码长度不能小于 6 位"); - } - if (userModelDTO.getUserName().isEmpty()){ - throw new BusinessException(ErrorCode.PARAMS_ERROR,"用户名不能为空"); - } - - userModelDTO.setPassword(BcryptUtils.encryptPassword(userModelDTO.getPassword())); - userModelDTO.setCreateTime(VVTools.currentTimeStamp()); - //设置状态为待验证 - userModelDTO.setStatus(2); - //设置积分为0 - userModelDTO.setPoints(0); - UserModel userModelEntity = BeanUtil.copyProperties(userModelDTO, UserModel.class); - userModelEntity.setMailVerification(1); - if ( userDao.insert(userModelEntity) != 1){ - throw new BusinessException(ErrorCode.ADD_FAILED,"用户注册失败"); - } - mailService.sendMail(userModelDTO.getEmail(),userModelEntity.getId()); - // 判断用户是否为邀请用户 - if (userModelDTO.getInviterId() != null) { - UserModel oldUser = userDao.selectById(userModelDTO.getInviterId()); - oldUser.setPoints(oldUser.getPoints() + 10); - userDao.updateById(oldUser); - } - UserModelVO userModelVO = BeanUtil.copyProperties(userModelEntity, UserModelVO.class); - StpUtil.login(userModelVO.getId()); - userModelVO.setToken(StpUtil.getTokenValue()); - userModelVO.setHavaPassword(true); - userModelVO.setNewAccount(true); - userModelVO.setChatInfo(wxChatParam); - log.info("用户{}注册,邮箱{},手机号{}",userModelVO.getId(),userModelVO.getEmail(),userModelVO.getPhoneNumber()); - return userModelVO; - } - - @Override - public Boolean activateAccount(String token) { - Integer userId = SaTempUtil.parseToken(token, Integer.class); - UserModel userModel = userDao.selectById(userId); - if (userModel == null) { - throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST); - } - if (userModel.getStatus() == 0){ - throw new BusinessException(ErrorCode.USER_HAS_ACTIVATED); - } - userModel.setStatus(0); - userModel.setMailVerification(0); - if (userDao.updateById(userModel) == 1){ - return true; - }else { - throw new BusinessException(ErrorCode.UPDATE_FAILED,"激活失败"); - } - } - - @Override - public Boolean verificationMail(String token) { - Integer userId = SaTempUtil.parseToken(token, Integer.class); - UserModel userModel = userDao.selectById(userId); - userModel.setMailVerification(0); - if (userDao.updateById(userModel) == 1){ - return true; - } - throw new BusinessException(ErrorCode.SYSTEM_ERROR,"邮箱验证失败"); - } - - @Override - public QrcodeVO generatedQrcode() { - String uuid = UUID.randomUUID().toString(); - QrcodeEntity qrcodeEntity = new QrcodeEntity(); - qrcodeEntity.setUuid(uuid); - qrcodeEntity.setType("qrcdoe"); - String base64QR = null; - try { - base64QR = QRCodeUtil.generateQRCode(JSONUtil.toJsonStr(qrcodeEntity), 200, 200); - } catch (WriterException | IOException e) { - log.error(e.getMessage()); - throw new BusinessException(ErrorCode.SYSTEM_ERROR,"二维码生成失败"); - } - - LoginInfoDTO loginInfoDTO = new LoginInfoDTO(); - loginInfoDTO.setStatus(LoginStatusEnum.UNSCANNED.name()); - loginInfoDTO.setUuid(uuid); - - // 二维码uuid绑定,存入缓存 - qrcodeCache.put(uuid,loginInfoDTO); - // 返回生成的二维码信息 - QrcodeVO vo = QrcodeVO.builder().uuid(uuid).qrcode("data:image/png;base64," + base64QR).build(); - log.info("-------生成二维码成功:{}-------", uuid); - return vo; - } - - @Override - public Object checkQrcode(String uuid) { - LoginInfoDTO loginInfoDTO = qrcodeCache.getIfPresent(uuid); - if (loginInfoDTO == null) { - throw new BusinessException(ErrorCode.QRCODE_EXPIRED); - } - if (Objects.equals(loginInfoDTO.getStatus(), LoginStatusEnum.SCANNED.name())) { - return loginInfoDTO; - } - if (LoginStatusEnum.CONFIRMED.name().equals(loginInfoDTO.getStatus())) { - UserModel userModel = userDao.selectById(loginInfoDTO.getId()); - StpUtil.login(userModel.getId()); - UserModelVO userModelVO = BeanUtil.copyProperties(userModel, UserModelVO.class); - userModelVO.setToken(StpUtil.getTokenValue()); - userModelVO.setChatInfo(wxChatParam); - return userModelVO; - } - return null; - } - - @Override - public LoginInfoDTO scanQrcode(ScanInfoDTO scanInfoDTO) { - LoginInfoDTO loginInfoDTO = qrcodeCache.getIfPresent(scanInfoDTO.getUuid()); - if (loginInfoDTO != null) { - loginInfoDTO.setStatus(LoginStatusEnum.SCANNED.name()); - qrcodeCache.put(scanInfoDTO.getUuid(),loginInfoDTO); - } - log.info("-------扫码成功uuid:{}-------", scanInfoDTO.getUuid()); - return loginInfoDTO; - } - - @Override - public void confirm(ScanInfoDTO scanInfoDTO) { - LoginInfoDTO loginInfoDTO = qrcodeCache.getIfPresent(scanInfoDTO.getUuid()); - if (loginInfoDTO != null) { - loginInfoDTO.setStatus(LoginStatusEnum.CONFIRMED.name()); - loginInfoDTO.setId(scanInfoDTO.getId()); - qrcodeCache.put(scanInfoDTO.getUuid(),loginInfoDTO); - } - 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 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.setPassword(BcryptUtils.encryptPassword(userModelDTO.getPassword())); - return userDao.updateById(userModel) == 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 duplicateMailUserWrapper = new LambdaQueryWrapper<>(); - - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - - UserModel duplicateMailUser = userDao.selectOne(duplicateMailUserWrapper - .eq(UserModel::getEmail, mailModel.getMailAddress())); - if (duplicateMailUser != null) { - throw new BusinessException(ErrorCode.SYSTEM_ERROR,"邮箱地址已被使用"); - } - - UserModel userModel = userDao.selectOne(lambdaQueryWrapper - .eq(UserModel::getEmail, mail) - .eq(UserModel::getMailVerification, 0 )); - - if (userModel == null) { - throw new BusinessException(ErrorCode.USER_MAIL_NOT_VERIFICATION); - } - userModel.setEmail(mailModel.getMailAddress()); - mailService.sendVerificationMail(mailModel.getMailAddress(),userModel.getId()); - userModel.setMailVerification(1); - return userDao.updateById(userModel) == 1; - } - - @Override - public Boolean checkUserName(UserModelDTO userModelDTO) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - UserModel userModel = userDao.selectOne(lambdaQueryWrapper - .eq(UserModel::getUserName, userModelDTO.getUserName())); - return userModel == null; - } +// +// +// @Override +// public UserModelVO loginWithMail(UserModelDTO model) { +// if (model.getUserNameOrEmail().isEmpty()){ +// throw new BusinessException(ErrorCode.PARAMS_ERROR,"用户名或邮箱不能为空"); +// } +// +// LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); +// lambdaQueryWrapper.eq(UserModel::getEmail,model.getUserNameOrEmail()) +// .or() +// .eq(UserModel::getUserName,model.getUserNameOrEmail()) +// .in(UserModel::getStatus, 0,2); +// +// UserModel userModel = userDao.selectOne(lambdaQueryWrapper); +// if (userModel == null) { +// throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST); +// } +// +// String password = userModel.getPassword(); +// UserModelVO userModelVO = BeanUtil.copyProperties(userModel, UserModelVO.class); +// if (BcryptUtils.matchPassword(password, model.getPassword())) { +// StpUtil.login(userModel.getId()); +// userModelVO.setToken(StpUtil.getTokenValue()); +// userModelVO.setChatInfo(wxChatParam); +// return userModelVO; +// }else { +// throw new BusinessException(ErrorCode.PASSWORD_ERROR); +// } +// } +// +// @Override +// public UserModelVO updateUserInfo(UserModelDTO userModelDTO) { +// +// UserModel userInfo = userDao.selectById(userModelDTO.getId()); +// if (userInfo == null) { +// throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST); +// } +//// 用户没有密码的情况下设置密码 +// if (userInfo.getPassword() == null && userModelDTO.getNewPassword() != null) { +// if (!userModelDTO.getNewPassword().isEmpty()){ +// if (userModelDTO.getNewPassword().length()<6){ +// throw new BusinessException(ErrorCode.PARAMS_ERROR,"密码长度不能小于 6 位"); +// } +// userModelDTO.setPassword(BcryptUtils.encryptPassword(userModelDTO.getNewPassword())); +// } +// } +// if (userModelDTO.getEmail() != null) { +// mailService.sendVerificationMail(userModelDTO.getEmail(), userModelDTO.getId()); +// } +// +//// 用户有密码的情况下重新设置密码 +// if (userInfo.getPassword() != null && userModelDTO.getOldPassword() != null) { +// if (BcryptUtils.matchPassword(userInfo.getPassword(),userModelDTO.getOldPassword())) { +// userModelDTO.setPassword(BcryptUtils.encryptPassword(userModelDTO.getNewPassword())); +// }else { +// throw new BusinessException(ErrorCode.PASSWORD_ERROR,"旧密码不正确"); +// } +// } +// +// UserModel userModel = BeanUtil.copyProperties(userModelDTO, UserModel.class); +// int i = userDao.updateById(userModel); +// // 返回结果 +// UserModel afterUserInfo = userDao.selectById(userModel.getId()); +// UserModelVO userModelVO = BeanUtil.copyProperties(afterUserInfo, UserModelVO.class); +// userModelVO.setNewAccount(false); +// if (i == 1){ +// return userModelVO; +// }else { +// throw new BusinessException(ErrorCode.SYSTEM_ERROR); +// } +// } +// +// @Override +// public UserModelVO addUserWithMail(UserModelDTO userModelDTO) { +// LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); +// +// +// LambdaQueryWrapper usernameWrapper = new LambdaQueryWrapper<>(); +// +// lambdaQueryWrapper.eq(UserModel::getEmail,userModelDTO.getEmail()); +// UserModel userModel = userDao.selectOne(lambdaQueryWrapper); +// +// +// UserModel usernameModel = userDao.selectOne(usernameWrapper +// .eq(UserModel::getUserName, userModelDTO.getUserName())); +// +// if (userModel != null) { +// throw new BusinessException(ErrorCode.MAIL_ALREADY_EXIST); +// } +// if (usernameModel != null) { +// throw new BusinessException(ErrorCode.USERNAME_ALREADY_EXIST); +// } +// if (userModelDTO.getPassword().length() < 6 ){ +// throw new BusinessException(ErrorCode.PARAMS_ERROR,"密码长度不能小于 6 位"); +// } +// if (userModelDTO.getUserName().isEmpty()){ +// throw new BusinessException(ErrorCode.PARAMS_ERROR,"用户名不能为空"); +// } +// +// userModelDTO.setPassword(BcryptUtils.encryptPassword(userModelDTO.getPassword())); +// userModelDTO.setCreateTime(VVTools.currentTimeStamp()); +// //设置状态为待验证 +// userModelDTO.setStatus(2); +// //设置积分为0 +// userModelDTO.setPoints(0); +// UserModel userModelEntity = BeanUtil.copyProperties(userModelDTO, UserModel.class); +// userModelEntity.setMailVerification(1); +// if ( userDao.insert(userModelEntity) != 1){ +// throw new BusinessException(ErrorCode.ADD_FAILED,"用户注册失败"); +// } +// mailService.sendMail(userModelDTO.getEmail(),userModelEntity.getId()); +// // 判断用户是否为邀请用户 +// if (userModelDTO.getInviterId() != null) { +// UserModel oldUser = userDao.selectById(userModelDTO.getInviterId()); +// oldUser.setPoints(oldUser.getPoints() + 10); +// userDao.updateById(oldUser); +// } +// UserModelVO userModelVO = BeanUtil.copyProperties(userModelEntity, UserModelVO.class); +// StpUtil.login(userModelVO.getId()); +// userModelVO.setToken(StpUtil.getTokenValue()); +// userModelVO.setHavaPassword(true); +// userModelVO.setNewAccount(true); +// userModelVO.setChatInfo(wxChatParam); +// log.info("用户{}注册,邮箱{},手机号{}",userModelVO.getId(),userModelVO.getEmail(),userModelVO.getPhoneNumber()); +// return userModelVO; +// } +// +// @Override +// public Boolean activateAccount(String token) { +// Integer userId = SaTempUtil.parseToken(token, Integer.class); +// UserModel userModel = userDao.selectById(userId); +// if (userModel == null) { +// throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST); +// } +// if (userModel.getStatus() == 0){ +// throw new BusinessException(ErrorCode.USER_HAS_ACTIVATED); +// } +// userModel.setStatus(0); +// userModel.setMailVerification(0); +// if (userDao.updateById(userModel) == 1){ +// return true; +// }else { +// throw new BusinessException(ErrorCode.UPDATE_FAILED,"激活失败"); +// } +// } +// +// @Override +// public Boolean verificationMail(String token) { +// Integer userId = SaTempUtil.parseToken(token, Integer.class); +// UserModel userModel = userDao.selectById(userId); +// userModel.setMailVerification(0); +// if (userDao.updateById(userModel) == 1){ +// return true; +// } +// throw new BusinessException(ErrorCode.SYSTEM_ERROR,"邮箱验证失败"); +// } +// +// @Override +// public QrcodeVO generatedQrcode() { +// String uuid = UUID.randomUUID().toString(); +// QrcodeEntity qrcodeEntity = new QrcodeEntity(); +// qrcodeEntity.setUuid(uuid); +// qrcodeEntity.setType("qrcdoe"); +// String base64QR = null; +// try { +// base64QR = QRCodeUtil.generateQRCode(JSONUtil.toJsonStr(qrcodeEntity), 200, 200); +// } catch (WriterException | IOException e) { +// log.error(e.getMessage()); +// throw new BusinessException(ErrorCode.SYSTEM_ERROR,"二维码生成失败"); +// } +// +// LoginInfoDTO loginInfoDTO = new LoginInfoDTO(); +// loginInfoDTO.setStatus(LoginStatusEnum.UNSCANNED.name()); +// loginInfoDTO.setUuid(uuid); +// +// // 二维码uuid绑定,存入缓存 +// qrcodeCache.put(uuid,loginInfoDTO); +// // 返回生成的二维码信息 +// QrcodeVO vo = QrcodeVO.builder().uuid(uuid).qrcode("data:image/png;base64," + base64QR).build(); +// log.info("-------生成二维码成功:{}-------", uuid); +// return vo; +// } +// +// @Override +// public Object checkQrcode(String uuid) { +// LoginInfoDTO loginInfoDTO = qrcodeCache.getIfPresent(uuid); +// if (loginInfoDTO == null) { +// throw new BusinessException(ErrorCode.QRCODE_EXPIRED); +// } +// if (Objects.equals(loginInfoDTO.getStatus(), LoginStatusEnum.SCANNED.name())) { +// return loginInfoDTO; +// } +// if (LoginStatusEnum.CONFIRMED.name().equals(loginInfoDTO.getStatus())) { +// UserModel userModel = userDao.selectById(loginInfoDTO.getId()); +// StpUtil.login(userModel.getId()); +// UserModelVO userModelVO = BeanUtil.copyProperties(userModel, UserModelVO.class); +// userModelVO.setToken(StpUtil.getTokenValue()); +// userModelVO.setChatInfo(wxChatParam); +// return userModelVO; +// } +// return null; +// } +// +// @Override +// public LoginInfoDTO scanQrcode(ScanInfoDTO scanInfoDTO) { +// LoginInfoDTO loginInfoDTO = qrcodeCache.getIfPresent(scanInfoDTO.getUuid()); +// if (loginInfoDTO != null) { +// loginInfoDTO.setStatus(LoginStatusEnum.SCANNED.name()); +// qrcodeCache.put(scanInfoDTO.getUuid(),loginInfoDTO); +// } +// log.info("-------扫码成功uuid:{}-------", scanInfoDTO.getUuid()); +// return loginInfoDTO; +// } +// +// @Override +// public void confirm(ScanInfoDTO scanInfoDTO) { +// LoginInfoDTO loginInfoDTO = qrcodeCache.getIfPresent(scanInfoDTO.getUuid()); +// if (loginInfoDTO != null) { +// loginInfoDTO.setStatus(LoginStatusEnum.CONFIRMED.name()); +// loginInfoDTO.setId(scanInfoDTO.getId()); +// qrcodeCache.put(scanInfoDTO.getUuid(),loginInfoDTO); +// } +// 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 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.setPassword(BcryptUtils.encryptPassword(userModelDTO.getPassword())); +// return userDao.updateById(userModel) == 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 duplicateMailUserWrapper = new LambdaQueryWrapper<>(); +// +// LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); +// +// UserModel duplicateMailUser = userDao.selectOne(duplicateMailUserWrapper +// .eq(UserModel::getEmail, mailModel.getMailAddress())); +// if (duplicateMailUser != null) { +// throw new BusinessException(ErrorCode.SYSTEM_ERROR,"邮箱地址已被使用"); +// } +// +// UserModel userModel = userDao.selectOne(lambdaQueryWrapper +// .eq(UserModel::getEmail, mail) +// .eq(UserModel::getMailVerification, 0 )); +// +// if (userModel == null) { +// throw new BusinessException(ErrorCode.USER_MAIL_NOT_VERIFICATION); +// } +// userModel.setEmail(mailModel.getMailAddress()); +// mailService.sendVerificationMail(mailModel.getMailAddress(),userModel.getId()); +// userModel.setMailVerification(1); +// return userDao.updateById(userModel) == 1; +// } +// +// @Override +// public Boolean checkUserName(UserModelDTO userModelDTO) { +// LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); +// UserModel userModel = userDao.selectOne(lambdaQueryWrapper +// .eq(UserModel::getUserName, userModelDTO.getUserName())); +// return userModel == null; +// } } diff --git a/src/main/java/vvpkassistant/controller/UserController.java b/src/main/java/vvpkassistant/controller/UserController.java index 284c861..e3dc387 100644 --- a/src/main/java/vvpkassistant/controller/UserController.java +++ b/src/main/java/vvpkassistant/controller/UserController.java @@ -110,10 +110,6 @@ public class UserController { // 创建一个临时model UserModel tempModel = new UserModel(); tempModel.setId(Integer.valueOf(param.get("id").toString())); - tempModel.setOpenid(openId); - tempModel.setHeaderIcon(param.get("headerIcon").toString()); - tempModel.setNickName(param.get("nickName").toString()); - tempModel.setSessionKey(sessionKey); tempModel.setUserChatId(openId); int i = userDao.updateById(tempModel); if (i == 1) { @@ -162,8 +158,6 @@ public class UserController { return ResponseData.success(result); }else{ // 新用户 UserModel tempModel = new UserModel(); - tempModel.setPhoneNumber(phoneNumber); - tempModel.setCreateTime(VVTools.currentTimeStamp()); //设置状态为正常 tempModel.setStatus(0); //设置积分为0 @@ -196,8 +190,9 @@ public class UserController { // 修改用户信息 @PostMapping("updateUserInfo") public ResponseData updateUserInfo(@RequestBody UserModelDTO userModelDTO) { - UserModelVO userModelVO = userService.updateUserInfo( userModelDTO); - return ResponseData.success(userModelVO); +// UserModelVO userModelVO = userService.updateUserInfo( userModelDTO); +// return ResponseData.success(userModelVO); + return null; } // 获取用户信息 @@ -211,7 +206,6 @@ public class UserController { throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST); } UserModelVO userModelVO = BeanUtil.copyProperties(userModel, UserModelVO.class); - userModelVO.setHavaPassword(userModel.getPassword() != null); return ResponseData.success(userModelVO); } @@ -385,101 +379,101 @@ public class UserController { return ResponseData.success(coinRecords); } -// 邮件登录接口 - @PostMapping("/loginWithMail") - public ResponseData loginWithMail(@RequestBody UserModelDTO model) { - return ResponseData.success(userService.loginWithMail(model)); - } - -//邮件注册接口 - @PostMapping("/registerWithMail") - public ResponseData mailRegister(@RequestBody UserModelDTO model){ - return ResponseData.success(userService.addUserWithMail(model)); - } - -// 用户邮件激活 - @GetMapping("/activate") - public ResponseData activateAccount(@RequestParam("token") String token){ - return ResponseData.success(userService.activateAccount(token)); - } - -// 重发邮件接口 - @PostMapping("/resendMail") - public ResponseData resendMail(@RequestBody MailModel mailModel){ - return ResponseData.success(mailService.resendMail(mailModel)); - } - -// 验证邮箱链接 - @GetMapping("/verificationMail") - public ResponseData verificationMail(@RequestParam("token") String token){ - return ResponseData.success(userService.verificationMail(token)); - } - -// 发送忘记密码邮件 - @PostMapping("/forgetMail") - public ResponseData sendForgetPassWordMail(@RequestBody MailModel mailModel){ - return ResponseData.success(userService.sendForgetPassWordMail(mailModel)); - } - -// 生成二维码登录接口 - @GetMapping("/qrcode") - public ResponseData generatedQrcode(){ - return ResponseData.success(userService.generatedQrcode()); - } - -// 检查二维码状态接口 - @GetMapping("/check/{uuid}") - public ResponseData checkQrcode(@PathVariable String uuid){ - return ResponseData.success(userService.checkQrcode(uuid)); - } - -// 二维码扫描状态 - @PostMapping("/scan") - public ResponseData scanQrCode(@RequestBody ScanInfoDTO scanInfoDTO) { - return ResponseData.success( userService.scanQrcode(scanInfoDTO)); - } - -//二维码扫描确认 - @PostMapping("/confirm") - public ResponseData confirm(@RequestBody ScanInfoDTO scanInfoDTO) { - userService.confirm(scanInfoDTO); - return ResponseData.success(""); - } - -// 注销接口 - @PostMapping("/logout") - public ResponseData logOut(@RequestBody UserModelDTO userModelDTO){ - userService.logOut(userModelDTO.getId()); - return ResponseData.success(""); - } - -// 设置密码接口 - @PostMapping("/setPassword") - public ResponseDatasetPassWord(@RequestBody UserModelDTO userModelDTO){ - return ResponseData.success(userService.setPassWord(userModelDTO)); - } - -// 用户通过邮件验证链接重设密码接口 - @PostMapping("/resetPassword") - public ResponseDataresetPassWord(@RequestBody UserModelDTO userModelDTO){ - return ResponseData.success(userService.resetPassWord(userModelDTO)); - } - -// 设置新邮箱接口 - @PostMapping("/updateUserMail") - public ResponseDataupdateUserMail(@RequestBody MailModel mailModel){ - return ResponseData.success(userService.updateUserMail(mailModel)); - } - -// 发送更新邮箱验证邮件接口 - @PostMapping("/sendUpdateMailConfirmMail") - public ResponseDatasendUpdateMailConfirmMail(@RequestBody MailModel mailModel){ - return ResponseData.success(mailService.sendUpdateConfirmMail(mailModel)); - } - -// 检查重复用户名接口 - @PostMapping("/checkUserName") - public ResponseDatacheckUserName(@RequestBody UserModelDTO userModelDTO){ - return ResponseData.success(userService.checkUserName(userModelDTO)); - } +//// 邮件登录接口 +// @PostMapping("/loginWithMail") +// public ResponseData loginWithMail(@RequestBody UserModelDTO model) { +// return ResponseData.success(userService.loginWithMail(model)); +// } +// +////邮件注册接口 +// @PostMapping("/registerWithMail") +// public ResponseData mailRegister(@RequestBody UserModelDTO model){ +// return ResponseData.success(userService.addUserWithMail(model)); +// } +// +//// 用户邮件激活 +// @GetMapping("/activate") +// public ResponseData activateAccount(@RequestParam("token") String token){ +// return ResponseData.success(userService.activateAccount(token)); +// } +// +//// 重发邮件接口 +// @PostMapping("/resendMail") +// public ResponseData resendMail(@RequestBody MailModel mailModel){ +// return ResponseData.success(mailService.resendMail(mailModel)); +// } +// +//// 验证邮箱链接 +// @GetMapping("/verificationMail") +// public ResponseData verificationMail(@RequestParam("token") String token){ +// return ResponseData.success(userService.verificationMail(token)); +// } +// +//// 发送忘记密码邮件 +// @PostMapping("/forgetMail") +// public ResponseData sendForgetPassWordMail(@RequestBody MailModel mailModel){ +// return ResponseData.success(userService.sendForgetPassWordMail(mailModel)); +// } +// +//// 生成二维码登录接口 +// @GetMapping("/qrcode") +// public ResponseData generatedQrcode(){ +// return ResponseData.success(userService.generatedQrcode()); +// } +// +//// 检查二维码状态接口 +// @GetMapping("/check/{uuid}") +// public ResponseData checkQrcode(@PathVariable String uuid){ +// return ResponseData.success(userService.checkQrcode(uuid)); +// } +// +//// 二维码扫描状态 +// @PostMapping("/scan") +// public ResponseData scanQrCode(@RequestBody ScanInfoDTO scanInfoDTO) { +// return ResponseData.success( userService.scanQrcode(scanInfoDTO)); +// } +// +////二维码扫描确认 +// @PostMapping("/confirm") +// public ResponseData confirm(@RequestBody ScanInfoDTO scanInfoDTO) { +// userService.confirm(scanInfoDTO); +// return ResponseData.success(""); +// } +// +//// 注销接口 +// @PostMapping("/logout") +// public ResponseData logOut(@RequestBody UserModelDTO userModelDTO){ +// userService.logOut(userModelDTO.getId()); +// return ResponseData.success(""); +// } +// +//// 设置密码接口 +// @PostMapping("/setPassword") +// public ResponseDatasetPassWord(@RequestBody UserModelDTO userModelDTO){ +// return ResponseData.success(userService.setPassWord(userModelDTO)); +// } +// +//// 用户通过邮件验证链接重设密码接口 +// @PostMapping("/resetPassword") +// public ResponseDataresetPassWord(@RequestBody UserModelDTO userModelDTO){ +// return ResponseData.success(userService.resetPassWord(userModelDTO)); +// } +// +//// 设置新邮箱接口 +// @PostMapping("/updateUserMail") +// public ResponseDataupdateUserMail(@RequestBody MailModel mailModel){ +// return ResponseData.success(userService.updateUserMail(mailModel)); +// } +// +//// 发送更新邮箱验证邮件接口 +// @PostMapping("/sendUpdateMailConfirmMail") +// public ResponseDatasendUpdateMailConfirmMail(@RequestBody MailModel mailModel){ +// return ResponseData.success(mailService.sendUpdateConfirmMail(mailModel)); +// } +// +//// 检查重复用户名接口 +// @PostMapping("/checkUserName") +// public ResponseDatacheckUserName(@RequestBody UserModelDTO userModelDTO){ +// return ResponseData.success(userService.checkUserName(userModelDTO)); +// } } diff --git a/src/main/java/vvpkassistant/mail/service/MailService.java b/src/main/java/vvpkassistant/mail/service/MailService.java index b79a790..b5c6819 100644 --- a/src/main/java/vvpkassistant/mail/service/MailService.java +++ b/src/main/java/vvpkassistant/mail/service/MailService.java @@ -7,14 +7,14 @@ import vvpkassistant.mail.model.MailModel; * @date: 2025/8/4 15:42 */ public interface MailService { - - void sendMail(String emailAddress,Integer userId); - - void sendVerificationMail(String emailAddress,Integer userId); - - Boolean resendMail(MailModel mailModel); - - void sendForgetPassWordMail(String mailAddress, Integer id); - - Object sendUpdateConfirmMail(MailModel mailModel); +// +// void sendMail(String emailAddress,Integer userId); +// +// void sendVerificationMail(String emailAddress,Integer userId); +// +// Boolean resendMail(MailModel mailModel); +// +// void sendForgetPassWordMail(String mailAddress, Integer id); +// +// Object sendUpdateConfirmMail(MailModel mailModel); } diff --git a/src/main/java/vvpkassistant/mail/service/MailServiceImpl.java b/src/main/java/vvpkassistant/mail/service/MailServiceImpl.java index 6ab7a4f..54346b6 100644 --- a/src/main/java/vvpkassistant/mail/service/MailServiceImpl.java +++ b/src/main/java/vvpkassistant/mail/service/MailServiceImpl.java @@ -48,588 +48,588 @@ public class MailServiceImpl implements MailService { .expireAfterWrite(1, TimeUnit.MINUTES) .build(); - - @Override - @Async("taskExecutor") - public void sendMail(String emailAddress,Integer userId) { - log.info("Sending email to {}", emailAddress); - String token = SaTempUtil.createToken(userId, 600); - if (emailSendCache.getIfPresent(emailAddress) != null) { - throw new BusinessException(ErrorCode.EMAIL_SEND_FREQUENT); - } - ThreadUtil.execute(() -> { - try { - MailUtil.send(emailAddress, "激活你的账号", "\n" + - "\n" + - "\n" + - " \n" + - " \n" + - " Account Activation\n" + - " \n" + - "\n" + - "\n" + - "
\n" + - "
\n" + - " \n" + - "

Account Activation

\n" + - "

Please click the button below to activate your account

\n" + - " \n" + - " \n" + - " Activate Account\n" + - " \n" + - " \n" + - "
\n" + - "
Important Notice:
\n" + - "
\n" + - " • This activation link is valid for 24 hours
\n" + - " • Please do not share this link with anyone
\n" + - " • If you didn't register an account, please ignore this message\n" + - "
\n" + - "
\n" + - " \n" + - "
\n" + - " This is an automated message. Please do not reply to this email.\n" + - "
\n" + - "
\n" + - "\n" + - "\n", true); - log.info("账号激活邮件发送成功,邮箱地址:{},用户 Id:{}", emailAddress,userId); - } catch (Exception e) { - log.error("账号激活邮件发送失败,邮箱地址:{},用户 Id:{}",emailAddress,userId); - } - }); - emailSendCache.put(emailAddress, userId); - } - - @Override - public void sendVerificationMail(String emailAddress, Integer userId) { - log.info("Sending email to {}", emailAddress); - String token = SaTempUtil.createToken(userId, 600); - if (emailSendCache.getIfPresent(emailAddress) != null) { - throw new BusinessException(ErrorCode.EMAIL_SEND_FREQUENT); - } - ThreadUtil.execAsync(() ->{ - try { - MailUtil.send(emailAddress, "验证你的邮箱", "\n" + - "\n" + - "\n" + - " \n" + - " \n" + - " Account Activation\n" + - " \n" + - "\n" + - "\n" + - "
\n" + - "
\n" + - " \n" + - "

Verification Mail

\n" + - "

Please click the button below to verification your mail

\n" + - " \n" + - " \n" + - " Verification\n" + - " \n" + - " \n" + - "
\n" + - "
Important Notice:
\n" + - "
\n" + - " • This activation link is valid for 10 minutes
\n" + - " • Please do not share this link with anyone
\n" + - " • If you didn't register an account, please ignore this message\n" + - "
\n" + - "
\n" + - " \n" + - "
\n" + - " This is an automated message. Please do not reply to this email.\n" + - "
\n" + - "
\n" + - "\n" + - "\n", true); - log.info("邮箱验证发送成功,邮箱地址:{},用户 Id: {}",emailAddress,userId ); - }catch (Exception e) { - log.error(e.getMessage()); - log.error("邮箱验证发送失败,邮箱地址:{},用户 Id: {}",emailAddress,userId ); - } - }); - - emailSendCache.put(emailAddress, userId); - } - - @Override - public Boolean resendMail(MailModel mailModel) { - if (mailModel.getMailAddress() == null && mailModel.getType() == null) { - throw new BusinessException(ErrorCode.PARAMS_ERROR); - } - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - UserModel userModel = userDao.selectOne(lambdaQueryWrapper.eq(UserModel::getEmail, mailModel.getMailAddress())); - if (userModel == null) { - throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST); - } - Object ifPresent = emailSendCache.getIfPresent(mailModel.getMailAddress()); - if (ifPresent == null) { - switch (mailModel.getType()) { - case 1: - sendMail(mailModel.getMailAddress(), userModel.getId()); - break; - case 2: - sendVerificationMail(mailModel.getMailAddress(), userModel.getId()); - break; - case 3: - sendForgetPassWordMail(mailModel.getMailAddress(), userModel.getId()); - break; - case 4: - sendUpdateConfirmMail(mailModel); - break; - } - return true; - }else { - throw new BusinessException(ErrorCode.EMAIL_SEND_FREQUENT); - } - } - - @Override - public void sendForgetPassWordMail(String mailAddress, Integer userId) { - if (checkCache(mailAddress)){ - String token = SaTempUtil.createToken(userId, 600); - ThreadUtil.execAsync(() ->{ - try { - MailUtil.send(mailAddress, "验证你的邮箱", "\n" + - "\n" + - "\n" + - " \n" + - " \n" + - " Account Activation\n" + - " \n" + - "\n" + - "\n" + - "
\n" + - "
\n" + - " \n" + - "

Verification Mail

\n" + - "

Please click the button below to reset your password

\n" + - " \n" + - " \n" + - " Reset PassWord\n" + - " \n" + - " \n" + - "
\n" + - "
Important Notice:
\n" + - "
\n" + - " • This activation link is valid for 10 minutes
\n" + - " • Please do not share this link with anyone
\n" + - " • If you didn't register an account, please ignore this message\n" + - "
\n" + - "
\n" + - " \n" + - "
\n" + - " This is an automated message. Please do not reply to this email.\n" + - "
\n" + - "
\n" + - "\n" + - "\n", true); - log.info("找回密码邮件发送成功,邮箱地址:{},用户 Id:{}", mailAddress,userId); - }catch (Exception e) { - log.error("找回密码邮件发送失败,邮箱地址:{},用户 Id:{}", mailAddress,userId); - } - }); - emailSendCache.put(mailAddress, userId); - } - - } - - @Override - public Object sendUpdateConfirmMail(MailModel mailModel) { - LambdaQueryWrapper 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); - } - if (checkCache(mailModel.getMailAddress())) { - String code = RandomUtil.randomString(6); - emailSendCache.put(mailModel.getMailAddress(), code); - CacheHolder.VERIFICATION_MAIL.put(code, mailModel.getMailAddress()); - ThreadUtil.execAsync(() -> { - try { - MailUtil.send(mailModel.getMailAddress(),"your Verification code is: " + code, - "your Verification code is: " + code,false); - log.info("邮箱:{},发送验证码:{}", mailModel.getMailAddress(),code); - }catch (Exception e){ - log.error("发送邮件失败, address={}, code={}", mailModel.getMailAddress(), code, e); - } - }); - } - return true; - } - - - public Boolean checkCache(String mailAddress){ - Object ifPresent = emailSendCache.getIfPresent(mailAddress); - if (ifPresent == null) { - return true; - }else { - throw new BusinessException(ErrorCode.EMAIL_SEND_FREQUENT); - } - } +// +// @Override +// @Async("taskExecutor") +// public void sendMail(String emailAddress,Integer userId) { +// log.info("Sending email to {}", emailAddress); +// String token = SaTempUtil.createToken(userId, 600); +// if (emailSendCache.getIfPresent(emailAddress) != null) { +// throw new BusinessException(ErrorCode.EMAIL_SEND_FREQUENT); +// } +// ThreadUtil.execute(() -> { +// try { +// MailUtil.send(emailAddress, "激活你的账号", "\n" + +// "\n" + +// "\n" + +// " \n" + +// " \n" + +// " Account Activation\n" + +// " \n" + +// "\n" + +// "\n" + +// "
\n" + +// "
\n" + +// " \n" + +// "

Account Activation

\n" + +// "

Please click the button below to activate your account

\n" + +// " \n" + +// " \n" + +// " Activate Account\n" + +// " \n" + +// " \n" + +// "
\n" + +// "
Important Notice:
\n" + +// "
\n" + +// " • This activation link is valid for 24 hours
\n" + +// " • Please do not share this link with anyone
\n" + +// " • If you didn't register an account, please ignore this message\n" + +// "
\n" + +// "
\n" + +// " \n" + +// "
\n" + +// " This is an automated message. Please do not reply to this email.\n" + +// "
\n" + +// "
\n" + +// "\n" + +// "\n", true); +// log.info("账号激活邮件发送成功,邮箱地址:{},用户 Id:{}", emailAddress,userId); +// } catch (Exception e) { +// log.error("账号激活邮件发送失败,邮箱地址:{},用户 Id:{}",emailAddress,userId); +// } +// }); +// emailSendCache.put(emailAddress, userId); +// } +// +// @Override +// public void sendVerificationMail(String emailAddress, Integer userId) { +// log.info("Sending email to {}", emailAddress); +// String token = SaTempUtil.createToken(userId, 600); +// if (emailSendCache.getIfPresent(emailAddress) != null) { +// throw new BusinessException(ErrorCode.EMAIL_SEND_FREQUENT); +// } +// ThreadUtil.execAsync(() ->{ +// try { +// MailUtil.send(emailAddress, "验证你的邮箱", "\n" + +// "\n" + +// "\n" + +// " \n" + +// " \n" + +// " Account Activation\n" + +// " \n" + +// "\n" + +// "\n" + +// "
\n" + +// "
\n" + +// " \n" + +// "

Verification Mail

\n" + +// "

Please click the button below to verification your mail

\n" + +// " \n" + +// " \n" + +// " Verification\n" + +// " \n" + +// " \n" + +// "
\n" + +// "
Important Notice:
\n" + +// "
\n" + +// " • This activation link is valid for 10 minutes
\n" + +// " • Please do not share this link with anyone
\n" + +// " • If you didn't register an account, please ignore this message\n" + +// "
\n" + +// "
\n" + +// " \n" + +// "
\n" + +// " This is an automated message. Please do not reply to this email.\n" + +// "
\n" + +// "
\n" + +// "\n" + +// "\n", true); +// log.info("邮箱验证发送成功,邮箱地址:{},用户 Id: {}",emailAddress,userId ); +// }catch (Exception e) { +// log.error(e.getMessage()); +// log.error("邮箱验证发送失败,邮箱地址:{},用户 Id: {}",emailAddress,userId ); +// } +// }); +// +// emailSendCache.put(emailAddress, userId); +// } +// +// @Override +// public Boolean resendMail(MailModel mailModel) { +// if (mailModel.getMailAddress() == null && mailModel.getType() == null) { +// throw new BusinessException(ErrorCode.PARAMS_ERROR); +// } +// LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); +// UserModel userModel = userDao.selectOne(lambdaQueryWrapper.eq(UserModel::getEmail, mailModel.getMailAddress())); +// if (userModel == null) { +// throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST); +// } +// Object ifPresent = emailSendCache.getIfPresent(mailModel.getMailAddress()); +// if (ifPresent == null) { +// switch (mailModel.getType()) { +// case 1: +// sendMail(mailModel.getMailAddress(), userModel.getId()); +// break; +// case 2: +// sendVerificationMail(mailModel.getMailAddress(), userModel.getId()); +// break; +// case 3: +// sendForgetPassWordMail(mailModel.getMailAddress(), userModel.getId()); +// break; +// case 4: +// sendUpdateConfirmMail(mailModel); +// break; +// } +// return true; +// }else { +// throw new BusinessException(ErrorCode.EMAIL_SEND_FREQUENT); +// } +// } +// +// @Override +// public void sendForgetPassWordMail(String mailAddress, Integer userId) { +// if (checkCache(mailAddress)){ +// String token = SaTempUtil.createToken(userId, 600); +// ThreadUtil.execAsync(() ->{ +// try { +// MailUtil.send(mailAddress, "验证你的邮箱", "\n" + +// "\n" + +// "\n" + +// " \n" + +// " \n" + +// " Account Activation\n" + +// " \n" + +// "\n" + +// "\n" + +// "
\n" + +// "
\n" + +// " \n" + +// "

Verification Mail

\n" + +// "

Please click the button below to reset your password

\n" + +// " \n" + +// " \n" + +// " Reset PassWord\n" + +// " \n" + +// " \n" + +// "
\n" + +// "
Important Notice:
\n" + +// "
\n" + +// " • This activation link is valid for 10 minutes
\n" + +// " • Please do not share this link with anyone
\n" + +// " • If you didn't register an account, please ignore this message\n" + +// "
\n" + +// "
\n" + +// " \n" + +// "
\n" + +// " This is an automated message. Please do not reply to this email.\n" + +// "
\n" + +// "
\n" + +// "\n" + +// "\n", true); +// log.info("找回密码邮件发送成功,邮箱地址:{},用户 Id:{}", mailAddress,userId); +// }catch (Exception e) { +// log.error("找回密码邮件发送失败,邮箱地址:{},用户 Id:{}", mailAddress,userId); +// } +// }); +// emailSendCache.put(mailAddress, userId); +// } +// +// } +// +// @Override +// public Object sendUpdateConfirmMail(MailModel mailModel) { +// LambdaQueryWrapper 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); +// } +// if (checkCache(mailModel.getMailAddress())) { +// String code = RandomUtil.randomString(6); +// emailSendCache.put(mailModel.getMailAddress(), code); +// CacheHolder.VERIFICATION_MAIL.put(code, mailModel.getMailAddress()); +// ThreadUtil.execAsync(() -> { +// try { +// MailUtil.send(mailModel.getMailAddress(),"your Verification code is: " + code, +// "your Verification code is: " + code,false); +// log.info("邮箱:{},发送验证码:{}", mailModel.getMailAddress(),code); +// }catch (Exception e){ +// log.error("发送邮件失败, address={}, code={}", mailModel.getMailAddress(), code, e); +// } +// }); +// } +// return true; +// } +// +// +// public Boolean checkCache(String mailAddress){ +// Object ifPresent = emailSendCache.getIfPresent(mailAddress); +// if (ifPresent == null) { +// return true; +// }else { +// throw new BusinessException(ErrorCode.EMAIL_SEND_FREQUENT); +// } +// } }