package com.example.catchTheLetters.controller; import com.example.catchTheLetters.entity.Level; import com.example.catchTheLetters.entity.Page; import com.example.catchTheLetters.entity.ScoreInfoPage; import com.example.catchTheLetters.model.vo.RankVo; import com.example.catchTheLetters.entity.ScoreInfo; import com.example.catchTheLetters.service.LevelService; import com.example.catchTheLetters.service.VersionService; import com.example.catchTheLetters.utils.R; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import java.util.List; /** * 关卡控制器 * * @author spyn */ @RestController @Slf4j @Api(tags = "关卡API") @RequestMapping("/level") public class LevelController { @Resource private LevelService levelService; @Resource private VersionService versionService; @ApiOperation(value = "关卡列表(只返回ID、排序、名称和类型)") @GetMapping("/list") public R> list() { return levelService.list(); } @ApiOperation(value = "关卡详情") @GetMapping("/detail") @ApiParam(name = "id", value = "关卡ID") public R detail(String id) { return levelService.levelDetail(id); } @ApiOperation(value = "关卡创建(web前端管理员提交)") @PostMapping("/create") public R create(@RequestBody Level level) { var res = levelService.levelCreate(level); // 如果创建成功,将当前UNIX时间戳作为版本号 if (res) { versionService.setVersion("level", System.currentTimeMillis()); return R.ok(); } return R.fail(); } @ApiOperation(value = "关卡修改(web前端管理员提交)") @PostMapping("/update") public R update(@RequestBody Level level) { var res = levelService.update(level); // 如果修改成功,将当前UNIX时间戳作为版本号 if (res) { versionService.setVersion("level", System.currentTimeMillis()); return R.ok(); } return R.fail(); } @ApiOperation(value = "关卡删除(web前端管理员提交)") @PostMapping("/delete") public R delete(String id) { var res = levelService.delete(id); // 如果删除成功,将当前UNIX时间戳作为版本号 if (res) { versionService.setVersion("level", System.currentTimeMillis()); return R.ok(); } return R.fail(); } @ApiOperation(value = "获取某个关卡排行榜数据") @GetMapping("/rank") @ApiParam(name = "id", value = "关卡ID") public R rank(String id, @RequestHeader(value = "token", required = false)String token) { return R.ok(levelService.getRankInfo(id, token)); } @ApiOperation(value = "关卡结算(游戏结束时提交,一定要鉴别token)") @PostMapping("/settle") public R settle(@RequestBody ScoreInfo scoreInfo, @RequestHeader("token")String token) { return levelService.settle(scoreInfo, token); } @ApiOperation(value = "获取表版本号(用于本地数据库和服务器数据库同步)") @GetMapping("/version") public R version() { return R.ok(versionService.getVersion("level")); } @ApiOperation(value = "分页获取某个排行榜排名") @GetMapping("/rank-page") public R getScores(@RequestBody Page page) { return R.ok(levelService.getScoreInfo( page.getLevelId(),page.getPage(), page.getSize())); } }