直购首冲活动
parent
d9c771e49b
commit
3881e066ed
|
@ -1346,6 +1346,13 @@ public class TimeUtils {
|
||||||
return canRefresh;
|
return canRefresh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询两个时间戳的第x小时中间相隔几天
|
||||||
|
* @param date1
|
||||||
|
* @param date2
|
||||||
|
* @param hour
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static int differentDaysByHour(long date1, long date2, int hour) {
|
public static int differentDaysByHour(long date1, long date2, int hour) {
|
||||||
Calendar cal1 = Calendar.getInstance();
|
Calendar cal1 = Calendar.getInstance();
|
||||||
cal1.setTimeInMillis(date1);
|
cal1.setTimeInMillis(date1);
|
||||||
|
|
|
@ -144,4 +144,5 @@ public interface ActivityType {
|
||||||
int ALL_PEOPLE_WELFARE = 105;//全民福利
|
int ALL_PEOPLE_WELFARE = 105;//全民福利
|
||||||
int GIVE_ENDLESS_DRAW = 106;//送无限抽
|
int GIVE_ENDLESS_DRAW = 106;//送无限抽
|
||||||
int GM_DIAL = 107;//gm转盘
|
int GM_DIAL = 107;//gm转盘
|
||||||
|
int RECHARGE_FIRST = 108;//直充首冲活动
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,7 +116,8 @@ public enum ActivityTypeEnum {
|
||||||
INFINITE_RESOURCES_PAVILION(ActivityType.INFINITE_RESOURCES_PAVILION, InfiniteResourcesPavilionActivity::new),//无限资源阁
|
INFINITE_RESOURCES_PAVILION(ActivityType.INFINITE_RESOURCES_PAVILION, InfiniteResourcesPavilionActivity::new),//无限资源阁
|
||||||
ALL_PEOPLE_WELFARE(ActivityType.ALL_PEOPLE_WELFARE, AllPeopleWelfareActivity::new),//全民福利
|
ALL_PEOPLE_WELFARE(ActivityType.ALL_PEOPLE_WELFARE, AllPeopleWelfareActivity::new),//全民福利
|
||||||
GIVE_ENDLESS_DRAW(ActivityType.GIVE_ENDLESS_DRAW, GiveEndlessDrawActivity::new),//送无限抽
|
GIVE_ENDLESS_DRAW(ActivityType.GIVE_ENDLESS_DRAW, GiveEndlessDrawActivity::new),//送无限抽
|
||||||
GM_DIAL(ActivityType.GM_DIAL, LuckWheelNormalActivity::new);//gm转盘
|
GM_DIAL(ActivityType.GM_DIAL, LuckWheelNormalActivity::new),//gm转盘
|
||||||
|
RECHARGE_FIRST(ActivityType.RECHARGE_FIRST, RechargeFirstActivity::new),//直充购买礼包活动
|
||||||
;
|
;
|
||||||
|
|
||||||
private int type;
|
private int type;
|
||||||
|
|
|
@ -0,0 +1,174 @@
|
||||||
|
package com.ljsd.jieling.logic.activity;
|
||||||
|
|
||||||
|
import com.ljsd.jieling.exception.ErrorCode;
|
||||||
|
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||||
|
import com.ljsd.jieling.globals.BIReason;
|
||||||
|
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.Poster;
|
||||||
|
import com.ljsd.jieling.logic.activity.event.SuperBoxEvent;
|
||||||
|
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 config.SActivityRewardConfig;
|
||||||
|
import rpc.protocols.CommonProto;
|
||||||
|
import rpc.protocols.PlayerInfoProto;
|
||||||
|
import util.TimeUtils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hj
|
||||||
|
* 直购首冲活动-bt版
|
||||||
|
* 2022-9-6
|
||||||
|
*/
|
||||||
|
public class RechargeFirstActivity extends AbstractActivity {
|
||||||
|
|
||||||
|
RechargeFirstActivity(int id) {
|
||||||
|
super(id);
|
||||||
|
Poster.getPoster().listenEvent(this, SuperBoxEvent.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initActivity(User user) throws Exception {
|
||||||
|
// 活动信息初始化
|
||||||
|
ActivityMission mission = new ActivityMission();
|
||||||
|
ActivityLogic.getInstance().initOtherMission(mission, new ArrayList<>());
|
||||||
|
user.getActivityManager().getActivityMissionMap().put(id, mission);
|
||||||
|
LOGGER.info("直购首冲活动-bt版...uid={},activityId={}",user.getId(), id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEvent(IEvent event) throws Exception {
|
||||||
|
// 类型验证
|
||||||
|
if (!(event instanceof SuperBoxEvent)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 获取信息
|
||||||
|
SuperBoxEvent event1 = (SuperBoxEvent) event;
|
||||||
|
User user = UserManager.getUser(event1.getUserId());
|
||||||
|
// 活动数据处理
|
||||||
|
updateValue(user, event1.getGiftId());
|
||||||
|
// 状态推送
|
||||||
|
sendActivityProgress(user, user.getActivityManager().getActivityMissionMap().get(id), null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改参数
|
||||||
|
* @param giftId
|
||||||
|
*/
|
||||||
|
private void updateValue(User user, int giftId){
|
||||||
|
if (giftId <= 0){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Map<Integer, ActivityProgressInfo> missionMap = user.getActivityManager().getActivityMissionMap().get(id).getActivityMissionMap();
|
||||||
|
List<SActivityRewardConfig> rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
|
||||||
|
for (SActivityRewardConfig reward : rewardConfigs) {
|
||||||
|
// 礼包id相等并且库里没有,那么则创建一条新的
|
||||||
|
if (reward.getValues()[0][0] == giftId && missionMap.get(reward.getId()) == null){
|
||||||
|
ActivityProgressInfo progressInfo = new ActivityProgressInfo();
|
||||||
|
progressInfo.setProgrss(TimeUtils.nowInt());
|
||||||
|
progressInfo.setState(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<CommonProto.ActivityInfo.MissionInfo> getAllMissInfo(User user,ActivityMission activityMission, Set<Integer> filter) {
|
||||||
|
if (activityMission == null){
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
// 库里存储的活动档位信息
|
||||||
|
Map<Integer, ActivityProgressInfo> progressInfoMap = activityMission.getActivityMissionMap();
|
||||||
|
// 策划表的配置
|
||||||
|
List<SActivityRewardConfig> rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
|
||||||
|
// 返回对象
|
||||||
|
List<CommonProto.ActivityInfo.MissionInfo> missionInfos = new ArrayList<>(rewardConfigs.size());
|
||||||
|
for (SActivityRewardConfig rewardConfig : rewardConfigs) {
|
||||||
|
// 参数初始化
|
||||||
|
int missionId = rewardConfig.getId();
|
||||||
|
int state = getState(missionId, progressInfoMap.get(missionId));
|
||||||
|
// 封装proto并返回
|
||||||
|
CommonProto.ActivityInfo.MissionInfo build = CommonProto.ActivityInfo.MissionInfo.newBuilder()
|
||||||
|
.setMissionId(missionId)
|
||||||
|
.setProgress(0)
|
||||||
|
.setState(state)
|
||||||
|
.build();
|
||||||
|
missionInfos.add(build);
|
||||||
|
}
|
||||||
|
return missionInfos;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取状态
|
||||||
|
* @param progressInfo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private int getState(int missionId, ActivityProgressInfo progressInfo){
|
||||||
|
// 未购买过任何条目礼包
|
||||||
|
if (progressInfo == null){
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// 已领取
|
||||||
|
if (progressInfo.getState() == 2){
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
SActivityRewardConfig rewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId);
|
||||||
|
int days = TimeUtils.differentDaysByHour(progressInfo.getProgrss()*1000L, TimeUtils.now(),0) + 1;
|
||||||
|
// 判断金额和天数
|
||||||
|
if (days >= rewardConfig.getValues()[0][1]){
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 领取奖励
|
||||||
|
* @param session
|
||||||
|
* @param missionId
|
||||||
|
* @return
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean takeReward(ISession session, int missionId) throws Exception {
|
||||||
|
User user = UserManager.getUser(session.getUid());
|
||||||
|
// activity check
|
||||||
|
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||||
|
if (mission == null){
|
||||||
|
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"活动信息不存在:"+id);
|
||||||
|
}
|
||||||
|
SActivityRewardConfig rewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId);
|
||||||
|
if (rewardConfig == null){
|
||||||
|
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"领取挡位不存在,活动id ==> "+id+",挡位id==>"+missionId);
|
||||||
|
}
|
||||||
|
int state = getState(missionId, mission.getActivityMissionMap().get(missionId));
|
||||||
|
if (state != 1){
|
||||||
|
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"档位已领取或条件不满足,活动id ==> "+id+",挡位id ==>"+missionId);
|
||||||
|
}
|
||||||
|
// reward
|
||||||
|
int[][] reward = rewardConfig.getReward();
|
||||||
|
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD);
|
||||||
|
// 更新数据库
|
||||||
|
ActivityProgressInfo info = new ActivityProgressInfo();
|
||||||
|
info.setState(2);
|
||||||
|
mission.getActivityMissionMap().put(missionId,info);
|
||||||
|
|
||||||
|
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
|
||||||
|
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
|
||||||
|
// 状态推送
|
||||||
|
sendActivityProgress(session, mission, null);
|
||||||
|
// 打点上报
|
||||||
|
reportTakeActivityReward(user, reward, missionId);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean checkActivityMissionFinishAndTake(int uid,int activityId,ActivityMission activityMission){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue