liujie
2026-07-29 c560a88ab429cd164d8eb6fcec42a273b898e230
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package com.tourguide.api.admin;
 
import com.tourguide.common.api.ApiResponse;
import com.tourguide.common.api.PageResponse;
import com.tourguide.modules.user.dto.GuideApplicationResponse;
import com.tourguide.modules.user.dto.GuideAuditRequest;
import com.tourguide.modules.user.service.GuideApplicationService;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.time.LocalDate;
 
/**
 * 管理后台导游入驻申请查询与审核接口。
 * 审核操作会记录审核人和审核意见,并由业务层控制申请状态流转及通过后的账号处理。
 */
@RestController
@RequestMapping("/api/admin/guide-applications")
public class AdminGuideApplicationController {
    private final GuideApplicationService applicationService;
 
    public AdminGuideApplicationController(GuideApplicationService applicationService) {
        this.applicationService = applicationService;
    }
 
    /**
     * 分页查询导游入驻申请,支持按申请信息、审核状态和提交日期筛选。
     *
     * @param page 页码,从 1 开始
     * @param size 每页记录数
     * @param keyword 申请编号、真实姓名或手机号关键字
     * @param auditStatus 审核状态
     * @param startDate 申请日期起始值,包含当天
     * @param endDate 申请日期结束值,包含当天
     * @return 导游入驻申请分页结果
     */
    @GetMapping
    public ApiResponse<PageResponse<GuideApplicationResponse>> page(@RequestParam(defaultValue = "1") long page,
                                                                    @RequestParam(defaultValue = "10") long size,
                                                                    @RequestParam(required = false) String keyword,
                                                                    @RequestParam(required = false) Integer auditStatus,
                                                                    @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startDate,
                                                                    @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate) {
        return ApiResponse.success(applicationService.page(page, size, keyword, auditStatus, startDate, endDate));
    }
 
    /**
     * 查询指定导游入驻申请的身份资料和审核信息。
     *
     * @param id 导游申请主键
     * @return 导游申请详情
     */
    @GetMapping("/{id}")
    public ApiResponse<GuideApplicationResponse> detail(@PathVariable Long id) {
        return ApiResponse.success(applicationService.detail(id));
    }
 
    /**
     * 审核指定导游入驻申请,并记录当前后台操作人。
     * 审核状态、驳回原因和重复审核限制由业务层统一校验。
     *
     * @param id 导游申请主键
     * @param request 审核状态和审核意见
     * @param authentication 当前后台登录认证信息
     * @return 审核后的导游申请详情
     */
    @PutMapping("/{id}/audit")
    public ApiResponse<GuideApplicationResponse> audit(@PathVariable Long id,
                                                       @Valid @RequestBody GuideAuditRequest request,
                                                       Authentication authentication) {
        return ApiResponse.success(applicationService.audit(
                id, request.getAuditStatus(), request.getAuditRemark(), authentication.getName()));
    }
}