达人排行榜奖励
parent
61f49b7114
commit
797a484250
|
|
@ -0,0 +1,71 @@
|
|||
package com.ljsd.jieling.config;
|
||||
|
||||
import com.ljsd.jieling.logic.STableManager;
|
||||
import com.ljsd.jieling.logic.Table;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Table(name = "ActivityRankingReward")
|
||||
public class SActivityRankingReward implements BaseConfig {
|
||||
|
||||
private int id;
|
||||
|
||||
private int activityId;
|
||||
|
||||
private int minRank;
|
||||
|
||||
private int maxRank;
|
||||
|
||||
private int[][] rankingReward;
|
||||
|
||||
private static Map<Integer, SActivityRankingReward> sActivityRankingRewardMap;
|
||||
|
||||
private static Map<Integer, List<SActivityRankingReward>> sActivityRankingRewardMapByActivityId;
|
||||
|
||||
@Override
|
||||
public void init() throws Exception {
|
||||
sActivityRankingRewardMap = STableManager.getConfig(SActivityRankingReward.class);
|
||||
Map<Integer, List<SActivityRankingReward>> integerListHashMap = new HashMap<>();
|
||||
for (SActivityRankingReward sActivityRankingReward : sActivityRankingRewardMap.values()) {
|
||||
int activityId = sActivityRankingReward.getActivityId();
|
||||
if (!integerListHashMap.containsKey(activityId)) {
|
||||
integerListHashMap.put(activityId, new ArrayList<>());
|
||||
}
|
||||
integerListHashMap.get(activityId).add(sActivityRankingReward);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static Map<Integer, SActivityRankingReward> getsActivityRankingRewardMap() {
|
||||
return sActivityRankingRewardMap;
|
||||
}
|
||||
|
||||
public static List<SActivityRankingReward> getsActivityRankingRewardMapByActivityId(int Id) {
|
||||
return sActivityRankingRewardMapByActivityId.get(Id);
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public int getActivityId() {
|
||||
return activityId;
|
||||
}
|
||||
|
||||
public int getMinRank() {
|
||||
return minRank;
|
||||
}
|
||||
|
||||
public int getMaxRank() {
|
||||
return maxRank;
|
||||
}
|
||||
|
||||
public int[][] getRankingReward() {
|
||||
return rankingReward;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -73,8 +73,8 @@ public class ActivityLogic {
|
|||
if (time == 2) {
|
||||
continue;
|
||||
}
|
||||
long startTime = sGlobalActivity.getTimeLong(0, time);
|
||||
long endTime = sGlobalActivity.getTimeLong(0, time);
|
||||
long startTime = sGlobalActivity.getTimeLong(0, 1);
|
||||
long endTime = sGlobalActivity.getTimeLong(0, 2);
|
||||
if (now < startTime) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,24 @@
|
|||
package com.ljsd.jieling.logic.activity;
|
||||
|
||||
|
||||
import com.ljsd.jieling.config.SActivityRankingReward;
|
||||
import com.ljsd.jieling.config.SActivityRewardConfig;
|
||||
import com.ljsd.jieling.config.SErrorCodeEerverConfig;
|
||||
import com.ljsd.jieling.db.redis.RedisKey;
|
||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||
import com.ljsd.jieling.globals.Global;
|
||||
import com.ljsd.jieling.logic.dao.ActivityMission;
|
||||
import com.ljsd.jieling.logic.dao.ActivityProgressInfo;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mail.MailLogic;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import com.ljsd.jieling.util.TimeUtils;
|
||||
import org.springframework.data.redis.core.ZSetOperations;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
class ExpectRankActivity extends AbstractActivity {
|
||||
|
||||
|
|
@ -19,9 +28,8 @@ class ExpectRankActivity extends AbstractActivity {
|
|||
|
||||
@Override
|
||||
void updateProgress(User user, ActivityMission activityMission, int count) {
|
||||
activityMission.setValue(count+activityMission.getValue());
|
||||
activityMission.setValue(count + activityMission.getValue());
|
||||
String key = RedisKey.getKey(RedisKey.EXPERT_RANK, String.valueOf(id), false);
|
||||
//todo 删除长度以外数值
|
||||
RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), count);
|
||||
}
|
||||
|
||||
|
|
@ -45,4 +53,55 @@ class ExpectRankActivity extends AbstractActivity {
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onActivityEnd() throws Exception {
|
||||
|
||||
List<SActivityRankingReward> sActivityRankingReward = SActivityRankingReward.getsActivityRankingRewardMapByActivityId(id);
|
||||
int maxRank = 0;
|
||||
Map<Integer, Integer> rank2miss = new HashMap<>();
|
||||
for (SActivityRankingReward sActivityRankingReward1 : sActivityRankingReward) {
|
||||
maxRank = Math.max(maxRank, sActivityRankingReward1.getMaxRank());
|
||||
for (Integer rank : getRankSet(sActivityRankingReward1.getMinRank(), sActivityRankingReward1.getMaxRank())) {
|
||||
rank2miss.put(rank, sActivityRankingReward1.getId());
|
||||
}
|
||||
}
|
||||
|
||||
Set<ZSetOperations.TypedTuple<String>> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.EXPERT_RANK, Integer.toString(id), 0, maxRank - 1);
|
||||
int rank = 1;
|
||||
int nowTime = (int) (TimeUtils.now() / 1000);
|
||||
for (ZSetOperations.TypedTuple<String> item : rankInfo) {
|
||||
String value = item.getValue();
|
||||
int uid = Integer.parseInt(value);
|
||||
User user = UserManager.getUser(uid);
|
||||
|
||||
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
if (activityMission == null || activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) {
|
||||
continue;
|
||||
}
|
||||
int missionId = rank2miss.get(rank++);
|
||||
//check value
|
||||
SActivityRankingReward sActivityRankingReward1 = SActivityRankingReward.getsActivityRankingRewardMap().get(missionId);
|
||||
//sendmail
|
||||
String content = SErrorCodeEerverConfig.getI18NMessage("powerrank_activity_title");
|
||||
String title = SErrorCodeEerverConfig.getI18NMessage("powerrank_activity_txt", new Object[]{rank});
|
||||
String mailReward = ItemUtil.getMailReward(sActivityRankingReward1.getRankingReward());
|
||||
MailLogic.getInstance().sendMail(uid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private Set<Integer> getRankSet(int start, int end) {
|
||||
Set<Integer> set = new HashSet<>();
|
||||
if (start > end) {
|
||||
return set;
|
||||
}
|
||||
for (int i = start; i <= end; i++) {
|
||||
set.add(i);
|
||||
}
|
||||
return set;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ class ForceRankActivity extends AbstractActivity {
|
|||
continue;
|
||||
}
|
||||
int value2 = values[0][2];
|
||||
int missionProgress = activityProgressInfo.getProgrss();
|
||||
int missionProgress = activityMission.getValue();
|
||||
if (missionProgress < value2) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ class HeroUpExpectRankActivity extends ExpectRankActivity {
|
|||
void updateProgress(User user, ActivityMission activityMission, int count) {
|
||||
activityMission.setValue(count+activityMission.getValue());
|
||||
String key = RedisKey.getKey(RedisKey.EXPERT_RANK, String.valueOf(id), false);
|
||||
//todo 删除长度以外数值
|
||||
RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), count);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,8 +4,15 @@ import com.ljsd.jieling.config.SActivityRewardConfig;
|
|||
import com.ljsd.jieling.logic.dao.ActivityManager;
|
||||
import com.ljsd.jieling.logic.dao.ActivityMission;
|
||||
import com.ljsd.jieling.logic.dao.ActivityProgressInfo;
|
||||
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.MessageUtil;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
import java.util.TreeSet;
|
||||
|
||||
class RechargeSumDayActivity extends AbstractActivity {
|
||||
|
||||
|
|
@ -21,7 +28,6 @@ class RechargeSumDayActivity extends AbstractActivity {
|
|||
|
||||
@Override
|
||||
void updateProgress(ActivityMission activityMission, int count) {
|
||||
//TODO 走配置 每日金额大于多少更新天数
|
||||
activityMission.setValue(activityMission.getValue() + count);
|
||||
}
|
||||
|
||||
|
|
@ -30,4 +36,31 @@ class RechargeSumDayActivity extends AbstractActivity {
|
|||
return checkValue(session, sActivityRewardConfig, activityProgressInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据配置解析数值进度完成度
|
||||
*/
|
||||
boolean checkValue(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
|
||||
int[][] values = sActivityRewardConfig.getValues();
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getValue();
|
||||
if (value < values[0][1]) {
|
||||
MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "value illegality");
|
||||
return false;
|
||||
}
|
||||
|
||||
TreeMap<Integer, SActivityRewardConfig> sortMap = new TreeMap<>();
|
||||
SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).forEach(sActivityRewardConfig1 ->
|
||||
sortMap.put(sActivityRewardConfig1.getId(), sActivityRewardConfig1)
|
||||
);
|
||||
|
||||
Map.Entry<Integer, SActivityRewardConfig> entry = sortMap.lowerEntry(sActivityRewardConfig.getId());
|
||||
if (null != entry) {
|
||||
ActivityProgressInfo progressInfo = user.getActivityManager().getActivityMissionMap().get(id).getActivityProgressInfoMap().get(entry.getKey());
|
||||
if (progressInfo != null && activityProgressInfo.getState() != ActivityType.HAD_TAKED) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,11 @@
|
|||
package com.ljsd.jieling.logic.activity;
|
||||
|
||||
import com.ljsd.jieling.config.SActivityRewardConfig;
|
||||
import com.ljsd.jieling.logic.dao.ActivityMission;
|
||||
import com.ljsd.jieling.logic.dao.ActivityProgressInfo;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
|
||||
|
||||
/**
|
||||
* 签到不走活动 没有逻辑处理
|
||||
*/
|
||||
@Deprecated
|
||||
class SignInSumActivity extends AbstractActivity {
|
||||
|
||||
public SignInSumActivity(int id) {
|
||||
|
|
@ -17,19 +16,5 @@ class SignInSumActivity extends AbstractActivity {
|
|||
void updateProgress(ActivityMission activityMission, int count) {
|
||||
activityMission.setValue(count + activityMission.getValue());
|
||||
}
|
||||
//
|
||||
// @Override
|
||||
// boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
|
||||
// //TODO 检查下 客户端是否会跳着领取
|
||||
//
|
||||
//// SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
|
||||
//// if (sActivityRewardConfig == null || sActivityRewardConfig.getActivityId() != id) {
|
||||
//// MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "");
|
||||
//// return false;
|
||||
//// }
|
||||
//// return checkValue(session, sActivityRewardConfig, activityProgressInfo);
|
||||
// }
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -172,6 +172,7 @@ public class BuyGoodsLogic {
|
|||
if(sRechargeCommodityConfig.getAccumulativeRecharge() == 1){
|
||||
int saveAmt = rechargeInfo.getSaveAmt();
|
||||
rechargeInfo.setSaveAmt(price+saveAmt);
|
||||
//TODO 用事件分发
|
||||
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RechargeTotal,rechargeInfo.getSaveAmt());
|
||||
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.LUCKYCAT,price);
|
||||
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.DAILY_RECHARGE,price);
|
||||
|
|
|
|||
Loading…
Reference in New Issue