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

# Conflicts:
#	serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java
#	serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/NewRechargeInfo.java
back_recharge
mengchengzhen 2021-04-26 12:01:08 +08:00
commit 54a3149de6
13 changed files with 481 additions and 136 deletions

View File

@ -0,0 +1,31 @@
package com.ljsd.jieling.db.mongo;
import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
import com.ljsd.jieling.globals.GlobalItemType;
import com.ljsd.jieling.logic.store.newRechargeInfo.RechargeType;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.*;
import com.mongodb.BasicDBObject;
import config.SRechargeCommodityNewConfig;
import manager.STableManager;
import org.bson.json.JsonWriterSettings;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.ReadingConverter;
@ReadingConverter
public class MongoWelfareBagConverter implements Converter<BasicDBObject, PerpetualWelfareBag> {
// private static JsonWriterSettings jsonWriterSettings = new JsonWriterSettings();
Gson gson = new Gson();
@Override
public PerpetualWelfareBag convert(BasicDBObject source) {
SRechargeCommodityNewConfig config = STableManager.getConfig(SRechargeCommodityNewConfig.class).get(source.getInt("modId"));
Class<? extends PerpetualWelfareBag> target = PerpetualWelfareBag.class;
if(config.getOtype() == RechargeType.perpetual.getType()){
target = PerpetualWelfareBag.class;
}
String s = gson.toJson(source);
// String realJson = source.toJson(jsonWriterSettinsgs);
PerpetualWelfareBag bag = JSON.parseObject(s,target);
return bag;
}
}

View File

@ -0,0 +1,32 @@
package com.ljsd.jieling.db.mongo.core;
import com.alibaba.fastjson.JSON;
import com.ljsd.jieling.globals.GlobalItemType;
import com.ljsd.jieling.logic.store.newRechargeInfo.RechargeType;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.*;
import com.mongodb.BasicDBObject;
import config.SRechargeCommodityNewConfig;
import manager.STableManager;
import org.bson.json.JsonWriterSettings;
import org.springframework.core.convert.converter.Converter;
public class MongoWelfareBagConverter implements Converter<BasicDBObject, AbstractWelfareBag> {
private static JsonWriterSettings jsonWriterSettings = new JsonWriterSettings();
@Override
public AbstractWelfareBag convert(BasicDBObject source) {
SRechargeCommodityNewConfig config = STableManager.getConfig(SRechargeCommodityNewConfig.class).get(source.getInt("modId"));
Class<? extends AbstractWelfareBag> target = AbstractWelfareBag.class;
if(config.getOtype() == RechargeType.perpetual.getType()){
target = PerpetualWelfareBag.class;
}else if(config.getOtype() == RechargeType.timeLimit.getType()){
target = TimeLimitWelfareBag.class;
}else if(config.getOtype() == RechargeType.receive.getType()){
target = ReceiveWelfareBag.class;
}else if(config.getOtype() == RechargeType.push.getType()){
target = PushWelfareBag.class;
}
String realJson = source.toJson(jsonWriterSettings);
AbstractWelfareBag bag = JSON.parseObject(realJson,target);
return bag;
}
}

View File

