福星高照

lvxinran 2021-05-02 20:26:14 +08:00
parent 0228b97402
commit 15bd393c89
6 changed files with 118 additions and 56 deletions

View File

@ -0,0 +1,26 @@
package com.ljsd.jieling.handler.activity;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.network.session.ISession;
import org.springframework.stereotype.Component;
import rpc.protocols.ActivityProto;
import rpc.protocols.MessageTypeProto;
/**
* @author lvxinran
* @date 2021/4/19
* @discribe
*/
@Component
public class FuxingStoreBuyHandler extends BaseHandler<ActivityProto.FuXingStoreBuyRequest> {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.FU_XING_STORE_BUY_REQUEST;
}
@Override
public void processWithProto(ISession iSession, ActivityProto.FuXingStoreBuyRequest proto) throws Exception {
ActivityLogic.getInstance().fuxingStoreBuy(iSession,proto.getActivityId());
}
}

View File

@ -1454,4 +1454,43 @@ public class ActivityLogic implements IEventHandler{
MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true);
}
/**
*
*/
public void fuxingStoreBuy(ISession session,int activityId) throws Exception {
int uid = session.getUid();
User user = UserManager.getUser(uid);
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(activityId);
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
if(activity.getType()!=ActivityType.LUCKY_GET){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
if(activityMission==null||activityMission.getV()!=0||TimeUtils.now()>activityMission.getCreatTime()){//此活动2为已不可购买状态,1为已购买
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
}
boolean itemCost = ItemUtil.itemCost(user, SSpecialConfig.getTwiceArrayValue(SSpecialConfig.FU_XING_STORE), 1, 1);
if(!itemCost){
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
}
List<SActivityRewardConfig> sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(activityId);
if(sActivityRewardConfigs == null){return;}
//已经激活购买的商品
//拿到激活当天0点
long beginOfDay = TimeUtils.getBeginOfDay(TimeUtils.now());
for(SActivityRewardConfig sActivityRewardConfig : sActivityRewardConfigs){
ActivityProgressInfo activityProgressInfo = new ActivityProgressInfo();
activityProgressInfo.setProgrss((int)(beginOfDay/1000)+(sActivityRewardConfig.getValues()[1][0]-1)*(int)(TimeUtils.ONE_DAY/1000));
activityMission.getActivityMissionMap().put(sActivityRewardConfig.getId(), activityProgressInfo);
}
activityMission.setV(1);
//发推送
AbstractActivity acticityType = ActivityTypeEnum.getActicityType(activityId);
if(acticityType!=null){
acticityType.sendActivityProgress(session, activityMission, null);
}
MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.FU_XING_STORE_BUY_RESPONSE_VALUE,null,true);
}
}

View File

