back_recharge
lvxinran 2019-08-20 14:36:02 +08:00
commit f52d970ea6
3 changed files with 18 additions and 3 deletions

View File

@ -703,6 +703,20 @@ public class RedisUtil {
}
}
//操作sortset score<<32+time
public void zsetAddOneOffsetByTime(String key, String uid, int score){
for (int i = 0; i < MAX_TRY_TIMES; i++) {
try {
long s= (long)score<<40;
long sort = s+(0xFFFFFFFFFFL-(int)(System.currentTimeMillis()/1000));
redisTemplate.opsForZSet().add(key, uid, sort);
return;
} catch (Exception e) {
TimeUtils.sleep(FAILED_SLEEP);
}
}
}
public void zsetRemoveOne(String key, String value){
for (int i = 0; i < MAX_TRY_TIMES; i++) {
try {
@ -772,6 +786,7 @@ public class RedisUtil {
return null;
}
public Long getZSetreverseRank(String type,String key, String value){
String rkey = getKey(type,key);
for (int i = 0; i < MAX_TRY_TIMES; i++) {

View File

@ -2257,7 +2257,7 @@ public class MapLogic {
//排行榜
String rankKey = RedisKey.getKey(RedisKey.MONSTER_ATTACK_RANK,"", false);
RedisUtil.getInstence().zsetAddOne(rankKey, String.valueOf(user.getId()), checkFightId+1);
RedisUtil.getInstence().zsetAddOneOffsetByTime(rankKey, String.valueOf(user.getId()), checkFightId);
//归还水滴
Map<Integer,Integer> itemMap = new HashMap<>(1);

View File

@ -34,7 +34,7 @@ public class GetMonsterAttackRankHandler extends BaseHandler<PlayerInfoProto.Get
for (ZSetOperations.TypedTuple<String> item : rankInfo) {
String value = item.getValue();
int score = item.getScore().intValue();
int score = (int)(item.getScore().longValue()>>40);
int uid = Integer.parseInt(value);
User user = UserManager.getUser(uid);
@ -58,7 +58,7 @@ public class GetMonsterAttackRankHandler extends BaseHandler<PlayerInfoProto.Get
}
int uid = iSession.getUid();
int score = RedisUtil.getInstence().getZSetScore(RedisKey.MONSTER_ATTACK_RANK, "", Integer.toString(uid)).intValue();
int score = (int)(RedisUtil.getInstence().getZSetScore(RedisKey.MONSTER_ATTACK_RANK, "", Integer.toString(uid)).longValue()>>40);
int myRank = RedisUtil.getInstence().getZSetreverseRank(RedisKey.MONSTER_ATTACK_RANK, "", Integer.toString(uid)).intValue();
if(myRank>300){
score=-1;