天天放券活动

master_longzhu
grimm 2024-08-15 16:01:45 +08:00
parent 43d0c66bc6
commit 6c85b29aab
4 changed files with 124 additions and 0 deletions

View File

@ -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_FIRST_PUSH = "NEW_ARENA_FIRST_PUSH";//竞技场第一名推送标记
public static final String DAILY_SEND_VOUCHER_MARK = "DAILY_SEND_VOUCHER_MARK";// 每日放券标记
// 唯一key生成
public static final String UUID_KEY = "UUID_KEY";//唯一key
// 补单

View File

@ -161,4 +161,5 @@ public interface ActivityType {
int FENGSHEN_TREASURE_TWO = 115;//双队封神
int FENGSHEN_TREASURE_THREE = 116;//三队封神
int EVERY_DAY_DISCOUNT = 126;//天天0.1折扣
int DAILY_SEND_VOUCHER = 127;//每日放券
}

View File

@ -142,6 +142,7 @@ public enum ActivityTypeEnum {
GM_DAILY_GIFT(ActivityType.GM_DAILY_GIFT, DefaultEmptyActivity::new),//gm每日礼包
GM_WEEK_GIFT(ActivityType.GM_WEEK_GIFT, DefaultEmptyActivity::new),//gm每周礼包
EVERY_DAY_DISCOUNT(ActivityType.EVERY_DAY_DISCOUNT, EveryDayDiscountActivity::new),//每日折扣
DAILY_SEND_VOUCHER(ActivityType.DAILY_SEND_VOUCHER, DailySendVoucherActivity::new),//每日放券
;
private int type;

View File

@ -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;
}
}