package com.aijiuyi.admin.controller; import com.aijiuyi.admin.common.annotation.Log; import com.aijiuyi.admin.common.entity.Result; import com.aijiuyi.admin.common.enums.OperationType; import com.aijiuyi.admin.controller.dto.AcupointQueryDTO; import com.aijiuyi.admin.controller.dto.YReferenceOptionDTO; import com.aijiuyi.admin.entity.Acupoint; import com.aijiuyi.admin.service.AcupointService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; /** * 穴位管理 Controller * 提供穴位的增删改查、批量删除和批量导入接口 */ @RestController @RequestMapping("/acupoint") public class AcupointController { @Autowired private AcupointService acupointService; /** * 获取所有启用穴位列表(用于选择框) * * @return 穴位列表(id + name) */ @GetMapping("/list") @Log(value = "获取穴位选项列表", module = "穴位管理", operationType = OperationType.QUERY) public Result> list() { List list = acupointService.list( new LambdaQueryWrapper() .eq(Acupoint::getStatus, 1) .select(Acupoint::getId, Acupoint::getName) .orderByAsc(Acupoint::getId) ); return Result.success(list); } /** * 获取Y轴医学定位术语选项(用于新增/编辑穴位时选择) * * @return Y轴定位术语选项 */ @GetMapping("/y-reference-options") @Log(value = "获取穴位Y轴定位术语", module = "穴位管理", operationType = OperationType.QUERY) public Result> yReferenceOptions() { return Result.success(acupointService.listYReferenceOptions()); } /** * 分页查询穴位列表 * * @param queryDTO 查询条件 * @return 分页结果 */ @GetMapping("/page") @Log(value = "查询穴位列表", module = "穴位管理", operationType = OperationType.QUERY) public Result> page(AcupointQueryDTO queryDTO) { return Result.success(acupointService.pageList(queryDTO)); } /** * 导出全部穴位(返回当前筛选条件下的全量数据供前端 Excel 导出使用) * * @param queryDTO 查询条件(不含分页参数) * @return 穴位列表 */ @GetMapping("/export") @Log(value = "导出穴位列表", module = "穴位管理", operationType = OperationType.OTHER) public Result> export(AcupointQueryDTO queryDTO) { return Result.success(acupointService.listAll(queryDTO)); } /** * 查询穴位详情 * * @param id 穴位ID * @return 穴位详情 */ @GetMapping("/{id}") @Log(value = "查询穴位详情", module = "穴位管理", operationType = OperationType.QUERY) public Result getById(@PathVariable Long id) { return Result.success(acupointService.getById(id)); } /** * 新增穴位 * * @param acupoint 穴位信息 * @return 操作结果 */ @PostMapping @Log(value = "新增穴位", module = "穴位管理", operationType = OperationType.INSERT) public Result add(@RequestBody Acupoint acupoint) { acupointService.addAcupoint(acupoint); return Result.success(); } /** * 修改穴位信息 * * @param acupoint 穴位信息 * @return 操作结果 */ @PutMapping @Log(value = "修改穴位信息", module = "穴位管理", operationType = OperationType.UPDATE) public Result update(@RequestBody Acupoint acupoint) { acupointService.updateAcupoint(acupoint); return Result.success(); } /** * 删除穴位(逻辑删除) * * @param id 穴位ID * @return 操作结果 */ @DeleteMapping("/{id}") @Log(value = "删除穴位", module = "穴位管理", operationType = OperationType.DELETE) public Result delete(@PathVariable Long id) { acupointService.deleteAcupoint(id); return Result.success(); } /** * 批量删除穴位(逻辑删除,需二次确认) * * @param ids 穴位ID列表 * @return 操作结果 */ @DeleteMapping("/batch") @Log(value = "批量删除穴位", module = "穴位管理", operationType = OperationType.DELETE) public Result batchDelete(@RequestBody List ids) { acupointService.batchDeleteAcupoint(ids); return Result.success(); } /** * 批量导入穴位 * * @param list 穴位信息列表 * @return 操作结果 */ @PostMapping("/import") @Log(value = "批量导入穴位", module = "穴位管理", operationType = OperationType.INSERT) public Result batchImport(@RequestBody List list) { acupointService.batchImport(list); return Result.success(); } }