Files
FrameTour-BE/src/main/java/com/ycwl/basic/puzzle/controller/PuzzleTemplateController.java
Jerry Yan 42e806df76 feat(puzzle): 添加批量替换模板元素功能
- 在 PuzzleTemplateController 中新增 replaceElements 接口
- 在 PuzzleElementMapper 中新增 getByTemplateIdAndKey 查询方法
- 在 PuzzleTemplateServiceImpl 中实现 replaceElements 业务逻辑
- 在 IPuzzleTemplateService 接口中定义 replaceElements 方法
- 在 PuzzleElementMapper.xml 中添加对应 SQL 查询语句
2025-11-18 12:47:24 +08:00

163 lines
5.9 KiB
Java

package com.ycwl.basic.puzzle.controller;
import com.ycwl.basic.integration.common.response.PageResponse;
import com.ycwl.basic.puzzle.dto.ElementCreateRequest;
import com.ycwl.basic.puzzle.dto.PuzzleElementDTO;
import com.ycwl.basic.puzzle.dto.PuzzleTemplateDTO;
import com.ycwl.basic.puzzle.dto.TemplateCreateRequest;
import com.ycwl.basic.puzzle.service.IPuzzleTemplateService;
import com.ycwl.basic.utils.ApiResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 拼图模板管理Controller(管理后台)
*
* @author Claude
* @since 2025-01-17
*/
@Slf4j
@RestController
@RequestMapping("/api/puzzle/admin")
@RequiredArgsConstructor
public class PuzzleTemplateController {
private final IPuzzleTemplateService templateService;
/**
* 创建模板
*/
@PostMapping("/templates")
public ApiResponse<Long> createTemplate(@RequestBody TemplateCreateRequest request) {
log.info("创建模板请求: code={}, name={}", request.getCode(), request.getName());
Long templateId = templateService.createTemplate(request);
return ApiResponse.success(templateId);
}
/**
* 更新模板
*/
@PutMapping("/templates/{id}")
public ApiResponse<Void> updateTemplate(@PathVariable Long id,
@RequestBody TemplateCreateRequest request) {
log.info("更新模板请求: id={}", id);
templateService.updateTemplate(id, request);
return ApiResponse.success(null);
}
/**
* 删除模板
*/
@DeleteMapping("/templates/{id}")
public ApiResponse<Void> deleteTemplate(@PathVariable Long id) {
log.info("删除模板请求: id={}", id);
templateService.deleteTemplate(id);
return ApiResponse.success(null);
}
/**
* 获取模板详情
*/
@GetMapping("/templates/{id}")
public ApiResponse<PuzzleTemplateDTO> getTemplateDetail(@PathVariable Long id) {
log.debug("获取模板详情: id={}", id);
PuzzleTemplateDTO template = templateService.getTemplateDetail(id);
return ApiResponse.success(template);
}
/**
* 获取模板列表
*/
@GetMapping("/templates")
public ApiResponse<List<PuzzleTemplateDTO>> listTemplates(
@RequestParam(required = false) Long scenicId,
@RequestParam(required = false) String category,
@RequestParam(required = false) Integer status) {
log.debug("查询模板列表: scenicId={}, category={}, status={}", scenicId, category, status);
List<PuzzleTemplateDTO> templates = templateService.listTemplates(scenicId, category, status);
return ApiResponse.success(templates);
}
/**
* 分页获取模板列表
*/
@GetMapping("/templates/page")
public ApiResponse<PageResponse<PuzzleTemplateDTO>> pageTemplates(
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer pageSize,
@RequestParam(required = false) Long scenicId,
@RequestParam(required = false) String category,
@RequestParam(required = false) Integer status) {
log.debug("分页查询模板列表: page={}, pageSize={}, scenicId={}, category={}, status={}",
page, pageSize, scenicId, category, status);
PageResponse<PuzzleTemplateDTO> templates = templateService.pageTemplates(page, pageSize, scenicId, category, status);
return ApiResponse.success(templates);
}
/**
* 为模板添加单个元素
*/
@PostMapping("/elements")
public ApiResponse<Long> addElement(@RequestBody ElementCreateRequest request) {
log.info("添加元素请求: templateId={}, elementKey={}", request.getTemplateId(), request.getElementKey());
Long elementId = templateService.addElement(request);
return ApiResponse.success(elementId);
}
/**
* 为模板批量添加元素
*/
@PostMapping("/templates/{templateId}/elements")
public ApiResponse<Void> batchAddElements(@PathVariable Long templateId,
@RequestBody List<ElementCreateRequest> elements) {
log.info("批量添加元素请求: templateId={}, count={}", templateId, elements.size());
templateService.batchAddElements(templateId, elements);
return ApiResponse.success(null);
}
/**
* 批量替换模板元素(删除旧元素,添加新元素)
*/
@PutMapping("/templates/{templateId}/elements")
public ApiResponse<Void> replaceElements(@PathVariable Long templateId,
@RequestBody List<ElementCreateRequest> elements) {
log.info("批量替换元素请求: templateId={}, count={}", templateId, elements.size());
templateService.replaceElements(templateId, elements);
return ApiResponse.success(null);
}
/**
* 更新元素
*/
@PutMapping("/elements/{id}")
public ApiResponse<Void> updateElement(@PathVariable Long id,
@RequestBody ElementCreateRequest request) {
log.info("更新元素请求: id={}", id);
templateService.updateElement(id, request);
return ApiResponse.success(null);
}
/**
* 删除元素
*/
@DeleteMapping("/elements/{id}")
public ApiResponse<Void> deleteElement(@PathVariable Long id) {
log.info("删除元素请求: id={}", id);
templateService.deleteElement(id);
return ApiResponse.success(null);
}
/**
* 获取元素详情
*/
@GetMapping("/elements/{id}")
public ApiResponse<PuzzleElementDTO> getElementDetail(@PathVariable Long id) {
log.debug("获取元素详情: id={}", id);
PuzzleElementDTO element = templateService.getElementDetail(id);
return ApiResponse.success(element);
}
}