diff --git a/im-platform/src/main/java/com/bx/implatform/config/MvcConfig.java b/im-platform/src/main/java/com/bx/implatform/config/MvcConfig.java index 286461a..7f8833a 100644 --- a/im-platform/src/main/java/com/bx/implatform/config/MvcConfig.java +++ b/im-platform/src/main/java/com/bx/implatform/config/MvcConfig.java @@ -21,7 +21,7 @@ public class MvcConfig implements WebMvcConfigurer { public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(xssInterceptor).addPathPatterns("/**").excludePathPatterns("/error"); registry.addInterceptor(authInterceptor).addPathPatterns("/**") - .excludePathPatterns("/login", "/logout", "/register", "/refreshToken","/*/upload", "/swagger/**", "/v3/api-docs/**", + .excludePathPatterns("/login", "/loginCustom","/logout", "/register", "/refreshToken","/*/upload", "/swagger/**", "/v3/api-docs/**", "/swagger-resources/**", "/swagger-ui.html", "/swagger-ui/**", "/doc.html"); } diff --git a/im-platform/src/main/java/com/bx/implatform/controller/LoginController.java b/im-platform/src/main/java/com/bx/implatform/controller/LoginController.java index 36a7a43..1746193 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/LoginController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/LoginController.java @@ -7,6 +7,7 @@ import com.bx.implatform.result.Result; import com.bx.implatform.result.ResultUtils; import com.bx.implatform.service.UserService; import com.bx.implatform.vo.LoginVO; +import com.github.xiaoymin.knife4j.annotations.Ignore; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; @@ -27,6 +28,13 @@ public class LoginController { return ResultUtils.success(vo); } + @PostMapping("/loginCustom") + @Operation(summary = "用户登录", description = "用户登录") + public Result loginCustom(@Valid @RequestBody LoginDTO dto) { + LoginVO vo = userService.loginCustom(dto); + return ResultUtils.success(vo); + } + @PutMapping("/refreshToken") @Operation(summary = "刷新token", description = "用refreshtoken换取新的token") public Result refreshToken(@RequestHeader("refreshToken") String refreshToken) { diff --git a/im-platform/src/main/java/com/bx/implatform/entity/User.java b/im-platform/src/main/java/com/bx/implatform/entity/User.java index ca292e6..6b43806 100644 --- a/im-platform/src/main/java/com/bx/implatform/entity/User.java +++ b/im-platform/src/main/java/com/bx/implatform/entity/User.java @@ -84,4 +84,14 @@ public class User { */ private Integer type; + /** + * uuid + */ + private String uuid; + + /** + * 用户类型 1:普通用户 2:客服 + */ + private Integer isCustomer = 1; + } diff --git a/im-platform/src/main/java/com/bx/implatform/service/UserService.java b/im-platform/src/main/java/com/bx/implatform/service/UserService.java index 37bcc8b..4319bb7 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/UserService.java +++ b/im-platform/src/main/java/com/bx/implatform/service/UserService.java @@ -21,6 +21,14 @@ public interface UserService extends IService { */ LoginVO login(LoginDTO dto); + /** + * 客服登录 + * + * @param dto 登录dto + * @return 登录token + */ + LoginVO loginCustom(LoginDTO dto); + /** * 修改用户密码 * diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java index 938dd07..1172c10 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java @@ -56,6 +56,9 @@ public class UserServiceImpl extends ServiceImpl implements Us if (Objects.isNull(user)) { throw new GlobalException("用户不存在"); } + if(user.getIsCustomer() == 2){ + throw new GlobalException("用户不存在"); + } if (user.getIsBanned()) { String tip = String.format("您的账号因'%s'已被管理员封禁,请联系客服!",user.getReason()); throw new GlobalException(tip); @@ -80,6 +83,39 @@ public class UserServiceImpl extends ServiceImpl implements Us return vo; } + @Override + public LoginVO loginCustom(LoginDTO dto) { + User user = this.findUserByUserName(dto.getUserName()); + if (Objects.isNull(user)) { + throw new GlobalException("用户不存在"); + } + if(user.getIsCustomer() == 1){ + throw new GlobalException("用户不存在"); + } + if (user.getIsBanned()) { + String tip = String.format("您的账号因'%s'已被管理员封禁,请联系客服!",user.getReason()); + throw new GlobalException(tip); + } + if (!passwordEncoder.matches(dto.getPassword(), user.getPassword())) { + throw new GlobalException(ResultCode.PASSWOR_ERROR); + } + // 生成token + UserSession session = BeanUtils.copyProperties(user, UserSession.class); + session.setUserId(user.getId()); + session.setTerminal(dto.getTerminal()); + String strJson = JSON.toJSONString(session); + String accessToken = JwtUtil.sign(user.getId(), strJson, jwtProperties.getAccessTokenExpireIn(), + jwtProperties.getAccessTokenSecret()); + String refreshToken = JwtUtil.sign(user.getId(), strJson, jwtProperties.getRefreshTokenExpireIn(), + jwtProperties.getRefreshTokenSecret()); + LoginVO vo = new LoginVO(); + vo.setAccessToken(accessToken); + vo.setAccessTokenExpiresIn(jwtProperties.getAccessTokenExpireIn()); + vo.setRefreshToken(refreshToken); + vo.setRefreshTokenExpiresIn(jwtProperties.getRefreshTokenExpireIn()); + return vo; + } + @Override public LoginVO refreshToken(String refreshToken) { //验证 token @@ -126,6 +162,7 @@ public class UserServiceImpl extends ServiceImpl implements Us } user = BeanUtils.copyProperties(dto, User.class); user.setPassword(passwordEncoder.encode(user.getPassword())); + user.setIsCustomer(1); this.save(user); log.info("注册用户,用户id:{},用户名:{},昵称:{}", user.getId(), dto.getUserName(), dto.getNickName()); }