diff --git a/accompany-base/accompany-core/src/main/java/com/accompany/core/enumeration/BillDomainTypeEnum.java b/accompany-base/accompany-core/src/main/java/com/accompany/core/enumeration/BillDomainTypeEnum.java index bc2dd62df..58c850e83 100644 --- a/accompany-base/accompany-core/src/main/java/com/accompany/core/enumeration/BillDomainTypeEnum.java +++ b/accompany-base/accompany-core/src/main/java/com/accompany/core/enumeration/BillDomainTypeEnum.java @@ -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; diff --git a/accompany-base/accompany-core/src/main/java/com/accompany/core/enumeration/BillObjTypeEnum.java b/accompany-base/accompany-core/src/main/java/com/accompany/core/enumeration/BillObjTypeEnum.java index db2994dbc..6c343b557 100644 --- a/accompany-base/accompany-core/src/main/java/com/accompany/core/enumeration/BillObjTypeEnum.java +++ b/accompany-base/accompany-core/src/main/java/com/accompany/core/enumeration/BillObjTypeEnum.java @@ -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) { diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/dailytask/DailyTaskRewardRecord.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/dailytask/DailyTaskRewardRecord.java new file mode 100644 index 000000000..4ca455471 --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/dailytask/DailyTaskRewardRecord.java @@ -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; + + +} diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyTaskVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyTaskVo.java index 8b29c9a38..a324cef45 100644 --- a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyTaskVo.java +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyTaskVo.java @@ -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-已领取") diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/dailytask/DailyTaskRewardRecordMapper.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/dailytask/DailyTaskRewardRecordMapper.java new file mode 100644 index 000000000..8c72beb9b --- /dev/null +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/dailytask/DailyTaskRewardRecordMapper.java @@ -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 { + +} diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskRewardRecordService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskRewardRecordService.java new file mode 100644 index 000000000..d26ba8b1e --- /dev/null +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskRewardRecordService.java @@ -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 { + + 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); + } +} \ No newline at end of file diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/UpMicCoinHandler.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/UpMicCoinHandler.java index dbfc87b96..81e441331 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/UpMicCoinHandler.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/UpMicCoinHandler.java @@ -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 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 deveiceCache = getDeveiceCache(receiveDate); deveiceCache.put(deviceId, uid); diff --git a/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/DailyTaskRewardRecordMapper.xml b/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/DailyTaskRewardRecordMapper.xml new file mode 100644 index 000000000..2280c5f04 --- /dev/null +++ b/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/DailyTaskRewardRecordMapper.xml @@ -0,0 +1,5 @@ + + + + +