diff --git a/gamecommon/src/main/java/util/TimeUtils.java b/gamecommon/src/main/java/util/TimeUtils.java index 1d797ebfc..2b2bbd530 100644 --- a/gamecommon/src/main/java/util/TimeUtils.java +++ b/gamecommon/src/main/java/util/TimeUtils.java @@ -138,9 +138,8 @@ public class TimeUtils { public static final String Stand_CeHua_Data_format = "yyyyMMdd HHmmss"; public static void main(String[] args) { - System.out.println(Integer.MAX_VALUE); - System.out.println((Integer.MAX_VALUE-now()/1000)/Math.pow(10,9)); - + long lastHour = getLastHour(5); + System.out.println(lastHour); } /** * 判断是否合法的时间格式(HH:mm:ss) @@ -1319,6 +1318,27 @@ public class TimeUtils { } } + /** + *获取传入时间的上个几时 + * @param hour + * @return + */ + public static long getLastHour(long time,int hour){ + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(time); + int i = cal.get(Calendar.HOUR_OF_DAY); + cal.set(Calendar.HOUR_OF_DAY,hour); + cal.set(Calendar.MINUTE,0); + cal.set(Calendar.SECOND,0); + cal.set(Calendar.MILLISECOND,0); + long result = cal.getTimeInMillis(); + if(i<5){ + result = result -TimeUtils.DAY; + } + return result; + + } + /** * 返回Integer最大值-now()之后变成小于一的小数; * @return diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java index aa3b61f4c..c637ea926 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java @@ -350,6 +350,7 @@ public class PlayerManager extends MongoBase { maxTime = (int)(TimeUtils.now()/1000+config.getContinueTime()); } } + maxTime = (int)(TimeUtils.getLastHour(maxTime*1000,5)/1000); vipInfo.put(privilageId,new VipInfo(0,maxTime)); updateString("vipInfo", vipInfo); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java index 21f653fb2..4305b54b6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java @@ -998,12 +998,12 @@ public class GuildLogic { throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } long increment = RedisUtil.getInstence().increment(RedisKey.getKey(RedisKey.FAMILY_RED_PACKAGE_INCRE_ID, "", false)); - RedisUtil.getInstence().putMapEntry(RedisKey.FAMILY_RED_PACKAGE,String.valueOf(user.getPlayerInfoManager().getGuildId()),String.valueOf(increment),new RedPackage(redId,uid)); + RedisUtil.getInstence().putMapEntry(RedisKey.FAMILY_RED_PACKAGE,String.valueOf(user.getPlayerInfoManager().getGuildId()),String.valueOf(increment),new RedPackage(redId,uid,(int)(TimeUtils.now()/1000),config.getLastTime())); List reward = new ArrayList<>(); for(Long count:generate){ reward.add(String.valueOf(count)); } - RedisUtil.getInstence().lSet(RedisKey.getKey("red_remain_list",String.valueOf(increment),false),reward,200000); + RedisUtil.getInstence().lSet(RedisKey.getKey("red_remain_list",String.valueOf(increment),false),reward,config.getLastTime()); } /** @@ -1016,7 +1016,12 @@ public class GuildLogic { int guildId = user.getPlayerInfoManager().getGuildId(); Map redPackageMap = RedisUtil.getInstence().getMapValues(RedisKey.FAMILY_RED_PACKAGE, String.valueOf(guildId), String.class, RedPackage.class); Family.GetAllRedPackageResponse.Builder builder = Family.GetAllRedPackageResponse.newBuilder(); + List removeId = new ArrayList<>(); for(Map.Entry entry:redPackageMap.entrySet()){ + if(TimeUtils.now()/1000>entry.getValue().getEffectTime()+entry.getValue().getSendTime()){ + removeId.add(entry.getKey()); + continue; + } CommonProto.RedPackage.Builder redPackage = CommonProto.RedPackage.newBuilder(); redPackage.setGetCount(RedisUtil.getInstence().getMapValues("red_already_list", entry.getKey(),int.class,AcceptRedInfo.class).size()); AcceptRedInfo already = RedisUtil.getInstence().getMapEntry("red_already_list", entry.getKey(), String.valueOf(session.getUid()), AcceptRedInfo.class); @@ -1026,6 +1031,10 @@ public class GuildLogic { redPackage.setRedType(entry.getValue().getTypeId()); builder.addInfo(redPackage); } + for(String id:removeId){ + RedisUtil.getInstence().removeMapEntrys(RedisKey.FAMILY_RED_PACKAGE, String.valueOf(guildId),id); + } + MessageUtil.sendMessage(session,1,messageType.getNumber(),builder.build(),true); } @@ -1072,7 +1081,8 @@ public class GuildLogic { PlayerManager playerInfoManager = UserManager.getUser(packInfo.getUid()).getPlayerInfoManager(); builder.setSendName(playerInfoManager.getNickName()) .setHead(playerInfoManager.getHead()) - .setHeadFrame(playerInfoManager.getHeadFrame()); + .setHeadFrame(playerInfoManager.getHeadFrame()) + .setRemainTime(packInfo.getSendTime()+packInfo.getEffectTime()-(int)(TimeUtils.now()/1000)); MessageUtil.sendMessage(session,1,messageType.getNumber(),builder.build(),true); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/RedPackage.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/RedPackage.java index 4061fc48f..1852ce579 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/RedPackage.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/RedPackage.java @@ -11,6 +11,10 @@ public class RedPackage { private int uid; + private int sendTime; + + private int effectTime; + public int getTypeId() { @@ -29,9 +33,27 @@ public class RedPackage { this.uid = uid; } - public RedPackage(int typeId, int uid) { + public int getSendTime() { + return sendTime; + } + + public void setSendTime(int sendTime) { + this.sendTime = sendTime; + } + + public int getEffectTime() { + return effectTime; + } + + public void setEffectTime(int effectTime) { + this.effectTime = effectTime; + } + + public RedPackage(int typeId, int uid, int sendTime, int effectTime) { this.typeId = typeId; this.uid = uid; + this.sendTime = sendTime; + this.effectTime = effectTime; } public RedPackage() {