日常任务-日任务奖励领取详情
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
package com.accompany.business.model.dailytask;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 上麦达标&领取&公会总数实体类
|
||||
*
|
||||
* @author
|
||||
* @since 2025-08-27
|
||||
*/
|
||||
@Data
|
||||
public class DailyTaskRecvCoinStat implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
/**
|
||||
* 分区id
|
||||
*/
|
||||
private Integer partitionId;
|
||||
/**
|
||||
* 统计日期
|
||||
*/
|
||||
private String statDate;
|
||||
/**
|
||||
* 达到人数
|
||||
*/
|
||||
private Integer reachNum;
|
||||
/**
|
||||
* 领取人数
|
||||
*/
|
||||
private Integer receiveNum;
|
||||
/**
|
||||
* 公会成员
|
||||
*/
|
||||
private Integer guildMemberNumn;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
|
||||
}
|
@@ -48,6 +48,8 @@ public class DailyTaskRewardRecord implements Serializable {
|
||||
* 奖品数量
|
||||
*/
|
||||
private Long awardNum;
|
||||
private String deviceId;
|
||||
private String loginIp;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
|
@@ -0,0 +1,19 @@
|
||||
package com.accompany.business.vo.dailytask;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@ApiModel("公会任务领取金币统计")
|
||||
@Data
|
||||
public class DailyCoinRecvVo {
|
||||
private Integer partitionId;
|
||||
@ApiModelProperty(value = "统计日期")
|
||||
private String statDate;
|
||||
@ApiModelProperty(value = "达到人数")
|
||||
private Integer reachNum;
|
||||
@ApiModelProperty(value = "领取人数")
|
||||
private Integer receiveNum;
|
||||
@ApiModelProperty(value = "公会成员人数")
|
||||
private Integer guildMemberNumn;
|
||||
}
|
@@ -0,0 +1,14 @@
|
||||
package com.accompany.business.mybatismapper.dailytask;
|
||||
|
||||
import com.accompany.business.model.dailytask.DailyTaskRecvCoinStat;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* 上麦达标&领取&公会总数 Mapper 接口
|
||||
*
|
||||
* @author
|
||||
* @since 2025-08-27
|
||||
*/
|
||||
public interface DailyTaskRecvCoinStatMapper extends BaseMapper<DailyTaskRecvCoinStat> {
|
||||
|
||||
}
|
@@ -31,4 +31,6 @@ public interface GuildMicStatisticsPolicy2Mapper extends BaseMapper<GuildMicStat
|
||||
List<GuildPolicy2PersonalVo> listPersonalMicData(@Param("cycleDate")String cycleDate, @Param("guildMemberId")Long guildMemberId);
|
||||
|
||||
Integer getMinutes(@Param("partitionId") Integer partitionId, @Param("guildMemberId") Long guildMemberId, @Param("statDate") String statDate);
|
||||
|
||||
Integer countByPartitionDate(@Param("statDate")String statDate, @Param("partitionId") Integer partitionId, @Param("reachMinutes") Integer reachMinutes);
|
||||
}
|
||||
|
@@ -133,7 +133,7 @@ public abstract class AbstractDailyTaskHandler implements DailyTaskHandler {
|
||||
for (DailyTaskReward configReward : dailyTaskVo.getConfigRewards()) {
|
||||
dailyTaskRewardRecordService.addRecord(configReward.getTaskConfigId(), dailyTaskVo.getTaskType().name(),
|
||||
uid, partitionId, guildId, guildMemberId, configReward.getAwardType(),
|
||||
configReward.getAwardId(), configReward.getAwardNum(), receiveDate);
|
||||
configReward.getAwardId(), configReward.getAwardNum(), receiveDate, realIpAddress, deviceId);
|
||||
if (RewardTypeEnum.GOLDBEAN.getType().equals(configReward.getAwardType())) {
|
||||
userGoldBeanService.addGoldBean(uid, BigDecimal.valueOf(configReward.getAwardNum()), GoldBeanBillType.TASK_GAIN,
|
||||
String.valueOf(dailyTaskTypeEnum.ordinal()), 1, dailyTaskVo.getTaskType().name(),
|
||||
|
@@ -0,0 +1,30 @@
|
||||
package com.accompany.business.service.dailytask;
|
||||
|
||||
import com.accompany.business.model.dailytask.DailyTaskRecvCoinStat;
|
||||
import com.accompany.business.mybatismapper.dailytask.DailyTaskRecvCoinStatMapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 上麦达标&领取&公会总数 服务实现类
|
||||
*
|
||||
* @author
|
||||
* @since 2025-08-27
|
||||
*/
|
||||
@Service
|
||||
public class DailyTaskRecvCoinStatService extends ServiceImpl<DailyTaskRecvCoinStatMapper, DailyTaskRecvCoinStat> {
|
||||
|
||||
public IPage<DailyTaskRecvCoinStat> selectDailyCoinRecvStat(Integer partitionId, String startDate, String endDate, Integer pageNo, Integer pageSize) {
|
||||
LambdaQueryWrapper<DailyTaskRecvCoinStat> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(DailyTaskRecvCoinStat::getPartitionId, partitionId)
|
||||
.ge(DailyTaskRecvCoinStat::getStatDate, startDate)
|
||||
.le(DailyTaskRecvCoinStat::getStatDate, endDate)
|
||||
.orderByDesc(DailyTaskRecvCoinStat::getStatDate);
|
||||
return baseMapper.selectPage(new Page<>(pageNo, pageSize), wrapper);
|
||||
}
|
||||
|
||||
}
|
@@ -2,6 +2,7 @@ package com.accompany.business.service.dailytask;
|
||||
|
||||
import com.accompany.business.model.dailytask.DailyTaskRewardRecord;
|
||||
import com.accompany.business.mybatismapper.dailytask.DailyTaskRewardRecordMapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -17,7 +18,7 @@ import java.util.Date;
|
||||
public class DailyTaskRewardRecordService extends ServiceImpl<DailyTaskRewardRecordMapper, DailyTaskRewardRecord> {
|
||||
|
||||
public Integer addRecord(Integer taskConfigId, String taskKey, Long uid, Integer partitionId, Integer guildId,
|
||||
Long guildMemberId, Byte awardType, Long awardId, Long awardNum, String statDate) {
|
||||
Long guildMemberId, Byte awardType, Long awardId, Long awardNum, String statDate, String ip, String deviceId) {
|
||||
DailyTaskRewardRecord entity = new DailyTaskRewardRecord();
|
||||
entity.setTaskConfigId(taskConfigId);
|
||||
entity.setTaskKey(taskKey);
|
||||
@@ -31,8 +32,18 @@ public class DailyTaskRewardRecordService extends ServiceImpl<DailyTaskRewardRec
|
||||
entity.setAwardType(awardType);
|
||||
entity.setAwardId(awardId);
|
||||
entity.setAwardNum(awardNum);
|
||||
entity.setLoginIp(ip);
|
||||
entity.setDeviceId(deviceId);
|
||||
entity.setCreateTime(new Date());
|
||||
entity.setUpdateTime(new Date());
|
||||
return this.baseMapper.insert(entity);
|
||||
}
|
||||
|
||||
public Integer selectCount(Integer partitionId, String taskKey, String statDate) {
|
||||
LambdaQueryWrapper<DailyTaskRewardRecord> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(DailyTaskRewardRecord::getPartitionId, partitionId)
|
||||
.eq(DailyTaskRewardRecord::getTaskKey, taskKey)
|
||||
.eq(DailyTaskRewardRecord::getStatDate, statDate);
|
||||
return this.baseMapper.selectCount(wrapper).intValue();
|
||||
}
|
||||
}
|
@@ -0,0 +1,39 @@
|
||||
package com.accompany.business.service.dailytask;
|
||||
|
||||
import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
|
||||
import com.accompany.business.model.dailytask.DailyTaskRecvCoinStat;
|
||||
import com.accompany.business.service.guild.GuildMemberService;
|
||||
import com.accompany.business.service.guildpolicy2.GuildMicStatisticsPolicy2Service;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Service
|
||||
public class DailyTaskStatService {
|
||||
|
||||
@Autowired
|
||||
private DailyTaskRewardRecordService dailyTaskRewardRecordService;
|
||||
@Autowired
|
||||
private GuildMicStatisticsPolicy2Service guildMicStatisticsPolicy2Service;
|
||||
@Autowired
|
||||
private GuildMemberService guildMemberService;
|
||||
@Autowired
|
||||
private DailyTaskRecvCoinStatService dailyTaskRecvCoinStatService;
|
||||
|
||||
public DailyTaskRecvCoinStat statDailyCoinRecvStat(Integer partitionId, String statDate) {
|
||||
DailyTaskRecvCoinStat dailyTaskRecvCoinStat = new DailyTaskRecvCoinStat();
|
||||
Integer receiveNum = dailyTaskRewardRecordService.selectCount(partitionId, DailyTaskTypeEnum.UP_MIC_COIN.name(), statDate);
|
||||
long guildMember = guildMemberService.countValidGuildMember(partitionId);
|
||||
Integer reachNum = guildMicStatisticsPolicy2Service.countByPartitionDate(statDate, partitionId, 120);
|
||||
dailyTaskRecvCoinStat.setStatDate(statDate);
|
||||
dailyTaskRecvCoinStat.setPartitionId(partitionId);
|
||||
dailyTaskRecvCoinStat.setReachNum(reachNum);
|
||||
dailyTaskRecvCoinStat.setReceiveNum(receiveNum);
|
||||
dailyTaskRecvCoinStat.setGuildMemberNumn((int)guildMember);
|
||||
dailyTaskRecvCoinStat.setCreateTime(new Date());
|
||||
dailyTaskRecvCoinStat.setUpdateTime(dailyTaskRecvCoinStat.getCreateTime());
|
||||
dailyTaskRecvCoinStatService.save(dailyTaskRecvCoinStat);
|
||||
return dailyTaskRecvCoinStat;
|
||||
}
|
||||
}
|
@@ -25,7 +25,7 @@ public class ChargeGoldNumHandler extends AbstractDailyTaskHandler {
|
||||
Long uid = progressContext.getUid();
|
||||
Integer partitionId = progressContext.getPartitionId();
|
||||
|
||||
String todayDate = getTodayDate(partitionId, progressContext.getCreateTime());
|
||||
String todayDate = getTaskDate(partitionId, progressContext.getCreateTime());
|
||||
RMap<Long, Long> dailyChargeGold = dailyChargeGold(partitionId, todayDate);
|
||||
Long chargeGold = dailyChargeGold.addAndGet(uid, progressContext.getChargeGoldNum());
|
||||
dailyChargeGold.expire(Duration.ofDays(EXPIRE_DAY));
|
||||
|
@@ -19,7 +19,7 @@ public class DailySignHandler extends AbstractDailyTaskHandler {
|
||||
public void doExecuteProgress(DailyProgressContext progressContext) {
|
||||
Long uid = progressContext.getUid();
|
||||
Integer partitionId = progressContext.getPartitionId();
|
||||
String todayDate = getTodayDate(partitionId, progressContext.getCreateTime());
|
||||
String todayDate = getTaskDate(partitionId, progressContext.getCreateTime());
|
||||
|
||||
taskStatus(uid, todayDate, DailyTaskTypeEnum.DAILY_SIGN).set(1, Duration.ofDays(EXPIRE_DAY));
|
||||
}
|
||||
|
@@ -23,7 +23,7 @@ public class PlayGameHandler extends AbstractDailyTaskHandler {
|
||||
public void doExecuteProgress(DailyProgressContext progressContext) {
|
||||
Long uid = progressContext.getUid();
|
||||
Integer partitionId = progressContext.getPartitionId();
|
||||
String todayDate = getTodayDate(partitionId, progressContext.getCreateTime());
|
||||
String todayDate = getTaskDate(partitionId, progressContext.getCreateTime());
|
||||
RSet<String> playGameCategory = playGameCategory(uid, todayDate);
|
||||
String gameId = progressContext.getGameId();
|
||||
if (playGameCategory.contains(gameId)) {
|
||||
|
@@ -24,7 +24,7 @@ public class RecvLuckyGiftHandler extends AbstractDailyTaskHandler {
|
||||
public void doExecuteProgress(DailyProgressContext progressContext) {
|
||||
Long uid = progressContext.getUid();
|
||||
Integer partitionId = progressContext.getPartitionId();
|
||||
String todayDate = getTodayDate(partitionId, progressContext.getCreateTime());
|
||||
String todayDate = getTaskDate(partitionId, progressContext.getCreateTime());
|
||||
RBucket<Integer> taskStatus = taskStatus(uid, todayDate, DailyTaskTypeEnum.RECV_LUCKY_GIFT);
|
||||
if (taskStatus.isExists()) {
|
||||
return;
|
||||
|
@@ -25,7 +25,7 @@ public class RecvNomalGiftGoldHandler extends AbstractDailyTaskHandler {
|
||||
public void doExecuteProgress(DailyProgressContext progressContext) {
|
||||
Long uid = progressContext.getUid();
|
||||
Integer partitionId = progressContext.getPartitionId();
|
||||
String todayDate = getTodayDate(partitionId, progressContext.getCreateTime());
|
||||
String todayDate = getTaskDate(partitionId, progressContext.getCreateTime());
|
||||
RMap<Long, Long> recvGoldNum = recvGoldNum(partitionId, todayDate);
|
||||
Long addAndGet = recvGoldNum.addAndGet(uid, progressContext.getRecvGoldNum());
|
||||
recvGoldNum.expire(Duration.ofDays(EXPIRE_DAY));
|
||||
|
@@ -24,7 +24,7 @@ public class RecvNomalGiftHandler extends AbstractDailyTaskHandler {
|
||||
public void doExecuteProgress(DailyProgressContext progressContext) {
|
||||
Long uid = progressContext.getUid();
|
||||
Integer partitionId = progressContext.getPartitionId();
|
||||
String todayDate = getTodayDate(partitionId, progressContext.getCreateTime());
|
||||
String todayDate = getTaskDate(partitionId, progressContext.getCreateTime());
|
||||
RBucket<Integer> taskStatus = taskStatus(uid, todayDate, DailyTaskTypeEnum.RECV_NOMAL_GIFT);
|
||||
if (taskStatus.isExists()) {
|
||||
return;
|
||||
|
@@ -11,6 +11,7 @@ import com.accompany.business.service.room.RoomDayDiamondRewardService;
|
||||
import com.accompany.business.service.room.RoomService;
|
||||
import com.accompany.business.vo.dailytask.*;
|
||||
import com.accompany.core.model.Room;
|
||||
import com.accompany.core.model.Users;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -48,7 +49,12 @@ public class RoomDayDiamondHandler extends AbstractDailyTaskHandler {
|
||||
String todayDate = context.getTodayDate();
|
||||
dailyTaskRoomDiamondVo.setStatDate(todayDate);
|
||||
Room roomByUid = roomService.getRoomByUid(uid);
|
||||
dailyTaskRoomDiamondVo.setAvatar(roomByUid.getAvatar());
|
||||
if (roomByUid == null) {
|
||||
Users users = usersService.getUsersByUid(uid);
|
||||
dailyTaskRoomDiamondVo.setAvatar(users.getAvatar());
|
||||
} else {
|
||||
dailyTaskRoomDiamondVo.setAvatar(roomByUid.getAvatar());
|
||||
}
|
||||
BigDecimal totalGoldNum = roomDayDiamondNumService.getGoldNum(partitionId, uid, todayDate);
|
||||
dailyTaskRoomDiamondVo.setTotalGoldNum(totalGoldNum);
|
||||
List<DailyTaskRoomDiamondDetailVo> rewardList = new ArrayList<>();
|
||||
|
@@ -19,7 +19,7 @@ public class RoomSendGiftHandler extends AbstractDailyTaskHandler {
|
||||
public void doExecuteProgress(DailyProgressContext progressContext) {
|
||||
Long uid = progressContext.getUid();
|
||||
Integer partitionId = progressContext.getPartitionId();
|
||||
String todayDate = getTodayDate(partitionId, progressContext.getCreateTime());
|
||||
String todayDate = getTaskDate(partitionId, progressContext.getCreateTime());
|
||||
RBucket<Integer> taskStatus = taskStatus(uid, todayDate, DailyTaskTypeEnum.ROOM_SEND_GIFT);
|
||||
if (taskStatus.isExists()) {
|
||||
return;
|
||||
|
@@ -99,4 +99,11 @@ public class GuildMemberService extends ServiceImpl<GuildMemberMapper, GuildMemb
|
||||
public List<GuildMember> listGuildMemberByPartitionIdBetweenTime(Integer partitionId, Date startTime, Date endTime) {
|
||||
return this.baseMapper.listGuildMemberByPartitionIdBetweenTime(partitionId, startTime, endTime);
|
||||
}
|
||||
|
||||
public long countValidGuildMember(Integer partitionId) {
|
||||
return this.lambdaQuery()
|
||||
.eq(GuildMember::getPartitionId, partitionId)
|
||||
.eq(GuildMember::getEnable, Boolean.TRUE)
|
||||
.count();
|
||||
}
|
||||
}
|
||||
|
@@ -60,4 +60,8 @@ public class GuildMicStatisticsPolicy2Service extends ServiceImpl<GuildMicStatis
|
||||
Integer minutes = baseMapper.getMinutes(partitionId, guildMemberId, statDate);
|
||||
return minutes == null ? 0 : minutes;
|
||||
}
|
||||
|
||||
public Integer countByPartitionDate(String statDate, Integer partitionId, Integer reachMinutes) {
|
||||
return baseMapper.countByPartitionDate(statDate, partitionId, reachMinutes);
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.accompany.business.mybatismapper.dailytask.DailyTaskRecvCoinStatMapper">
|
||||
|
||||
</mapper>
|
@@ -59,4 +59,13 @@
|
||||
and guild_member_id = #{guildMemberId}
|
||||
</select>
|
||||
|
||||
<select id="countByPartitionDate" resultType="java.lang.Integer">
|
||||
select
|
||||
count(sum(mic_minutes) > #{reachMinutes}) reachNum,
|
||||
from guild_mic_statistics_policy2
|
||||
where stat_date = #{statDate} and partition_id = #{partitionId}
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
</mapper>
|
||||
|
Reference in New Issue
Block a user