购买商品

back_recharge
wangyuan 2019-06-06 16:53:49 +08:00
parent acdf29d390
commit 9353c18322
10 changed files with 42 additions and 37 deletions

View File

@ -20,10 +20,7 @@ public class TestMongo {
public static void main(String[] args) {
try {
ljsdMongoTemplate = getLjsdMongoTemplate();
// save();
PlayerForTest one = findOne();
update(one);
System.out.println();
} catch (UnknownHostException e) {
e.printStackTrace();

View File

@ -387,7 +387,7 @@ public class ActivityLogic {
for(int i=1;i<=randCount;i++){
int secretBoxRandomPool = getSecretBoxRandomPool(sDifferDemonsBoxSetting, count + i);
int[] dropInfos = getSecretBoxRewardByPool(secretBoxRandomPool);
randDrop[i] = dropInfos;
randDrop[i-1] = dropInfos;
}
secretBoxManager.setCount(secretBoxManager.getCount()+randCount);
CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, randDrop,BIReason.TAKE_SECRET_REWARD);

View File

@ -24,14 +24,14 @@ public class UserMissionManager extends MongoBase {
private CumulationData cumulationData = new CumulationData();
private CumulationData dailyCumulationData = new CumulationData();
public void openMission(User user,GameEvent event, Object... parm){
public void openMission(User user,GameEvent event,Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap, Object... parm){
switch (event){
case VIP_LEVLUP:{
int vipLevle= (int)parm[0];
SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(vipLevle);
int[] openRules = sVipLevelConfig.getOpenRules();
for(int missionId:openRules){
vipMissionIdsType.openMission(user,missionId);
vipMissionIdsType.openMission(user,missionId,missionTypeEnumListMap.get(GameMisionType.VIPMISSION));
}
updateString("vipMissionIdsType",vipMissionIdsType);
}
@ -62,6 +62,7 @@ public class UserMissionManager extends MongoBase {
switch (gameEvent){
case VIP_MISSION_REWARD:{
vipMissionIdsType.rewardMission((int)parm[0], missionTypeEnumListMap.get(GameMisionType.VIPMISSION));
updateString("vipMissionIdsType",vipMissionIdsType);
}
break;
case DAILY_MISSION_REWARD:{

View File

@ -11,6 +11,6 @@ import java.util.Map;
public class DailyRefreshEventProcess implements BaseGameEventProcessor {
@Override
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
user.getUserMissionManager().openMission(user,event, parm);
user.getUserMissionManager().openMission(user,event,misionTypeListMap, parm);
}
}

View File

@ -12,6 +12,6 @@ import java.util.Map;
public class VipLevelUpEventProcessor implements BaseGameEventProcessor {
@Override
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap, GameEvent event, Object... parm) {
user.getUserMissionManager().openMission(user,event, parm);
user.getUserMissionManager().openMission(user,event, missionTypeEnumListMap,parm);
}
}

View File

@ -19,7 +19,7 @@ public abstract class AbstractMissionType {
//已领取的任务在可控范围内使用map存储利于查找
private BitSet rewardedMissionIds = new BitSet(1024);
public abstract void openMission(User user,int missionId);
public abstract void openMission(User user,int missionId,List<MissionStateChangeInfo> missionTypeEnumList);
public abstract int[][] reward(int missionId);

View File

@ -13,7 +13,7 @@ import java.util.Set;
public class DailyMissionIdsType extends AbstractMissionType{
@Override
public void openMission(User user, int missionId) {
public void openMission(User user, int missionId,List<MissionStateChangeInfo> missionTypeEnumList) {
getDoingMissionIds().clear();
getFinishMissionIds().clear();
getDoingMissionIds().add(missionId);

View File

@ -16,7 +16,7 @@ public class VipMissionIdsType extends AbstractMissionType{
}
@Override
public void openMission(User user,int missionId) {
public void openMission(User user,int missionId,List<MissionStateChangeInfo> missionTypeEnumList) {
if(!checkIsNew(missionId)){
return;
}
@ -24,8 +24,14 @@ public class VipMissionIdsType extends AbstractMissionType{
boolean isFinish = MissionLoigc.getDoingProgress(user,user.getUserMissionManager().getCumulationData(),sTaskConfig.getTaskType(),sTaskConfig.getTaskValue()[0])>=sTaskConfig.getTaskValue()[1];
if(!isFinish){
addDoingMission(missionId);
/* MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(missionId,
MissionState.DOING, null);
missionTypeEnumList.add(doingInfo);*/
}else{
addFinishMissionId(missionId);
/* MissionStateChangeInfo finishInfo = new MissionStateChangeInfo(missionId,
MissionState.FINISH, null);
missionTypeEnumList.add(finishInfo);*/
}

View File

@ -25,6 +25,7 @@ import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class PlayerLogic {
private static final Logger LOGGER = LoggerFactory.getLogger(MailLogic.class);
@ -153,15 +154,20 @@ public class PlayerLogic {
int uid = session.getUid();
User user = UserManager.getUser(uid);
PlayerManager playerInfoManager = user.getPlayerInfoManager();
if(playerInfoManager.getHadTakeDailyBoxVip() == 0){
MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.VIP_LEVELUP_RESPONSE_VALUE,"not take the vip level reward");
if(playerInfoManager.getHadTakeDailyBoxVip() == -1){
MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.VIP_LEVELUP_RESPONSE_VALUE,"not take the vip daily reward");
return;
}
Set<Integer> doingMissionIds = user.getUserMissionManager().getVipMissionIdsType().getDoingMissionIds();
if(!doingMissionIds.isEmpty()){
MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.VIP_LEVELUP_RESPONSE_VALUE,"not finfish");
return;
}
int vipLevel = playerInfoManager.getVipLevel();
playerInfoManager.updateVipInfo(user,vipLevel+1);
CommonProto.VipMissionInfo vipMissionResponse = MissionLoigc.getVipMissionResponse(user);
PlayerInfoProto.VipLevelUpResponse build = PlayerInfoProto.VipLevelUpResponse.newBuilder().setVipMissionInfo(vipMissionResponse).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.VIP_LEVELUP_RESPONSE_VALUE,build,true);
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.VIP_LEVELUP_RESPONSE_VALUE,null,true);
}
public void takeVipLevelRewad(ISession session,int type) throws Exception {
@ -180,7 +186,7 @@ public class PlayerLogic {
rewards = sVipLevelConfig.getVipBoxReward();
reson = BIReason.TAKE_VIP_LEVEL_REWARD;
}else if(type == 2){
if(playerInfoManager.getHadTakeDailyBoxVip() == 1 || playerInfoManager.getHadTakeLevelBoxVip() == -1 ){
if(playerInfoManager.getHadTakeDailyBoxVip() != -1 || playerInfoManager.getHadTakeLevelBoxVip() == 0 ){
MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.VIP_TAKE_REWARD_RESPONSE_VALUE,"had taked the vip daily reward");
return;
}
@ -230,24 +236,4 @@ public class PlayerLogic {
}
}
public void updateRechargeInfo(ISession session,int money) throws Exception {
int uid = session.getUid();
User user = UserManager.getUser(uid);
PlayerManager playerInfoManager = user.getPlayerInfoManager();
RechargeInfo rechargeInfo = playerInfoManager.getRechargeInfo();
int saveAmt = rechargeInfo.getSaveAmt();
PlayerInfoProto.RechargeInfoResponse.Builder builder = PlayerInfoProto.RechargeInfoResponse.newBuilder();
if(saveAmt == 0){
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.FirstRecharge,1);
SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByActivityId(4).get(0);
int[][] reward = sActivityRewardConfig.getReward();
builder.setDrop(ItemUtil.drop(user,reward,BIReason.FIRST_RECHARGE_REWARD));
}
int totalMoney = saveAmt + money;
rechargeInfo.setSaveAmt(totalMoney);
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.RECHARGE_INFO_RESPONSE_VALUE,builder.build(),true);
}
}

View File

@ -42,6 +42,7 @@ public class BuyGoodsLogic {
}
public static void sendGoods(int uid,int goodsId) throws Exception {
LOGGER.info("send to uid={},the goods={}",uid,goodsId);
User user = UserManager.getUser(uid);
SRechargeCommodityConfig sRechargeCommodityConfig = SRechargeCommodityConfig.rechargeCommodityConfigMap.get(goodsId);
RechargeInfo rechargeInfo = user.getPlayerInfoManager().getRechargeInfo();
@ -52,6 +53,11 @@ public class BuyGoodsLogic {
}
buyCount=buyCount+1;
int limit = sRechargeCommodityConfig.getLimit();
int type = sRechargeCommodityConfig.getType();
if(type==4 && rechargeInfo.getHadBuyFound()==1){
LOGGER.error("the uid={},hadBuyFound",uid);
return;
}
if(limit!=0){
if(buyCount>limit){
LOGGER.error("the uid={},the goodId={}, is over limit={}",uid,goodsId,buyCount);
@ -59,13 +65,15 @@ public class BuyGoodsLogic {
}
}
int[][] baseReward = sRechargeCommodityConfig.getBaseReward();
int length = baseReward.length;
CommonProto.Drop.Builder drop = null;
if(buyCount == 1){
int type = sRechargeCommodityConfig.getType();
if(type == 4){
rechargeInfo.setHadBuyFound(1);
ActivityLogic.getInstance().openActivityReallyOpen(user, ActivityType.GrowthFund);
}
int[][] firstMultiple = sRechargeCommodityConfig.getFirstMultiple();
@ -96,8 +104,12 @@ public class BuyGoodsLogic {
for(int j=0;j<reward.length;j++){
result[i++] = reward[j];
}
}
drop = ItemUtil.drop(user, result, BIReason.RECHARGE_REWARD);
}else{
drop = ItemUtil.drop(user, baseReward, BIReason.RECHARGE_REWARD);
}
}else{
drop = ItemUtil.drop(user, baseReward, BIReason.RECHARGE_REWARD);
@ -140,6 +152,9 @@ public class BuyGoodsLogic {
continue;
}
}
if(sRechargeCommodityConfig.getType() == 4 && rechargeInfo.getHadBuyFound() !=0){
continue;
}
int[] discountType = sRechargeCommodityConfig.getDiscountType();
long endTime=0;
if(discountType!=null && discountType.length>0){