liujie
2026-07-30 280ef5100bece9b40ac51736aef037704a52a4ca
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
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) 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, 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();
    }
}