/**
* 參與抽獎 下單
*/
@RequestMapping(value="/participateInTreasure")
public AppDataModel_Sec participateInTreasure(IntegralTreasureEntity integralTreasureEntity){
AppDataModel k = null;
try {
IntegralTreasureController con = new IntegralTreasureController();
//執行分佈式鎖方法
Long longtime = new Date().getTime(); //獲取當前時間,計算是否超時用,防止某一用戶佔用時間太長
Jedis jedis = new Jedis ("localhost",6379);
Long lock = jedis.setnx("usernames", longtime.toString());
System.out.println(jedis.get("usernames"));
if(lock <= 0){
System.out.println("有鎖了,等會");
long chaoshi = Long.parseLong(jedis.get("usernames"));
Long l = (long)(new Date().getTime() - chaoshi);
System.out.println(l);
if(l>2000){
jedis.del("usernames");
//去掉時間重新插入key
Long lock1 = jedis.setnx("usernames", longtime.toString());
if(lock1 > 0) {
//加鎖成功,開始執行方法體
System.out.println("執行方法體2="+integralTreasureEntity.getUserId());
k = integralTreasureService.addParticipateInTreasure(integralTreasureEntity);
}
jedis.del("usernames"); //執行結束幹掉這個key
}else{
//未超時則返回網絡繁忙,請稍後重試
System.out.println("網絡繁忙,請稍後重試");
k=new AppDataModel();
k.setStatus(0);
k.setMessage("網絡繁忙,請稍後重試");
}
}else{
if(lock > 0) {//lock爲插入成功條數
//加鎖成功,開始執行方法體
System.out.println("執行方法體1="+integralTreasureEntity.getUserId());
k = integralTreasureService.addParticipateInTreasure(integralTreasureEntity);
}
jedis.del("usernames"); //執行結束幹掉這個key
}
} catch (Exception e) {
e.printStackTrace();
k=new AppDataModel();
k.setStatus(0);
k.setMessage("手慢了,您看中的獎品已經開獎啦!");
}
return getAppDataMode_sec().setData(encodeURI(k));
}
//最簡單的方法,影響性能,併發特別大的慎用。