日常任务-上麦奖励

This commit is contained in:
2025-08-26 20:21:58 +08:00
parent 2831797f51
commit 8f572701ab
8 changed files with 146 additions and 1 deletions

View File

@@ -30,7 +30,8 @@ public enum BillDomainTypeEnum {
USER_EVENT(23, "用户活动"),
FIRST_CHARGE(24, "首充"),
GAME_USD(25, "游戏薪资"),
GUILD_POLICY2(25, "土耳其公会政策2"),
GUILD_POLICY2(26, "土耳其公会政策2"),
DAILY_TASK(27, "日任务奖励"),
;
private int value;

View File

@@ -281,6 +281,7 @@ public enum BillObjTypeEnum {
OFFICIAL_PLUS_GUILD_CRYSTAL( 186, "官方增加公会紫晶", BillTypeEnum.IN, CurrencyEnum.GUILD_CRYSTAL, BillDomainTypeEnum.GUILD_POLICY2),
OFFICIAL_MIUNS_GUILD_CRYSTAL( 187, "官方扣除公会紫晶", BillTypeEnum.OUT, CurrencyEnum.GUILD_CRYSTAL, BillDomainTypeEnum.GUILD_POLICY2),
DAILY_TASK_UP_MIC_COIN( 188, "日任务上麦奖励", BillTypeEnum.IN, CurrencyEnum.DIAMOND, BillDomainTypeEnum.DAILY_TASK),
;
BillObjTypeEnum(int value, String desc, BillTypeEnum type, CurrencyEnum currency, BillDomainTypeEnum domain) {

View File

@@ -0,0 +1,58 @@
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-26
*/
@Data
public class DailyTaskRewardRecord implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 分区id
*/
private Integer partitionId;
private Long uid;
private Integer guildId;
private Long guildMemberId;
/**
* 日常任务-配置ID
*/
private Integer taskConfigId;
/**
* 任务key
*/
private String taskKey;
private String statDate;
/**
* 奖品类型8.金币 6.礼物 5.座驾 1.头饰 3.气泡, 10vip 11勋章 ,根据RewardTypeEnum来的
*/
private Byte awardType;
/**
* 奖品id
*/
private Long awardId;
/**
* 奖品数量
*/
private Long awardNum;
/**
* 创建时间
*/
private Date createTime;
private Date updateTime;
}

View File

@@ -20,6 +20,7 @@ import java.util.List;
@Data
public class DailyTaskVo {
private Integer taskConfigId;
private Integer partitionId;
@ApiModelProperty("任务类型")
private DailyTaskTypeEnum taskType;
@ApiModelProperty("UNCOMPLETED-完成, AVAILABLE-可领取RECEIVED-已领取")

View File

@@ -0,0 +1,14 @@
package com.accompany.business.mybatismapper.dailytask;
import com.accompany.business.model.dailytask.DailyTaskRewardRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* 日常任务奖励记录 Mapper 接口
*
* @author
* @since 2025-08-26
*/
public interface DailyTaskRewardRecordMapper extends BaseMapper<DailyTaskRewardRecord> {
}

View File

@@ -0,0 +1,38 @@
package com.accompany.business.service.dailytask;
import com.accompany.business.model.dailytask.DailyTaskRewardRecord;
import com.accompany.business.mybatismapper.dailytask.DailyTaskRewardRecordMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* 日常任务奖励记录 服务实现类
*
* @author
* @since 2025-08-26
*/
@Service
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) {
DailyTaskRewardRecord entity = new DailyTaskRewardRecord();
entity.setTaskConfigId(taskConfigId);
entity.setTaskKey(taskKey);
entity.setStatDate(statDate);
entity.setUid(uid);
entity.setPartitionId(partitionId);
entity.setGuildId(guildId);
entity.setGuildMemberId(guildMemberId);
entity.setAwardType(awardType);
entity.setAwardId(awardId);
entity.setAwardNum(awardNum);
entity.setCreateTime(new Date());
entity.setUpdateTime(new Date());
return this.baseMapper.insert(entity);
}
}

View File

@@ -1,10 +1,16 @@
package com.accompany.business.service.dailytask.handler;
import com.accompany.business.common.constant.RewardTypeEnum;
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.model.guild.GuildMember;
import com.accompany.business.service.dailytask.AbstractDailyTaskHandler;
import com.accompany.business.service.dailytask.DailyTaskRewardRecordService;
import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType;
import com.accompany.business.service.guild.GuildMemberService;
import com.accompany.business.service.room.RoomMicService;
import com.accompany.business.util.RewardUtil;
import com.accompany.business.vo.dailytask.DailyProgressContext;
import com.accompany.business.vo.dailytask.DailyTaskContext;
import com.accompany.business.vo.dailytask.DailyTaskVo;
@@ -13,6 +19,7 @@ import com.accompany.common.status.BusiStatus;
import com.accompany.common.utils.DateTimeUtil;
import com.accompany.core.enumeration.PartitionEnum;
import com.accompany.core.exception.ServiceException;
import com.accompany.core.model.Users;
import org.redisson.api.RAtomicLong;
import org.redisson.api.RBucket;
import org.redisson.api.RMap;
@@ -26,10 +33,12 @@ import java.time.ZonedDateTime;
import java.time.temporal.TemporalAdjusters;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
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;
import static com.accompany.core.enumeration.BillObjTypeEnum.DAILY_TASK_UP_MIC_COIN;
@Component
@DailyTaskHandlerType(DailyTaskTypeEnum.UP_MIC_COIN)
@@ -37,6 +46,12 @@ public class UpMicCoinHandler extends AbstractDailyTaskHandler {
@Autowired
private RoomMicService roomMicService;
@Autowired
private DailyTaskRewardRecordService dailyTaskRewardRecordService;
@Autowired
private GuildMemberService guildMemberService;
@Autowired
private RewardUtil rewardUtil;
@Override
@@ -97,6 +112,18 @@ public class UpMicCoinHandler extends AbstractDailyTaskHandler {
}
super.receive(uid, receiveDate, dailyTaskVo, deviceId, realIpAddress);
Users users = usersService.getUsersByUid(uid);
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid);
List<DailyTaskReward> configRewards = dailyTaskVo.getConfigRewards();
for (DailyTaskReward configReward : configRewards) {
dailyTaskRewardRecordService.addRecord(configReward.getTaskConfigId(), dailyTaskVo.getTaskType().name(),
uid, users.getPartitionId(), guildMember.getGuildId(), guildMember.getId(), configReward.getAwardType(),
configReward.getAwardId(), configReward.getAwardNum(), receiveDate);
}
for (DailyTaskReward configReward : configRewards) {
rewardUtil.sendRewardByType(uid, RewardTypeEnum.getByRewardType(configReward.getAwardType()), configReward.getAwardId().intValue(),
configReward.getAwardNum().intValue(), dailyTaskVo.getTaskType().name(), Boolean.FALSE, DAILY_TASK_UP_MIC_COIN);
}
RMap<String, Long> deveiceCache = getDeveiceCache(receiveDate);
deveiceCache.put(deviceId, uid);

View File

@@ -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.DailyTaskRewardRecordMapper">
</mapper>