天天放券活动
parent
43d0c66bc6
commit
6c85b29aab
|
@ -381,6 +381,8 @@ public class RedisKey {
|
||||||
public static final String NEW_ARENA_REFRESH_FIRST_MARK = "NEW_ARENA_REFRESH_FIRST_MARK";//新竞技场第一次匹配标记
|
public static final String NEW_ARENA_REFRESH_FIRST_MARK = "NEW_ARENA_REFRESH_FIRST_MARK";//新竞技场第一次匹配标记
|
||||||
// public static final String NEW_ARENA_FIRST_PUSH = "NEW_ARENA_FIRST_PUSH";//竞技场第一名推送标记
|
// public static final String NEW_ARENA_FIRST_PUSH = "NEW_ARENA_FIRST_PUSH";//竞技场第一名推送标记
|
||||||
|
|
||||||
|
public static final String DAILY_SEND_VOUCHER_MARK = "DAILY_SEND_VOUCHER_MARK";// 每日放券标记
|
||||||
|
|
||||||
// 唯一key生成
|
// 唯一key生成
|
||||||
public static final String UUID_KEY = "UUID_KEY";//唯一key
|
public static final String UUID_KEY = "UUID_KEY";//唯一key
|
||||||
// 补单
|
// 补单
|
||||||
|
|
|
@ -161,4 +161,5 @@ public interface ActivityType {
|
||||||
int FENGSHEN_TREASURE_TWO = 115;//双队封神
|
int FENGSHEN_TREASURE_TWO = 115;//双队封神
|
||||||
int FENGSHEN_TREASURE_THREE = 116;//三队封神
|
int FENGSHEN_TREASURE_THREE = 116;//三队封神
|
||||||
int EVERY_DAY_DISCOUNT = 126;//天天0.1折扣
|
int EVERY_DAY_DISCOUNT = 126;//天天0.1折扣
|
||||||
|
int DAILY_SEND_VOUCHER = 127;//每日放券
|
||||||
}
|
}
|
||||||
|
|
|
@ -142,6 +142,7 @@ public enum ActivityTypeEnum {
|
||||||
GM_DAILY_GIFT(ActivityType.GM_DAILY_GIFT, DefaultEmptyActivity::new),//gm每日礼包
|
GM_DAILY_GIFT(ActivityType.GM_DAILY_GIFT, DefaultEmptyActivity::new),//gm每日礼包
|
||||||
GM_WEEK_GIFT(ActivityType.GM_WEEK_GIFT, DefaultEmptyActivity::new),//gm每周礼包
|
GM_WEEK_GIFT(ActivityType.GM_WEEK_GIFT, DefaultEmptyActivity::new),//gm每周礼包
|
||||||
EVERY_DAY_DISCOUNT(ActivityType.EVERY_DAY_DISCOUNT, EveryDayDiscountActivity::new),//每日折扣
|
EVERY_DAY_DISCOUNT(ActivityType.EVERY_DAY_DISCOUNT, EveryDayDiscountActivity::new),//每日折扣
|
||||||
|
DAILY_SEND_VOUCHER(ActivityType.DAILY_SEND_VOUCHER, DailySendVoucherActivity::new),//每日放券
|
||||||
;
|
;
|
||||||
|
|
||||||
private int type;
|
private int type;
|
||||||
|
|
|
@ -0,0 +1,120 @@
|
||||||
|
package com.ljsd.jieling.logic.activity;
|
||||||
|
|
||||||
|
import com.ljsd.jieling.db.redis.RedisKey;
|
||||||
|
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||||
|
import com.ljsd.jieling.exception.ErrorCode;
|
||||||
|
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||||
|
import com.ljsd.jieling.exception.ErrorTableException;
|
||||||
|
import com.ljsd.jieling.globals.BIReason;
|
||||||
|
import com.ljsd.jieling.jbean.ActivityMission;
|
||||||
|
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 DailySendVoucherActivity extends AbstractActivity {
|
||||||
|
|
||||||
|
private static final int countProgress = -1;
|
||||||
|
|
||||||
|
DailySendVoucherActivity(int id) {
|
||||||
|
super(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@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 List<CommonProto.ActivityInfo.MissionInfo> getAllMissInfo(User user,ActivityMission activityMission, Set<Integer> filter) {
|
||||||
|
if (activityMission == null){
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
// 策划表的配置
|
||||||
|
List<SActivityRewardConfig> rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
|
||||||
|
if (rewardConfigs == null || rewardConfigs.isEmpty()){
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, String> map = getValue(user.getId());
|
||||||
|
|
||||||
|
// 返回对象
|
||||||
|
List<CommonProto.ActivityInfo.MissionInfo> missionInfos = new ArrayList<>(rewardConfigs.size());
|
||||||
|
for (SActivityRewardConfig config : rewardConfigs) {
|
||||||
|
int missionId = config.getId();
|
||||||
|
String number = map.getOrDefault(missionId + "", "0");
|
||||||
|
// 封装proto并返回
|
||||||
|
CommonProto.ActivityInfo.MissionInfo build = CommonProto.ActivityInfo.MissionInfo.newBuilder()
|
||||||
|
.setMissionId(missionId)
|
||||||
|
.setProgress(Integer.parseInt(number))
|
||||||
|
.setState(Integer.parseInt(number) >= config.getValues()[0][0]? 1:0)
|
||||||
|
.build();
|
||||||
|
missionInfos.add(build);
|
||||||
|
}
|
||||||
|
return missionInfos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<String, String> getValue(int uid){
|
||||||
|
String key = RedisKey.DAILY_SEND_VOUCHER_MARK + ":" + uid;
|
||||||
|
return RedisUtil.getInstence().getmapvaluekeyclass(key, String.class, String.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setValue(int uid, int missionId, int count){
|
||||||
|
String key = RedisKey.DAILY_SEND_VOUCHER_MARK + ":" + uid;
|
||||||
|
RedisUtil.getInstence().putmap(key, missionId + "", count + "");
|
||||||
|
RedisUtil.getInstence().expireMills(key, TimeUtils.getToTomorrowTimeS());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 领取奖励
|
||||||
|
*/
|
||||||
|
@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 ErrorTableException(182);// 活动不存在
|
||||||
|
}
|
||||||
|
|
||||||
|
SActivityRewardConfig rewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId);
|
||||||
|
if (rewardConfig == null){
|
||||||
|
throw new ErrorTableException(183);// 档位不存在
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, String> map = getValue(user.getId());
|
||||||
|
String number = map.getOrDefault(missionId + "", "0");
|
||||||
|
int count = Integer.parseInt(number);
|
||||||
|
if (count >= 1){
|
||||||
|
throw new ErrorCodeException(ErrorCode.HAD_TAKE_REWARD);
|
||||||
|
}
|
||||||
|
CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewardConfig.getReward(), BIReason.TAKE_ACTIVITY_REWARD);
|
||||||
|
setValue(user.getId(), missionId, 1);
|
||||||
|
// 协议返回
|
||||||
|
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
|
||||||
|
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
|
||||||
|
// 状态推送
|
||||||
|
sendActivityProgress(session, null);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue