日常任务-公会周奖励数据
This commit is contained in:
@@ -18,6 +18,9 @@ public interface DailyTaskConstant {
|
||||
play_game,//游戏种类
|
||||
recv_gold_num,//收礼金币
|
||||
task_config,//任务配置
|
||||
up_mic_coin_ip_limit,//主播上麦领取ip限制
|
||||
up_mic_coin_uid_limit,//主播上麦领取ip限制
|
||||
up_mic_coin_device_limit,//主播上麦领取设备限制
|
||||
;
|
||||
|
||||
@Override
|
||||
|
@@ -15,7 +15,7 @@ public enum DailyTaskTypeEnum {
|
||||
RECV_NOMAL_GIFT_GOLD("RECV_NOMAL_GIFT_GOLD"),//收到礼物(价值超过2w金币)
|
||||
UP_MIC_COIN("UP_MIC_COIN"),//上麦聊天(获得金币)
|
||||
ROOM_DAY_DIAMOND("ROOM_DAY_DIAMOND"),//房间日流水奖励
|
||||
GUILD_WEEK_REWARD(""),//公会周奖励
|
||||
GUILD_WEEK_REWARD("GUILD_WEEK_REWARD"),//公会周奖励
|
||||
;
|
||||
|
||||
private String handlerType;
|
||||
|
@@ -8,10 +8,14 @@ public class DailyTaskContext {
|
||||
private final DailyTaskVo dailyTaskVo;
|
||||
private String todayDate;
|
||||
private Integer partitionId;
|
||||
private String deviceId;
|
||||
private String realIpAddress;
|
||||
|
||||
public DailyTaskContext(Long uid, DailyTaskVo dailyTaskVo, Integer partitionId) {
|
||||
public DailyTaskContext(Long uid, DailyTaskVo dailyTaskVo, Integer partitionId, String deviceId, String realIpAddress) {
|
||||
this.uid = uid;
|
||||
this.dailyTaskVo = dailyTaskVo;
|
||||
this.partitionId = partitionId;
|
||||
this.deviceId = deviceId;
|
||||
this.realIpAddress = realIpAddress;
|
||||
}
|
||||
}
|
||||
|
@@ -3,6 +3,7 @@ package com.accompany.business.vo.dailytask;
|
||||
import com.accompany.business.constant.dailytask.DailyTaskConstant;
|
||||
import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
|
||||
import com.accompany.business.model.dailytask.DailyTaskReward;
|
||||
import com.accompany.business.vo.guild.GuildMemberWeekLevelRewardItemVo;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
@@ -33,4 +34,5 @@ public class DailyTaskVo {
|
||||
private List<DailyTaskReward> configRewards;
|
||||
@ApiModelProperty("房间流水奖励")
|
||||
private DailyTaskRoomDiamondVo diamondVo;
|
||||
private List<GuildMemberWeekLevelRewardItemVo> guildWeekRewardItems;
|
||||
}
|
||||
|
@@ -87,10 +87,10 @@ public abstract class AbstractDailyTaskHandler implements DailyTaskHandler {
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public BusiResult receive(Long uid, String receiveDate, DailyTaskVo dailyTaskVo) {
|
||||
public BusiResult receive(Long uid, String receiveDate, DailyTaskVo dailyTaskVo, String deviceId, String realIpAddress) {
|
||||
Users users = usersService.getUsersByUid(uid);
|
||||
DailyTaskTypeEnum dailyTaskTypeEnum = dailyTaskVo.getTaskType();
|
||||
DailyTaskContext dailyTaskContext = new DailyTaskContext(uid, dailyTaskVo, users.getPartitionId());
|
||||
DailyTaskContext dailyTaskContext = new DailyTaskContext(uid, dailyTaskVo, users.getPartitionId(), deviceId, realIpAddress);
|
||||
this.handle(dailyTaskContext);
|
||||
|
||||
if (!dailyTaskVo.getTodayDate().equals(receiveDate)) {
|
||||
|
@@ -18,7 +18,7 @@ public interface DailyTaskHandler {
|
||||
|
||||
DailyTaskVo doHandle(DailyTaskContext context);
|
||||
|
||||
BusiResult receive(Long uid, String receiveDate, DailyTaskVo dailyTaskVo);
|
||||
BusiResult receive(Long uid, String receiveDate, DailyTaskVo dailyTaskVo, String deviceId, String realIpAddress);
|
||||
|
||||
String getTodayDate(Integer partitionId, Date date);
|
||||
}
|
@@ -30,8 +30,6 @@ import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.accompany.business.constant.dailytask.DailyTaskTypeEnum.GUILD_WEEK_REWARD;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@@ -57,9 +55,9 @@ public class DailyTaskService {
|
||||
@Autowired
|
||||
private UsersService usersService;
|
||||
|
||||
public DailyTaskVo executeDailyTask(DailyTaskVo dailyTaskVo, Long uid, Integer partitionId) {
|
||||
public DailyTaskVo executeDailyTask(DailyTaskVo dailyTaskVo, Long uid, Integer partitionId, String deviceId, String realIpAddress) {
|
||||
DailyTaskHandler handler = taskHandlerRegistry.getHandler(dailyTaskVo.getTaskType().getHandlerType());
|
||||
DailyTaskContext dailyTaskContext = new DailyTaskContext(uid, dailyTaskVo, partitionId);
|
||||
DailyTaskContext dailyTaskContext = new DailyTaskContext(uid, dailyTaskVo, partitionId, deviceId, realIpAddress);
|
||||
return handler.handle(dailyTaskContext);
|
||||
}
|
||||
|
||||
@@ -81,14 +79,14 @@ public class DailyTaskService {
|
||||
* @param todayDate
|
||||
* @return
|
||||
*/
|
||||
public BusiResult executeReceive(Integer taskConfigId, Long uid, String todayDate) {
|
||||
public BusiResult executeReceive(Integer taskConfigId, Long uid, String todayDate, String deviceId, String realIpAddress) {
|
||||
DailyTaskVo dailyTaskVo = this.taskVo(taskConfigId, uid);
|
||||
DailyTaskTypeEnum taskType = dailyTaskVo.getTaskType();
|
||||
DailyTaskHandler handler = taskHandlerRegistry.getHandler(taskType.getHandlerType());
|
||||
if (handler == null || StringUtils.isEmpty(todayDate) || uid == null) {
|
||||
throw new ServiceException(BusiStatus.PARAMERROR);
|
||||
}
|
||||
return handler.receive(uid, todayDate, dailyTaskVo);
|
||||
return handler.receive(uid, todayDate, dailyTaskVo, deviceId, realIpAddress);
|
||||
}
|
||||
|
||||
public BusiResult<List<DailyTaskTabVo>> taskTab(Long uid) {
|
||||
@@ -118,7 +116,7 @@ public class DailyTaskService {
|
||||
* @param uid
|
||||
* @return
|
||||
*/
|
||||
public List<DailyTaskVo> tasks(Long uid, Integer taskTabType) {
|
||||
public List<DailyTaskVo> tasks(Long uid, Integer taskTabType, String deviceId, String realIpAddress) {
|
||||
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid);
|
||||
List<Byte> taskRole = Stream.of((byte)0)
|
||||
.collect(Collectors.toList());
|
||||
@@ -149,14 +147,15 @@ public class DailyTaskService {
|
||||
return dailyTaskVos;
|
||||
}
|
||||
|
||||
List<DailyTaskVo> executeDailyTaskList = new ArrayList<>();
|
||||
dailyTaskVos.stream().forEach(dailyTaskVo -> {
|
||||
if (GUILD_WEEK_REWARD.equals(dailyTaskVo.getTaskType())) {
|
||||
return;
|
||||
DailyTaskVo taskVo = executeDailyTask(dailyTaskVo, uid, partitionId, deviceId, realIpAddress);
|
||||
if (taskVo != null) {
|
||||
executeDailyTaskList.add(taskVo);
|
||||
}
|
||||
executeDailyTask(dailyTaskVo, uid, partitionId);
|
||||
});
|
||||
|
||||
return dailyTaskVos;
|
||||
return executeDailyTaskList;
|
||||
}
|
||||
|
||||
public List<DailyTaskVo> taskVoList(Integer partitionId, Integer taskTabType, List<Byte> taskRole, Long uid) {
|
||||
|
@@ -0,0 +1,56 @@
|
||||
package com.accompany.business.service.dailytask.handler;
|
||||
|
||||
import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
|
||||
import com.accompany.business.model.guild.GuildMember;
|
||||
import com.accompany.business.service.dailytask.AbstractDailyTaskHandler;
|
||||
import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType;
|
||||
import com.accompany.business.service.guild.GuildMemberService;
|
||||
import com.accompany.business.service.guild.GuildMemberWeekLevelRewardService;
|
||||
import com.accompany.business.vo.dailytask.DailyProgressContext;
|
||||
import com.accompany.business.vo.dailytask.DailyTaskContext;
|
||||
import com.accompany.business.vo.dailytask.DailyTaskVo;
|
||||
import com.accompany.business.vo.guild.GuildMemberWeekLevelRewardVo;
|
||||
import com.accompany.core.enumeration.PartitionEnum;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
@DailyTaskHandlerType(DailyTaskTypeEnum.GUILD_WEEK_REWARD)
|
||||
public class GuildWeekRewardHandler extends AbstractDailyTaskHandler {
|
||||
|
||||
@Autowired
|
||||
private GuildMemberWeekLevelRewardService guildMemberWeekLevelRewardService;
|
||||
|
||||
@Autowired
|
||||
private GuildMemberService guildMemberService;
|
||||
|
||||
@Override
|
||||
public void doExecuteProgress(DailyProgressContext progressContext) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public DailyTaskVo doHandle(DailyTaskContext context) {
|
||||
DailyTaskVo dailyTaskVo = context.getDailyTaskVo();
|
||||
Integer partitionId = context.getPartitionId();
|
||||
Long uid = context.getUid();
|
||||
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid);
|
||||
if (guildMember == null) {
|
||||
dailyTaskVo.setGuildWeekRewardItems(Collections.emptyList());
|
||||
return null;
|
||||
}
|
||||
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
|
||||
List<GuildMemberWeekLevelRewardVo> guildMemberWeekLevelRewardVos =
|
||||
guildMemberWeekLevelRewardService.listHistory(guildMember.getId(), partitionId, partitionEnum.getZoneId(), 1);
|
||||
if (CollectionUtils.isEmpty(guildMemberWeekLevelRewardVos)) {
|
||||
dailyTaskVo.setGuildWeekRewardItems(Collections.emptyList());
|
||||
return null;
|
||||
}
|
||||
dailyTaskVo.setGuildWeekRewardItems(guildMemberWeekLevelRewardVos.get(0).getItemList());
|
||||
return dailyTaskVo;
|
||||
}
|
||||
|
||||
}
|
@@ -35,9 +35,6 @@ public class RoomDayDiamondHandler extends AbstractDailyTaskHandler {
|
||||
|
||||
@Override
|
||||
public void doExecuteProgress(DailyProgressContext progressContext) {
|
||||
Long uid = progressContext.getUid();
|
||||
Integer partitionId = progressContext.getPartitionId();
|
||||
String todayDate = getTodayDate(partitionId, progressContext.getCreateTime());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -58,7 +55,7 @@ public class RoomDayDiamondHandler extends AbstractDailyTaskHandler {
|
||||
dailyTaskRoomDiamondVo.setLevelVos(rewardList);
|
||||
List<RoomDayDiamondReward> roomDayDiamondRewards = roomDayDiamondRewardService.listByPartitionIdAsc(partitionId);
|
||||
if (CollectionUtils.isEmpty(roomDayDiamondRewards)) {
|
||||
return dailyTaskVo;
|
||||
return null;
|
||||
}
|
||||
Map<String, RoomDayDiamondRewardRecvRecord> levelMap = RoomDayDiamondRewardRecvRecordService.getLevelMap(partitionId, uid, todayDate);
|
||||
int size = roomDayDiamondRewards.size();
|
||||
|
@@ -8,15 +8,25 @@ import com.accompany.business.vo.dailytask.DailyProgressContext;
|
||||
import com.accompany.business.vo.dailytask.DailyTaskContext;
|
||||
import com.accompany.business.vo.dailytask.DailyTaskVo;
|
||||
import com.accompany.common.result.BusiResult;
|
||||
import com.accompany.common.utils.DateTimeUtil;
|
||||
import com.accompany.core.enumeration.PartitionEnum;
|
||||
import org.redisson.api.RAtomicLong;
|
||||
import org.redisson.api.RBucket;
|
||||
import org.redisson.api.RList;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.Duration;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.temporal.TemporalAdjusters;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.accompany.business.constant.dailytask.DailyTaskConstant.RedisKey.up_mic_coin_device_limit;
|
||||
import static com.accompany.business.constant.dailytask.DailyTaskConstant.RedisKey.up_mic_coin_ip_limit;
|
||||
|
||||
@Component
|
||||
@DailyTaskHandlerType(DailyTaskTypeEnum.UP_MIC_COIN)
|
||||
public class UpMicCoinHandler extends AbstractDailyTaskHandler {
|
||||
@@ -36,6 +46,9 @@ public class UpMicCoinHandler extends AbstractDailyTaskHandler {
|
||||
public DailyTaskVo doHandle(DailyTaskContext context) {
|
||||
Long uid = context.getUid();
|
||||
DailyTaskVo dailyTaskVo = context.getDailyTaskVo();
|
||||
String deviceId = context.getDeviceId();
|
||||
String realIpAddress = context.getRealIpAddress();
|
||||
|
||||
String todayDate = context.getTodayDate();
|
||||
RAtomicLong userDayUpMicDuration = roomMicService.userDayUpMicDuration(todayDate, uid);
|
||||
long totalDuration = userDayUpMicDuration.get();
|
||||
@@ -50,6 +63,8 @@ public class UpMicCoinHandler extends AbstractDailyTaskHandler {
|
||||
}
|
||||
if (totalDuration >= dailyTaskVo.getStandardValue()) {
|
||||
taskStatus(uid, todayDate, taskType).set(1, Duration.ofDays(1));
|
||||
getIpCache(todayDate).add(deviceId);
|
||||
getIpCache(todayDate).add(realIpAddress);
|
||||
}
|
||||
dailyTaskVo.setReachNum(totalDuration);
|
||||
dailyTaskVo.setReceiveStatus(computeReceiveStatus(uid, todayDate, taskType));
|
||||
@@ -57,9 +72,24 @@ public class UpMicCoinHandler extends AbstractDailyTaskHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public BusiResult receive(Long uid, String receiveDate, DailyTaskVo dailyTaskVo) {
|
||||
super.receive(uid, receiveDate, dailyTaskVo);
|
||||
public BusiResult receive(Long uid, String receiveDate, DailyTaskVo dailyTaskVo, String deviceId, String realIpAddress) {
|
||||
super.receive(uid, receiveDate, dailyTaskVo, deviceId, realIpAddress);
|
||||
|
||||
return BusiResult.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTodayDate(Integer partitionId, Date date) {
|
||||
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
|
||||
ZonedDateTime zonedDateTime = DateTimeUtil.convertWithZoneId(date, partitionEnum.getZoneId());
|
||||
return zonedDateTime.with(TemporalAdjusters.nextOrSame(DayOfWeek.MONDAY)).format(DateTimeUtil.dateFormatter);
|
||||
}
|
||||
|
||||
private RList<String> getIpCache(String monday) {
|
||||
return redissonClient.getList(up_mic_coin_ip_limit.getKey(monday));
|
||||
}
|
||||
|
||||
private RList<String> getDeveiceCache(String monday) {
|
||||
return redissonClient.getList(up_mic_coin_device_limit.getKey(monday));
|
||||
}
|
||||
}
|
||||
|
@@ -198,6 +198,10 @@ public class GuildMemberWeekLevelRewardService extends ServiceImpl<GuildMemberWe
|
||||
}
|
||||
|
||||
public List<GuildMemberWeekLevelRewardVo> listHistory(Long familyMemberId, Integer partitionId, String zoneId) {
|
||||
return listHistory(familyMemberId, partitionId, zoneId, 4);
|
||||
}
|
||||
|
||||
public List<GuildMemberWeekLevelRewardVo> listHistory(Long familyMemberId, Integer partitionId, String zoneId, int weekSize) {
|
||||
|
||||
List<GuildMemberWeekLevelReward> levelRewardList = lambdaQuery()
|
||||
.eq(GuildMemberWeekLevelReward::getPartitionId, partitionId)
|
||||
@@ -212,7 +216,7 @@ public class GuildMemberWeekLevelRewardService extends ServiceImpl<GuildMemberWe
|
||||
Date thisMonday = DateTimeUtil.getMondayDate(zoneTime);
|
||||
List<String> dateRangeList = new ArrayList<>();
|
||||
List<Date> mondayList = new ArrayList<>();
|
||||
for (int i = 0; i < 4; i++) {
|
||||
for (int i = 0; i < weekSize; i++) {
|
||||
Date t = DateTimeUtil.addDays(zoneTime, -i*7);
|
||||
Date mondayTime = DateTimeUtil.getMondayDate(t);
|
||||
String monday = DateTimeUtil.convertDate(mondayTime, DateTimeUtil.DEFAULT_DATE_PATTERN);
|
||||
|
@@ -7,6 +7,7 @@ import com.accompany.business.vo.dailytask.DailyTaskTabVo;
|
||||
import com.accompany.business.vo.dailytask.DailyTaskVo;
|
||||
import com.accompany.business.vo.dailytask.UserGoldBeanBillVo;
|
||||
import com.accompany.common.result.BusiResult;
|
||||
import com.accompany.common.utils.IPUtils;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
@@ -14,8 +15,10 @@ import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
|
||||
import static com.accompany.common.constant.ApplicationConstant.PublicParameters.DEVICE_ID;
|
||||
import static com.accompany.common.constant.ApplicationConstant.PublicParameters.PUB_UID;
|
||||
|
||||
@Api(tags = "日常任务",value = "日常任务")
|
||||
@@ -37,8 +40,10 @@ public class DailyTaskController {
|
||||
@ApiOperation(value = "任务列表", httpMethod = "GET")
|
||||
@GetMapping("/tasks")
|
||||
public BusiResult<List<DailyTaskVo>> tasks(@RequestHeader(PUB_UID) Long uid,
|
||||
@RequestParam(defaultValue = "1") Integer taskTabType) {
|
||||
List<DailyTaskVo> tasks = dailyTaskService.tasks(uid, taskTabType);
|
||||
@RequestParam(defaultValue = "1") Integer taskTabType,
|
||||
@RequestHeader(DEVICE_ID)String deviceId, HttpServletRequest request) {
|
||||
String realIpAddress = IPUtils.getRealIpAddress(request);
|
||||
List<DailyTaskVo> tasks = dailyTaskService.tasks(uid, taskTabType, deviceId, realIpAddress);
|
||||
return BusiResult.success(tasks);
|
||||
}
|
||||
|
||||
@@ -48,8 +53,10 @@ public class DailyTaskController {
|
||||
@ApiImplicitParam(name = "taskConfigId", value = "列表有传对应字段", required = true, dataType = "string", paramType = "query"),
|
||||
})
|
||||
@PostMapping("/recv")
|
||||
public BusiResult<List<DailyTaskVo>> recv(@RequestHeader(PUB_UID) Long uid, String todayDate, Integer taskConfigId) {
|
||||
return dailyTaskService.executeReceive(taskConfigId, uid, todayDate);
|
||||
public BusiResult<List<DailyTaskVo>> recv(@RequestHeader(PUB_UID) Long uid, String todayDate, Integer taskConfigId,
|
||||
@RequestHeader(DEVICE_ID)String deviceId, HttpServletRequest request) {
|
||||
String realIpAddress = IPUtils.getRealIpAddress(request);
|
||||
return dailyTaskService.executeReceive(taskConfigId, uid, todayDate, deviceId, realIpAddress);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "兑换中心", httpMethod = "GET")
|
||||
|
Reference in New Issue
Block a user