@ -1,18 +1,17 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.jbean.ActivityManager;
import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.jbean.ActivityProgressInfo;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.LuckyGetBuyEvent;
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.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.ToolsUtil;
import config.SActivityRewardConfig;
import config.SGlobalActivity;
import config.SSpecialConfig;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import util.TimeUtils;
@ -29,33 +28,33 @@ public class LuckyGetActivity extends AbstractActivity{
public LuckyGetActivity(int id) {
super(id);
Poster.getPoster().listenEvent(this, LuckyGetBuyEvent.class);
}
@Override
public void onEvent(IEvent event) throws Exception {
if (!(event instanceof LuckyGetBuyEvent))
return;
LuckyGetBuyEvent buyEvent = (LuckyGetBuyEvent) event;
ActivityManager activityManager = buyEvent.getUser().getActivityManager();
if(!activityManager.getActivityMissionMap().containsKey(id)){
return;
}
ActivityMission activityMission = activityManager.getActivityMissionMap().get(id);
public void initActivity(User user) {
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
ActivityLogic.getInstance().initAllActivityMission(user.getActivityManager().getActivityMissionMap(),id);
long startTime = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),user.getPlayerInfoManager().getCreateTime(), 1);
int[] onceArrayValue = SSpecialConfig.getOnceArrayValue(SSpecialConfig.FU_XING);
long buyTimeDeadLine = startTime + TimeUtils.DAY * onceArrayValue[0];//截止购买的时间
user.getActivityManager().getActivityMissionMap().get(id).setCreatTime(buyTimeDeadLine);
if(buyTimeDeadLine<TimeUtils.now()){
//已经结束
user.getActivityManager().getActivityMissionMap().get(id).setV(2);
List<SActivityRewardConfig> sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
if(sActivityRewardConfigs == null){return;}
//已经激活购买的商品
activityMission.setV(1);
//拿到激活当天0点
long beginOfDay = TimeUtils.getBeginOfDay(TimeUtils.now());
for(SActivityRewardConfig sActivityRewardConfig : sActivityRewardConfigs){
ActivityProgressInfo activityProgressInfo = new ActivityProgressInfo();
activityProgressInfo.setProgrss((int)(beginOfDay/1000)+(sActivityRewardConfig.getValues()[1][1]-1)*(int)(TimeUtils.ONE_DAY/1000));
activityMission.getActivityMissionMap().put(sActivityRewardConfig.getId(), activityProgressInfo);
}
}
@Override
public void onResume(User user) throws Exception {
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
if(activityMission.getV()!=1&&TimeUtils.now()>=activityMission.getCreatTime()){
activityMission.setV(2);
}
}
public boolean takeReward(ISession session, int missionId) throws Exception {
if(missionId!=-1){
return super.takeReward(session, missionId);
@ -75,6 +74,20 @@ public class LuckyGetActivity extends AbstractActivity{
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
boolean isAll = true;
for(Map.Entry<Integer,ActivityProgressInfo> entry:activityMission.getActivityMissionMap().entrySet()){
if(entry.getValue().getState()==0){
isAll=false;
break;
}
}
if(isAll){
activityMission.setV(2);
}
sendActivityProgress(session,activityMission , null);
return true;
}

View File

@ -1,26 +0,0 @@
package com.ljsd.jieling.logic.activity.event;
import com.ljsd.jieling.logic.dao.root.User;
/**
* @author lvxinran
* @date 2021/3/30
* @discribe
*/
public class LuckyGetBuyEvent implements IEvent {
private User user;
public LuckyGetBuyEvent(User user) {
this.user = user;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}

View File

@ -108,8 +108,8 @@ public class StoreLogic implements IEventHandler {
}
}
} else if (sStoreTypeConfig.getStoreOpenRule() == 7) {
long startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_ROLE, 0, 1);
long endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_ROLE, 0, 2);
long startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_SERVER, 0, 1);
long endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_SERVER, 0, 2);
if (now < startTime || now > endTime) {
continue;
}
@ -376,6 +376,17 @@ public class StoreLogic implements IEventHandler {
if(storeManager.getStoreInfoMap().containsKey(sStoreTypeConfig.getId())){
continue;
}
if(sStoreTypeConfig.getStoreOpenRule() == 7){
long startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(),ActivityType.OPEN_TYPE_SERVER,0, 1);
long endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(),sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_SERVER,0, 2);
long now = TimeUtils.now();
if(now>startTime&&now<endTime){
Map<Integer, Integer> itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user);
storeManager.newStoreInfo(sStoreTypeConfig.getId(),refreshTimeDelay,startTime,endTime,itemNumMap);
}
}
if (sStoreTypeConfig.getStoreOpenRule() == 1 && sStoreTypeConfig.getId() !=8){ //固定商店
Map<Integer, Integer> itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user);
long startTime = 0;
@ -500,9 +511,6 @@ public class StoreLogic implements IEventHandler {
int vipLeve = user.getPlayerInfoManager().getVipLevel();
user.getPlayerInfoManager().setHadTakeLevelBoxVip(vipLeve);
}
if(storeId==Global.LUCKY_GET){
Poster.getPoster().dispatchEvent(new LuckyGetBuyEvent(user));
}
if(sStoreConfig.getOpenPrivilege()!=null){
PlayerInfoProto.PrivilegeIndication.Builder indication = PlayerInfoProto.PrivilegeIndication.newBuilder();
int[] openPrivilege = sStoreConfig.getOpenPrivilege();

View File

@ -97,6 +97,8 @@ public class SSpecialConfig implements BaseConfig {
public static final String GUILD_LEADER_PASS_TIME = "GuildLeaderPassTime";//会长不上线移交时长
public static final String GUILD_DISMISS_TIME ="GuildDismissTime";//公会全员不上线解散时长
public static final String SHEN_ZHUANG = "ShenZhuang";//神装礼包推送等级
public static final String FU_XING = "FuXing";//福星高照可购买天数和可领取天数
public static final String FU_XING_STORE = "FuXingStore";//福星高照购买解锁奖励
@Override
public void init() throws Exception {