package com.tourguide.api.admin;
|
|
import com.tourguide.common.api.ApiResponse;
|
import com.tourguide.common.api.PageResponse;
|
import com.tourguide.modules.operation.dto.CityCreateRequest;
|
import com.tourguide.modules.operation.dto.CityResponse;
|
import com.tourguide.modules.operation.dto.CityStatusRequest;
|
import com.tourguide.modules.operation.service.OperationCityService;
|
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.web.bind.annotation.*;
|
import javax.validation.Valid;
|
import java.time.LocalDate;
|
|
/**
|
* 管理后台运营城市管理接口。
|
* 维护平台已开通城市,并通过状态控制城市是否可继续用于景区及前台业务配置。
|
*/
|
@RestController
|
@RequestMapping("/api/admin/operation-cities")
|
public class AdminOperationCityController {
|
private final OperationCityService cityService;
|
|
public AdminOperationCityController(OperationCityService cityService) {
|
this.cityService = cityService;
|
}
|
|
/**
|
* 分页查询运营城市,支持按城市名称、状态和创建日期筛选。
|
*
|
* @param page 页码,从 1 开始
|
* @param size 每页记录数
|
* @param keyword 城市名称关键字
|
* @param status 启用或禁用状态
|
* @param startDate 创建日期起始值,包含当天
|
* @param endDate 创建日期结束值,包含当天
|
* @return 运营城市分页结果
|
*/
|
@GetMapping
|
public ApiResponse<PageResponse<CityResponse>> page(@RequestParam(defaultValue = "1") long page,
|
@RequestParam(defaultValue = "10") long size,
|
@RequestParam(required = false) String keyword,
|
@RequestParam(required = false) Integer status,
|
@RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startDate,
|
@RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate) {
|
return ApiResponse.success(cityService.page(page, size, keyword, status, startDate, endDate));
|
}
|
|
/**
|
* 新增运营城市,城市名称唯一性由业务层校验。
|
*
|
* @param request 城市名称创建参数
|
* @return 新建后的城市信息
|
*/
|
@PostMapping
|
public ApiResponse<CityResponse> create(@Valid @RequestBody CityCreateRequest request) {
|
return ApiResponse.success(cityService.create(request.getCityName()));
|
}
|
|
/**
|
* 启用或禁用指定运营城市。
|
*
|
* @param id 城市主键
|
* @param request 目标状态,1 为启用、0 为禁用
|
* @return 无业务数据的成功响应
|
*/
|
@PutMapping("/{id}/status")
|
public ApiResponse<Void> updateStatus(@PathVariable Long id, @Valid @RequestBody CityStatusRequest request) {
|
cityService.updateStatus(id, request.getStatus());
|
return ApiResponse.success();
|
}
|
}
|