liujie
2026-09-11 4f6f15b818704079ff2e4e4719b798f48d68a335
backend/src/main/java/com/tourguide/modules/user/service/GuideUserService.java
@@ -166,15 +166,17 @@
        GuideTeam team = user.getTeamId() == null ? null : teamMapper.selectById(user.getTeamId());
        List<GuideScenicConfig> scenicConfigs = scenicConfigMapper.selectList(
                new LambdaQueryWrapper<GuideScenicConfig>().eq(GuideScenicConfig::getGuideId, id).orderByAsc(GuideScenicConfig::getId));
        GuideApplication application = findLatestApplication(user);
        LocalDate birthDate = user.getBirthDate();
        Integer workYears = user.getWorkYears();
        if (birthDate == null || workYears == null) {
            GuideApplication application = findLatestApplication(user);
            if (birthDate == null && application != null) birthDate = parseBirthDate(application.getIdCardNo());
            if (workYears == null && application != null) workYears = parseWorkYears(application.getWorkYearRange());
        }
        return new GuideUserDetailResponse(user, team == null ? null : team.getTeamName(), scenicConfigs,
                birthDate, workYears);
                birthDate, workYears,
                application == null ? null : application.getAgeRange(),
                application == null ? null : application.getWorkYearRange());
    }
    private GuideApplication findLatestApplication(GuideUser user) {
@@ -317,6 +319,7 @@
        if (user.getStatus() == STATUS_CANCELLED) {
            user.setStatus(STATUS_PENDING);
            user.setAutoDisableWhitelisted(0);
            user.setPremiumEnabled(0);
            user.setAutoDisabled(0);
            user.setDeleted(0);
        }
@@ -443,12 +446,7 @@
    @Transactional
    public GuideUserResponse changeMobile(Long id, String newPhone) {
        GuideUser user = findEnabledById(id);
        ensurePhoneAvailable(id, newPhone);
        String oldPhone = user.getMobile();
        user.setMobile(newPhone);
        if (oldPhone != null && oldPhone.equals(user.getUsername())) {
            user.setUsername(newPhone);
        }
        updateMobileAndLoginUsername(user, newPhone);
        userMapper.updateById(user);
        return GuideUserResponse.from(user);
    }
@@ -462,8 +460,8 @@
                .eq(GuideTeam::getCollectionGuideId, id)) > 0) {
            throw new BusinessException(409, "该导游已配置为讲解队收款导游,请先更换收款导游");
        }
        updateMobileAndLoginUsername(user, request.getMobile());
        user.setRealName(request.getRealName());
        user.setMobile(request.getMobile());
        user.setAvatar(request.getAvatar());
        user.setCertificateNo(request.getCertificateNo());
        user.setGender(request.getGender());
@@ -481,6 +479,17 @@
        return detail(id);
    }
    private void updateMobileAndLoginUsername(GuideUser user, String newPhone) {
        String oldPhone = user.getMobile();
        if (!java.util.Objects.equals(oldPhone, newPhone) && StringUtils.hasText(newPhone)) {
            ensurePhoneAvailable(user.getId(), newPhone);
        }
        user.setMobile(newPhone);
        if (oldPhone != null && oldPhone.equals(user.getUsername()) && StringUtils.hasText(newPhone)) {
            user.setUsername(newPhone);
        }
    }
    @Transactional
    public void updateWhitelist(Long id, boolean enabled) {
        GuideUser user = findById(id);
@@ -496,6 +505,13 @@
        userMapper.updateById(user);
    }
    @Transactional
    public void updatePremiumPermission(Long id, boolean enabled) {
        GuideUser user = findById(id);
        user.setPremiumEnabled(enabled ? 1 : 0);
        userMapper.updateById(user);
    }
    public GuideAutoDisableConfigResponse getAutoDisableConfig() {
        GuideAutoDisableConfig config = autoDisableConfigMapper.selectById(1);
        if (config == null) {