礼包初该

master_huanxiang
PC-202302260912\Administrator 2023-06-16 13:59:34 +08:00
parent 615fd8df01
commit fc5cba8376
14 changed files with 222 additions and 171 deletions

View File

@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
/**
* @program: server
@ -14,6 +15,11 @@ import java.util.Map;
**/
public class StringUtil {
private static final Pattern NUMBER_PATTERN = Pattern.compile("-?\\d+(\\.\\d+)?");
public static boolean isNumeric(String str) {
return str != null && NUMBER_PATTERN.matcher(str).matches();
}
public static int[] parseFiledInt(String value) {
if ("null".equals(value) || StringUtil.isEmpty(value)) {
return new int[0];

View File

@ -47,4 +47,5 @@ public class MongoKey {
public final static String gmActivityManager = "gmActivityManager";
public final static String magicSoldierManager = "magicSoldierManager";
public final static String giftManager = "giftManager";
}

View File

@ -1,8 +1,10 @@
package com.ljsd.jieling.handler;
import com.alibaba.fastjson.JSON;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
import config.SRechargeCommodityNewConfig;
import org.springframework.stereotype.Component;
import rpc.protocols.CommonProto;
import rpc.protocols.HeroInfoProto;
@ -24,5 +26,6 @@ public class SaveTeamPosHandler extends BaseHandler{
int teamId = teamPosInfo.getTeamId();
List<CommonProto.TeamHeroInfo> teamHeroInfosList = teamPosInfo.getTeamHeroInfosList();
HeroLogic.getInstance().saveTeamPos(iSession,teamId,teamHeroInfosList);
LOGGER.info(JSON.toJSONString(SRechargeCommodityNewConfig.configMap.get(1)));
}
}

View File

@ -36,100 +36,100 @@ public class KtEventUtils {
public static void onKtEvent(User user, int eventType, Object... parm) {
if (user == null){
LOGGER.error("开天上报提前退出,用户不存在");
return;
}
try {
ParamEventBean paramEventBean = new ParamEventBean(eventType);
switch (eventType) {
case ParamEventBean.UserActivityEvent:
int activityId = (int) parm[0];
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
paramEventBean.add(sGlobalActivity.getSesc());
paramEventBean.add(sGlobalActivity.getSesc());
paramEventBean.add(parm[1].toString());
paramEventBean.add("COMPLETE");
break;
case ParamEventBean.UserItemEvent:
case ParamEventBean.UserCurrencyEvent:
int useReson = (int) parm[0];
int useType = (int) parm[1];
int itemId = (int) parm[2];
long itemNum = (long) parm[3];
long itemTotalNum = (long) parm[4];
paramEventBean.add(itemUseType[useType]);
paramEventBean.add(String.valueOf(useReson));
if (currencyMap.containsKey(itemId)) {
paramEventBean.add(currencyMap.get(itemId));
} else {
paramEventBean.add(String.valueOf(itemId));
}
paramEventBean.add(String.valueOf(itemNum));
PlayerManager playerInfoManager = user.getPlayerInfoManager();
if (parm.length == 6) {
String sbReson = String.valueOf(parm[5]);
BILog.info("itemflow {}|{}|{}|{}|{}|{}|{}|{}|{}", user.getId(), playerInfoManager.getLevel(), playerInfoManager.getVipLevel(), useType, useReson, itemId, itemNum, itemTotalNum, sbReson);
} else {
BILog.info("itemflow {}|{}|{}|{}|{}|{}|{}|{}", user.getId(), playerInfoManager.getLevel(), playerInfoManager.getVipLevel(), useType, useReson, itemId, itemNum, itemTotalNum);
}
break;
case ParamEventBean.UserLoginOutEvent:
case ParamEventBean.UserLogin:
int loginType = (int) parm[0];
paramEventBean.add(userloginType[loginType]);
break;
case ParamEventBean.UserStoreEvent:
int storeId = (int) parm[0];
int buyItemId = (int) parm[1];
int goldType = (int) parm[2];
int buyTimes = (int) parm[3];
int costTotal = (int) parm[4];
paramEventBean.add(String.valueOf(storeId));
paramEventBean.add(String.valueOf(buyItemId));
if (currencyMap.containsKey(goldType)) {
paramEventBean.add(currencyMap.get(goldType));
} else {
paramEventBean.add(Integer.toString(goldType));
}
paramEventBean.add(String.valueOf(buyTimes));
paramEventBean.add(String.valueOf(costTotal / buyTimes));
paramEventBean.add(String.valueOf(costTotal));
break;
case ParamEventBean.UserPayEvent:
int goodsId = (int) parm[0];
String orderId = String.valueOf(parm[1]);
String payValid = payResult[(int) parm[2]];
String amount = String.valueOf(((double) parm[3]));
SRechargeCommodityNewConfig sRechargeCommodityConfig = SRechargeCommodityNewConfig.configMap.get(goodsId);
paramEventBean.add(sRechargeCommodityConfig.getName());
paramEventBean.add(orderId);
paramEventBean.add(payValid);
paramEventBean.add(amount);
break;
case ParamEventBean.UserRegister:
break;
case ParamEventBean.UserTaskEvent:
int misionType = (int) parm[0];
int misionId = (int) parm[1];
paramEventBean.add(misionType + "_" + misionId);
paramEventBean.add("COMPLETE");
break;
case ParamEventBean.UserGameType:
paramEventBean.add("玩法");
String type = KTGameType.getName((int) parm[0]);
paramEventBean.add(String.valueOf(type));
paramEventBean.add(String.valueOf(parm[1]));
paramEventBean.add("COMPLETE");
eventType = ParamEventBean.UserActivityEvent;
break;
}
KTParam ktParam = ParamBuilder.paramBuild(user, eventType, paramEventBean);
DataMessageUtils.addLogQueue(ktParam);
}catch (Exception e){
LOGGER.error("开天上报异常:{},{},{},{}", user.getId(),eventType, Arrays.asList(parm),e);
}
// if (user == null){
// LOGGER.error("开天上报提前退出,用户不存在");
// return;
// }
// try {
// ParamEventBean paramEventBean = new ParamEventBean(eventType);
// switch (eventType) {
// case ParamEventBean.UserActivityEvent:
// int activityId = (int) parm[0];
// SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
// paramEventBean.add(sGlobalActivity.getSesc());
// paramEventBean.add(sGlobalActivity.getSesc());
// paramEventBean.add(parm[1].toString());
// paramEventBean.add("COMPLETE");
// break;
// case ParamEventBean.UserItemEvent:
// case ParamEventBean.UserCurrencyEvent:
// int useReson = (int) parm[0];
// int useType = (int) parm[1];
// int itemId = (int) parm[2];
// long itemNum = (long) parm[3];
// long itemTotalNum = (long) parm[4];
// paramEventBean.add(itemUseType[useType]);
// paramEventBean.add(String.valueOf(useReson));
// if (currencyMap.containsKey(itemId)) {
// paramEventBean.add(currencyMap.get(itemId));
// } else {
// paramEventBean.add(String.valueOf(itemId));
// }
// paramEventBean.add(String.valueOf(itemNum));
// PlayerManager playerInfoManager = user.getPlayerInfoManager();
// if (parm.length == 6) {
// String sbReson = String.valueOf(parm[5]);
// BILog.info("itemflow {}|{}|{}|{}|{}|{}|{}|{}|{}", user.getId(), playerInfoManager.getLevel(), playerInfoManager.getVipLevel(), useType, useReson, itemId, itemNum, itemTotalNum, sbReson);
// } else {
// BILog.info("itemflow {}|{}|{}|{}|{}|{}|{}|{}", user.getId(), playerInfoManager.getLevel(), playerInfoManager.getVipLevel(), useType, useReson, itemId, itemNum, itemTotalNum);
// }
// break;
// case ParamEventBean.UserLoginOutEvent:
// case ParamEventBean.UserLogin:
// int loginType = (int) parm[0];
// paramEventBean.add(userloginType[loginType]);
// break;
// case ParamEventBean.UserStoreEvent:
// int storeId = (int) parm[0];
// int buyItemId = (int) parm[1];
// int goldType = (int) parm[2];
// int buyTimes = (int) parm[3];
// int costTotal = (int) parm[4];
// paramEventBean.add(String.valueOf(storeId));
// paramEventBean.add(String.valueOf(buyItemId));
// if (currencyMap.containsKey(goldType)) {
// paramEventBean.add(currencyMap.get(goldType));
// } else {
// paramEventBean.add(Integer.toString(goldType));
// }
// paramEventBean.add(String.valueOf(buyTimes));
// paramEventBean.add(String.valueOf(costTotal / buyTimes));
// paramEventBean.add(String.valueOf(costTotal));
// break;
// case ParamEventBean.UserPayEvent:
// int goodsId = (int) parm[0];
// String orderId = String.valueOf(parm[1]);
// String payValid = payResult[(int) parm[2]];
// String amount = String.valueOf(((double) parm[3]));
// SRechargeCommodityNewConfig sRechargeCommodityConfig = SRechargeCommodityNewConfig.configMap.get(goodsId);
// paramEventBean.add(sRechargeCommodityConfig.getName());
// paramEventBean.add(orderId);
// paramEventBean.add(payValid);
// paramEventBean.add(amount);
// break;
// case ParamEventBean.UserRegister:
// break;
// case ParamEventBean.UserTaskEvent:
// int misionType = (int) parm[0];
// int misionId = (int) parm[1];
// paramEventBean.add(misionType + "_" + misionId);
// paramEventBean.add("COMPLETE");
// break;
// case ParamEventBean.UserGameType:
// paramEventBean.add("玩法");
// String type = KTGameType.getName((int) parm[0]);
// paramEventBean.add(String.valueOf(type));
// paramEventBean.add(String.valueOf(parm[1]));
// paramEventBean.add("COMPLETE");
// eventType = ParamEventBean.UserActivityEvent;
// break;
// }
//
// KTParam ktParam = ParamBuilder.paramBuild(user, eventType, paramEventBean);
// DataMessageUtils.addLogQueue(ktParam);
// }catch (Exception e){
// LOGGER.error("开天上报异常:{},{},{},{}", user.getId(),eventType, Arrays.asList(parm),e);
// }
}
public static ParamEnvironmentBean enviromentBuild(int uid) {

View File

@ -0,0 +1,48 @@
package com.ljsd.jieling.logic.dao;
import com.ljsd.common.mogodb.MongoBase;
import com.ljsd.jieling.logic.dao.root.User;
public class Gift extends MongoBase {
private String id;
private int amount;
private int count;
private String createTime;
public Gift(){
//绑定关系
this.setRootCollection(User._COLLECTION_NAME);
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
}

View File

@ -0,0 +1,32 @@
package com.ljsd.jieling.logic.dao;
import com.ljsd.common.mogodb.MongoBase;
import com.ljsd.jieling.logic.dao.root.User;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class GiftManager extends MongoBase {
private final Map<String, Gift> giftMap = new HashMap<>();
public GiftManager() {
this.setRootCollection(User._COLLECTION_NAME);
}
public void putGift(Gift gift){
giftMap.put(gift.getId(), gift);
updateString("giftMap",giftMap);
}
public Map<String, Gift> getGiftMap() {
return giftMap;
}
public Gift getGift(String id){
return giftMap.get(id);
}
}

View File

@ -15,6 +15,8 @@ public class User {
private PlayerManager playerManager;
private GiftManager giftManager;
private ItemManager itemManager;
private HeroManager heroManager;
@ -86,6 +88,7 @@ public class User {
this.hardStageManager = new HardStageManager();
this.gmActivityManager = new GmActivityManager();
this.magicSoldierManager = new MagicSoldierManager();
this.giftManager = new GiftManager();
//綁定关系
this.playerManager.init(id, MongoKey.playerManager);
@ -112,6 +115,7 @@ public class User {
this.hardStageManager.init(id,MongoKey.hardStageManager);
this.gmActivityManager.init(id,MongoKey.gmActivityManager);
this.magicSoldierManager.init(id,MongoKey.magicSoldierManager);
this.giftManager.init(id,MongoKey.giftManager);
}
public int getId() {
@ -214,6 +218,14 @@ public class User {
return guildMyInfo;
}
public GiftManager getGiftManager() {
return giftManager;
}
public void setGiftManager(GiftManager giftManager) {
this.giftManager = giftManager;
}
public ExpeditionManager getExpeditionManager() {
if(null ==expeditionManager){
this.expeditionManager = new ExpeditionManager();
@ -273,13 +285,6 @@ public class User {
return magicSoldierManager;
}
public RoomInfo getRoomInfo() {
if(roomInfo == null){
roomInfo = new RoomInfo();
}
return roomInfo;
}
public QuestionManager getQuestionManager() {
if(null ==questionManager){
this.questionManager = new QuestionManager();

View File

@ -201,21 +201,18 @@ public class BuyGoodsNewLogic {
resultRes.setResultCode(0);
ISession session = OnlineUserManager.getSessionByUid(uid);
LOGGER.info("sendGoods to uid={},the goods={},openID={},orderId={},orderTime={},amount={}",uid,sdkGoodsId,openId,orderId,orderTime,amount);
int goodsId = 0;
SRechargeCommodityNewConfig config;
if(isNumeric(sdkGoodsId)){
goodsId = Integer.parseInt(sdkGoodsId);
config = SRechargeCommodityNewConfig.configMap.get(goodsId);
}else {
config = SRechargeCommodityNewConfig.sdkconfigMap.get(sdkGoodsId);
}
if(null == config){
resultRes.setResultMsg("good config null");
LOGGER.error("sendGoods the uid={},the goodId={},购买的礼包为空",uid,goodsId);
if (!StringUtil.isNumeric(sdkGoodsId)){
return resultRes;
}
goodsId = config.getId();
SRechargeCommodityNewConfig config = SRechargeCommodityNewConfig.configMap.get(Integer.parseInt(sdkGoodsId));
if(null == config){
resultRes.setResultMsg("good config null");
LOGGER.error("sendGoods the uid={},the goodId={},购买的礼包为空",uid,sdkGoodsId);
return resultRes;
}
int goodsId = config.getId();
double price = config.getPrice();
// int cfgType = SSpecialConfig.getIntegerValue(SSpecialConfig.EXCHANGE_FORCE_TYPE);
// double price = priceTemp==0?0: SExchangeRate.doubleIntegerHashMap.get(cfgType).get((int)priceTemp);
@ -283,9 +280,9 @@ public class BuyGoodsNewLogic {
sendGiftGoodsWithoutJudge(uid);
// 推送礼包
openPush(session,user, PushRechargeType.point_recharge.getType(),goodsId,1);
// 惊喜礼盒,事件推送
Poster.getPoster().dispatchEvent(new SuperBoxEvent(user.getId(),config.getId(),1,1));
// gm充值不进行单笔充值活动
if (!gm_modifier.equals(orderId)){
// 单笔充值

View File

@ -19,6 +19,7 @@ public class AbstractWelfareBag extends MongoBase{
private int type;
private long startTime;
private long endTime;
protected int limit;
private int dailyUpdate;
private int continueDays;
@ -30,28 +31,8 @@ public class AbstractWelfareBag extends MongoBase{
private int timeType;
private boolean isUserBuyRefresh;
public AbstractWelfareBag(SRechargeCommodityNewConfig config){
public AbstractWelfareBag(){
this.setRootCollection(User._COLLECTION_NAME);
setModId(config.getId());
}
public AbstractWelfareBag(int modId, int type, long startTime, long endTime, int limit, int dailyUpdate, int continueDays, boolean open, long lastBuyTime, int buyTimes, long refreshTime, int[] privilege, int timeType, String[][] condition, boolean isUserBuyRefresh,String mongoKey,int rootId) {
this.modId = modId;
this.type = type;
this.startTime = startTime;
this.endTime = endTime;
this.limit = limit;
this.dailyUpdate = dailyUpdate;
this.continueDays = continueDays;
this.open = open;
this.lastBuyTime = lastBuyTime;
this.buyTimes = buyTimes;
this.refreshTime = refreshTime;
this.privilege = privilege;
this.timeType = timeType;
this.isUserBuyRefresh = isUserBuyRefresh;
this.setMongoKey(mongoKey);
this.setRootId(rootId);
}
/**

View File

@ -11,7 +11,7 @@ import util.TimeUtils;
public class PerpetualWelfareBag extends AbstractWelfareBag {
public PerpetualWelfareBag(User user, SRechargeCommodityNewConfig config) throws Exception{
super(config);
setModId(config.getId());
for(int[] value : getCondition()){
if(value[0] == 4){
@ -52,9 +52,7 @@ public class PerpetualWelfareBag extends AbstractWelfareBag {
setStartTime(TimeUtils.getCurMonthStartTime(1));
setRefreshTime(TimeUtils.getMonthStartTime(1,1));
}
}
public PerpetualWelfareBag(int modId, int type, long startTime, long endTime, int limit, int dailyUpdate, int continueDays, boolean open, long lastBuyTime, int buyTimes, long refreshTime, int[] privilege, int timeType, String[][] condition, boolean isUserBuyRefresh,String mongoKey,int rootId) {
super(modId, type, startTime, endTime, limit, dailyUpdate, continueDays, open, lastBuyTime, buyTimes, refreshTime, privilege, timeType, condition, isUserBuyRefresh,mongoKey,rootId);
this.setRootCollection(User._COLLECTION_NAME);
}
}

View File

@ -10,15 +10,12 @@ import util.TimeUtils;
public class PushWelfareBag extends AbstractWelfareBag {
public PushWelfareBag(User user, SRechargeCommodityNewConfig config){
super(config);
setModId(config.getId());
setStartTime(TimeUtils.now());
setEndTime(getStartTime() + getTime() * TimeUtils.HOUR);
setOpen(true);
user.getPlayerInfoManager().getNewRechargeInfo().addPush(this);
}
public PushWelfareBag(int modId, int type, long startTime, long endTime, int limit, int dailyUpdate, int continueDays, boolean open, long lastBuyTime, int buyTimes, long refreshTime, int[] privilege, int timeType, String[][] condition, boolean isUserBuyRefresh,String mongoKey,int rootId) {
super( modId, type, startTime, endTime, limit, dailyUpdate, continueDays, open, lastBuyTime, buyTimes, refreshTime, privilege, timeType, condition, isUserBuyRefresh, mongoKey,rootId);
this.setRootCollection(User._COLLECTION_NAME);
}
@Override

View File

@ -15,10 +15,10 @@ public class ReceiveWelfareBag extends AbstractWelfareBag {
private long getRewardTime;
private boolean bought ;
private boolean bought;
public ReceiveWelfareBag(User user, SRechargeCommodityNewConfig config) throws Exception{
super(config);
setModId(config.getId());
for(int[] value : getCondition()){
if(value[0] == 4){
switch (config.getTime()){
@ -48,12 +48,7 @@ public class ReceiveWelfareBag extends AbstractWelfareBag {
if(getDailyUpdate() > 0){
setRefreshTime(getStartTime() + getDailyUpdate() * TimeUtils.DAY);
}
}
public ReceiveWelfareBag(int modId, int type, long startTime, long endTime, int limit, int dailyUpdate, int continueDays, boolean open, long lastBuyTime, int buyTimes, long refreshTime, int[] privilege, int timeType, String[][] condition, boolean isUserBuyRefresh, boolean bought,long getRewardTime,String mongoKey,int rootId) {
super(modId, type, startTime, endTime, limit, dailyUpdate, continueDays, open, lastBuyTime, buyTimes, refreshTime, privilege, timeType, condition, isUserBuyRefresh,mongoKey,rootId);
this.bought = bought;
this.getRewardTime = getRewardTime;
this.setRootCollection(User._COLLECTION_NAME);
}
public boolean isBought() {

View File

@ -11,7 +11,7 @@ import util.TimeUtils;
public class TimeLimitWelfareBag extends AbstractWelfareBag {
public TimeLimitWelfareBag(User user, SRechargeCommodityNewConfig config){
super(config);
setModId(config.getId());
for(int[] value : getCondition()){
if(value[0] == 3){
int anInt = value[1];
@ -26,13 +26,9 @@ public class TimeLimitWelfareBag extends AbstractWelfareBag {
if(getDailyUpdate() > 0){
setRefreshTime(TimeUtils.getBeginOfDay(getStartTime())+ getDailyUpdate() * TimeUtils.DAY);
}
this.setRootCollection(User._COLLECTION_NAME);
}
public TimeLimitWelfareBag(int modId, int type, long startTime, long endTime, int limit, int dailyUpdate, int continueDays, boolean open, long lastBuyTime, int buyTimes, long refreshTime, int[] privilege, int timeType, String[][] condition, boolean isUserBuyRefresh,String mongoKey,int rootId) {
super(modId, type, startTime, endTime, limit, dailyUpdate, continueDays, open, lastBuyTime, buyTimes, refreshTime, privilege, timeType, condition, isUserBuyRefresh,mongoKey,rootId);
}
@Override
public boolean buy() {
setRefreshTime(TimeUtils.getTodayZero() + getDailyUpdate() * TimeUtils.DAY);

View File

@ -20,27 +20,17 @@ public class SRechargeCommodityNewConfig implements BaseConfig {
private int type;
private double price;
private int tianJianglibao;
private int[][] firstMultiple;
private int[] continuedMultiple;
private int[][] baseReward;
private int[] openPrivilege;
private int[][] bTVIPlevel;
private int contiueDays;
private int limit;
private int firstInvest;
private int accumulativeRecharge;
private int time;
private int[][] onSaleRule;
private int dailyUpdate;
private int[] mail;
@ -51,8 +41,6 @@ public class SRechargeCommodityNewConfig implements BaseConfig {
private int[][] extraReward;
private int[][] gainFame;
private int[][] gainCrystal;
private String rechargeId2;
private String rechargeId3;
private String rechargeId4;
@ -207,4 +195,8 @@ public class SRechargeCommodityNewConfig implements BaseConfig {
public int[][] getGainCrystal() {
return gainCrystal;
}
public int getTianJianglibao() {
return tianJianglibao;
}
}