Merge branch 'master_test_hw' of http://60.1.1.230/backend/jieling_server into master_test_hw

back_recharge
jiahuiwen 2020-09-01 10:45:21 +08:00
commit f6d885559b
6 changed files with 102 additions and 48 deletions

View File

@ -139,7 +139,7 @@ public class TimeUtils {
public static void main(String[] args) { public static void main(String[] args) {
long lastHour = getNextWeekendStartTime(1,5); int lastHour = getOverTimeCount(1599602400000L,1600462810000L,5);
System.out.println(lastHour); System.out.println(lastHour);
} }
@ -1379,4 +1379,23 @@ public class TimeUtils {
return (Integer.MAX_VALUE-now()/1000)/Math.pow(10,9); return (Integer.MAX_VALUE-now()/1000)/Math.pow(10,9);
} }
/**
* hour
* @param time1
* @param time2
* @param hour
* @return
*/
public static int getOverTimeCount(long time1,long time2,int hour){
long last = getLastOrUnderHour(time1, hour, 0, false);
long under = getLastOrUnderHour(time2, hour, 0, true);
if(last>under){
return 0;
}
if(last==under){
return 1;
}
return (int) Math.floor((under-last)/(HOUR*24D));
}
} }

View File

@ -221,10 +221,6 @@ public class EndlessMap extends AbstractMap{
for (int i = 0 ; i <endteam.size();i++) { for (int i = 0 ; i <endteam.size();i++) {
String heroId= endteam.get(i).getHeroId(); String heroId= endteam.get(i).getHeroId();
// Hero hero = user.getHeroManager().getHero(endteam.get(i).getHeroId());
// Map<Integer, Integer> heroAllAttribute = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero,false,GlobalsDef.ENDLESS_TEAM);
// int blood = (int)((heroAllAttribute.get(HeroAttributeEnum.Hp.getPropertyId())/10000d)* endlessHeroInfo.get(heroId));
bloodMap.put(heroId,(10000-endlessHeroInfo.get(heroId))/100); bloodMap.put(heroId,(10000-endlessHeroInfo.get(heroId))/100);
} }
pveFightEvent.setAttackBloodMap(bloodMap); pveFightEvent.setAttackBloodMap(bloodMap);

View File

@ -21,7 +21,7 @@ public class NewEightActivity extends AbstractActivity {
@Override @Override
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
User user = UserManager.getUser(session.getUid()); User user = UserManager.getUser(session.getUid());
if(TimeUtils.getSoFarWentDays(user.getPlayerInfoManager().getCreateTime(),System.currentTimeMillis())<sActivityRewardConfig.getValues()[0][0]-1){ if(TimeUtils.getOverTimeCount(user.getPlayerInfoManager().getCreateTime(),System.currentTimeMillis(),5)<sActivityRewardConfig.getValues()[0][0]-1){
return false; return false;
} }
return true; return true;

View File

@ -89,8 +89,7 @@ public class NewWelfareActivity extends AbstractActivity {
//0是领取最后奖励 //0是领取最后奖励
if(missionId==0){ if(missionId==0){
for(ActivityProgressInfo activityProgressInfo : activityProgressInfoMap.values()){ for(ActivityProgressInfo activityProgressInfo : activityProgressInfoMap.values()){
//3状态专为第三个任务使用。。 if(activityProgressInfo.getState() != 1){
if(activityProgressInfo.getState() != 1&&activityProgressInfo.getState() != 3){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
} }
} }

View File

@ -80,6 +80,18 @@ public class GuildChallengeLogic {
double bossHpRemain = guildInfo.getBossHpRemain(); double bossHpRemain = guildInfo.getBossHpRemain();
GuildMyInfo guildMyInfo = user.getGuildMyInfo(); GuildMyInfo guildMyInfo = user.getGuildMyInfo();
if(!lockMap.containsKey(guildId)){
lockMap.put(guildId,new Object());
}
synchronized (lockMap.get(guildId)){
int size = STableManager.getConfig(SGuildCheckpointConfig.class).size();
if(guildInfo.getBossHpRemain()==-1){
if(size>currBossId){
guildInfo.setCurrBossId(currBossId+1);
guildInfo.setBossHpRemain(0);
}
}
}
int isRefresh = 0 ; int isRefresh = 0 ;
//先清除特权 //先清除特权
@ -99,10 +111,18 @@ public class GuildChallengeLogic {
if(guildMyInfo.getLastMonsterId()!=0&&currBossId==guildMyInfo.getLastMonsterId()&&guildMyInfo.getGuildChallengeDamage()>0){ if(guildMyInfo.getLastMonsterId()!=0&&currBossId==guildMyInfo.getLastMonsterId()&&guildMyInfo.getGuildChallengeDamage()>0){
canSweep = 1; canSweep = 1;
} }
int remainHp;
if(bossHpRemain==0){
remainHp = 0;
}else if(bossHpRemain==-1){
remainHp = -1;
}else{
remainHp = (int)(bossHpRemain*10000/config.getMonsterHp());
}
Family.GetGuildChallengeInfoResponse response = Family.GetGuildChallengeInfoResponse.newBuilder() Family.GetGuildChallengeInfoResponse response = Family.GetGuildChallengeInfoResponse.newBuilder()
.setCanSweep(canSweep) .setCanSweep(canSweep)
.setCurBoss(currBossId) .setCurBoss(currBossId)
.setBlood(bossHpRemain==0?10000:(int)(bossHpRemain*10000/config.getMonsterHp())) .setBlood(remainHp)
.setBuffTime(guildInfo.getBuffOverTime()> TimeUtils.nowInt()?guildInfo.getBuffOverTime():0) .setBuffTime(guildInfo.getBuffOverTime()> TimeUtils.nowInt()?guildInfo.getBuffOverTime():0)
.setBuffCount(guildInfo.getBuffOverTime()> TimeUtils.nowInt()?guildInfo.getBuffIndex():0) .setBuffCount(guildInfo.getBuffOverTime()> TimeUtils.nowInt()?guildInfo.getBuffIndex():0)
.setSweepDamage(guildMyInfo.getGuildChallengeDamage()) .setSweepDamage(guildMyInfo.getGuildChallengeDamage())
@ -138,7 +158,8 @@ public class GuildChallengeLogic {
int kill = 0; int kill = 0;
long damage = 0; long damage = 0;
GuildInfo guildInfo; GuildInfo guildInfo;
SGuildCheckpointConfig config = STableManager.getConfig(SGuildCheckpointConfig.class).get(bossId); Map<Integer, SGuildCheckpointConfig> configMap = STableManager.getConfig(SGuildCheckpointConfig.class);
SGuildCheckpointConfig config = configMap.get(bossId);
if(config==null){ if(config==null){
throw new ErrorCodeException("配置不存在"+bossId); throw new ErrorCodeException("配置不存在"+bossId);
} }
@ -164,7 +185,7 @@ public class GuildChallengeLogic {
buffList.add(config.getAttributePromote()[buffIndex-1]); buffList.add(config.getAttributePromote()[buffIndex-1]);
pveFightEvent.setBuffIds(buffList); pveFightEvent.setBuffIds(buffList);
} }
if(guildInfo.getBossHpRemain()!=0){ if(guildInfo.getBossHpRemain()!=0&&guildInfo.getBossHpRemain()!=-1){
List<Integer> hp = new ArrayList<>(); List<Integer> hp = new ArrayList<>();
for(int i = 0 ; i <6;i++){ for(int i = 0 ; i <6;i++){
if(i==1){ if(i==1){
@ -183,8 +204,12 @@ public class GuildChallengeLogic {
if(checkResult[0]==1) { if(checkResult[0]==1) {
kill = 1; kill = 1;
//重置boss血量 //重置boss血量
guildInfo.setCurrBossId(guildInfo.getCurrBossId() + 1); if(guildInfo.getCurrBossId()!=configMap.size()){
guildInfo.setBossHpRemain(0); guildInfo.setCurrBossId(guildInfo.getCurrBossId() + 1);
guildInfo.setBossHpRemain(0);
}else{
guildInfo.setBossHpRemain(-1);
}
//加公会经验 //加公会经验
Map<Integer, SGuildLevelConfig> levelConfigMap = STableManager.getConfig(SGuildLevelConfig.class); Map<Integer, SGuildLevelConfig> levelConfigMap = STableManager.getConfig(SGuildLevelConfig.class);
if (guildInfo.getExp() + config.getLegionExp() >= levelConfigMap.get(guildInfo.getLevel()).getExp()) { if (guildInfo.getExp() + config.getLegionExp() >= levelConfigMap.get(guildInfo.getLevel()).getExp()) {
@ -218,8 +243,12 @@ public class GuildChallengeLogic {
} else { } else {
guildInfo.updateExp(guildInfo.getExp() + config.getLegionExp()); guildInfo.updateExp(guildInfo.getExp() + config.getLegionExp());
} }
guildInfo.setCurrBossId(guildInfo.getCurrBossId() + 1); if(guildInfo.getCurrBossId()!=configMap.size()){
guildInfo.setBossHpRemain(0); guildInfo.setCurrBossId(guildInfo.getCurrBossId() + 1);
guildInfo.setBossHpRemain(0);
}else{
guildInfo.setBossHpRemain(-1);
}
kill=1; kill=1;
} }
damage = guildMyInfo.getGuildChallengeDamage(); damage = guildMyInfo.getGuildChallengeDamage();
@ -233,33 +262,36 @@ public class GuildChallengeLogic {
long score = Double.valueOf(rank.getScoreById(user.getId(), guildId+":"+bossId)).longValue(); long score = Double.valueOf(rank.getScoreById(user.getId(), guildId+":"+bossId)).longValue();
rank.addRank(uid,guildId+":"+bossId,score==-1?damage:score+damage); rank.addRank(uid,guildId+":"+bossId,score==-1?damage:score+damage);
if(kill==1){ if(kill==1){
GuildLogic.sendFamilyBaseUpdateIndication(guildInfo); //如果不是最后一个boss更特权
Map<Integer, Set<Integer>> members = guildInfo.getMembers(); if(guildInfo.getCurrBossId()!=configMap.size()){
for(Set<Integer> items : members.values()){ GuildLogic.sendFamilyBaseUpdateIndication(guildInfo);
for(Integer sendUid : items){ Map<Integer, Set<Integer>> members = guildInfo.getMembers();
if(!OnlineUserManager.sessionMap.containsKey(sendUid)){ for(Set<Integer> items : members.values()){
continue; for(Integer sendUid : items){
if(!OnlineUserManager.sessionMap.containsKey(sendUid)){
continue;
}
AyyncWorker worker = new AyyncWorker(UserManager.getUser(sendUid),false,(user1)->{
GuildMyInfo guildMyInfo = user1.getGuildMyInfo();
if(guildMyInfo.getGuildChallengeDamage()==0){
return;
}
if(guildMyInfo.getRefreshedBoss().contains(bossId)) {
return;
}
int[] refreshPrivilege = config.getPrivilege();
for(int clearPrivilege:refreshPrivilege){
user1.getPlayerInfoManager().clearVipCount(clearPrivilege);
}
user1.getPlayerInfoManager().removeVipPriviliageId(3013);
user1.getStoreManager().removeStoreItemInfo(7,10031);
StoreLogic.sendStoreUpdateIndication(user1.getId(),user1.getStoreManager().getStoreInfoMap().get(7));
guildMyInfo.setLastMonsterId(bossId+1);
guildMyInfo.setGuildChallengeDamage(0);
guildMyInfo.addRefreshedBoss(bossId);
});
ProtocolsManager.getInstance().updateAyncWorker(worker);
} }
AyyncWorker worker = new AyyncWorker(UserManager.getUser(sendUid),false,(user1)->{
GuildMyInfo guildMyInfo = user1.getGuildMyInfo();
if(guildMyInfo.getGuildChallengeDamage()==0){
return;
}
if(guildMyInfo.getRefreshedBoss().contains(bossId)) {
return;
}
int[] refreshPrivilege = config.getPrivilege();
for(int clearPrivilege:refreshPrivilege){
user1.getPlayerInfoManager().clearVipCount(clearPrivilege);
}
user1.getPlayerInfoManager().removeVipPriviliageId(3013);
user1.getStoreManager().removeStoreItemInfo(7,10031);
StoreLogic.sendStoreUpdateIndication(user1.getId(),user1.getStoreManager().getStoreInfoMap().get(7));
guildMyInfo.setLastMonsterId(bossId+1);
guildMyInfo.setGuildChallengeDamage(0);
guildMyInfo.addRefreshedBoss(bossId);
});
ProtocolsManager.getInstance().updateAyncWorker(worker);
} }
} }
//异步发奖 //异步发奖
@ -270,9 +302,16 @@ public class GuildChallengeLogic {
}else{ }else{
drop = ItemUtil.drop(user, new int[]{config.getReward()}, 1, 0, 1); drop = ItemUtil.drop(user, new int[]{config.getReward()}, 1, 0, 1);
} }
double blood = guildInfo.getBossHpRemain(); int remainHp;
if(guildInfo.getBossHpRemain()==0){
remainHp = 0;
}else if(guildInfo.getBossHpRemain()==-1){
remainHp = -1;
}else{
remainHp = (int)(guildInfo.getBossHpRemain()*10000D/config.getMonsterHp());
}
Family.GuildChallengeIndication.Builder indication = Family.GuildChallengeIndication.newBuilder() Family.GuildChallengeIndication.Builder indication = Family.GuildChallengeIndication.newBuilder()
.setBlood(guildInfo.getBossHpRemain()==0?10000:(int)(blood*10000/config.getMonsterHp())) .setBlood(remainHp)
.setCurBoss(guildInfo.getCurrBossId()); .setCurBoss(guildInfo.getCurrBossId());
GuildLogic.sendIndicationToMemberWithoutUser(guildInfo, MessageTypeProto.MessageType.GUILD_CHALLENGE_INDICATION,indication.build(),uid); GuildLogic.sendIndicationToMemberWithoutUser(guildInfo, MessageTypeProto.MessageType.GUILD_CHALLENGE_INDICATION,indication.build(),uid);
@ -391,8 +430,12 @@ public class GuildChallengeLogic {
if(config==null){ if(config==null){
continue; continue;
} }
String mailReward = ItemUtil.getMailReward(config.getRankingReward()); String uid = rankInfo.getValue();
MailLogic.getInstance().sendMail(Integer.parseInt(rankInfo.getValue()), title, content, mailReward, TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); User user = UserManager.getUser(Integer.parseInt(uid));
if (user.getPlayerInfoManager().getGuildId()==guildId){
String mailReward = ItemUtil.getMailReward(config.getRankingReward());
MailLogic.getInstance().sendMail(Integer.parseInt(uid), title, content, mailReward, TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME);
}
index++; index++;
} }
// 排行不清除 // 排行不清除

View File

@ -15,10 +15,8 @@ import com.ljsd.jieling.handler.map.MapLogic;
import com.ljsd.jieling.hotfix.HotfixUtil; import com.ljsd.jieling.hotfix.HotfixUtil;
import com.ljsd.jieling.ktbeans.BeanBuilder.KtBeanBuilderUtils; import com.ljsd.jieling.ktbeans.BeanBuilder.KtBeanBuilderUtils;
import com.ljsd.jieling.ktbeans.KTRequestBeans.LoginParamType; import com.ljsd.jieling.ktbeans.KTRequestBeans.LoginParamType;
import com.ljsd.jieling.ktbeans.ReportUtil;
import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
import com.ljsd.jieling.ktbeans.sendbeans.KTAppOnline; import com.ljsd.jieling.ktbeans.sendbeans.KTAppOnline;
import com.ljsd.jieling.ktbeans.sendbeans.ReportServerEvent;
import com.ljsd.jieling.logic.GlobalDataManaager; import com.ljsd.jieling.logic.GlobalDataManaager;
import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.SituationLogic; import com.ljsd.jieling.logic.SituationLogic;
@ -40,7 +38,6 @@ import com.ljsd.jieling.logic.question.QuestionLogic;
import com.ljsd.jieling.logic.store.BuyGoodsLogic; import com.ljsd.jieling.logic.store.BuyGoodsLogic;
import com.ljsd.jieling.logic.store.StoreLogic; import com.ljsd.jieling.logic.store.StoreLogic;
import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.network.server.ProtocolsManager;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.MessageUtil; import com.ljsd.jieling.util.MessageUtil;
import manager.STableManager; import manager.STableManager;
import org.slf4j.Logger; import org.slf4j.Logger;