{
  "swagger": "2.0",
  "info": {
    "title": "评价服务",
    "version": "1.0.0"
  },
  "basePath": "/",
  "paths": {
    "/admin/review/list": {
      "get": {
        "tags": [
          "管理端-评价审核"
        ],
        "summary": "评价列表(支持好中差评/有图/有视频筛选)",
        "description": "分页查询全部评价（含待审核/已通过/已拒绝），支持按评价等级、是否有图/视频、目标类型筛选\n\n**关联字典**：\n- review_status：评价审核状态（列表筛选+显示）\n- rating_level：评价等级（列表筛选+显示）",
        "operationId": "listReviewsUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "hasImage",
            "in": "query",
            "description": "是否有图片: true/false",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "hasVideo",
            "in": "query",
            "description": "是否有视频: true/false",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "keyword",
            "in": "query",
            "description": "搜索关键词",
            "required": false,
            "type": "string",
            "x-example": "风景"
          },
          {
            "name": "maxRating",
            "in": "query",
            "description": "最高评分(整体满意度)",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 5
          },
          {
            "name": "minRating",
            "in": "query",
            "description": "最低评分(整体满意度)",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 3
          },
          {
            "name": "page",
            "in": "query",
            "description": "页码",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 1
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "每页条数",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 20
          },
          {
            "name": "productType",
            "in": "query",
            "description": "产品类型（字典 review_product_type）",
            "required": false,
            "type": "string",
            "x-example": "CORE"
          },
          {
            "name": "ratingLevel",
            "in": "query",
            "description": "评价等级: GOOD/MEDIUM/BAD",
            "required": false,
            "type": "string",
            "x-example": "GOOD"
          },
          {
            "name": "reviewType",
            "in": "query",
            "description": "评论类型（字典 review_type）",
            "required": false,
            "type": "string",
            "x-example": "PRODUCT"
          },
          {
            "name": "status",
            "in": "query",
            "description": "评价状态",
            "required": false,
            "type": "string",
            "x-example": "APPROVED"
          },
          {
            "name": "targetId",
            "in": "query",
            "description": "评价目标ID",
            "required": false,
            "type": "integer",
            "format": "int64",
            "x-example": 2001
          },
          {
            "name": "targetType",
            "in": "query",
            "description": "评价目标类型",
            "required": false,
            "type": "string",
            "x-example": "PRODUCT"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«分页结果«评价列表项(管理端)»»",
              "originalRef": "统一响应结果«分页结果«评价列表项(管理端)»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«分页结果«评价列表项(管理端)»»",
              "originalRef": "统一响应结果«分页结果«评价列表项(管理端)»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/review/{reviewId}": {
      "get": {
        "tags": [
          "管理端-评价审核"
        ],
        "summary": "评价详情",
        "description": "**关联字典**：\n- review_status：评价审核状态（显示）\n- rating_level：评价等级（显示）",
        "operationId": "getReviewDetailUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "reviewId",
            "in": "path",
            "description": "评价ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«评价详情»",
              "originalRef": "统一响应结果«评价详情»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«评价详情»",
              "originalRef": "统一响应结果«评价详情»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/review/{reviewId}/approve": {
      "post": {
        "tags": [
          "管理端-评价审核"
        ],
        "summary": "通过评价",
        "description": "审核通过评价，通过后评价在小程序端公开展示。状态流转：PENDING_REVIEW → APPROVED",
        "operationId": "approveUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "reviewId",
            "in": "path",
            "description": "评价ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/review/{reviewId}/override-approve": {
      "post": {
        "tags": [
          "管理端-评价审核"
        ],
        "summary": "覆盖通过(机器拒绝的)",
        "description": "对阿里云内容审核自动拒绝的评价进行人工覆盖通过。状态流转：AUTO_REJECTED → APPROVED",
        "operationId": "overrideApproveUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "reviewId",
            "in": "path",
            "description": "评价ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/review/{reviewId}/reject": {
      "post": {
        "tags": [
          "管理端-评价审核"
        ],
        "summary": "拒绝评价",
        "description": "审核拒绝评价，需填写拒绝原因。拒绝后评价不公开展示。状态流转：PENDING_REVIEW → REJECTED",
        "operationId": "rejectUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "拒绝请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/拒绝评价请求",
              "originalRef": "拒绝评价请求"
            }
          },
          {
            "name": "reviewId",
            "in": "path",
            "description": "评价ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/review/{reviewId}/reply": {
      "post": {
        "tags": [
          "管理端-评价审核"
        ],
        "summary": "回复评价(每条评价仅可回复一次)",
        "description": "管理员回复用户评价，回复内容在小程序端公开展示。每条评价仅允许回复一次，不可修改。\n\n**权限**：需管理员登录。",
        "operationId": "adminReplyUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "回复内容",
            "required": false,
            "schema": {
              "$ref": "#/definitions/管理员回复请求",
              "originalRef": "管理员回复请求"
            }
          },
          {
            "name": "reviewId",
            "in": "path",
            "description": "评价ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    }
  },
  "definitions": {
    "分页结果«评价列表项(管理端)»": {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "当前页码"
        },
        "pageSize": {
          "type": "integer",
          "format": "int32",
          "example": 20,
          "description": "每页条数"
        },
        "records": {
          "type": "array",
          "description": "数据列表",
          "items": {
            "$ref": "#/definitions/评价列表项(管理端)",
            "originalRef": "评价列表项(管理端)"
          }
        },
        "total": {
          "type": "integer",
          "format": "int32",
          "example": 100,
          "description": "总记录数"
        }
      },
      "title": "分页结果«评价列表项(管理端)»"
    },
    "拒绝评价请求": {
      "type": "object",
      "required": [
        "rejectReason"
      ],
      "properties": {
        "rejectReason": {
          "type": "string",
          "example": "评价内容包含不当言论",
          "description": "拒绝原因"
        }
      },
      "title": "拒绝评价请求"
    },
    "管理员回复请求": {
      "type": "object",
      "required": [
        "replyContent"
      ],
      "properties": {
        "replyContent": {
          "type": "string",
          "example": "感谢您的评价，期待下次为您服务！",
          "description": "回复内容"
        }
      },
      "title": "管理员回复请求"
    },
    "统一响应结果«Void»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«Void»"
    },
    "统一响应结果«分页结果«评价列表项(管理端)»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/分页结果«评价列表项(管理端)»",
          "originalRef": "分页结果«评价列表项(管理端)»"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«分页结果«评价列表项(管理端)»»"
    },
    "统一响应结果«评价详情»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/评价详情",
          "originalRef": "评价详情"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«评价详情»"
    },
    "评价列表项(管理端)": {
      "type": "object",
      "properties": {
        "auditedAt": {
          "type": "string",
          "format": "date-time",
          "description": "审核时间"
        },
        "auditorName": {
          "type": "string",
          "description": "审核人姓名"
        },
        "content": {
          "type": "string",
          "description": "评价内容"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "创建时间"
        },
        "hasReply": {
          "type": "boolean",
          "description": "是否已回复"
        },
        "imageCount": {
          "type": "integer",
          "format": "int32",
          "description": "图片数量"
        },
        "orderId": {
          "type": "string",
          "description": "订单ID"
        },
        "orderNo": {
          "type": "string",
          "description": "订单编号"
        },
        "productType": {
          "type": "string",
          "description": "产品类型"
        },
        "productTypeLabel": {
          "type": "string",
          "description": "产品类型标签"
        },
        "ratingAccommodation": {
          "type": "integer",
          "format": "int32",
          "description": "住宿安排评分(1-5)"
        },
        "ratingDining": {
          "type": "integer",
          "format": "int32",
          "description": "餐饮质量评分(1-5)"
        },
        "ratingDriver": {
          "type": "integer",
          "format": "int32",
          "description": "司机服务评分(1-5)"
        },
        "ratingItinerary": {
          "type": "integer",
          "format": "int32",
          "description": "行程安排评分(1-5)"
        },
        "ratingLevel": {
          "type": "string",
          "description": "评价等级: GOOD/MEDIUM/BAD"
        },
        "ratingLevelLabel": {
          "type": "string",
          "description": "评价等级标签"
        },
        "ratingOverall": {
          "type": "integer",
          "format": "int32",
          "description": "整体满意度评分(1-5)"
        },
        "rejectReason": {
          "type": "string",
          "description": "拒绝原因"
        },
        "reviewId": {
          "type": "string",
          "description": "评价ID"
        },
        "reviewType": {
          "type": "string",
          "description": "评论类型"
        },
        "reviewTypeLabel": {
          "type": "string",
          "description": "评论类型标签"
        },
        "status": {
          "type": "string",
          "description": "评价状态"
        },
        "statusLabel": {
          "type": "string",
          "description": "评价状态标签"
        },
        "targetId": {
          "type": "string",
          "description": "评价目标ID"
        },
        "targetName": {
          "type": "string",
          "description": "评价目标名称"
        },
        "targetType": {
          "type": "string",
          "description": "评价目标类型"
        },
        "targetTypeLabel": {
          "type": "string",
          "description": "评价目标类型标签"
        },
        "userAvatar": {
          "type": "string",
          "description": "用户头像"
        },
        "userNickname": {
          "type": "string",
          "description": "用户昵称"
        },
        "videoCount": {
          "type": "integer",
          "format": "int32",
          "description": "视频数量"
        }
      },
      "title": "评价列表项(管理端)"
    },
    "评价图片信息": {
      "type": "object",
      "properties": {
        "fileId": {
          "type": "string",
          "description": "文件ID"
        },
        "imageId": {
          "type": "string",
          "description": "图片ID"
        },
        "imageUrl": {
          "type": "string",
          "description": "图片URL"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "description": "排序序号"
        }
      },
      "title": "评价图片信息"
    },
    "评价视频信息": {
      "type": "object",
      "properties": {
        "coverUrl": {
          "type": "string",
          "description": "视频封面URL"
        },
        "duration": {
          "type": "integer",
          "format": "int32",
          "description": "视频时长(秒)"
        },
        "fileId": {
          "type": "string",
          "description": "文件ID"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "description": "排序序号"
        },
        "videoId": {
          "type": "string",
          "description": "视频ID"
        },
        "videoUrl": {
          "type": "string",
          "description": "视频URL"
        }
      },
      "title": "评价视频信息"
    },
    "评价详情": {
      "type": "object",
      "properties": {
        "adminReply": {
          "type": "string",
          "description": "管理员回复内容"
        },
        "adminReplyAt": {
          "type": "string",
          "format": "date-time",
          "description": "回复时间"
        },
        "adminReplyName": {
          "type": "string",
          "description": "回复管理员姓名"
        },
        "auditedAt": {
          "type": "string",
          "format": "date-time",
          "description": "审核时间"
        },
        "auditorAdminId": {
          "type": "string",
          "description": "审核人ID"
        },
        "auditorName": {
          "type": "string",
          "description": "审核人姓名"
        },
        "content": {
          "type": "string",
          "description": "评价内容"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "创建时间"
        },
        "departureDate": {
          "type": "string",
          "format": "date",
          "description": "出发日期(冗余自订单)"
        },
        "hasImage": {
          "type": "boolean",
          "description": "是否有图片"
        },
        "hasVideo": {
          "type": "boolean",
          "description": "是否有视频"
        },
        "imageCount": {
          "type": "integer",
          "format": "int32",
          "description": "图片数量"
        },
        "images": {
          "type": "array",
          "description": "评价图片列表",
          "items": {
            "$ref": "#/definitions/评价图片信息",
            "originalRef": "评价图片信息"
          }
        },
        "machineResult": {
          "type": "string",
          "description": "机审结果"
        },
        "orderId": {
          "type": "string",
          "description": "订单ID"
        },
        "orderNo": {
          "type": "string",
          "description": "订单编号"
        },
        "productType": {
          "type": "string",
          "description": "产品类型"
        },
        "productTypeLabel": {
          "type": "string",
          "description": "产品类型标签"
        },
        "ratingAccommodation": {
          "type": "integer",
          "format": "int32",
          "description": "住宿安排评分(1-5)"
        },
        "ratingDining": {
          "type": "integer",
          "format": "int32",
          "description": "餐饮质量评分(1-5)"
        },
        "ratingDriver": {
          "type": "integer",
          "format": "int32",
          "description": "司机服务评分(1-5)"
        },
        "ratingItinerary": {
          "type": "integer",
          "format": "int32",
          "description": "行程安排评分(1-5)"
        },
        "ratingLevel": {
          "type": "string",
          "description": "评价等级: GOOD/MEDIUM/BAD"
        },
        "ratingLevelLabel": {
          "type": "string",
          "description": "评价等级标签: 好评/中评/差评"
        },
        "ratingOverall": {
          "type": "integer",
          "format": "int32",
          "description": "整体满意度评分(1-5)"
        },
        "rejectReason": {
          "type": "string",
          "description": "拒绝原因"
        },
        "reviewId": {
          "type": "string",
          "description": "评价ID"
        },
        "reviewType": {
          "type": "string",
          "description": "评论类型"
        },
        "reviewTypeLabel": {
          "type": "string",
          "description": "评论类型标签"
        },
        "status": {
          "type": "string",
          "description": "评价状态"
        },
        "statusLabel": {
          "type": "string",
          "description": "评价状态标签"
        },
        "targetId": {
          "type": "string",
          "description": "评价目标ID"
        },
        "targetName": {
          "type": "string",
          "description": "评价目标名称"
        },
        "targetType": {
          "type": "string",
          "description": "评价目标类型"
        },
        "targetTypeLabel": {
          "type": "string",
          "description": "评价目标类型标签"
        },
        "userAvatar": {
          "type": "string",
          "description": "用户头像"
        },
        "userId": {
          "type": "string",
          "description": "用户ID"
        },
        "userNickname": {
          "type": "string",
          "description": "用户昵称"
        },
        "videoCount": {
          "type": "integer",
          "format": "int32",
          "description": "视频数量"
        },
        "videos": {
          "type": "array",
          "description": "评价视频列表",
          "items": {
            "$ref": "#/definitions/评价视频信息",
            "originalRef": "评价视频信息"
          }
        }
      },
      "title": "评价详情"
    }
  }
}