liujie
2026-07-30 280ef5100bece9b40ac51736aef037704a52a4ca
backend/src/main/java/com/tourguide/modules/user/service/AuthService.java
@@ -95,7 +95,7 @@
    public AuthResponse<GuideUserResponse> loginGuide(LoginRequest request) {
        GuideUser user = guideUserService.findByUsername(request.getUsername());
        if (user == null || user.getStatus() == null || user.getStatus() != 1 || !passwordEncoder.matches(request.getPassword(), user.getPassword())) {
        if (!isGuideLoginable(user) || !passwordEncoder.matches(request.getPassword(), user.getPassword())) {
            throw new BusinessException(401, "用户名或密码错误");
        }
        return issueGuideToken(user);
@@ -111,12 +111,19 @@
    private GuideUser findLoginableGuideByPhone(String phone) {
        GuideUser user = guideUserService.findByPhone(phone);
        if (user == null || user.getStatus() == null || user.getStatus() != 1) {
        if (!isGuideLoginable(user)) {
            throw new BusinessException(401, "手机号未注册或账号已停用");
        }
        return user;
    }
    private boolean isGuideLoginable(GuideUser user) {
        return user != null
                && user.getStatus() != null
                && (user.getStatus() == GuideUserService.STATUS_ENABLED
                || user.getStatus() == GuideUserService.STATUS_PENDING);
    }
    private AuthResponse<GuideUserResponse> issueGuideToken(GuideUser user) {
        String token = issueToken(user.getId(), user.getUsername(), UserRole.GUIDE_USER.name(), ClientType.GUIDE);
        return new AuthResponse<GuideUserResponse>(token, jwtTokenService.getExpirationSeconds(), GuideUserResponse.from(user));