package me.jxy.flappy.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.primitives.Ints;
import lombok.Data;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Random;
/**
* flappy-bird排行榜api,仅用于测试
*
* @version 1.0
* @author jiangxy
*/
@Controller
@RequestMapping("/flappy")
public class WXController implements InitializingBean {
private static Logger logger = LoggerFactory.getLogger(WXController.class);
/**TOP50排行榜*/
public static final int LIST_SIZE = 20;
/**
* 一个容器,暂存每个用户的成绩
*/
@Data
static class Record implements Comparable<Record> {
private String openId;
private String name;
private String pic;
private Integer score;
@Override
public int compareTo(Record o) {
return Ints.compare(o.score, this.score);
}
}
// 用一个map暂存数据,模拟DB
// 正常情况下map的key应该是openId的,因为openId才能唯一确认一个用户
// 但还要解密,懒得搞了。。。用昵称做key吧
private Map<String, Record> map = Maps.newHashMap();
/**
* 汇报一条数据
*
* @param record
* @return
*/
@RequestMapping("send")
@ResponseBody
public synchronized String send(@RequestBody Record record) {
logger.info("receive record: " + record);
Record old = map.get(record.getName());
try {
if (old == null || record.getScore() > old.getScore()) {
map.put(record.getName(), record);
}
} catch (Exception e) {
logger.error("update record error", e);
return "FAIL";
}
return "OK";
}
/**
* 获取排行榜
*
* @return
*/
@RequestMapping("getList")
@ResponseBody
public synchronized List<Record> getList() {
List<Record> records = Lists.newArrayList(map.values());
Collections.sort(records);
if (records.size() < LIST_SIZE)
return records;
else
return records.subList(0, LIST_SIZE);
}
/**
* 检查API是否正常
*
* @return
*/
@RequestMapping("status")
@ResponseBody
public String status() {
logger.info("check api status");
return "OK";
}
@Override
public void afterPropertiesSet() throws Exception {
Random rand = new Random();
// 生成一些测试数据
for (int i = 0; i < 50; i++) {
Record record = new Record();
record.setName(String.format("我是用户%02d号", i));
int score = rand.nextInt(50);
record.setScore(score);
map.put(record.getName(), record);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
微信小程序开发-小程序完整demo:飞翔的小鸟:canvas实现,java后端(适用1221)案例源码.zip (33个子文件)
小程序完整demo:飞翔的小鸟:canvas实现,java后端(适用1221)
wxapplet-canvas-demo
pages
index
index.wxml 386B
index.js 1KB
Game.js 7KB
index.json 2B
index.wxss 392B
Component.js 4KB
list
index.wxml 1KB
index.js 1KB
index.json 2B
index.wxss 1KB
app.json 834B
app.js 540B
java
pom.xml 8KB
src
main
resources
logback.xml 503B
springMVC.xml 2KB
java
me
jxy
flappy
controller
WXController.java 3KB
webapp
WEB-INF
web.xml 1KB
utils
util.js 460B
app.wxss 194B
screenshot.jpg 167KB
config.js 513B
.gitignore 132B
images
rank2.png 432B
1.1.png 355B
jxy.jpg 5KB
1.2.png 451B
bird.png 829B
2.1.png 192B
2.2.png 207B
rank3.png 432B
rank1.png 453B
1.jpg 167KB
临时资源.zip 1.27MB
共 33 条
- 1
资源评论
小小姑娘很大
- 粉丝: 4065
- 资源: 2312
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功