package com.tourguide.api.admin;
|
|
import com.tourguide.common.api.ApiResponse;
|
import com.tourguide.common.api.PageResponse;
|
import com.tourguide.modules.review.dto.OrderReviewResponse;
|
import com.tourguide.modules.review.service.OrderReviewService;
|
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.web.bind.annotation.*;
|
import java.time.LocalDate;
|
import java.util.List;
|
|
/**
|
* 管理后台订单评价管理接口。
|
* 提供评价分页检索、景区筛选项查询和评价逻辑删除能力。
|
*/
|
@RestController
|
@RequestMapping("/api/admin/reviews")
|
public class AdminOrderReviewController {
|
private final OrderReviewService reviewService;
|
public AdminOrderReviewController(OrderReviewService reviewService) { this.reviewService = reviewService; }
|
|
/**
|
* 分页查询订单评价,支持按订单或用户关键字、状态、评分、景区和评价日期筛选。
|
*
|
* @param page 页码,从 1 开始
|
* @param size 每页记录数
|
* @param keyword 评价编号、订单号、游客或导游信息关键字
|
* @param status 评价显示状态
|
* @param score 评价分数
|
* @param scenicName 景区名称
|
* @param startDate 评价日期起始值,包含当天
|
* @param endDate 评价日期结束值,包含当天
|
* @return 订单评价分页结果
|
*/
|
@GetMapping
|
public ApiResponse<PageResponse<OrderReviewResponse>> page(@RequestParam(defaultValue = "1") long page,
|
@RequestParam(defaultValue = "10") long size,
|
@RequestParam(required = false) String keyword,
|
@RequestParam(required = false) Long visitorId,
|
@RequestParam(required = false) Integer status,
|
@RequestParam(required = false) Integer score,
|
@RequestParam(required = false) String scenicName,
|
@RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startDate,
|
@RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate) {
|
return ApiResponse.success(reviewService.page(page, size, keyword, visitorId, status, score, scenicName, startDate, endDate));
|
}
|
|
/**
|
* 查询已有评价中可用于筛选的景区名称列表。
|
*
|
* @return 去重后的景区名称列表
|
*/
|
@GetMapping("/scenic-options")
|
public ApiResponse<List<String>> scenicOptions() { return ApiResponse.success(reviewService.scenicOptions()); }
|
|
/**
|
* 逻辑删除指定评价,并重新计算关联导游的平均评分。
|
*
|
* @param id 评价主键
|
* @return 无业务数据的成功响应
|
*/
|
@DeleteMapping("/{id}")
|
public ApiResponse<Void> delete(@PathVariable Long id) {
|
reviewService.delete(id);
|
return ApiResponse.success();
|
}
|
}
|