chore(service): 注释掉邮件相关功能并清理用户模型字段

This commit is contained in:
2026-02-08 15:17:50 +08:00
parent 82a13beb09
commit e3ce60f69a
8 changed files with 1045 additions and 1083 deletions

3
.gitignore vendored
View File

@@ -7,7 +7,7 @@
# BlueJ files # BlueJ files
*.ctxt *.ctxt
`
# Mobile Tools for Java (J2ME) # Mobile Tools for Java (J2ME)
.mtj.tmp/ .mtj.tmp/
@@ -27,3 +27,4 @@ replay_pid*
/.idea/ /.idea/
/target/ /target/
/AGENTS.md /AGENTS.md
/.xcodemap/

View File

@@ -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

View File

@@ -6,22 +6,12 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
@Data @Data
@TableName("user") @TableName("system_users")
public class UserModel { public class UserModel {
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
private Integer id; // 主键 private Integer id; // 主键
private String nickName; // 昵称 private String nickname; // 昵称
private String phoneNumber; // 手机号码
private String headerIcon; // 头像
private String openid; // openid
private String sessionKey; // session key
private Integer status; // 用户状态 0 正常 其他业务逻辑待定 private Integer status; // 用户状态 0 正常 其他业务逻辑待定
private Long createTime; // 创建时间
private String userChatId; // 聊天使用的id使用微信的openid作为标识 private String userChatId; // 聊天使用的id使用微信的openid作为标识
private Integer points; // 用户积分 private Integer points; // 用户积分
private Integer inviterId; // 邀请人id
private String email;
private String password;
private Integer mailVerification;
private String userName;
} }

View File

@@ -14,34 +14,34 @@ import vvpkassistant.mail.model.MailModel;
* @date: 2025/8/4 16:19 * @date: 2025/8/4 16:19
*/ */
public interface UserService extends IService<UserModel> { public interface UserService extends IService<UserModel> {
UserModelVO loginWithMail(UserModelDTO model); // UserModelVO loginWithMail(UserModelDTO model);
//
UserModelVO updateUserInfo(UserModelDTO userModelDTO); // UserModelVO updateUserInfo(UserModelDTO userModelDTO);
//
UserModelVO addUserWithMail(UserModelDTO model); // UserModelVO addUserWithMail(UserModelDTO model);
//
Boolean activateAccount(String token); // Boolean activateAccount(String token);
//
Boolean verificationMail(String token); // Boolean verificationMail(String token);
//
Object generatedQrcode(); // Object generatedQrcode();
//
Object checkQrcode(String uuid); // Object checkQrcode(String uuid);
//
LoginInfoDTO scanQrcode(ScanInfoDTO scanInfoDTO); // LoginInfoDTO scanQrcode(ScanInfoDTO scanInfoDTO);
//
void confirm(ScanInfoDTO scanInfoDTO); // void confirm(ScanInfoDTO scanInfoDTO);
//
void logOut(Integer id); // void logOut(Integer id);
//
boolean setPassWord(UserModelDTO userModelDTO); // boolean setPassWord(UserModelDTO userModelDTO);
//
Object sendForgetPassWordMail(MailModel mailModel); // Object sendForgetPassWordMail(MailModel mailModel);
//
Object resetPassWord(UserModelDTO userModelDTO); // Object resetPassWord(UserModelDTO userModelDTO);
//
Boolean updateUserMail(MailModel mailModel); // Boolean updateUserMail(MailModel mailModel);
//
Boolean checkUserName(UserModelDTO userModelDTO); // Boolean checkUserName(UserModelDTO userModelDTO);
} }

View File

@@ -57,323 +57,323 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserModel> implements
.build(); .build();
//
//
@Override // @Override
public UserModelVO loginWithMail(UserModelDTO model) { // public UserModelVO loginWithMail(UserModelDTO model) {
if (model.getUserNameOrEmail().isEmpty()){ // if (model.getUserNameOrEmail().isEmpty()){
throw new BusinessException(ErrorCode.PARAMS_ERROR,"用户名或邮箱不能为空"); // throw new BusinessException(ErrorCode.PARAMS_ERROR,"用户名或邮箱不能为空");
} // }
//
LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(UserModel::getEmail,model.getUserNameOrEmail()) // lambdaQueryWrapper.eq(UserModel::getEmail,model.getUserNameOrEmail())
.or() // .or()
.eq(UserModel::getUserName,model.getUserNameOrEmail()) // .eq(UserModel::getUserName,model.getUserNameOrEmail())
.in(UserModel::getStatus, 0,2); // .in(UserModel::getStatus, 0,2);
//
UserModel userModel = userDao.selectOne(lambdaQueryWrapper); // UserModel userModel = userDao.selectOne(lambdaQueryWrapper);
if (userModel == null) { // if (userModel == null) {
throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST); // throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST);
} // }
//
String password = userModel.getPassword(); // String password = userModel.getPassword();
UserModelVO userModelVO = BeanUtil.copyProperties(userModel, UserModelVO.class); // UserModelVO userModelVO = BeanUtil.copyProperties(userModel, UserModelVO.class);
if (BcryptUtils.matchPassword(password, model.getPassword())) { // if (BcryptUtils.matchPassword(password, model.getPassword())) {
StpUtil.login(userModel.getId()); // StpUtil.login(userModel.getId());
userModelVO.setToken(StpUtil.getTokenValue()); // userModelVO.setToken(StpUtil.getTokenValue());
userModelVO.setChatInfo(wxChatParam); // userModelVO.setChatInfo(wxChatParam);
return userModelVO; // return userModelVO;
}else { // }else {
throw new BusinessException(ErrorCode.PASSWORD_ERROR); // throw new BusinessException(ErrorCode.PASSWORD_ERROR);
} // }
} // }
//
@Override // @Override
public UserModelVO updateUserInfo(UserModelDTO userModelDTO) { // public UserModelVO updateUserInfo(UserModelDTO userModelDTO) {
//
UserModel userInfo = userDao.selectById(userModelDTO.getId()); // UserModel userInfo = userDao.selectById(userModelDTO.getId());
if (userInfo == null) { // if (userInfo == null) {
throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST); // throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST);
} // }
// 用户没有密码的情况下设置密码 //// 用户没有密码的情况下设置密码
if (userInfo.getPassword() == null && userModelDTO.getNewPassword() != null) { // if (userInfo.getPassword() == null && userModelDTO.getNewPassword() != null) {
if (!userModelDTO.getNewPassword().isEmpty()){ // if (!userModelDTO.getNewPassword().isEmpty()){
if (userModelDTO.getNewPassword().length()<6){ // if (userModelDTO.getNewPassword().length()<6){
throw new BusinessException(ErrorCode.PARAMS_ERROR,"密码长度不能小于 6 位"); // throw new BusinessException(ErrorCode.PARAMS_ERROR,"密码长度不能小于 6 位");
} // }
userModelDTO.setPassword(BcryptUtils.encryptPassword(userModelDTO.getNewPassword())); // userModelDTO.setPassword(BcryptUtils.encryptPassword(userModelDTO.getNewPassword()));
} // }
} // }
if (userModelDTO.getEmail() != null) { // if (userModelDTO.getEmail() != null) {
mailService.sendVerificationMail(userModelDTO.getEmail(), userModelDTO.getId()); // mailService.sendVerificationMail(userModelDTO.getEmail(), userModelDTO.getId());
} // }
//
// 用户有密码的情况下重新设置密码 //// 用户有密码的情况下重新设置密码
if (userInfo.getPassword() != null && userModelDTO.getOldPassword() != null) { // if (userInfo.getPassword() != null && userModelDTO.getOldPassword() != null) {
if (BcryptUtils.matchPassword(userInfo.getPassword(),userModelDTO.getOldPassword())) { // if (BcryptUtils.matchPassword(userInfo.getPassword(),userModelDTO.getOldPassword())) {
userModelDTO.setPassword(BcryptUtils.encryptPassword(userModelDTO.getNewPassword())); // userModelDTO.setPassword(BcryptUtils.encryptPassword(userModelDTO.getNewPassword()));
}else { // }else {
throw new BusinessException(ErrorCode.PASSWORD_ERROR,"旧密码不正确"); // throw new BusinessException(ErrorCode.PASSWORD_ERROR,"旧密码不正确");
} // }
} // }
//
UserModel userModel = BeanUtil.copyProperties(userModelDTO, UserModel.class); // UserModel userModel = BeanUtil.copyProperties(userModelDTO, UserModel.class);
int i = userDao.updateById(userModel); // int i = userDao.updateById(userModel);
// 返回结果 // // 返回结果
UserModel afterUserInfo = userDao.selectById(userModel.getId()); // UserModel afterUserInfo = userDao.selectById(userModel.getId());
UserModelVO userModelVO = BeanUtil.copyProperties(afterUserInfo, UserModelVO.class); // UserModelVO userModelVO = BeanUtil.copyProperties(afterUserInfo, UserModelVO.class);
userModelVO.setNewAccount(false); // userModelVO.setNewAccount(false);
if (i == 1){ // if (i == 1){
return userModelVO; // return userModelVO;
}else { // }else {
throw new BusinessException(ErrorCode.SYSTEM_ERROR); // throw new BusinessException(ErrorCode.SYSTEM_ERROR);
} // }
} // }
//
@Override // @Override
public UserModelVO addUserWithMail(UserModelDTO userModelDTO) { // public UserModelVO addUserWithMail(UserModelDTO userModelDTO) {
LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
//
//
LambdaQueryWrapper<UserModel> usernameWrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<UserModel> usernameWrapper = new LambdaQueryWrapper<>();
//
lambdaQueryWrapper.eq(UserModel::getEmail,userModelDTO.getEmail()); // lambdaQueryWrapper.eq(UserModel::getEmail,userModelDTO.getEmail());
UserModel userModel = userDao.selectOne(lambdaQueryWrapper); // UserModel userModel = userDao.selectOne(lambdaQueryWrapper);
//
//
UserModel usernameModel = userDao.selectOne(usernameWrapper // UserModel usernameModel = userDao.selectOne(usernameWrapper
.eq(UserModel::getUserName, userModelDTO.getUserName())); // .eq(UserModel::getUserName, userModelDTO.getUserName()));
//
if (userModel != null) { // if (userModel != null) {
throw new BusinessException(ErrorCode.MAIL_ALREADY_EXIST); // throw new BusinessException(ErrorCode.MAIL_ALREADY_EXIST);
} // }
if (usernameModel != null) { // if (usernameModel != null) {
throw new BusinessException(ErrorCode.USERNAME_ALREADY_EXIST); // throw new BusinessException(ErrorCode.USERNAME_ALREADY_EXIST);
} // }
if (userModelDTO.getPassword().length() < 6 ){ // if (userModelDTO.getPassword().length() < 6 ){
throw new BusinessException(ErrorCode.PARAMS_ERROR,"密码长度不能小于 6 位"); // throw new BusinessException(ErrorCode.PARAMS_ERROR,"密码长度不能小于 6 位");
} // }
if (userModelDTO.getUserName().isEmpty()){ // if (userModelDTO.getUserName().isEmpty()){
throw new BusinessException(ErrorCode.PARAMS_ERROR,"用户名不能为空"); // throw new BusinessException(ErrorCode.PARAMS_ERROR,"用户名不能为空");
} // }
//
userModelDTO.setPassword(BcryptUtils.encryptPassword(userModelDTO.getPassword())); // userModelDTO.setPassword(BcryptUtils.encryptPassword(userModelDTO.getPassword()));
userModelDTO.setCreateTime(VVTools.currentTimeStamp()); // userModelDTO.setCreateTime(VVTools.currentTimeStamp());
//设置状态为待验证 // //设置状态为待验证
userModelDTO.setStatus(2); // userModelDTO.setStatus(2);
//设置积分为0 // //设置积分为0
userModelDTO.setPoints(0); // userModelDTO.setPoints(0);
UserModel userModelEntity = BeanUtil.copyProperties(userModelDTO, UserModel.class); // UserModel userModelEntity = BeanUtil.copyProperties(userModelDTO, UserModel.class);
userModelEntity.setMailVerification(1); // userModelEntity.setMailVerification(1);
if ( userDao.insert(userModelEntity) != 1){ // if ( userDao.insert(userModelEntity) != 1){
throw new BusinessException(ErrorCode.ADD_FAILED,"用户注册失败"); // throw new BusinessException(ErrorCode.ADD_FAILED,"用户注册失败");
} // }
mailService.sendMail(userModelDTO.getEmail(),userModelEntity.getId()); // mailService.sendMail(userModelDTO.getEmail(),userModelEntity.getId());
// 判断用户是否为邀请用户 // // 判断用户是否为邀请用户
if (userModelDTO.getInviterId() != null) { // if (userModelDTO.getInviterId() != null) {
UserModel oldUser = userDao.selectById(userModelDTO.getInviterId()); // UserModel oldUser = userDao.selectById(userModelDTO.getInviterId());
oldUser.setPoints(oldUser.getPoints() + 10); // oldUser.setPoints(oldUser.getPoints() + 10);
userDao.updateById(oldUser); // userDao.updateById(oldUser);
} // }
UserModelVO userModelVO = BeanUtil.copyProperties(userModelEntity, UserModelVO.class); // UserModelVO userModelVO = BeanUtil.copyProperties(userModelEntity, UserModelVO.class);
StpUtil.login(userModelVO.getId()); // StpUtil.login(userModelVO.getId());
userModelVO.setToken(StpUtil.getTokenValue()); // userModelVO.setToken(StpUtil.getTokenValue());
userModelVO.setHavaPassword(true); // userModelVO.setHavaPassword(true);
userModelVO.setNewAccount(true); // userModelVO.setNewAccount(true);
userModelVO.setChatInfo(wxChatParam); // userModelVO.setChatInfo(wxChatParam);
log.info("用户{}注册,邮箱{},手机号{}",userModelVO.getId(),userModelVO.getEmail(),userModelVO.getPhoneNumber()); // log.info("用户{}注册,邮箱{},手机号{}",userModelVO.getId(),userModelVO.getEmail(),userModelVO.getPhoneNumber());
return userModelVO; // return userModelVO;
} // }
//
@Override // @Override
public Boolean activateAccount(String token) { // public Boolean activateAccount(String token) {
Integer userId = SaTempUtil.parseToken(token, Integer.class); // Integer userId = SaTempUtil.parseToken(token, Integer.class);
UserModel userModel = userDao.selectById(userId); // UserModel userModel = userDao.selectById(userId);
if (userModel == null) { // if (userModel == null) {
throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST); // throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST);
} // }
if (userModel.getStatus() == 0){ // if (userModel.getStatus() == 0){
throw new BusinessException(ErrorCode.USER_HAS_ACTIVATED); // throw new BusinessException(ErrorCode.USER_HAS_ACTIVATED);
} // }
userModel.setStatus(0); // userModel.setStatus(0);
userModel.setMailVerification(0); // userModel.setMailVerification(0);
if (userDao.updateById(userModel) == 1){ // if (userDao.updateById(userModel) == 1){
return true; // return true;
}else { // }else {
throw new BusinessException(ErrorCode.UPDATE_FAILED,"激活失败"); // throw new BusinessException(ErrorCode.UPDATE_FAILED,"激活失败");
} // }
} // }
//
@Override // @Override
public Boolean verificationMail(String token) { // public Boolean verificationMail(String token) {
Integer userId = SaTempUtil.parseToken(token, Integer.class); // Integer userId = SaTempUtil.parseToken(token, Integer.class);
UserModel userModel = userDao.selectById(userId); // UserModel userModel = userDao.selectById(userId);
userModel.setMailVerification(0); // userModel.setMailVerification(0);
if (userDao.updateById(userModel) == 1){ // if (userDao.updateById(userModel) == 1){
return true; // return true;
} // }
throw new BusinessException(ErrorCode.SYSTEM_ERROR,"邮箱验证失败"); // throw new BusinessException(ErrorCode.SYSTEM_ERROR,"邮箱验证失败");
} // }
//
@Override // @Override
public QrcodeVO generatedQrcode() { // public QrcodeVO generatedQrcode() {
String uuid = UUID.randomUUID().toString(); // String uuid = UUID.randomUUID().toString();
QrcodeEntity qrcodeEntity = new QrcodeEntity(); // QrcodeEntity qrcodeEntity = new QrcodeEntity();
qrcodeEntity.setUuid(uuid); // qrcodeEntity.setUuid(uuid);
qrcodeEntity.setType("qrcdoe"); // qrcodeEntity.setType("qrcdoe");
String base64QR = null; // String base64QR = null;
try { // try {
base64QR = QRCodeUtil.generateQRCode(JSONUtil.toJsonStr(qrcodeEntity), 200, 200); // base64QR = QRCodeUtil.generateQRCode(JSONUtil.toJsonStr(qrcodeEntity), 200, 200);
} catch (WriterException | IOException e) { // } catch (WriterException | IOException e) {
log.error(e.getMessage()); // log.error(e.getMessage());
throw new BusinessException(ErrorCode.SYSTEM_ERROR,"二维码生成失败"); // throw new BusinessException(ErrorCode.SYSTEM_ERROR,"二维码生成失败");
} // }
//
LoginInfoDTO loginInfoDTO = new LoginInfoDTO(); // LoginInfoDTO loginInfoDTO = new LoginInfoDTO();
loginInfoDTO.setStatus(LoginStatusEnum.UNSCANNED.name()); // loginInfoDTO.setStatus(LoginStatusEnum.UNSCANNED.name());
loginInfoDTO.setUuid(uuid); // loginInfoDTO.setUuid(uuid);
//
// 二维码uuid绑定存入缓存 // // 二维码uuid绑定存入缓存
qrcodeCache.put(uuid,loginInfoDTO); // qrcodeCache.put(uuid,loginInfoDTO);
// 返回生成的二维码信息 // // 返回生成的二维码信息
QrcodeVO vo = QrcodeVO.builder().uuid(uuid).qrcode("data:image/png;base64," + base64QR).build(); // QrcodeVO vo = QrcodeVO.builder().uuid(uuid).qrcode("data:image/png;base64," + base64QR).build();
log.info("-------生成二维码成功:{}-------", uuid); // log.info("-------生成二维码成功:{}-------", uuid);
return vo; // return vo;
} // }
//
@Override // @Override
public Object checkQrcode(String uuid) { // public Object checkQrcode(String uuid) {
LoginInfoDTO loginInfoDTO = qrcodeCache.getIfPresent(uuid); // LoginInfoDTO loginInfoDTO = qrcodeCache.getIfPresent(uuid);
if (loginInfoDTO == null) { // if (loginInfoDTO == null) {
throw new BusinessException(ErrorCode.QRCODE_EXPIRED); // throw new BusinessException(ErrorCode.QRCODE_EXPIRED);
} // }
if (Objects.equals(loginInfoDTO.getStatus(), LoginStatusEnum.SCANNED.name())) { // if (Objects.equals(loginInfoDTO.getStatus(), LoginStatusEnum.SCANNED.name())) {
return loginInfoDTO; // return loginInfoDTO;
} // }
if (LoginStatusEnum.CONFIRMED.name().equals(loginInfoDTO.getStatus())) { // if (LoginStatusEnum.CONFIRMED.name().equals(loginInfoDTO.getStatus())) {
UserModel userModel = userDao.selectById(loginInfoDTO.getId()); // UserModel userModel = userDao.selectById(loginInfoDTO.getId());
StpUtil.login(userModel.getId()); // StpUtil.login(userModel.getId());
UserModelVO userModelVO = BeanUtil.copyProperties(userModel, UserModelVO.class); // UserModelVO userModelVO = BeanUtil.copyProperties(userModel, UserModelVO.class);
userModelVO.setToken(StpUtil.getTokenValue()); // userModelVO.setToken(StpUtil.getTokenValue());
userModelVO.setChatInfo(wxChatParam); // userModelVO.setChatInfo(wxChatParam);
return userModelVO; // return userModelVO;
} // }
return null; // return null;
} // }
//
@Override // @Override
public LoginInfoDTO scanQrcode(ScanInfoDTO scanInfoDTO) { // public LoginInfoDTO scanQrcode(ScanInfoDTO scanInfoDTO) {
LoginInfoDTO loginInfoDTO = qrcodeCache.getIfPresent(scanInfoDTO.getUuid()); // LoginInfoDTO loginInfoDTO = qrcodeCache.getIfPresent(scanInfoDTO.getUuid());
if (loginInfoDTO != null) { // if (loginInfoDTO != null) {
loginInfoDTO.setStatus(LoginStatusEnum.SCANNED.name()); // loginInfoDTO.setStatus(LoginStatusEnum.SCANNED.name());
qrcodeCache.put(scanInfoDTO.getUuid(),loginInfoDTO); // qrcodeCache.put(scanInfoDTO.getUuid(),loginInfoDTO);
} // }
log.info("-------扫码成功uuid:{}-------", scanInfoDTO.getUuid()); // log.info("-------扫码成功uuid:{}-------", scanInfoDTO.getUuid());
return loginInfoDTO; // return loginInfoDTO;
} // }
//
@Override // @Override
public void confirm(ScanInfoDTO scanInfoDTO) { // public void confirm(ScanInfoDTO scanInfoDTO) {
LoginInfoDTO loginInfoDTO = qrcodeCache.getIfPresent(scanInfoDTO.getUuid()); // LoginInfoDTO loginInfoDTO = qrcodeCache.getIfPresent(scanInfoDTO.getUuid());
if (loginInfoDTO != null) { // if (loginInfoDTO != null) {
loginInfoDTO.setStatus(LoginStatusEnum.CONFIRMED.name()); // loginInfoDTO.setStatus(LoginStatusEnum.CONFIRMED.name());
loginInfoDTO.setId(scanInfoDTO.getId()); // loginInfoDTO.setId(scanInfoDTO.getId());
qrcodeCache.put(scanInfoDTO.getUuid(),loginInfoDTO); // qrcodeCache.put(scanInfoDTO.getUuid(),loginInfoDTO);
} // }
log.info("-------确认登录成功uuid:{}-------", scanInfoDTO.getUuid()); // log.info("-------确认登录成功uuid:{}-------", scanInfoDTO.getUuid());
} // }
//
@Override // @Override
public void logOut(Integer id) { // public void logOut(Integer id) {
StpUtil.logout(id); // StpUtil.logout(id);
} // }
//
@Override // @Override
public boolean setPassWord(UserModelDTO userModelDTO) { // public boolean setPassWord(UserModelDTO userModelDTO) {
UserModel userModel = userDao.selectById(userModelDTO.getId()); // UserModel userModel = userDao.selectById(userModelDTO.getId());
if (userModel == null) { // if (userModel == null) {
throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST); // throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST);
} // }
if (userModel.getPassword()!= null){ // if (userModel.getPassword()!= null){
throw new BusinessException(ErrorCode.SYSTEM_ERROR,"已设置过密码"); // throw new BusinessException(ErrorCode.SYSTEM_ERROR,"已设置过密码");
} // }
if (userModelDTO.getPassword().length()< 6 ){ // if (userModelDTO.getPassword().length()< 6 ){
throw new BusinessException(ErrorCode.PARAMS_ERROR,"密码长度不能小于 6 位"); // throw new BusinessException(ErrorCode.PARAMS_ERROR,"密码长度不能小于 6 位");
} // }
if (!Objects.equals(userModelDTO.getPassword(), userModelDTO.getConfirmPassword())) { // if (!Objects.equals(userModelDTO.getPassword(), userModelDTO.getConfirmPassword())) {
log.error("密码{},确认密码{}",userModelDTO.getPassword(),userModelDTO.getConfirmPassword()); // log.error("密码{},确认密码{}",userModelDTO.getPassword(),userModelDTO.getConfirmPassword());
throw new BusinessException(ErrorCode.PARAMS_ERROR,"两次密码输入不一致"); // throw new BusinessException(ErrorCode.PARAMS_ERROR,"两次密码输入不一致");
}else{ // }else{
UserModel saveEntity = BeanUtil.copyProperties(userModelDTO, UserModel.class); // UserModel saveEntity = BeanUtil.copyProperties(userModelDTO, UserModel.class);
saveEntity.setPassword(BcryptUtils.encryptPassword(userModelDTO.getPassword())); // saveEntity.setPassword(BcryptUtils.encryptPassword(userModelDTO.getPassword()));
return userDao.updateById(saveEntity) == 1 ; // return userDao.updateById(saveEntity) == 1 ;
} // }
} // }
//
@Override // @Override
public Object sendForgetPassWordMail(MailModel mailModel) { // public Object sendForgetPassWordMail(MailModel mailModel) {
LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
UserModel userModel = userDao.selectOne(lambdaQueryWrapper // UserModel userModel = userDao.selectOne(lambdaQueryWrapper
.eq(UserModel::getEmail, mailModel.getMailAddress()) // .eq(UserModel::getEmail, mailModel.getMailAddress())
.eq(UserModel::getStatus, 0) // .eq(UserModel::getStatus, 0)
.eq(UserModel::getMailVerification, 0)); // .eq(UserModel::getMailVerification, 0));
if (userModel == null) { // if (userModel == null) {
throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST); // throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST);
} // }
//
mailService.sendForgetPassWordMail(mailModel.getMailAddress(),userModel.getId()); // mailService.sendForgetPassWordMail(mailModel.getMailAddress(),userModel.getId());
return true; // return true;
} // }
//
@Override // @Override
public Object resetPassWord(UserModelDTO userModelDTO) { // public Object resetPassWord(UserModelDTO userModelDTO) {
Integer i = SaTempUtil.parseToken(userModelDTO.getToken(), Integer.class); // Integer i = SaTempUtil.parseToken(userModelDTO.getToken(), Integer.class);
UserModel userModel = userDao.selectById(i); // UserModel userModel = userDao.selectById(i);
if (userModel == null) { // if (userModel == null) {
throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST); // throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST);
} // }
if (userModelDTO.getPassword().equals(userModelDTO.getConfirmPassword())) { // if (userModelDTO.getPassword().equals(userModelDTO.getConfirmPassword())) {
userModel.setPassword(BcryptUtils.encryptPassword(userModelDTO.getPassword())); // userModel.setPassword(BcryptUtils.encryptPassword(userModelDTO.getPassword()));
return userDao.updateById(userModel) == 1; // return userDao.updateById(userModel) == 1;
} // }
return false; // return false;
} // }
//
@Override // @Override
public Boolean updateUserMail(MailModel mailModel) { // public Boolean updateUserMail(MailModel mailModel) {
String mail = CacheHolder.VERIFICATION_MAIL.getIfPresent(mailModel.getCode()); // String mail = CacheHolder.VERIFICATION_MAIL.getIfPresent(mailModel.getCode());
if (mail != null && mail.isEmpty()) { // if (mail != null && mail.isEmpty()) {
throw new BusinessException(ErrorCode.SYSTEM_ERROR,"验证码过期或验证码错误"); // throw new BusinessException(ErrorCode.SYSTEM_ERROR,"验证码过期或验证码错误");
} // }
LambdaQueryWrapper<UserModel> duplicateMailUserWrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<UserModel> duplicateMailUserWrapper = new LambdaQueryWrapper<>();
//
LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
//
UserModel duplicateMailUser = userDao.selectOne(duplicateMailUserWrapper // UserModel duplicateMailUser = userDao.selectOne(duplicateMailUserWrapper
.eq(UserModel::getEmail, mailModel.getMailAddress())); // .eq(UserModel::getEmail, mailModel.getMailAddress()));
if (duplicateMailUser != null) { // if (duplicateMailUser != null) {
throw new BusinessException(ErrorCode.SYSTEM_ERROR,"邮箱地址已被使用"); // throw new BusinessException(ErrorCode.SYSTEM_ERROR,"邮箱地址已被使用");
} // }
//
UserModel userModel = userDao.selectOne(lambdaQueryWrapper // UserModel userModel = userDao.selectOne(lambdaQueryWrapper
.eq(UserModel::getEmail, mail) // .eq(UserModel::getEmail, mail)
.eq(UserModel::getMailVerification, 0 )); // .eq(UserModel::getMailVerification, 0 ));
//
if (userModel == null) { // if (userModel == null) {
throw new BusinessException(ErrorCode.USER_MAIL_NOT_VERIFICATION); // throw new BusinessException(ErrorCode.USER_MAIL_NOT_VERIFICATION);
} // }
userModel.setEmail(mailModel.getMailAddress()); // userModel.setEmail(mailModel.getMailAddress());
mailService.sendVerificationMail(mailModel.getMailAddress(),userModel.getId()); // mailService.sendVerificationMail(mailModel.getMailAddress(),userModel.getId());
userModel.setMailVerification(1); // userModel.setMailVerification(1);
return userDao.updateById(userModel) == 1; // return userDao.updateById(userModel) == 1;
} // }
//
@Override // @Override
public Boolean checkUserName(UserModelDTO userModelDTO) { // public Boolean checkUserName(UserModelDTO userModelDTO) {
LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
UserModel userModel = userDao.selectOne(lambdaQueryWrapper // UserModel userModel = userDao.selectOne(lambdaQueryWrapper
.eq(UserModel::getUserName, userModelDTO.getUserName())); // .eq(UserModel::getUserName, userModelDTO.getUserName()));
return userModel == null; // return userModel == null;
} // }
} }

View File

@@ -110,10 +110,6 @@ public class UserController {
// 创建一个临时model // 创建一个临时model
UserModel tempModel = new UserModel(); UserModel tempModel = new UserModel();
tempModel.setId(Integer.valueOf(param.get("id").toString())); 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); tempModel.setUserChatId(openId);
int i = userDao.updateById(tempModel); int i = userDao.updateById(tempModel);
if (i == 1) { if (i == 1) {
@@ -162,8 +158,6 @@ public class UserController {
return ResponseData.success(result); return ResponseData.success(result);
}else{ // 新用户 }else{ // 新用户
UserModel tempModel = new UserModel(); UserModel tempModel = new UserModel();
tempModel.setPhoneNumber(phoneNumber);
tempModel.setCreateTime(VVTools.currentTimeStamp());
//设置状态为正常 //设置状态为正常
tempModel.setStatus(0); tempModel.setStatus(0);
//设置积分为0 //设置积分为0
@@ -196,8 +190,9 @@ public class UserController {
// 修改用户信息 // 修改用户信息
@PostMapping("updateUserInfo") @PostMapping("updateUserInfo")
public ResponseData<Object> updateUserInfo(@RequestBody UserModelDTO userModelDTO) { public ResponseData<Object> updateUserInfo(@RequestBody UserModelDTO userModelDTO) {
UserModelVO userModelVO = userService.updateUserInfo( userModelDTO); // UserModelVO userModelVO = userService.updateUserInfo( userModelDTO);
return ResponseData.success(userModelVO); // return ResponseData.success(userModelVO);
return null;
} }
// 获取用户信息 // 获取用户信息
@@ -211,7 +206,6 @@ public class UserController {
throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST); throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST);
} }
UserModelVO userModelVO = BeanUtil.copyProperties(userModel, UserModelVO.class); UserModelVO userModelVO = BeanUtil.copyProperties(userModel, UserModelVO.class);
userModelVO.setHavaPassword(userModel.getPassword() != null);
return ResponseData.success(userModelVO); return ResponseData.success(userModelVO);
} }
@@ -385,101 +379,101 @@ public class UserController {
return ResponseData.success(coinRecords); return ResponseData.success(coinRecords);
} }
// 邮件登录接口 //// 邮件登录接口
@PostMapping("/loginWithMail") // @PostMapping("/loginWithMail")
public ResponseData<Object> loginWithMail(@RequestBody UserModelDTO model) { // public ResponseData<Object> loginWithMail(@RequestBody UserModelDTO model) {
return ResponseData.success(userService.loginWithMail(model)); // return ResponseData.success(userService.loginWithMail(model));
} // }
//
//邮件注册接口 ////邮件注册接口
@PostMapping("/registerWithMail") // @PostMapping("/registerWithMail")
public ResponseData<Object> mailRegister(@RequestBody UserModelDTO model){ // public ResponseData<Object> mailRegister(@RequestBody UserModelDTO model){
return ResponseData.success(userService.addUserWithMail(model)); // return ResponseData.success(userService.addUserWithMail(model));
} // }
//
// 用户邮件激活 //// 用户邮件激活
@GetMapping("/activate") // @GetMapping("/activate")
public ResponseData<Object> activateAccount(@RequestParam("token") String token){ // public ResponseData<Object> activateAccount(@RequestParam("token") String token){
return ResponseData.success(userService.activateAccount(token)); // return ResponseData.success(userService.activateAccount(token));
} // }
//
// 重发邮件接口 //// 重发邮件接口
@PostMapping("/resendMail") // @PostMapping("/resendMail")
public ResponseData<Object> resendMail(@RequestBody MailModel mailModel){ // public ResponseData<Object> resendMail(@RequestBody MailModel mailModel){
return ResponseData.success(mailService.resendMail(mailModel)); // return ResponseData.success(mailService.resendMail(mailModel));
} // }
//
// 验证邮箱链接 //// 验证邮箱链接
@GetMapping("/verificationMail") // @GetMapping("/verificationMail")
public ResponseData<Object> verificationMail(@RequestParam("token") String token){ // public ResponseData<Object> verificationMail(@RequestParam("token") String token){
return ResponseData.success(userService.verificationMail(token)); // return ResponseData.success(userService.verificationMail(token));
} // }
//
// 发送忘记密码邮件 //// 发送忘记密码邮件
@PostMapping("/forgetMail") // @PostMapping("/forgetMail")
public ResponseData<Object> sendForgetPassWordMail(@RequestBody MailModel mailModel){ // public ResponseData<Object> sendForgetPassWordMail(@RequestBody MailModel mailModel){
return ResponseData.success(userService.sendForgetPassWordMail(mailModel)); // return ResponseData.success(userService.sendForgetPassWordMail(mailModel));
} // }
//
// 生成二维码登录接口 //// 生成二维码登录接口
@GetMapping("/qrcode") // @GetMapping("/qrcode")
public ResponseData<Object> generatedQrcode(){ // public ResponseData<Object> generatedQrcode(){
return ResponseData.success(userService.generatedQrcode()); // return ResponseData.success(userService.generatedQrcode());
} // }
//
// 检查二维码状态接口 //// 检查二维码状态接口
@GetMapping("/check/{uuid}") // @GetMapping("/check/{uuid}")
public ResponseData<Object> checkQrcode(@PathVariable String uuid){ // public ResponseData<Object> checkQrcode(@PathVariable String uuid){
return ResponseData.success(userService.checkQrcode(uuid)); // return ResponseData.success(userService.checkQrcode(uuid));
} // }
//
// 二维码扫描状态 //// 二维码扫描状态
@PostMapping("/scan") // @PostMapping("/scan")
public ResponseData<?> scanQrCode(@RequestBody ScanInfoDTO scanInfoDTO) { // public ResponseData<?> scanQrCode(@RequestBody ScanInfoDTO scanInfoDTO) {
return ResponseData.success( userService.scanQrcode(scanInfoDTO)); // return ResponseData.success( userService.scanQrcode(scanInfoDTO));
} // }
//
//二维码扫描确认 ////二维码扫描确认
@PostMapping("/confirm") // @PostMapping("/confirm")
public ResponseData<?> confirm(@RequestBody ScanInfoDTO scanInfoDTO) { // public ResponseData<?> confirm(@RequestBody ScanInfoDTO scanInfoDTO) {
userService.confirm(scanInfoDTO); // userService.confirm(scanInfoDTO);
return ResponseData.success(""); // return ResponseData.success("");
} // }
//
// 注销接口 //// 注销接口
@PostMapping("/logout") // @PostMapping("/logout")
public ResponseData<Object> logOut(@RequestBody UserModelDTO userModelDTO){ // public ResponseData<Object> logOut(@RequestBody UserModelDTO userModelDTO){
userService.logOut(userModelDTO.getId()); // userService.logOut(userModelDTO.getId());
return ResponseData.success(""); // return ResponseData.success("");
} // }
//
// 设置密码接口 //// 设置密码接口
@PostMapping("/setPassword") // @PostMapping("/setPassword")
public ResponseData<Object>setPassWord(@RequestBody UserModelDTO userModelDTO){ // public ResponseData<Object>setPassWord(@RequestBody UserModelDTO userModelDTO){
return ResponseData.success(userService.setPassWord(userModelDTO)); // return ResponseData.success(userService.setPassWord(userModelDTO));
} // }
//
// 用户通过邮件验证链接重设密码接口 //// 用户通过邮件验证链接重设密码接口
@PostMapping("/resetPassword") // @PostMapping("/resetPassword")
public ResponseData<Object>resetPassWord(@RequestBody UserModelDTO userModelDTO){ // public ResponseData<Object>resetPassWord(@RequestBody UserModelDTO userModelDTO){
return ResponseData.success(userService.resetPassWord(userModelDTO)); // return ResponseData.success(userService.resetPassWord(userModelDTO));
} // }
//
// 设置新邮箱接口 //// 设置新邮箱接口
@PostMapping("/updateUserMail") // @PostMapping("/updateUserMail")
public ResponseData<Object>updateUserMail(@RequestBody MailModel mailModel){ // public ResponseData<Object>updateUserMail(@RequestBody MailModel mailModel){
return ResponseData.success(userService.updateUserMail(mailModel)); // return ResponseData.success(userService.updateUserMail(mailModel));
} // }
//
// 发送更新邮箱验证邮件接口 //// 发送更新邮箱验证邮件接口
@PostMapping("/sendUpdateMailConfirmMail") // @PostMapping("/sendUpdateMailConfirmMail")
public ResponseData<Object>sendUpdateMailConfirmMail(@RequestBody MailModel mailModel){ // public ResponseData<Object>sendUpdateMailConfirmMail(@RequestBody MailModel mailModel){
return ResponseData.success(mailService.sendUpdateConfirmMail(mailModel)); // return ResponseData.success(mailService.sendUpdateConfirmMail(mailModel));
} // }
//
// 检查重复用户名接口 //// 检查重复用户名接口
@PostMapping("/checkUserName") // @PostMapping("/checkUserName")
public ResponseData<Boolean>checkUserName(@RequestBody UserModelDTO userModelDTO){ // public ResponseData<Boolean>checkUserName(@RequestBody UserModelDTO userModelDTO){
return ResponseData.success(userService.checkUserName(userModelDTO)); // return ResponseData.success(userService.checkUserName(userModelDTO));
} // }
} }

View File

@@ -7,14 +7,14 @@ import vvpkassistant.mail.model.MailModel;
* @date: 2025/8/4 15:42 * @date: 2025/8/4 15:42
*/ */
public interface MailService { public interface MailService {
//
void sendMail(String emailAddress,Integer userId); // void sendMail(String emailAddress,Integer userId);
//
void sendVerificationMail(String emailAddress,Integer userId); // void sendVerificationMail(String emailAddress,Integer userId);
//
Boolean resendMail(MailModel mailModel); // Boolean resendMail(MailModel mailModel);
//
void sendForgetPassWordMail(String mailAddress, Integer id); // void sendForgetPassWordMail(String mailAddress, Integer id);
//
Object sendUpdateConfirmMail(MailModel mailModel); // Object sendUpdateConfirmMail(MailModel mailModel);
} }

File diff suppressed because it is too large Load Diff