需求:gm可查询最早晋升神尊11、12级得三人
parent
ddf90096dc
commit
2aa1651e99
|
@ -381,6 +381,8 @@ public class RedisKey {
|
|||
|
||||
public static final String GM_ACTIVITY_INFO = "GM_ACTIVITY_INFO";//GM活动信息
|
||||
|
||||
public static final String GOD_LEVEL_UP_TIME = "GOD_LEVEL_UP_TIME";//晋升神尊等级排序
|
||||
|
||||
public static Set<String> familyKey = new HashSet<>();
|
||||
/**
|
||||
* 四灵试炼,0:首次通关,1:最低战力
|
||||
|
|
|
@ -3,11 +3,11 @@ package com.ljsd.jieling.handler;
|
|||
import com.ljsd.jieling.logic.mail.MailLogic;
|
||||
import com.ljsd.jieling.netty.cocdex.PacketNetData;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -28,6 +28,5 @@ public class TakeMailHandler extends BaseHandler {
|
|||
PlayerInfoProto.TakeMailRequest takeMailRequest = PlayerInfoProto.TakeMailRequest.parseFrom(message);
|
||||
List<String> mailIdsList = takeMailRequest.getMailIdsList();
|
||||
MailLogic.getInstance().takeMail(iSession,mailIdsList, userId);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
package com.ljsd.jieling.jbean.gm;
|
||||
|
||||
import com.ljsd.GameApplication;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.player.PlayerLogic;
|
||||
import util.TimeUtils;
|
||||
|
||||
/**
|
||||
* @Author hj
|
||||
* @Date 2022/12/8 16:00:38
|
||||
* @Description:
|
||||
* @Version 1.0
|
||||
*/
|
||||
public class UserGodLvVo {
|
||||
//角色id
|
||||
private int uid;
|
||||
//角色名称
|
||||
private String name;
|
||||
//区服id
|
||||
private String serverId;
|
||||
//创角时间
|
||||
private String createTime;
|
||||
//神尊等级
|
||||
private int godLv;
|
||||
//神尊等级到达时间
|
||||
private String upTime;
|
||||
|
||||
public UserGodLvVo(User user) {
|
||||
this.uid = user.getId();
|
||||
this.name = user.getPlayerInfoManager().getNickName();
|
||||
this.serverId = String.valueOf(GameApplication.serverId);
|
||||
this.createTime = TimeUtils.getTimeStamp2(user.getPlayerInfoManager().getCreateTime());
|
||||
this.godLv = PlayerLogic.getInstance().getGodPrivilegeLv(user);
|
||||
this.upTime = TimeUtils.getTimeStamp2(TimeUtils.now());
|
||||
}
|
||||
|
||||
public int getUid() {
|
||||
return uid;
|
||||
}
|
||||
|
||||
public void setUid(int uid) {
|
||||
this.uid = uid;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getServerId() {
|
||||
return serverId;
|
||||
}
|
||||
|
||||
public void setServerId(String serverId) {
|
||||
this.serverId = serverId;
|
||||
}
|
||||
|
||||
public String getCreateTime() {
|
||||
return createTime;
|
||||
}
|
||||
|
||||
public void setCreateTime(String createTime) {
|
||||
this.createTime = createTime;
|
||||
}
|
||||
|
||||
public int getGodLv() {
|
||||
return godLv;
|
||||
}
|
||||
|
||||
public void setGodLv(int godLv) {
|
||||
this.godLv = godLv;
|
||||
}
|
||||
|
||||
public String getUpTime() {
|
||||
return upTime;
|
||||
}
|
||||
|
||||
public void setUpTime(String upTime) {
|
||||
this.upTime = upTime;
|
||||
}
|
||||
}
|
|
@ -304,6 +304,7 @@ public class GlobalDataManaager implements IManager {
|
|||
new SummonTreasureHandler();
|
||||
new ArchitectureUnLockHandler();
|
||||
new SaveHeroForceEventHandler();
|
||||
new AddItemHandler();
|
||||
new GmActivityLogic();
|
||||
ChampionshipLogic.minuteCheck(true);
|
||||
GuildFightLogic.minuteCheckForCarFight();
|
||||
|
|
|
@ -4,20 +4,20 @@ import java.util.Map;
|
|||
|
||||
public class AddItemEvent implements IEvent {
|
||||
|
||||
private int useId;
|
||||
Map<Integer, Integer> useItemMap;
|
||||
private int userId;
|
||||
Map<Integer, Long> useItemMap;
|
||||
|
||||
public AddItemEvent(int useId, Map<Integer, Integer> useItemMap) {
|
||||
this.useId = useId;
|
||||
public AddItemEvent(int userId, Map<Integer, Long> useItemMap) {
|
||||
this.userId = userId;
|
||||
this.useItemMap = useItemMap;
|
||||
}
|
||||
|
||||
public Map<Integer, Integer> getUseItemMap() {
|
||||
public Map<Integer, Long> getUseItemMap() {
|
||||
return useItemMap;
|
||||
}
|
||||
|
||||
public int getUseId() {
|
||||
return useId;
|
||||
public int getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
package com.ljsd.jieling.logic.activity.eventhandler;
|
||||
|
||||
import com.ljsd.GameApplication;
|
||||
import com.ljsd.jieling.db.redis.RedisKey;
|
||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||
import com.ljsd.jieling.jbean.gm.UserGodLvVo;
|
||||
import com.ljsd.jieling.logic.activity.IEventHandler;
|
||||
import com.ljsd.jieling.logic.activity.event.AddItemEvent;
|
||||
import com.ljsd.jieling.logic.activity.event.IEvent;
|
||||
import com.ljsd.jieling.logic.activity.event.Poster;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.player.PlayerLogic;
|
||||
|
||||
/**
|
||||
* @author lvxinran
|
||||
* @date 2020/1/7
|
||||
* @discribe
|
||||
*/
|
||||
public class AddItemHandler implements IEventHandler{
|
||||
public AddItemHandler() {
|
||||
Poster.getPoster().listenEvent(this, AddItemEvent.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEvent(IEvent event) throws Exception {
|
||||
if (!(event instanceof AddItemEvent)) {
|
||||
return;
|
||||
}
|
||||
AddItemEvent itemEvent = (AddItemEvent) event;
|
||||
User user = UserManager.getUser(itemEvent.getUserId());
|
||||
// 包含神尊经验道具,itemId:1352
|
||||
if (itemEvent.getUseItemMap().containsKey(1352)){
|
||||
int lv = PlayerLogic.getInstance().getGodPrivilegeLv(user);
|
||||
String key = RedisKey.GOD_LEVEL_UP_TIME + ":" + GameApplication.serverId + ":" + lv;
|
||||
String uid = String.valueOf(user.getId());
|
||||
UserGodLvVo userGodLvVo = RedisUtil.getInstence().getMapValue(key, uid, UserGodLvVo.class);
|
||||
if (userGodLvVo == null){
|
||||
userGodLvVo = new UserGodLvVo(user);
|
||||
RedisUtil.getInstence().putMapEntry(key, uid, userGodLvVo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -712,144 +712,7 @@ public class ItemUtil {
|
|||
* @throws Exception
|
||||
*/
|
||||
public static void addItem(User user, Map<Integer, Long> itemMap,CommonProto.Drop.Builder dropBuilder,int reason) throws Exception {
|
||||
if (itemMap.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
EquipManager equipManager=user.getEquipManager();
|
||||
List<CommonProto.Item> itemProtoList = new CopyOnWriteArrayList<>();
|
||||
ItemManager itemManager = user.getItemManager();
|
||||
List<CommonProto.Item> sendToFront = new CopyOnWriteArrayList<>();
|
||||
//超过上限不能直接获得
|
||||
Map<Integer,Integer> extraItem = new HashMap<>(itemMap.size());
|
||||
List<Integer>changeEquipList=null;
|
||||
for (Map.Entry<Integer, Long> entry : itemMap.entrySet()) {
|
||||
SItem sItem = SItem.getsItemMap().get (entry.getKey());
|
||||
if (sItem.getItemBaseType()==6){
|
||||
equipManager.addEquipList(entry.getKey());
|
||||
}
|
||||
if (sItem.getItemType()==3 && reason != BIReason.EQUIP_UNLOAD_REWARD
|
||||
&& reason != BIReason.UPHERO_DECOMPOS_HERO_REWARD && reason != BIReason.DECOMPOS_HERO_REWARD){
|
||||
if (changeEquipList==null) {
|
||||
changeEquipList=new ArrayList<>();
|
||||
}
|
||||
itemManager.setEquipBookMap(entry.getKey(),entry.getValue());
|
||||
changeEquipList.add(entry.getKey());
|
||||
}
|
||||
long itemNumlimit = sItem.getItemNumlimit();
|
||||
long itemNum = entry.getValue().intValue();
|
||||
if(itemNum <= 0){
|
||||
continue;
|
||||
}
|
||||
if (itemNum >= itemNumlimit){
|
||||
itemNum = itemNumlimit;
|
||||
}
|
||||
Item item = itemManager.getItem(entry.getKey());
|
||||
if (item == null) {
|
||||
item = itemManager.newItem(entry.getKey(), itemNum);
|
||||
} else {
|
||||
if(sItem.getId()==Global.MISSING_ROOM_ITEM&&reason==BIReason.ADVENTURE_BASE_REWARD){
|
||||
itemNumlimit = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(user.getPlayerInfoManager().getLevel()).getMazeTreasureMax();
|
||||
}
|
||||
//数量超过了
|
||||
if(item.getItemNum()> itemNumlimit){
|
||||
|
||||
//如果是寻龙玉,直接返回不给
|
||||
if(sItem.getId()==Global.MISSING_ROOM_ITEM&&reason==BIReason.ADVENTURE_BASE_REWARD){
|
||||
continue;
|
||||
}
|
||||
if(reason==BIReason.TAKE_MAIL_REWARD){
|
||||
throw new ErrorCodeException(ErrorCode.BAG_FULL);
|
||||
}else{
|
||||
extraItem.put(entry.getKey(), (int) (extraItem.getOrDefault(entry.getKey(),0)+entry.getValue()));
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (item.getItemNum() + entry.getValue() > itemNumlimit){
|
||||
if(sItem.getId()==Global.MISSING_ROOM_ITEM&&reason==BIReason.ADVENTURE_BASE_REWARD){
|
||||
item.setItemNum((int) (item.getItemNum() + entry.getValue()));
|
||||
}else{
|
||||
if(reason==BIReason.TAKE_MAIL_REWARD){
|
||||
throw new ErrorCodeException(ErrorCode.BAG_FULL);
|
||||
}else{
|
||||
extraItem.put(entry.getKey(), (int) (extraItem.getOrDefault(entry.getKey(),0)+entry.getValue()));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
item.setItemNum(item.getItemNum() + entry.getValue());
|
||||
|
||||
}
|
||||
}
|
||||
if(itemNum>=0){
|
||||
itemProtoList.add(CBean2Proto.getItem(item,itemNum));
|
||||
}
|
||||
|
||||
// 触发任务,东海寻仙
|
||||
if (sItem.getItemType() == GlobalItemType.TRANSFORMATION_CARD){
|
||||
long count = itemNum;
|
||||
while (count >= Integer.MAX_VALUE){
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.GET_TRANSFIGURATION_CARD_NUM,sItem.getQuantity(),Integer.MAX_VALUE);
|
||||
count-=Integer.MAX_VALUE;
|
||||
}
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.GET_TRANSFIGURATION_CARD_NUM,sItem.getQuantity(),(int)count);
|
||||
}
|
||||
|
||||
// ReportUtil.onReportEvent(user,ReportEventEnum.GET_ITEM.getType(),itemNum,String.valueOf(reason),item.getItemId());
|
||||
int eventType = ParamEventBean.UserItemEvent;
|
||||
if(currencyMap.contains(entry.getKey())){
|
||||
eventType = ParamEventBean.UserCurrencyEvent;
|
||||
}
|
||||
KtEventUtils.onKtEvent(user, eventType,reason,GlobalsDef.addReason,entry.getKey(),itemNum,item.getItemNum());
|
||||
|
||||
baseItemReport(user,item.getItemId(),(int)itemNum,1,reason);
|
||||
|
||||
if(sItem.getId() == Global.EXP){
|
||||
userLevelUp(user,itemNum);
|
||||
}
|
||||
if(sItem.getId() == Global.TREASURE_SCORE){
|
||||
treasureLevelUp(user);
|
||||
}
|
||||
extraDropAop(user,dropBuilder,sItem);
|
||||
sendToFront.add(CBean2Proto.getItem(item,-1));
|
||||
if(sItem.getItemType()==GlobalItemType.EQUIP){
|
||||
if(reason!=BIReason.EQUIP_UNLOAD_REWARD&&reason!=BIReason.DECOMPOS_HERO_REWARD&&reason!=BIReason.UPHERO_DECOMPOS_HERO_REWARD){
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.GET_EQUIP,sItem.getId(),(int)itemNum);
|
||||
ReportUtil.onReportEvent(user,ReportEventEnum.GET_EQUIP.getType(),sItem.getId(),(int)itemNum,reason);
|
||||
}
|
||||
} else if (sItem.getItemType() == GlobalItemType.SOUL_MARK) {
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.GOT_SOUL_MARK, sItem.getId(), (int)itemNum);
|
||||
}
|
||||
if(sItem.getId()==Global.DAILY_TASK_REMOVE_ITEM){
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,(int)itemNum,user);
|
||||
}
|
||||
//日志记录
|
||||
ItemLogic.getInstance().addItemLog(new ItemLog(user,0,reason,item,itemNum));
|
||||
}
|
||||
//发送装备图鉴修改推送
|
||||
SendEquipBookIndication(user.getId(),itemManager,changeEquipList);
|
||||
|
||||
for(Map.Entry<Integer,Integer> entry:extraItem.entrySet()){
|
||||
itemProtoList.add(CBean2Proto.getItem(itemManager.getItemMap().get(entry.getKey()),entry.getValue()));
|
||||
}
|
||||
if (dropBuilder != null) {
|
||||
dropBuilder.addAllItemlist(itemProtoList);
|
||||
}
|
||||
|
||||
if(!sendToFront.isEmpty()||extraItem.size()>0){
|
||||
MessageUtil.sendBagIndication(user.getId(),0,sendToFront,extraItem.size()>0);
|
||||
}
|
||||
if(extraItem.size()>0){
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for(Map.Entry<Integer,Integer> entry:extraItem.entrySet()){
|
||||
builder.append(entry.getKey()).append("#").append(entry.getValue());
|
||||
String title = SErrorCodeEerverConfig.getI18NMessage("item_max_mail_title");
|
||||
SItem item = SItem.getsItemMap().get(entry.getKey());
|
||||
String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("item_max_mail_content",new String[]{item.getName(),String.valueOf(item.getItemNumlimit())},new int[]{1,0},"#");
|
||||
MailLogic.getInstance().sendMail(user.getId(),title,content,builder.toString(),TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME);
|
||||
builder = new StringBuilder();
|
||||
}
|
||||
}
|
||||
|
||||
addItemByMail(user,itemMap,dropBuilder,reason);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -870,18 +733,17 @@ public class ItemUtil {
|
|||
Map<Integer,Integer> extraItem = new HashMap<>(itemMap.size());
|
||||
List<Integer>changeEquipList=null;
|
||||
for (Map.Entry<Integer, Long> entry : itemMap.entrySet()) {
|
||||
SItem sItem = SItem.getsItemMap().get(entry.getKey());
|
||||
SItem sItem = SItem.getsItemMap().get (entry.getKey());
|
||||
if (sItem.getItemBaseType()==6){
|
||||
equipManager.addEquipList(entry.getKey());
|
||||
}
|
||||
if (sItem.getItemType()==3){
|
||||
if (sItem.getItemType()==3 && reason != BIReason.EQUIP_UNLOAD_REWARD && reason != BIReason.UPHERO_DECOMPOS_HERO_REWARD && reason != BIReason.DECOMPOS_HERO_REWARD){
|
||||
if (changeEquipList==null) {
|
||||
changeEquipList=new ArrayList<>();
|
||||
}
|
||||
itemManager.setEquipBookMap(entry.getKey(),entry.getValue());
|
||||
changeEquipList.add(entry.getKey());
|
||||
}
|
||||
|
||||
long itemNumlimit = sItem.getItemNumlimit();
|
||||
long itemNum = entry.getValue().intValue();
|
||||
if(itemNum <= 0){
|
||||
|
@ -931,8 +793,21 @@ public class ItemUtil {
|
|||
itemProtoList.add(CBean2Proto.getItem(item,itemNum));
|
||||
}
|
||||
|
||||
// 触发任务,东海寻仙
|
||||
if (sItem.getItemType() == GlobalItemType.TRANSFORMATION_CARD){
|
||||
long count = itemNum;
|
||||
while (count >= Integer.MAX_VALUE){
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.GET_TRANSFIGURATION_CARD_NUM,sItem.getQuantity(),Integer.MAX_VALUE);
|
||||
count-=Integer.MAX_VALUE;
|
||||
}
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.GET_TRANSFIGURATION_CARD_NUM,sItem.getQuantity(),(int)count);
|
||||
}
|
||||
|
||||
ReportUtil.onReportEvent(user,ReportEventEnum.GET_ITEM.getType(),itemNum,String.valueOf(reason),item.getItemId());
|
||||
int eventType = ParamEventBean.UserItemEvent;
|
||||
if(currencyMap.contains(entry.getKey())){
|
||||
eventType = ParamEventBean.UserCurrencyEvent;
|
||||
}
|
||||
KtEventUtils.onKtEvent(user, eventType,reason,GlobalsDef.addReason,entry.getKey(),itemNum,item.getItemNum());
|
||||
|
||||
baseItemReport(user,item.getItemId(),(int)itemNum,1,reason);
|
||||
|
||||
|
@ -947,18 +822,18 @@ public class ItemUtil {
|
|||
if(sItem.getItemType()==GlobalItemType.EQUIP){
|
||||
if(reason!=BIReason.EQUIP_UNLOAD_REWARD&&reason!=BIReason.DECOMPOS_HERO_REWARD&&reason!=BIReason.UPHERO_DECOMPOS_HERO_REWARD){
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.GET_EQUIP,sItem.getId(),(int)itemNum);
|
||||
ReportUtil.onReportEvent(user,ReportEventEnum.GET_EQUIP.getType(),sItem.getId(),itemNum,reason);
|
||||
ReportUtil.onReportEvent(user,ReportEventEnum.GET_EQUIP.getType(),sItem.getId(),(int)itemNum,reason);
|
||||
}
|
||||
} else if (sItem.getItemType() == GlobalItemType.SOUL_MARK) {
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.GOT_SOUL_MARK, sItem.getId(), itemNum);
|
||||
}
|
||||
if (sItem.getItemType() == GlobalItemType.SOUL_MARK) {
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.GOT_SOUL_MARK, sItem.getId(), (int)itemNum);
|
||||
}
|
||||
if(sItem.getId()==Global.DAILY_TASK_REMOVE_ITEM){
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,itemNum,user);
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,(int)itemNum,user);
|
||||
}
|
||||
//日志记录
|
||||
ItemLogic.getInstance().addItemLog(new ItemLog(user,0,reason,item,itemNum));
|
||||
}
|
||||
|
||||
//发送装备图鉴修改推送
|
||||
SendEquipBookIndication(user.getId(),itemManager,changeEquipList);
|
||||
|
||||
|
@ -968,6 +843,7 @@ public class ItemUtil {
|
|||
if (dropBuilder != null) {
|
||||
dropBuilder.addAllItemlist(itemProtoList);
|
||||
}
|
||||
|
||||
if(!sendToFront.isEmpty()||extraItem.size()>0){
|
||||
MessageUtil.sendBagIndication(user.getId(),0,sendToFront,extraItem.size()>0);
|
||||
}
|
||||
|
@ -977,15 +853,21 @@ public class ItemUtil {
|
|||
builder.append(entry.getKey()).append("#").append(entry.getValue());
|
||||
String title = SErrorCodeEerverConfig.getI18NMessage("item_max_mail_title");
|
||||
SItem item = SItem.getsItemMap().get(entry.getKey());
|
||||
String content = SErrorCodeEerverConfig.getI18NMessage("item_max_mail_content",new String[]{item.getName(),String.valueOf(item.getItemNumlimit())});
|
||||
String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("item_max_mail_content",new String[]{item.getName(),String.valueOf(item.getItemNumlimit())},new int[]{1,0},"#");
|
||||
MailLogic.getInstance().sendMail(user.getId(),title,content,builder.toString(),TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME);
|
||||
builder = new StringBuilder();
|
||||
}
|
||||
}
|
||||
|
||||
Poster.getPoster().dispatchEvent(new AddItemEvent(user.getId(),itemMap));
|
||||
return 1;
|
||||
}
|
||||
///发送装备图鉴修改推送
|
||||
|
||||
/**
|
||||
* 发送装备图鉴修改推送
|
||||
* @param _uid
|
||||
* @param _itemManage
|
||||
* @param _equipList
|
||||
*/
|
||||
private static void SendEquipBookIndication(int _uid,ItemManager _itemManage, List<Integer>_equipList){
|
||||
if (_equipList==null||_equipList.isEmpty())return;
|
||||
List<CommonProto.EquipBookInfo>equipList=new ArrayList<>();
|
||||
|
|
Loading…
Reference in New Issue