抽奖程序java接口写法,java抽奖接口 - osc_r55hwag3的个人空间 - OSCHINA - 中文开源技术交流社区...

public TransResponse execute(TransRequest tRequest, HttpSession httpSession) {

TransResponse resp = new TransResponse(tRequest.getAction());

RegisterUser user = tRequest.getRegisterUser();

String FLAG_KEY = user.getId().toString();

if (CacheUtils.get(FLAG_KEY) != null && CacheUtils.get(FLAG_KEY + SUFFIX_KEY) != null) {

resp.setRetcode("202");

resp.setRetmesg("24小时之内只能抽奖两次,今天的抽奖次数已经用完");

return resp;

}

if(CacheUtils.get(FLAG_KEY) != null && CacheUtils.get(FLAG_KEY + SUFFIX_SHARE) == null) {

resp.setRetcode("203");

resp.setRetmesg("分享后可进行第二次抽奖");

return resp;

}

synchronized (new Object()) {

List models = lotteryModelManager.getAll();

Object[][] arr;

arr = new Object[models.size()][];

for (int i = 0; i < models.size(); i++) {

arr[i] = new Object[3];

arr[i][0] = models.get(i).getId();

arr[i][1] = models.get(i).getName();

arr[i][2] = models.get(i).getCount();

}

int prizedTotle = 0;

for (Object[] objects : arr) {

prizedTotle += (int) objects[2];

}

int prizedIndex = 0;

for (int i = 0; i < arr.length; i++) {

int randomNum = new Random().nextInt(prizedTotle) + 1;

if (randomNum <= (int) arr[i][2]) {

prizedIndex = i;

break;

} else {

prizedTotle = prizedTotle - (int) arr[i][2]; // 未抽中,拿走此奖项继续抽

}

}

logger.info("中奖:" + prizedIndex + " " + Arrays.asList(arr[prizedIndex]));

if (CacheUtils.get(FLAG_KEY) == null) {

CacheUtils.put(FLAG_KEY, FLAG_KEY);

} else {

CacheUtils.put(FLAG_KEY + SUFFIX_KEY, FLAG_KEY);

}

if(THANKS != prizedIndex) {

LotteryRecord record = new LotteryRecord();

record.setUserId(FLAG_KEY);

record.setMobile(user.getMobile());

record.setInfo(Arrays.asList(arr[prizedIndex]).toString());

record.setStatus(0);

lotteryRecordManager.saveOrUpdateByApi(record);

}

resp.getBody().put("data", Arrays.asList(arr[prizedIndex]));

}

resp.setRetcode("200");

resp.setRetmesg("请求成功");

return resp;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值