@ -32,6 +32,7 @@ import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.logic.store.newRechargeInfo.NewRechargeInfo;
import com.ljsd.jieling.logic.store.newRechargeInfo.RechargeType;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.*;
import com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler.RechargeHandler;
import com.ljsd.jieling.network.server.ProtocolsManager;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.thrift.idl.Result;
@ -57,71 +58,74 @@ public class BuyGoodsNewLogic {
private static final Logger LOGGER = LoggerFactory.getLogger(BuyGoodsNewLogic.class);
public static RechargeHandler getRechargeHandler(int type){
return RechargeType.getHandler(type);
}
/**
*
*/
public static boolean refreshWelfareState(User user){
public static boolean refreshWelfareState(User user) throws Exception {
boolean needChange = false;
List<AbstractWelfareBag> pAddList = new ArrayList<>();
List<Integer> garbageList = new ArrayList<>();
NewRechargeInfo info = user.getPlayerInfoManager().getNewRechargeInfo();
if(info == null){
info = new NewRechargeInfo();
user.getPlayerInfoManager().setNewRechargeInfo(info);
}
for(Map.Entry<Integer,SRechargeCommodityNewConfig> entry : SRechargeCommodityNewConfig.configMap.entrySet()){
if(entry.getValue().getOnSaleRule().equals("") || entry.getValue().getOtype() == 0){
continue;
}
Map<Integer, PerpetualWelfareBag> perpetualWelfareBagMap = info.getPerpetualMap();
Map<Integer, TimeLimitWelfareBag> timeLimitWelfareBagMap = info.getTimeLimitMap();
Map<Integer, ReceiveWelfareBag> receiveWelfareBagMap = info.getReceiveMap();
Map<Integer, PushWelfareBag> pushWelfareBagMap = info.getPushMap();
if(perpetualWelfareBagMap.containsKey(entry.getKey())){
if(refreshUnitWF(perpetualWelfareBagMap.get(entry.getKey()),garbageList,user) && !needChange){
needChange = true;
//<<<<<<< HEAD
// if(entry.getValue().getOnSaleRule().equals("") || entry.getValue().getOtype() == 0){
// continue;
// }
// Map<Integer, PerpetualWelfareBag> perpetualWelfareBagMap = info.getPerpetualMap();
// Map<Integer, TimeLimitWelfareBag> timeLimitWelfareBagMap = info.getTimeLimitMap();
// Map<Integer, ReceiveWelfareBag> receiveWelfareBagMap = info.getReceiveMap();
// Map<Integer, PushWelfareBag> pushWelfareBagMap = info.getPushMap();
// if(perpetualWelfareBagMap.containsKey(entry.getKey())){
// if(refreshUnitWF(perpetualWelfareBagMap.get(entry.getKey()),garbageList,user) && !needChange){
// needChange = true;
// }
// }else if(timeLimitWelfareBagMap.containsKey(entry.getKey())){
// if(refreshUnitWF(timeLimitWelfareBagMap.get(entry.getKey()),garbageList,user) && !needChange){
// needChange = true;
// }
// }else if(receiveWelfareBagMap.containsKey(entry.getKey())){
// if(refreshUnitWF(receiveWelfareBagMap.get(entry.getKey()),garbageList,user) && !needChange){
// needChange = true;
// }
// }else if(pushWelfareBagMap.containsKey(entry.getKey())){
// if(refreshUnitWF(pushWelfareBagMap.get(entry.getKey()),garbageList,user) && !needChange){
// needChange = true;
// }
// }else if(info.getGarbage().contains(entry.getKey())){
//=======
//获取处理类
RechargeHandler rechargeHandler = getRechargeHandler(entry.getValue().getOtype());
//判断对应的Map是否已经有了信息
if(rechargeHandler.rechargeIsInBag(user,entry.getKey())){
boolean refreshStatus = rechargeHandler.refreshStatus(user,entry.getKey());
if(!needChange) {
needChange = refreshStatus;
}
}else if(timeLimitWelfareBagMap.containsKey(entry.getKey())){
if(refreshUnitWF(timeLimitWelfareBagMap.get(entry.getKey()),garbageList,user) && !needChange){
needChange = true;
}
}else if(receiveWelfareBagMap.containsKey(entry.getKey())){
if(refreshUnitWF(receiveWelfareBagMap.get(entry.getKey()),garbageList,user) && !needChange){
needChange = true;
}
}else if(pushWelfareBagMap.containsKey(entry.getKey())){
if(refreshUnitWF(pushWelfareBagMap.get(entry.getKey()),garbageList,user) && !needChange){
needChange = true;
}
}else if(info.getGarbage().contains(entry.getKey())){
continue;
}else{
AbstractWelfareBag bag = initUnitWF(user,entry.getValue());
//没有的话新初始化信息
AbstractWelfareBag bag = rechargeHandler.initUnitWF(user, entry.getValue());
pAddList.add(bag);
if(refreshUnitWF(bag,garbageList,user) && !needChange){
if(refreshUnitWF(bag,user) && !needChange){
needChange = true;
}
}
}
//添加新增礼包
for(AbstractWelfareBag bag : pAddList){
if(bag.getType() == RechargeType.perpetual.getType()){
info.addPerpetual((PerpetualWelfareBag) bag);
}else if(bag.getType() == RechargeType.timeLimit.getType()){
info.addTimeLimit((TimeLimitWelfareBag) bag);
}else if(bag.getType() == RechargeType.receive.getType()){
info.addReceive((ReceiveWelfareBag)bag);
}else if(bag.getType() == RechargeType.push.getType()){
info.addPush((PushWelfareBag)bag);
}
}
if(garbageList.size()>0){
//添加新垃圾礼包
info.addGarbage(garbageList);
//缓存删除垃圾礼包
for(Integer i : garbageList){
info.getTimeLimitMap().remove(i);
}
int type = bag.getType();
RechargeHandler rechargeHandler = getRechargeHandler(type);
rechargeHandler.addNew(user,bag);
}
return needChange;
}
@ -174,7 +178,9 @@ public class BuyGoodsNewLogic {
return resultRes;
}
goodsId = config.getId();
if(goodsId == 507){
System.out.println();
}
double priceTemp =config.getPrice();
int cfgType = SSpecialConfig.getIntegerValue(SSpecialConfig.EXCHANGE_FORCE_TYPE);
double price = priceTemp==0?0: SExchangeRate.doubleIntegerHashMap.get(cfgType).get((int)priceTemp);
@ -185,15 +191,17 @@ public class BuyGoodsNewLogic {
User user = UserManager.getUser(uid);
NewRechargeInfo info = user.getPlayerInfoManager().getNewRechargeInfo();
AbstractWelfareBag bag = null;
if(config.getOtype() == RechargeType.perpetual.getType()){
bag = info.getPerpetualMap().get(goodsId);
}else if(config.getOtype() == RechargeType.timeLimit.getType()){
bag = info.getTimeLimitMap().get(goodsId);
}else if(config.getOtype() == RechargeType.receive.getType()){
bag = info.getReceiveMap().get(goodsId);
}else if(config.getOtype() == RechargeType.push.getType()){
bag = info.getPushMap().get(goodsId);
}
RechargeHandler rechargeHandler = getRechargeHandler(config.getOtype());
// if(config.getOtype() == RechargeType.perpetual.getType()){
// bag = info.getPerpetualMap().get(goodsId);
// }else if(config.getOtype() == RechargeType.timeLimit.getType()){
// bag = info.getTimeLimitMap().get(goodsId);
// }else if(config.getOtype() == RechargeType.receive.getType()){
// bag = info.getReceiveMap().get(goodsId);
// }else if(config.getOtype() == RechargeType.push.getType()){
// bag = info.getPushMap().get(goodsId);
// }
bag = rechargeHandler.getRechargeMap(user).get(goodsId);
String rewardStr="";
if(bag == null || !bag.buy()){
LOGGER.error("购买失败bag是否为空:{}",bag == null);
@ -230,7 +238,7 @@ public class BuyGoodsNewLogic {
notifyPaySuccessFul(uid,goodsId,amount != -999);
// Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.RECHARGE_BUY.getType(),goodsId));
MongoUtil.getLjsdMongoTemplate().lastUpdate();
sendGiftGooodsIndication(uid);
sendGiftGoodsWithoutJudge(uid);
onChargeSuccess(user,price,0,orderId,cfgType);//充值成功上报
Map<Integer, Integer> mapReward = ItemUtil.arrayToMap(config.getBaseReward());
if(price>0){
@ -263,9 +271,19 @@ public class BuyGoodsNewLogic {
public static void sendGiftGooodsIndication(int uid) throws Exception {
List<CommonProto.GiftGoodsInfo> goodsBagInfo = new ArrayList<>(SRechargeCommodityNewConfig.configMap.size());
boolean change = getGoodsBagInfo(uid, goodsBagInfo);
boolean needChange = getGoodsBagInfo(uid, goodsBagInfo);
ISession session = OnlineUserManager.getSessionByUid(uid);
if(session!=null && change){
if(session!=null && needChange){
PlayerInfoProto.AllGiftGoodsIndication build = PlayerInfoProto.AllGiftGoodsIndication.newBuilder().addAllGiftGoodsInfo(goodsBagInfo).build();
MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.ALL_GIFTGOODS_INDICATION_VALUE,build,true);
}
}
public static void sendGiftGoodsWithoutJudge(int uid) throws Exception {
List<CommonProto.GiftGoodsInfo> goodsBagInfo = new ArrayList<>(SRechargeCommodityNewConfig.configMap.size());
getGoodsBagInfo(uid, goodsBagInfo);
ISession session = OnlineUserManager.getSessionByUid(uid);
if(session!=null){
PlayerInfoProto.AllGiftGoodsIndication build = PlayerInfoProto.AllGiftGoodsIndication.newBuilder().addAllGiftGoodsInfo(goodsBagInfo).build();
MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.ALL_GIFTGOODS_INDICATION_VALUE,build,true);
}
@ -359,8 +377,16 @@ public class BuyGoodsNewLogic {
.setHadBuy(user.getPlayerInfoManager().getHadBuyTreasure()).setLevel(user.getPlayerInfoManager().getTreasureLevel()).build();
MessageUtil.sendIndicationMessage(OnlineUserManager.getSessionByUid(user.getId()),1,MessageTypeProto.MessageType.TREASURE_LEVELUP_INDICATION_VALUE,indication,true);
}
String title = SErrorCodeEerverConfig.getMsgById(config.getMail()[0]);
String content = SErrorCodeEerverConfig.getMsgById(config.getMail()[1]);
String title = "";
String content ="";
int titleId = (config.getMail()==null || config.getMail().length<1)?-1:config.getMail()[0];
int contentId = (config.getMail()==null || config.getMail().length<1)?-1:config.getMail()[1];
if(titleId != -1){
title = SErrorCodeEerverConfig.getMsgById(titleId);
}
if(contentId != -1){
content = SErrorCodeEerverConfig.getMsgById(contentId);
}
//发货
if(!rewardStr.isEmpty()){
int nowTime =(int) (TimeUtils.now()/1000);
@ -425,38 +451,71 @@ public class BuyGoodsNewLogic {
/**
*
*/
public static boolean refreshUnitWF(AbstractWelfareBag bag,List<Integer> garbageList,User user){
if(bag.isProhibited() && !garbageList.contains(bag.getModId())){
garbageList.add(bag.getModId());
return false;
public static boolean refreshUnitWF(AbstractWelfareBag bag,User user){
if(bag.getModId() == 78 || bag.getModId() == 79){
System.out.println();
}
//判断刷新时间
if(bag.getRefreshTime() > System.currentTimeMillis()){
if(bag.getRefreshTime() != 0 && bag.getRefreshTime() < System.currentTimeMillis()){
bag.setOpen(true);
bag.setStartTime(bag.getRefreshTime());
bag.setStartTime(TimeUtils.getTodayZero());
bag.refresh();
}
if(bag.isOpen()){
if(bag.getType() != 1 && System.currentTimeMillis() > bag.getEndTime()){
if(bag.getType() != 1 && bag.getEndTime() != 0 && System.currentTimeMillis() > bag.getEndTime()){
bagTimeUp(user,bag);
}
}else{
boolean open = true;
if(System.currentTimeMillis() > bag.getStartTime()){
if(bag.getType() != RechargeType.perpetual.getType()){
for(String[] con : bag.getCondition()){
if(!judgeOpen(con,user)){
open = false;
break;
if(bag.getType() == RechargeType.timeLimit.getType()){//活动类型特殊处理
for(String[] I : bag.getCondition()){
if(I[0].equals("3")){
if(ActivityLogic.checkActivityOpen(user,Integer.parseInt(I[1]))){
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(Integer.parseInt(I[1]));
bag.setStartTime(sGlobalActivity.getStartTimeLong());
bag.setEndTime(sGlobalActivity.getEndTimeLong());
bag.setOpen(true);
}
}
}
}else {
open = false;
}
if(open){
bag.setOpen(true);
return true;
}else{
if(bag.getTimeType() == 9){
boolean init = true;
for(String[] con : bag.getCondition()){
if(!judgeOpen(con,user)){
init = false;
break;
}
}
if(init){
long endTime = 0;
for(String[] con : bag.getCondition()){
if(con[0].equals("4")){
endTime = Long.parseLong(con[1]);
}
}
bag.setStartTime(TimeUtils.getTodayZero());
bag.setEndTime(TimeUtils.getTodayZero() + endTime);
bag.setOpen(true);
}
}else{
boolean open = true;
if(System.currentTimeMillis() > bag.getStartTime()){
if(bag.getType() > RechargeType.timeLimit.getType()){
for(String[] con : bag.getCondition()){
if(!judgeOpen(con,user)){
open = false;
break;
}
}
}
}else {
open = false;
}
if(open){
bag.setOpen(true);
return true;
}
}
}
}
return false;
@ -488,10 +547,6 @@ public class BuyGoodsNewLogic {
*/
public static void bagTimeUp(User user,AbstractWelfareBag bag){
bag.setOpen((false));
if(bag.getType() == RechargeType.timeLimit.getType() && bag.getDailyUpdate()<1){
bag.setProhibited(true);
user.getPlayerInfoManager().getNewRechargeInfo().removeTimeLimit((TimeLimitWelfareBag)bag);
}
if(bag.getType() == RechargeType.push.getType()){
user.getPlayerInfoManager().getNewRechargeInfo().removePush((PushWelfareBag) bag);
}
@ -501,17 +556,19 @@ public class BuyGoodsNewLogic {
* ()
*/
public static boolean judgeOpen(String[] con,User user) {
if(con[0].equals("1")){
if(con[0].equals("1")){//玩家等级
int level = user.getPlayerInfoManager().getLevel();
if(Integer.parseInt(con[1]) <= level && level <= Integer.parseInt(con[2])){
return true;
}
}else if(con[0].equals("2")){
}else if(con[0].equals("2")){//功能开启
return GlobalDataManaager.getInstance().checkIsOpen(Integer.parseInt(con[1]));
}else if(con[0].equals("3")){
}else if(con[0].equals("5")){
}else if(con[0].equals("3")){//活动开启
return ActivityLogic.checkActivityOpen(user,Integer.parseInt(con[1]));
}else if(con[0].equals("4")){//时间类全部true
return true;
}else if(con[0].equals("5")){//激活高级月卡
return user.getPlayerInfoManager().getMonthCard().get(Global.LMONTHCARDID)==null?false:true;
}
return false;
}
@ -558,7 +615,12 @@ public class BuyGoodsNewLogic {
builder.setBuyTimes(bag.getBuyTimes());
builder.setStartTime((int)(bag.getStartTime()/1000));
builder.setEndTime((int)(bag.getEndTime()/1000));
builder.setDynamicBuyTimes(bag.getLimit() - bag.getBuyTimes());
if(bag.getLimit() == 0){
builder.setDynamicBuyTimes(1);
}else{
builder.setDynamicBuyTimes(bag.getLimit() - bag.getBuyTimes());
}
return builder.build();
}
@ -629,4 +691,18 @@ public class BuyGoodsNewLogic {
}
return con.getPacks()[index];
}
/**
*
*/
public static List<CommonProto.GoodsTypeDuration> getGoodsTypeDurations(User user){
List<CommonProto.GoodsTypeDuration> list = new ArrayList<>();
NewRechargeInfo info = user.getPlayerInfoManager().getNewRechargeInfo();
for(AbstractWelfareBag bag : info.getTimeLimitBagList()){
CommonProto.GoodsTypeDuration goodsTypeDuration = CommonProto.GoodsTypeDuration.newBuilder()
.setGoodsType(bag.getModId()).setEndTime((int)(bag.getEndTime()/1000)).build();
list.add(goodsTypeDuration);
}
return list;
}
}

View File

@ -1,16 +1,14 @@
package com.ljsd.jieling.logic.store.newRechargeInfo;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.PerpetualWelfareBag;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.PushWelfareBag;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.ReceiveWelfareBag;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.TimeLimitWelfareBag;
import com.ljsd.common.mogodb.MongoBase;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class NewRechargeInfo {
public class NewRechargeInfo extends MongoBase {
private double rr;//累计充值
@ -25,7 +23,6 @@ public class NewRechargeInfo {
private Map<Integer,TimeLimitWelfareBag> timeLimitMap = new HashMap<>();//限时刷新礼包
private Map<Integer,ReceiveWelfareBag> receiveMap = new HashMap<>();//限时刷新礼包
private Map<Integer,PushWelfareBag> pushMap = new HashMap<>();//推送礼包
private List<Integer> garbage = new ArrayList<>();//废弃礼包
private long lostTime; //上次记录时间
private int mainLineLost; //记录主线失败次数
@ -49,12 +46,34 @@ public class NewRechargeInfo {
return false;
}
public List<AbstractWelfareBag> getTimeLimitBagList(){
List<AbstractWelfareBag> list = new ArrayList<>();
for(AbstractWelfareBag bag : timeLimitMap.values()){
if(bag.getEndTime() > 0){
list.add(bag);
}
}
for(AbstractWelfareBag bag : receiveMap.values()){
if(bag.getEndTime() > 0){
list.add(bag);
}
}
for(AbstractWelfareBag bag : pushMap.values()){
if(bag.getEndTime() > 0){
list.add(bag);
}
}
return list;
}
public double getRr() {
return rr;
}
public void setRr(double rr) {
this.rr = rr;
updateString("rr",rr);
}
public double getMonthRr() {
@ -63,6 +82,8 @@ public class NewRechargeInfo {
public void setMonthRr(double monthRr) {
this.monthRr = monthRr;
updateString("monthRr",monthRr);
}
public double getsMonthRr() {
@ -71,6 +92,7 @@ public class NewRechargeInfo {
public void setsMonthRr(double sMonthRr) {
this.sMonthRr = sMonthRr;
updateString("sMonthRr",sMonthRr);
}
public boolean getIsFirst() {
@ -79,6 +101,7 @@ public class NewRechargeInfo {
public void setIsFirst(boolean isFirst) {
this.isFirst = isFirst;
updateString("isFirst",isFirst);
}
public long getFirstTime() {
@ -87,6 +110,7 @@ public class NewRechargeInfo {
public void setFirstTime(long firstTime) {
this.firstTime = firstTime;
updateString("firstTime",firstTime);
}
public int getIsDayFirst() {
@ -95,74 +119,57 @@ public class NewRechargeInfo {
public void setIsDayFirst(int isDayFirst) {
this.isDayFirst = isDayFirst;
updateString("isDayFirst",isDayFirst);
}
public Map<Integer, PerpetualWelfareBag> getPerpetualMap() {
return perpetualMap;
}
public void setPerpetualMap(Map<Integer, PerpetualWelfareBag> perpetualMap) {
this.perpetualMap = perpetualMap;
}
public Map<Integer, TimeLimitWelfareBag> getTimeLimitMap() {
return timeLimitMap;
}
public void setTimeLimitMap(Map<Integer, TimeLimitWelfareBag> timeLimitMap) {
this.timeLimitMap = timeLimitMap;
}
public Map<Integer, ReceiveWelfareBag> getReceiveMap() {
return receiveMap;
}
public void setReceiveMap(Map<Integer, ReceiveWelfareBag> receiveMap) {
this.receiveMap = receiveMap;
}
public Map<Integer, PushWelfareBag> getPushMap() {
return pushMap;
}
public void setPushMap(Map<Integer, PushWelfareBag> pushMap) {
this.pushMap = pushMap;
}
public List<Integer> getGarbage() {
return garbage;
}
public void setGarbage(List<Integer> garbage) {
this.garbage = garbage;
}
public void addPerpetual(PerpetualWelfareBag bag){
perpetualMap.put(bag.getModId(),bag);
bag.init(this.getRootId(),getMongoKey() + ".perpetualMap." + bag.getModId());
updateString("perpetualMap",perpetualMap);
}
public void addTimeLimit(TimeLimitWelfareBag bag){
timeLimitMap.put(bag.getModId(),bag);
}
public void removeTimeLimit(TimeLimitWelfareBag bag){
timeLimitMap.remove(bag.getModId());
bag.init(this.getRootId(),getMongoKey() + ".timeLimitMap." + bag.getModId());
updateString("timeLimitMap",timeLimitMap);
}
public void addReceive(ReceiveWelfareBag bag){
receiveMap.put(bag.getModId(),bag);
bag.init(this.getRootId(),getMongoKey() + ".receiveMap." + bag.getModId());
updateString("receiveMap",receiveMap);
}
public void addPush(PushWelfareBag bag){
pushMap.put(bag.getModId(),bag);
bag.init(this.getRootId(),getMongoKey() + ".pushMap." + bag.getModId());
updateString("pushMap",pushMap);
}
public void removePush(PushWelfareBag bag){
pushMap.remove(bag.getModId());
}
public void addGarbage(List<Integer> list){
garbage.addAll(list);
updateString("pushMap",pushMap);
}
public int getMainLineLost() {
@ -171,10 +178,12 @@ public class NewRechargeInfo {
public void setMainLineLost(int mainLineLost) {
this.mainLineLost = mainLineLost;
updateString("mainLineLost",mainLineLost);
}
public void addMainLineLost() {
mainLineLost++;
updateString("mainLineLost",mainLineLost);
}
public int getTowerLost() {
@ -183,9 +192,11 @@ public class NewRechargeInfo {
public void setTowerLost(int towerLost) {
this.towerLost = towerLost;
updateString("towerLost",towerLost);
}
public void addTowerLost() {
towerLost++;
updateString("towerLost",towerLost);
}
}

View File

@ -1,19 +1,43 @@
package com.ljsd.jieling.logic.store.newRechargeInfo;
import com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler.*;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public enum RechargeType {
perpetual(1),
timeLimit(2),
receive(3),
push(4),
perpetual(1,new PerpetualHandler()),
timeLimit(2,new TimeLimitHandler()),
receive(3,new ReceiveHandler()),
push(4,new PushHandler()),
;
private int type;
RechargeType(int type){
private RechargeHandler rechargeHandler;
RechargeType(int type, RechargeHandler rechargeHandler){
this.type = type;
this.rechargeHandler = rechargeHandler;
}
private static Map<Integer,RechargeType> rankMap;
static {
rankMap = new HashMap<>();
RechargeType[] values = RechargeType.values();
Arrays.stream(values).forEach(n->rankMap.put(n.getType(),n));
}
public int getType() {
return type;
}
public RechargeHandler getRechargeHandler() {
return rechargeHandler;
}
public static RechargeHandler getHandler(int type){
return rankMap.get(type).getRechargeHandler();
}
}

View File

@ -1,6 +0,0 @@
package com.ljsd.jieling.logic.store.newRechargeInfo.bean;
public interface WelfareBag {
public boolean buy();
public String sendGoods() throws Exception;
}

View File

@ -0,0 +1,35 @@
package com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.store.BuyGoodsNewLogic;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag;
import config.SRechargeCommodityNewConfig;
import java.util.Map;
/**
* @author lvxinran
* @date 2021/4/20
* @discribe
*/
public abstract class AbstractRechargeHandler implements RechargeHandler {
@Override
public boolean refreshStatus(User user,int rechargeId){
Map<Integer, ? extends AbstractWelfareBag> rechargeMap = getRechargeMap(user);
return BuyGoodsNewLogic.refreshUnitWF(rechargeMap.get(rechargeId), user.getPlayerInfoManager().getNewRechargeInfo().getGarbage(), user);
}
@Override
public abstract Map<Integer, ? extends AbstractWelfareBag> getRechargeMap(User user);
@Override
public boolean rechargeIsInBag(User user, int rechargeId) {
return getRechargeMap(user).containsKey(rechargeId);
}
@Override
public abstract AbstractWelfareBag initUnitWF(User user, SRechargeCommodityNewConfig config) throws Exception;
}

View File

@ -0,0 +1,32 @@
package com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.PerpetualWelfareBag;
import config.SRechargeCommodityNewConfig;
import java.util.Map;
/**
* @author lvxinran
* @date 2021/4/20
* @discribe
*/
public class PerpetualHandler extends AbstractRechargeHandler{
@Override
public Map<Integer, ? extends AbstractWelfareBag> getRechargeMap(User user) {
return user.getPlayerInfoManager().getNewRechargeInfo().getPerpetualMap();
}
@Override
public AbstractWelfareBag initUnitWF(User user, SRechargeCommodityNewConfig config) throws Exception {
return new PerpetualWelfareBag(user,config);
}
@Override
public void addNew(User user, AbstractWelfareBag bag) {
user.getPlayerInfoManager().getNewRechargeInfo().addPerpetual((PerpetualWelfareBag) bag);
}
}

View File

@ -0,0 +1,30 @@
package com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.PushWelfareBag;
import config.SRechargeCommodityNewConfig;
import java.util.Map;
/**
* @author lvxinran
* @date 2021/4/20
* @discribe
*/
public class PushHandler extends AbstractRechargeHandler {
@Override
public Map<Integer, ? extends AbstractWelfareBag> getRechargeMap(User user) {
return user.getPlayerInfoManager().getNewRechargeInfo().getPushMap();
}
@Override
public AbstractWelfareBag initUnitWF(User user, SRechargeCommodityNewConfig config) {
return new PushWelfareBag(config);
}
@Override
public void addNew(User user, AbstractWelfareBag bag) {
user.getPlayerInfoManager().getNewRechargeInfo().addPush((PushWelfareBag) bag);
}
}

View File

@ -0,0 +1,30 @@
package com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.ReceiveWelfareBag;
import config.SRechargeCommodityNewConfig;
import java.util.Map;
/**
* @author lvxinran
* @date 2021/4/20
* @discribe
*/
public class ReceiveHandler extends AbstractRechargeHandler {
@Override
public Map<Integer, ? extends AbstractWelfareBag> getRechargeMap(User user) {
return user.getPlayerInfoManager().getNewRechargeInfo().getReceiveMap();
}
@Override
public AbstractWelfareBag initUnitWF(User user, SRechargeCommodityNewConfig config)throws Exception {
return new ReceiveWelfareBag(user,config);
}
@Override
public void addNew(User user, AbstractWelfareBag bag) {
user.getPlayerInfoManager().getNewRechargeInfo().addReceive((ReceiveWelfareBag) bag);
}
}

View File

@ -0,0 +1,20 @@
package com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag;
import config.SRechargeCommodityNewConfig;
import java.util.Map;
public interface RechargeHandler {
boolean refreshStatus(User user,int rechargeId);
Map<Integer,? extends AbstractWelfareBag> getRechargeMap(User user);
boolean rechargeIsInBag(User user,int rechargeId);
void addNew(User user,AbstractWelfareBag bag);
AbstractWelfareBag initUnitWF(User user, SRechargeCommodityNewConfig config) throws Exception;
}

View File

@ -0,0 +1,30 @@
package com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.TimeLimitWelfareBag;
import config.SRechargeCommodityNewConfig;
import java.util.Map;
/**
* @author lvxinran
* @date 2021/4/20
* @discribe
*/
public class TimeLimitHandler extends AbstractRechargeHandler{
@Override
public Map<Integer, ? extends AbstractWelfareBag> getRechargeMap(User user) {
return user.getPlayerInfoManager().getNewRechargeInfo().getTimeLimitMap();
}
@Override
public AbstractWelfareBag initUnitWF(User user, SRechargeCommodityNewConfig config) throws Exception {
return new TimeLimitWelfareBag(user,config);
}
@Override
public void addNew(User user, AbstractWelfareBag bag) {
user.getPlayerInfoManager().getNewRechargeInfo().addTimeLimit((TimeLimitWelfareBag) bag);
}
}

View File

@ -6,7 +6,7 @@ import manager.Table;
import java.util.HashMap;
import java.util.Map;
@Table(name ="RechargeCommodityNewConfig")
@Table(name ="RechargeCommodityConfig")
public class SRechargeCommodityNewConfig implements BaseConfig {
private int id;