From 4f6f15b818704079ff2e4e4719b798f48d68a335 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 11 九月 2026 13:52:19 +0800
Subject: [PATCH] update

---
 backend/src/main/java/com/tourguide/modules/user/service/GuideUserService.java |   34 +++++++++++++++++++++++++---------
 1 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/backend/src/main/java/com/tourguide/modules/user/service/GuideUserService.java b/backend/src/main/java/com/tourguide/modules/user/service/GuideUserService.java
index 16695af..8b4039c 100644
--- a/backend/src/main/java/com/tourguide/modules/user/service/GuideUserService.java
+++ b/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) {

--
Gitblit v1.7.1