From 280ef5100bece9b40ac51736aef037704a52a4ca Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期四, 30 七月 2026 14:58:52 +0800
Subject: [PATCH] update
---
backend/src/main/java/com/tourguide/modules/user/service/GuideUserService.java | 59 +++++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 47 insertions(+), 12 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 1db4651..3400b74 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
@@ -7,7 +7,7 @@
import com.tourguide.modules.user.dto.GuideAutoDisableConfigRequest;
import com.tourguide.modules.user.dto.GuideAutoDisableConfigResponse;
import com.tourguide.modules.user.dto.GuideProfileUpdateRequest;
-import com.tourguide.modules.user.dto.GuideScenicConfigRequest;
+import com.tourguide.modules.user.dto.GuideScenicConfigResponse;
import com.tourguide.modules.user.dto.GuideUserCreateRequest;
import com.tourguide.modules.user.dto.GuideUserDetailResponse;
import com.tourguide.modules.user.dto.GuideUserDetailUpdateRequest;
@@ -21,6 +21,10 @@
import com.tourguide.modules.user.mapper.GuideScenicConfigMapper;
import com.tourguide.modules.user.mapper.GuideTeamMapper;
import com.tourguide.modules.user.mapper.GuideUserMapper;
+import com.tourguide.modules.operation.entity.OperationCity;
+import com.tourguide.modules.operation.entity.OperationScenicSpot;
+import com.tourguide.modules.operation.mapper.OperationCityMapper;
+import com.tourguide.modules.operation.mapper.OperationScenicSpotMapper;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -45,16 +49,22 @@
private final GuideTeamMapper teamMapper;
private final GuideScenicConfigMapper scenicConfigMapper;
private final GuideAutoDisableConfigMapper autoDisableConfigMapper;
+ private final OperationScenicSpotMapper scenicSpotMapper;
+ private final OperationCityMapper cityMapper;
private final PasswordEncoder passwordEncoder;
public GuideUserService(GuideUserMapper userMapper, GuideTeamMapper teamMapper,
GuideScenicConfigMapper scenicConfigMapper,
GuideAutoDisableConfigMapper autoDisableConfigMapper,
+ OperationScenicSpotMapper scenicSpotMapper,
+ OperationCityMapper cityMapper,
PasswordEncoder passwordEncoder) {
this.userMapper = userMapper;
this.teamMapper = teamMapper;
this.scenicConfigMapper = scenicConfigMapper;
this.autoDisableConfigMapper = autoDisableConfigMapper;
+ this.scenicSpotMapper = scenicSpotMapper;
+ this.cityMapper = cityMapper;
this.passwordEncoder = passwordEncoder;
}
@@ -68,7 +78,7 @@
public GuideUser findWorkbenchAccessibleById(Long id) {
GuideUser user = findById(id);
- if (user.getStatus() == null || user.getStatus() == STATUS_PENDING || user.getStatus() == STATUS_CANCELLED) {
+ if (user.getStatus() == null || user.getStatus() == STATUS_CANCELLED) {
throw new BusinessException(401, "导游用户不存在或已注销");
}
return user;
@@ -119,6 +129,40 @@
List<GuideScenicConfig> scenicConfigs = scenicConfigMapper.selectList(
new LambdaQueryWrapper<GuideScenicConfig>().eq(GuideScenicConfig::getGuideId, id).orderByAsc(GuideScenicConfig::getId));
return new GuideUserDetailResponse(user, team == null ? null : team.getTeamName(), scenicConfigs);
+ }
+
+ @Transactional
+ public List<GuideScenicConfigResponse> addScenicConfig(Long guideId, Long scenicSpotId) {
+ findById(guideId);
+ OperationScenicSpot scenicSpot = scenicSpotMapper.selectById(scenicSpotId);
+ if (scenicSpot == null || scenicSpot.getStatus() == null || scenicSpot.getStatus() != 1) {
+ throw new BusinessException(404, "景区不存在或未启用");
+ }
+ OperationCity city = scenicSpot.getCityId() == null ? null : cityMapper.selectById(scenicSpot.getCityId());
+ GuideScenicConfig config = new GuideScenicConfig();
+ config.setGuideId(guideId);
+ config.setScenicName(scenicSpot.getScenicName());
+ config.setCityName(city == null ? null : city.getCityName());
+ scenicConfigMapper.upsert(config);
+ return scenicConfigs(guideId);
+ }
+
+ @Transactional
+ public List<GuideScenicConfigResponse> deleteScenicConfig(Long guideId, Long configId) {
+ findById(guideId);
+ GuideScenicConfig config = scenicConfigMapper.selectById(configId);
+ if (config == null || !guideId.equals(config.getGuideId())) {
+ throw new BusinessException(404, "导游景区配置不存在");
+ }
+ scenicConfigMapper.deleteById(configId);
+ return scenicConfigs(guideId);
+ }
+
+ private List<GuideScenicConfigResponse> scenicConfigs(Long guideId) {
+ return scenicConfigMapper.selectList(new LambdaQueryWrapper<GuideScenicConfig>()
+ .eq(GuideScenicConfig::getGuideId, guideId)
+ .orderByAsc(GuideScenicConfig::getId))
+ .stream().map(GuideScenicConfigResponse::new).collect(Collectors.toList());
}
public GuideUser findById(Long id) {
@@ -212,6 +256,7 @@
user.setIdCardBackUrl(application.getIdCardBackUrl());
user.setGuideCertificateUrl(application.getCertificateUrl());
user.setQualificationCertificateUrl(application.getQualificationCertificateUrl());
+ user.setTeamId(application.getTeamId());
}
@Transactional
@@ -271,16 +316,6 @@
user.setWechatOpenId(request.getWechatOpenId());
userMapper.updateById(user);
- scenicConfigMapper.markDeletedByGuideId(id);
- if (request.getScenicConfigs() != null) {
- for (GuideScenicConfigRequest scenicRequest : request.getScenicConfigs()) {
- GuideScenicConfig config = new GuideScenicConfig();
- config.setGuideId(id);
- config.setScenicName(scenicRequest.getScenicName());
- config.setCityName(scenicRequest.getCityName());
- scenicConfigMapper.upsert(config);
- }
- }
return detail(id);
}
--
Gitblit v1.7.1