feat:用户注册

This commit is contained in:
xiang
2025-08-24 15:42:46 +08:00
parent 72965b8922
commit 7e6d5c07a3
7 changed files with 185 additions and 3 deletions

View File

@@ -0,0 +1,17 @@
package com.xiang.xservice.auth.service.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum UserStatusEnum {
DISABLED(0, "禁用"),
USING(1, "启用"),
;
private final Integer code;
private final String msg;
}

View File

@@ -9,4 +9,11 @@ import org.springframework.stereotype.Repository;
public interface XUserMapper {
XUser selectByUsername(String username);
/**
* 新增用户
* @param user 用户
* @return
*/
int insert(XUser user);
}

View File

@@ -1,14 +1,16 @@
package com.xiang.xservice.auth.service.service;
import com.xiang.xservice.auth.api.dto.req.LoginRequest;
import com.xiang.xservice.auth.api.dto.req.RegisterRequest;
import com.xiang.xservice.auth.api.dto.resp.LoginResp;
import com.xiang.xservice.auth.api.dto.resp.RegisterResp;
import com.xiang.xservice.auth.api.dto.resp.UserResp;
import com.xiang.xservice.mysql.annotation.DynamicDataSource;
public interface XUserService {
@DynamicDataSource("master")
LoginResp login(LoginRequest request);
@DynamicDataSource("master")
UserResp getUserByUsername(String username);
RegisterResp userRegister(RegisterRequest request);
}

View File

@@ -1,23 +1,29 @@
package com.xiang.xservice.auth.service.service.impl;
import com.xiang.xservice.auth.api.dto.req.LoginRequest;
import com.xiang.xservice.auth.api.dto.req.RegisterRequest;
import com.xiang.xservice.auth.api.dto.resp.LoginResp;
import com.xiang.xservice.auth.api.dto.resp.RegisterResp;
import com.xiang.xservice.auth.api.dto.resp.UserResp;
import com.xiang.xservice.auth.service.entity.XUser;
import com.xiang.xservice.auth.service.enums.UserStatusEnum;
import com.xiang.xservice.auth.service.repository.mapper.XUserMapper;
import com.xiang.xservice.auth.service.service.XUserService;
import com.xiang.xservice.basic.enums.DelStatusEnum;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.oauth2.jwt.JwtClaimsSet;
import org.springframework.security.oauth2.jwt.JwtEncoder;
import org.springframework.security.oauth2.jwt.JwtEncoderParameters;
import org.springframework.stereotype.Service;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.Objects;
@@ -29,6 +35,7 @@ public class XUserServiceImpl implements XUserService {
private final JwtEncoder jwtEncoder;
private final XUserMapper userMapper;
private final AuthenticationManager authenticationManager;
private final PasswordEncoder passwordEncoder;
@Override
public LoginResp login(LoginRequest request) {
@@ -81,4 +88,36 @@ public class XUserServiceImpl implements XUserService {
userResp.setUpdateTime(user.getUpdateTime());
return userResp;
}
@Override
public RegisterResp userRegister(RegisterRequest request) {
// todo 手机号验证码校验
XUser user = userMapper.selectByUsername(request.getUsername());
if (Objects.nonNull(user)) {
throw new RuntimeException("用户名已存在!");
}
user = new XUser();
user.setName(request.getName());
user.setUsername(request.getUsername());
user.setPassword(passwordEncoder.encode(request.getPassword()));
user.setEmail(request.getEmail());
user.setPhone(request.getPhone());
user.setAvatar(request.getAvatar());
user.setStatus(UserStatusEnum.USING.getCode());
user.setDelFlag(DelStatusEnum.NOT_DELETED.getCode());
user.setCreateBy("admin");
user.setCreateTime(LocalDateTime.now());
user.setUpdateBy("admin");
user.setUpdateTime(LocalDateTime.now());
if (userMapper.insert(user) > 0) {
RegisterResp registerResp = new RegisterResp();
registerResp.setName(registerResp.getName());
registerResp.setUsername(registerResp.getUsername());
registerResp.setEmail(registerResp.getEmail());
registerResp.setPhone(registerResp.getPhone());
return registerResp;
}
return null;
}
}