礼包优化
parent
c48ad44e27
commit
96163db7b5
|
@ -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;
|
||||
|
@ -60,36 +61,29 @@ public class BuyGoodsNewLogic {
|
|||
/**
|
||||
* 登录刷新礼包
|
||||
*/
|
||||
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();
|
||||
for(Map.Entry<Integer,SRechargeCommodityNewConfig> entry : SRechargeCommodityNewConfig.configMap.entrySet()){
|
||||
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())){
|
||||
|
||||
if(info.getGarbage().contains(entry.getKey())){
|
||||
continue;
|
||||
}
|
||||
|
||||
//获取处理类
|
||||
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{
|
||||
AbstractWelfareBag bag = initUnitWF(user,entry.getValue());
|
||||
//没有的话新初始化信息
|
||||
AbstractWelfareBag bag = rechargeHandler.initUnitWF(user, entry.getValue());
|
||||
pAddList.add(bag);
|
||||
if(refreshUnitWF(bag,garbageList,user) && !needChange){
|
||||
needChange = true;
|
||||
|
@ -98,15 +92,19 @@ public class BuyGoodsNewLogic {
|
|||
}
|
||||
//添加新增礼包
|
||||
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);
|
||||
}
|
||||
int type = bag.getType();
|
||||
RechargeHandler rechargeHandler = getRechargeHandler(type);
|
||||
|
||||
rechargeHandler.addNew(user,bag);
|
||||
// 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){
|
||||
//添加新垃圾礼包
|
||||
|
@ -581,4 +579,9 @@ public class BuyGoodsNewLogic {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static RechargeHandler getRechargeHandler(int type){
|
||||
return RechargeType.getHandler(type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,14 +1,17 @@
|
|||
package com.ljsd.jieling.logic.store.newRechargeInfo;
|
||||
|
||||
import com.ljsd.common.mogodb.MongoBase;
|
||||
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 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;//累计充值
|
||||
|
||||
|
@ -19,11 +22,11 @@ public class NewRechargeInfo {
|
|||
private long firstTime;//首冲时间
|
||||
private int isDayFirst;
|
||||
|
||||
private Map<Integer,PerpetualWelfareBag> perpetualMap;//永久礼包
|
||||
private Map<Integer,TimeLimitWelfareBag> timeLimitMap;//限时刷新礼包
|
||||
private Map<Integer,ReceiveWelfareBag> receiveMap;//限时刷新礼包
|
||||
private Map<Integer,PushWelfareBag> pushMap;//推送礼包
|
||||
private List<Integer> garbage;//废弃礼包
|
||||
private Map<Integer,PerpetualWelfareBag> perpetualMap = new HashMap<>();//永久礼包
|
||||
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<>();//废弃礼包
|
||||
|
||||
public double getRr() {
|
||||
return rr;
|
||||
|
@ -31,6 +34,8 @@ public class NewRechargeInfo {
|
|||
|
||||
public void setRr(double rr) {
|
||||
this.rr = rr;
|
||||
updateString("rr",rr);
|
||||
|
||||
}
|
||||
|
||||
public double getMonthRr() {
|
||||
|
@ -39,6 +44,8 @@ public class NewRechargeInfo {
|
|||
|
||||
public void setMonthRr(double monthRr) {
|
||||
this.monthRr = monthRr;
|
||||
updateString("monthRr",monthRr);
|
||||
|
||||
}
|
||||
|
||||
public double getsMonthRr() {
|
||||
|
@ -47,6 +54,7 @@ public class NewRechargeInfo {
|
|||
|
||||
public void setsMonthRr(double sMonthRr) {
|
||||
this.sMonthRr = sMonthRr;
|
||||
updateString("sMonthRr",sMonthRr);
|
||||
}
|
||||
|
||||
public boolean getIsFirst() {
|
||||
|
@ -55,6 +63,7 @@ public class NewRechargeInfo {
|
|||
|
||||
public void setIsFirst(boolean isFirst) {
|
||||
this.isFirst = isFirst;
|
||||
updateString("isFirst",isFirst);
|
||||
}
|
||||
|
||||
public long getFirstTime() {
|
||||
|
@ -63,6 +72,7 @@ public class NewRechargeInfo {
|
|||
|
||||
public void setFirstTime(long firstTime) {
|
||||
this.firstTime = firstTime;
|
||||
updateString("firstTime",firstTime);
|
||||
}
|
||||
|
||||
public int getIsDayFirst() {
|
||||
|
@ -71,54 +81,42 @@ 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);
|
||||
updateString("perpetualMap",perpetualMap);
|
||||
}
|
||||
|
||||
public void addTimeLimit(TimeLimitWelfareBag bag){
|
||||
timeLimitMap.put(bag.getModId(),bag);
|
||||
updateString("timeLimitMap",timeLimitMap);
|
||||
}
|
||||
|
||||
public void removeTimeLimit(TimeLimitWelfareBag bag){
|
||||
|
@ -127,13 +125,16 @@ public class NewRechargeInfo {
|
|||
|
||||
public void addReceive(ReceiveWelfareBag bag){
|
||||
receiveMap.put(bag.getModId(),bag);
|
||||
updateString("receiveMap",receiveMap);
|
||||
}
|
||||
|
||||
public void addPush(PushWelfareBag bag){
|
||||
pushMap.put(bag.getModId(),bag);
|
||||
updateString("pushMap",pushMap);
|
||||
}
|
||||
|
||||
public void addGarbage(List<Integer> list){
|
||||
garbage.addAll(list);
|
||||
updateString("garbage",garbage);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue