2024-04-09 17:06:54 +00:00
|
|
|
|
package com.example.catchTheLetters.controller;
|
|
|
|
|
|
2024-06-09 06:17:54 +00:00
|
|
|
|
import com.example.catchTheLetters.entity.*;
|
2024-04-10 07:03:57 +00:00
|
|
|
|
import com.example.catchTheLetters.model.vo.RankVo;
|
2024-04-10 16:05:24 +00:00
|
|
|
|
import com.example.catchTheLetters.service.LevelService;
|
2024-04-13 08:00:31 +00:00
|
|
|
|
import com.example.catchTheLetters.service.VersionService;
|
2024-04-09 17:06:54 +00:00
|
|
|
|
import com.example.catchTheLetters.utils.R;
|
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
|
|
import io.swagger.annotations.ApiParam;
|
2024-04-10 16:05:24 +00:00
|
|
|
|
import jakarta.annotation.Resource;
|
2024-04-09 17:06:54 +00:00
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
2024-06-11 04:02:12 +00:00
|
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
2024-04-09 17:06:54 +00:00
|
|
|
|
|
2024-06-11 04:02:12 +00:00
|
|
|
|
import java.io.IOException;
|
2024-04-10 16:05:24 +00:00
|
|
|
|
import java.util.List;
|
|
|
|
|
|
2024-04-09 17:06:54 +00:00
|
|
|
|
/**
|
|
|
|
|
* 关卡控制器
|
2024-04-10 07:15:36 +00:00
|
|
|
|
*
|
2024-04-09 17:06:54 +00:00
|
|
|
|
* @author spyn
|
|
|
|
|
*/
|
|
|
|
|
@RestController
|
|
|
|
|
@Slf4j
|
|
|
|
|
@Api(tags = "关卡API")
|
|
|
|
|
@RequestMapping("/level")
|
|
|
|
|
public class LevelController {
|
2024-04-10 16:05:24 +00:00
|
|
|
|
@Resource
|
|
|
|
|
private LevelService levelService;
|
|
|
|
|
|
2024-04-13 08:00:31 +00:00
|
|
|
|
@Resource
|
|
|
|
|
private VersionService versionService;
|
|
|
|
|
|
2024-04-12 03:17:42 +00:00
|
|
|
|
@ApiOperation(value = "关卡列表(只返回ID、排序、名称和类型)")
|
2024-04-09 17:06:54 +00:00
|
|
|
|
@GetMapping("/list")
|
2024-04-10 16:05:24 +00:00
|
|
|
|
public R<List<Level>> list() {
|
|
|
|
|
return levelService.list();
|
2024-04-09 17:06:54 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ApiOperation(value = "关卡详情")
|
|
|
|
|
@GetMapping("/detail")
|
|
|
|
|
@ApiParam(name = "id", value = "关卡ID")
|
2024-04-12 01:51:21 +00:00
|
|
|
|
public R<Level> detail(String id) {
|
2024-04-10 16:05:24 +00:00
|
|
|
|
return levelService.levelDetail(id);
|
2024-04-09 17:06:54 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ApiOperation(value = "关卡创建(web前端管理员提交)")
|
|
|
|
|
@PostMapping("/create")
|
|
|
|
|
public R create(@RequestBody Level level) {
|
2024-04-13 08:00:31 +00:00
|
|
|
|
var res = levelService.levelCreate(level);
|
|
|
|
|
// 如果创建成功,将当前UNIX时间戳作为版本号
|
|
|
|
|
if (res) {
|
|
|
|
|
versionService.setVersion("level", System.currentTimeMillis());
|
|
|
|
|
return R.ok();
|
|
|
|
|
}
|
|
|
|
|
return R.fail();
|
2024-04-09 17:06:54 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ApiOperation(value = "关卡修改(web前端管理员提交)")
|
|
|
|
|
@PostMapping("/update")
|
2024-04-12 03:05:15 +00:00
|
|
|
|
public R update(@RequestBody Level level)
|
|
|
|
|
{
|
2024-04-13 08:00:31 +00:00
|
|
|
|
var res = levelService.update(level);
|
|
|
|
|
// 如果修改成功,将当前UNIX时间戳作为版本号
|
|
|
|
|
if (res) {
|
|
|
|
|
versionService.setVersion("level", System.currentTimeMillis());
|
|
|
|
|
return R.ok();
|
|
|
|
|
}
|
|
|
|
|
return R.fail();
|
2024-04-09 17:06:54 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ApiOperation(value = "关卡删除(web前端管理员提交)")
|
|
|
|
|
@PostMapping("/delete")
|
2024-04-12 01:51:21 +00:00
|
|
|
|
public R delete(String id) {
|
2024-04-13 08:00:31 +00:00
|
|
|
|
var res = levelService.delete(id);
|
|
|
|
|
// 如果删除成功,将当前UNIX时间戳作为版本号
|
|
|
|
|
if (res) {
|
|
|
|
|
versionService.setVersion("level", System.currentTimeMillis());
|
|
|
|
|
return R.ok();
|
|
|
|
|
}
|
|
|
|
|
return R.fail();
|
2024-04-09 17:06:54 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ApiOperation(value = "获取某个关卡排行榜数据")
|
|
|
|
|
@GetMapping("/rank")
|
|
|
|
|
@ApiParam(name = "id", value = "关卡ID")
|
2024-04-12 01:51:21 +00:00
|
|
|
|
public R<RankVo> rank(String id, @RequestHeader(value = "token", required = false)String token) {
|
|
|
|
|
return R.ok(levelService.getRankInfo(id, token));
|
2024-04-09 17:06:54 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ApiOperation(value = "关卡结算(游戏结束时提交,一定要鉴别token)")
|
|
|
|
|
@PostMapping("/settle")
|
2024-04-11 15:13:12 +00:00
|
|
|
|
public R<ScoreInfo> settle(@RequestBody ScoreInfo scoreInfo, @RequestHeader("token")String token) {
|
|
|
|
|
return levelService.settle(scoreInfo, token);
|
2024-04-09 17:06:54 +00:00
|
|
|
|
}
|
2024-04-13 08:00:31 +00:00
|
|
|
|
|
|
|
|
|
@ApiOperation(value = "获取表版本号(用于本地数据库和服务器数据库同步)")
|
|
|
|
|
@GetMapping("/version")
|
|
|
|
|
public R<Long> version() {
|
|
|
|
|
return R.ok(versionService.getVersion("level"));
|
|
|
|
|
}
|
2024-06-08 09:38:49 +00:00
|
|
|
|
|
2024-06-08 12:23:35 +00:00
|
|
|
|
@ApiOperation(value = "分页获取某个排行榜排名")
|
2024-06-18 10:49:18 +00:00
|
|
|
|
@PostMapping("/rank-page")
|
2024-06-08 12:23:35 +00:00
|
|
|
|
public R<ScoreInfoPage> getScores(@RequestBody Page page) {
|
|
|
|
|
return R.ok(levelService.getScoreInfo( page.getLevelId(),page.getPage(), page.getSize()));
|
|
|
|
|
}
|
2024-06-09 06:17:54 +00:00
|
|
|
|
|
2024-06-11 04:02:12 +00:00
|
|
|
|
@ApiOperation(value = "获取最新5个版本")
|
|
|
|
|
@GetMapping("/new-version")
|
2024-06-09 06:17:54 +00:00
|
|
|
|
public R<List<VersionDownload>> getNewVersion(){
|
|
|
|
|
return versionService.getNewDownloads();
|
|
|
|
|
}
|
2024-06-11 04:02:12 +00:00
|
|
|
|
|
|
|
|
|
@PostMapping("/test")
|
|
|
|
|
public R<String> testMinio(MultipartFile file) throws Exception {
|
|
|
|
|
return R.ok(versionService.testMinIO(file));
|
|
|
|
|
}
|
|
|
|
|
}
|