liujie
2026-09-14 15defa991fcd30b9fa60bab17d2230b5929bf2a2
backend/src/main/java/com/tourguide/modules/user/service/GuideApplicationService.java
@@ -7,7 +7,11 @@
import com.tourguide.common.exception.BusinessException;
import com.tourguide.modules.user.dto.GuideApplicationResponse;
import com.tourguide.modules.user.entity.GuideApplication;
import com.tourguide.modules.user.entity.GuideTeam;
import com.tourguide.modules.user.mapper.GuideApplicationMapper;
import com.tourguide.modules.user.mapper.GuideTeamMapper;
import com.tourguide.modules.system.service.GuideNotificationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
@@ -22,11 +26,27 @@
    private static final int APPROVED = 1;
    private static final int REJECTED = 2;
    private final GuideApplicationMapper applicationMapper;
    private final GuideTeamMapper teamMapper;
    private final GuideUserService guideUserService;
    private final GuideNotificationService notificationService;
    private final GuideAuditSmsService auditSmsService;
    public GuideApplicationService(GuideApplicationMapper applicationMapper, GuideUserService guideUserService) {
    public GuideApplicationService(GuideApplicationMapper applicationMapper, GuideUserService guideUserService,
                                   GuideNotificationService notificationService,
                                   GuideAuditSmsService auditSmsService) {
        this(applicationMapper, null, guideUserService, notificationService, auditSmsService);
    }
    @Autowired
    public GuideApplicationService(GuideApplicationMapper applicationMapper, GuideTeamMapper teamMapper,
                                   GuideUserService guideUserService,
                                   GuideNotificationService notificationService,
                                   GuideAuditSmsService auditSmsService) {
        this.applicationMapper = applicationMapper;
        this.teamMapper = teamMapper;
        this.guideUserService = guideUserService;
        this.notificationService = notificationService;
        this.auditSmsService = auditSmsService;
    }
    public PageResponse<GuideApplicationResponse> page(long page, long size, String keyword, Integer auditStatus,
@@ -51,7 +71,9 @@
    public GuideApplicationResponse detail(Long id) {
        GuideApplication application = applicationMapper.selectById(id);
        if (application == null) { throw new BusinessException(404, "导游申请不存在"); }
        return GuideApplicationResponse.from(application);
        GuideTeam team = application.getTeamId() == null || teamMapper == null
                ? null : teamMapper.selectById(application.getTeamId());
        return GuideApplicationResponse.from(application, team == null ? null : team.getTeamName());
    }
    @Transactional
@@ -64,9 +86,7 @@
        if (application.getAuditStatus() == null || application.getAuditStatus() != PENDING) {
            throw new BusinessException(409, "该申请已审核,请勿重复操作");
        }
        if (auditStatus == APPROVED) {
            guideUserService.createFromApprovedApplication(application);
        }
        if (auditStatus == APPROVED) guideUserService.createFromApprovedApplication(application);
        LambdaUpdateWrapper<GuideApplication> update = new LambdaUpdateWrapper<GuideApplication>()
                .eq(GuideApplication::getId, id)
                .eq(GuideApplication::getAuditStatus, PENDING)
@@ -77,6 +97,9 @@
        if (applicationMapper.update(null, update) != 1) {
            throw new BusinessException(409, "该申请已被其他管理员处理");
        }
        com.tourguide.modules.user.entity.GuideUser guide = guideUserService.findByPhone(application.getMobile());
        if (guide != null) notificationService.notifyAuditResult(guide.getId(), auditStatus == APPROVED);
        auditSmsService.send(application.getMobile(), application.getRealName(), auditStatus == APPROVED);
        return detail(id);
    }