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()));
|
}
|
}
|