package com.tourguide.api.admin;
|
|
import com.tourguide.common.api.ApiResponse;
|
import com.tourguide.common.api.PageResponse;
|
import com.tourguide.modules.user.dto.MiniUserDetailResponse;
|
import com.tourguide.modules.user.dto.MiniUserResponse;
|
import com.tourguide.modules.user.dto.UserStatusRequest;
|
import com.tourguide.modules.user.service.MiniUserService;
|
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.web.bind.annotation.*;
|
import javax.validation.Valid;
|
import java.time.LocalDate;
|
|
/**
|
* 管理后台游客账号管理接口。
|
* 仅管理 mini_user 表中的小程序游客资料和账号状态,不与后台或导游账号混用。
|
*/
|
@RestController
|
@RequestMapping("/api/admin/mini-users")
|
public class AdminMiniUserController {
|
private final MiniUserService userService;
|
public AdminMiniUserController(MiniUserService userService) { this.userService = userService; }
|
|
/**
|
* 分页查询小程序游客,支持按用户信息、状态和注册日期筛选。
|
*
|
* @param page 页码,从 1 开始
|
* @param size 每页记录数
|
* @param keyword 游客昵称、手机号等关键字
|
* @param status 账号启用状态
|
* @param startDate 注册日期起始值,包含当天
|
* @param endDate 注册日期结束值,包含当天
|
* @return 游客账号分页结果
|
*/
|
@GetMapping
|
public ApiResponse<PageResponse<MiniUserResponse>> 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(userService.page(page, size, keyword, status, startDate, endDate));
|
}
|
|
/**
|
* 查询指定游客的账号资料及关联业务统计信息。
|
*
|
* @param id 游客账号主键
|
* @return 游客完整详情
|
*/
|
@GetMapping("/{id}")
|
public ApiResponse<MiniUserDetailResponse> detail(@PathVariable Long id) {
|
return ApiResponse.success(userService.detail(id));
|
}
|
|
/**
|
* 启用或禁用指定游客账号,禁用后游客无法继续访问小程序受保护接口。
|
*
|
* @param id 游客账号主键
|
* @param request 目标状态,1 为启用、0 为禁用
|
* @return 无业务数据的成功响应
|
*/
|
@PutMapping("/{id}/status")
|
public ApiResponse<Void> updateStatus(@PathVariable Long id, @Valid @RequestBody UserStatusRequest request) {
|
userService.updateStatus(id, request.getStatus());
|
return ApiResponse.success();
|
}
|
}
|