diff --git a/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/packcenter/PackInfoAdminService.java b/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/packcenter/PackInfoAdminService.java index 752d9aa51..aca6acde8 100644 --- a/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/packcenter/PackInfoAdminService.java +++ b/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/packcenter/PackInfoAdminService.java @@ -109,7 +109,7 @@ public class PackInfoAdminService { private PackAwardVo coverAwardVo(ActivityH5LevelAward award, Map awardItemMap) { PackAwardVo awardVo = new PackAwardVo(); awardVo.setAwardId(award.getId()); - RewardVo rewardVo = activityH5LevelAwardService.coverRewardByType(award.getAwardType(), award.getAwardId().intValue()); + RewardVo rewardVo = activityH5LevelAwardService.coverAdminRewardByType(award.getAwardType(), award.getAwardId().intValue()); if (rewardVo != null) { awardVo.setAwardName(rewardVo.getName()); awardVo.setAwardPic(rewardVo.getPic()); diff --git a/accompany-admin/accompany-admin-web/src/main/java/com/accompany/admin/controller/activity/ActivityH5LevelAwardController.java b/accompany-admin/accompany-admin-web/src/main/java/com/accompany/admin/controller/activity/ActivityH5LevelAwardController.java index 4c6658a7d..5b6c7fcf5 100644 --- a/accompany-admin/accompany-admin-web/src/main/java/com/accompany/admin/controller/activity/ActivityH5LevelAwardController.java +++ b/accompany-admin/accompany-admin-web/src/main/java/com/accompany/admin/controller/activity/ActivityH5LevelAwardController.java @@ -1,7 +1,6 @@ package com.accompany.admin.controller.activity; import com.accompany.business.common.vo.RewardVo; -import com.accompany.business.constant.activity.ActivityType; import com.accompany.business.model.activity.h5.ActivityH5LevelAward; import com.accompany.business.param.ActivityH5Param; import com.accompany.business.service.activity.h5.ActivityH5LevelAwardService; @@ -10,16 +9,13 @@ import com.accompany.common.result.BusiResult; import com.accompany.core.exception.AdminServiceException; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.ApiOperation; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; import java.util.Date; -import java.util.List; /** *

@@ -45,7 +41,7 @@ public class ActivityH5LevelAwardController { @ApiOperation(value = "保存",httpMethod = "POST") @PostMapping("/save") public BusiResult save(ActivityH5LevelAward activityH5LevelAward) { - RewardVo rewardVo = activityH5LevelAwardService.coverRewardByType(activityH5LevelAward.getAwardType(), activityH5LevelAward.getAwardId().intValue()); + RewardVo rewardVo = activityH5LevelAwardService.coverAdminRewardByType(activityH5LevelAward.getAwardType(), activityH5LevelAward.getAwardId().intValue()); if (rewardVo == null) { throw new AdminServiceException("奖励不存在"); } diff --git a/accompany-base/accompany-core/src/main/java/com/accompany/core/enumeration/I18nAlertEnum.java b/accompany-base/accompany-core/src/main/java/com/accompany/core/enumeration/I18nAlertEnum.java index 9ef1bdc84..10d39f0a4 100644 --- a/accompany-base/accompany-core/src/main/java/com/accompany/core/enumeration/I18nAlertEnum.java +++ b/accompany-base/accompany-core/src/main/java/com/accompany/core/enumeration/I18nAlertEnum.java @@ -316,6 +316,7 @@ public enum I18nAlertEnum { PACK_SEND_SYS("【{0}】给你赠送了【{1}】*【{2}】快去礼包中心查看使用吧!"), PACK_USE_SELF_SYS("你已经使用了【{0}】,对应的奖励已经放入你的背包啦!记得查收~"), PACK_SYS_SEND_SYS("恭喜你,系统给你赠送了{0}*{1}快去礼包中心查看使用吧!"), + GOLD_BEAN_NAME("Gold Bean"), ; private final String defaultStr; diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/constant/dailytask/DailyTaskConstant.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/constant/dailytask/DailyTaskConstant.java index 50f0c5a0d..f8278603d 100644 --- a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/constant/dailytask/DailyTaskConstant.java +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/constant/dailytask/DailyTaskConstant.java @@ -17,6 +17,7 @@ public interface DailyTaskConstant { charge_gold,//日充值金币 play_game,//游戏种类 recv_gold_num,//收礼金币 + task_config,//任务配置 ; @Override diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/constant/dailytask/DailyTaskTypeEnum.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/constant/dailytask/DailyTaskTypeEnum.java index dcde103f5..e1d4fdb28 100644 --- a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/constant/dailytask/DailyTaskTypeEnum.java +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/constant/dailytask/DailyTaskTypeEnum.java @@ -2,35 +2,23 @@ package com.accompany.business.constant.dailytask; public enum DailyTaskTypeEnum { - DAILY_SIGN("DAILY_SIGN",1, 100), ////每日签到 - UP_MIC("UP_MIC", 60, 2500),//"上麦聊天", - UP_MIC_120("UP_MIC", 120, 8000),//上麦聊天(0/120Mins) - PLAY_GAME("PLAY_GAME", 3, 1000),//参与小游戏(0/3) - CHARGE_GOLD_NUM("CHARGE_GOLD_NUM", 7000, 5000),//充值7000 - CHARGE_GOLD_NUM_5("CHARGE_GOLD_NUM", 35000, 30000),//充值35000 - CHARGE_GOLD_NUM_10("CHARGE_GOLD_NUM", 70000, 70000),//充值70000 - ROOM_SEND_GIFT("ROOM_SEND_GIFT", 1, 100),//房间送礼 - RECV_LUCKY_GIFT("RECV_LUCKY_GIFT", 1, 100),//收到Lucky/Bravo礼物 - RECV_NOMAL_GIFT("RECV_NOMAL_GIFT", 1, 2000),//收到普通礼物 - RECV_NOMAL_GIFT_GOLD("RECV_NOMAL_GIFT_GOLD", 20000, 8000),//收到礼物(价值超过2w金币) + DAILY_SIGN("DAILY_SIGN"), ////每日签到 + UP_MIC("UP_MIC"),//"上麦聊天", + UP_MIC_120("UP_MIC"),//上麦聊天(0/120Mins) + PLAY_GAME("PLAY_GAME"),//参与小游戏(0/3) + CHARGE_GOLD_NUM("CHARGE_GOLD_NUM"),//充值7000 + CHARGE_GOLD_NUM_5("CHARGE_GOLD_NUM"),//充值35000 + CHARGE_GOLD_NUM_10("CHARGE_GOLD_NUM"),//充值70000 + ROOM_SEND_GIFT("ROOM_SEND_GIFT"),//房间送礼 + RECV_LUCKY_GIFT("RECV_LUCKY_GIFT"),//收到Lucky/Bravo礼物 + RECV_NOMAL_GIFT("RECV_NOMAL_GIFT"),//收到普通礼物 + RECV_NOMAL_GIFT_GOLD("RECV_NOMAL_GIFT_GOLD"),//收到礼物(价值超过2w金币) ; private String handlerType; - private final int reachNum;//达标数量 - private final int reachGoldBean;//奖励金豆数 - DailyTaskTypeEnum(String handlerType, int reachNum, int reachGoldBean) { + DailyTaskTypeEnum(String handlerType) { this.handlerType = handlerType; - this.reachNum = reachNum; - this.reachGoldBean = reachGoldBean; - } - - public int getReachNum() { - return reachNum; - } - - public int getReachGoldBean() { - return reachGoldBean; } public String getHandlerType() { diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/dailytask/DailyTaskConfig.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/dailytask/DailyTaskConfig.java new file mode 100644 index 000000000..645d4040e --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/dailytask/DailyTaskConfig.java @@ -0,0 +1,70 @@ +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-25 + */ +@Data +public class DailyTaskConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 日常任务-配置ID + */ + @TableId(value = "task_config_id", type = IdType.AUTO) + private Integer taskConfigId; + /** + * 分区id + */ + private Integer partitionId; + /** + * tab类型,1-日常任务,2-周任务,3-公会开业 + */ + private Integer taskTabType; + /** + * 任务角色, 3-普通用户,2主播,1-公会长,同步GuildConstant.RoleType + */ + private Byte taskRole; + /** + * 任务key + */ + private String taskKey; + /** + * 任务名 + */ + private String taskName; + /** + * 达标数量 + */ + private Long reachNum; + /** + * 排序 + */ + private Integer taskSeq; + /** + * 是否限制代理 + */ + private Boolean rechargeLimit; + /** + * 生效状态 + */ + private Boolean enable; + private Date createTime; + /** + * 更新时间 + */ + private Date updateTime; + + +} diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/dailytask/DailyTaskReward.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/dailytask/DailyTaskReward.java new file mode 100644 index 000000000..7b47650ec --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/dailytask/DailyTaskReward.java @@ -0,0 +1,57 @@ +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-25 + */ +@Data +public class DailyTaskReward implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 日常任务-配置ID + */ + private Integer taskConfigId; + /** + * 奖品类型:8.金币 6.礼物 5.座驾 1.头饰 3.气泡, 10vip 11勋章 13.金豆,根据RewardTypeEnum来的 + */ + private Byte awardType; + /** + * 奖品id,这里指对应表的主键id + */ + private Long awardId; + /** + * 奖品数量 + */ + private Long awardNum; + /** + * 排序 + */ + private Integer awardSeq; + /** + * 奖励状态 + */ + private Integer awardStatus; + /** + * 创建时间 + */ + private Date createTime; + /** + * 更新时间 + */ + private Date updateTime; + + +} diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyProgressContext.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyProgressContext.java index f4a4716cb..189655fb2 100644 --- a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyProgressContext.java +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyProgressContext.java @@ -12,7 +12,7 @@ import java.util.Date; @Builder @Data public class DailyProgressContext { - private Integer partitiionId; + private Integer partitionId; private Long uid; private Long recvUid; private Long roomUid; diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyTaskContext.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyTaskContext.java index 542129757..11bc89965 100644 --- a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyTaskContext.java +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyTaskContext.java @@ -1,17 +1,17 @@ package com.accompany.business.vo.dailytask; -import com.accompany.business.constant.dailytask.DailyTaskTypeEnum; import lombok.Data; @Data public class DailyTaskContext { private final Long uid; - private final DailyTaskTypeEnum taskType; + private final DailyTaskVo dailyTaskVo; private String todayDate; private Integer partitionId; - public DailyTaskContext(Long uid, DailyTaskTypeEnum taskType) { + public DailyTaskContext(Long uid, DailyTaskVo dailyTaskVo, Integer partitionId) { this.uid = uid; - this.taskType = taskType; + this.dailyTaskVo = dailyTaskVo; + this.partitionId = partitionId; } } diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyTaskRewardVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyTaskRewardVo.java new file mode 100644 index 000000000..30662e48d --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyTaskRewardVo.java @@ -0,0 +1,25 @@ +package com.accompany.business.vo.dailytask; + +import com.accompany.common.annotation.ReplaceAppDomain; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Data +public class DailyTaskRewardVo { + private Byte awardType; + private Integer awardId; + @ApiModelProperty("奖励数量") + private Long awardNum; + @ApiModelProperty("奖励名字") + private String awardName; + private String unit; + @ApiModelProperty("奖励图片") + @ReplaceAppDomain + private String awardPic; +} 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 667dd35a2..c21876832 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 @@ -2,6 +2,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 io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; @@ -9,21 +10,25 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.List; + @AllArgsConstructor @NoArgsConstructor @Builder @ApiModel @Data public class DailyTaskVo { + private Integer taskConfigId; @ApiModelProperty("任务类型") private DailyTaskTypeEnum taskType; @ApiModelProperty("UNCOMPLETED-完成, AVAILABLE-可领取,RECEIVED-已领取") private DailyTaskConstant.ReceiveStatus receiveStatus; - @ApiModelProperty("金豆数量") - private Integer goldBean; @ApiModelProperty("到达数量") private Long reachNum; @ApiModelProperty("达标值") - private Integer standardValue; + private Long standardValue; private String todayDate; + @ApiModelProperty("奖励列表") + private List rewardVos; + private List configRewards; } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/dailytask/DailyTaskConfigMapper.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/dailytask/DailyTaskConfigMapper.java new file mode 100644 index 000000000..60e2d221b --- /dev/null +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/dailytask/DailyTaskConfigMapper.java @@ -0,0 +1,14 @@ +package com.accompany.business.mybatismapper.dailytask; + +import com.accompany.business.model.dailytask.DailyTaskConfig; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 日常任务 Mapper 接口 + * + * @author + * @since 2025-08-25 + */ +public interface DailyTaskConfigMapper extends BaseMapper { + +} diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/dailytask/DailyTaskRewardMapper.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/dailytask/DailyTaskRewardMapper.java new file mode 100644 index 000000000..a535a2c22 --- /dev/null +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/dailytask/DailyTaskRewardMapper.java @@ -0,0 +1,14 @@ +package com.accompany.business.mybatismapper.dailytask; + +import com.accompany.business.model.dailytask.DailyTaskReward; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 日常任务奖励配置 Mapper 接口 + * + * @author + * @since 2025-08-25 + */ +public interface DailyTaskRewardMapper extends BaseMapper { + +} diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/activity/h5/ActivityH5AwardRecordServiceImpl.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/activity/h5/ActivityH5AwardRecordServiceImpl.java index 0e05f11b0..fc07a7271 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/activity/h5/ActivityH5AwardRecordServiceImpl.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/activity/h5/ActivityH5AwardRecordServiceImpl.java @@ -234,7 +234,7 @@ public class ActivityH5AwardRecordServiceImpl extends ServiceImpl listPage(ActivityH5Param param); - RewardVo coverRewardByType(Byte type, Integer refId); + RewardVo coverAdminRewardByType(Byte type, Integer refId); RewardVo covertI18nRewardInfo(RewardTypeEnum typeEnum, Integer refId, Integer partitionId); } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/activity/h5/ActivityH5LevelAwardServiceImpl.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/activity/h5/ActivityH5LevelAwardServiceImpl.java index cbd8b9865..f82ceac63 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/activity/h5/ActivityH5LevelAwardServiceImpl.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/activity/h5/ActivityH5LevelAwardServiceImpl.java @@ -49,6 +49,7 @@ import org.springframework.stereotype.Service; import java.util.*; import java.util.stream.Collectors; +import static com.accompany.core.enumeration.I18nAlertEnum.GOLD_BEAN_NAME; import static com.accompany.core.enumeration.I18nAlertEnum.GOLD_NAME; /** @@ -117,7 +118,7 @@ public class ActivityH5LevelAwardServiceImpl extends ServiceImpl { + + @Autowired + private RedissonClient redissonClient; + + public List listByRole(Integer partitionId, Integer taskTabType, List taskRole) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.select(DailyTaskConfig::getTaskConfigId, DailyTaskConfig::getTaskTabType, DailyTaskConfig::getTaskKey, + DailyTaskConfig::getTaskName, DailyTaskConfig::getReachNum, DailyTaskConfig::getTaskSeq) + .eq(DailyTaskConfig::getPartitionId, partitionId) + .eq(DailyTaskConfig::getTaskTabType, taskTabType) + .in(DailyTaskConfig::getTaskRole, taskRole) + .eq(DailyTaskConfig::getEnable, 1) + .orderByAsc(DailyTaskConfig::getTaskSeq); + return baseMapper.selectList(wrapper); + } + + public DailyTaskConfig getByPartTaskKey(Integer partitionId, String taskKey) { + RMap cacheMap = this.getCacheMap(partitionId); + DailyTaskConfig dailyTaskConfig = cacheMap.get(taskKey); + if (dailyTaskConfig != null) { + return dailyTaskConfig; + } + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.select(DailyTaskConfig::getTaskConfigId, DailyTaskConfig::getTaskTabType, DailyTaskConfig::getTaskKey, + DailyTaskConfig::getTaskName, DailyTaskConfig::getReachNum, DailyTaskConfig::getTaskSeq) + .eq(DailyTaskConfig::getPartitionId, partitionId) + .eq(DailyTaskConfig::getTaskKey, taskKey) + .eq(DailyTaskConfig::getEnable, 1) + .orderByAsc(DailyTaskConfig::getTaskSeq); + DailyTaskConfig taskConfig = baseMapper.selectOne(wrapper, false); + cacheMap.put(taskKey, taskConfig); + return taskConfig; + } + + public RMap getCacheMap(Integer partitionId) { + return redissonClient.getMap(DailyTaskConstant.RedisKey.task_config.getKey(partitionId), + new TypedJsonJacksonCodec(String.class, DailyTaskConfig.class)); + } + + +} diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskHandler.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskHandler.java index 6a9578e3c..eb7ccb76d 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskHandler.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskHandler.java @@ -3,7 +3,6 @@ package com.accompany.business.service.dailytask; import com.accompany.business.vo.dailytask.DailyProgressContext; import com.accompany.business.vo.dailytask.DailyTaskContext; -import com.accompany.business.constant.dailytask.DailyTaskTypeEnum; import com.accompany.business.vo.dailytask.DailyTaskVo; import com.accompany.common.result.BusiResult; @@ -13,11 +12,13 @@ public interface DailyTaskHandler { void executeProgress(DailyProgressContext progressContext); + void doExecuteProgress(DailyProgressContext progressContext); + DailyTaskVo handle(DailyTaskContext context); DailyTaskVo doHandle(DailyTaskContext context); - BusiResult receive(Long uid, String receiveDate, DailyTaskTypeEnum dailyTaskTypeEnum); + BusiResult receive(Long uid, String receiveDate, DailyTaskVo dailyTaskVo); - String getTodayDate(Long uid, Date date); + String getTodayDate(Integer partitionId, Date date); } \ No newline at end of file diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskRewardService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskRewardService.java new file mode 100644 index 000000000..492a86055 --- /dev/null +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskRewardService.java @@ -0,0 +1,36 @@ +package com.accompany.business.service.dailytask; + +import com.accompany.business.model.dailytask.DailyTaskReward; +import com.accompany.business.mybatismapper.dailytask.DailyTaskRewardMapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 日常任务奖励配置 服务实现类 + * + * @author + * @since 2025-08-25 + */ +@Service +public class DailyTaskRewardService extends ServiceImpl { + + public Map> mapByTaskConfigId(List taskConfigIds) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.select(DailyTaskReward::getTaskConfigId, DailyTaskReward::getAwardType, + DailyTaskReward::getAwardId, DailyTaskReward::getAwardNum,DailyTaskReward::getAwardSeq) + .in(DailyTaskReward::getTaskConfigId, taskConfigIds); + List dailyTaskRewards = baseMapper.selectList(wrapper); + if (CollectionUtils.isEmpty(dailyTaskRewards)) { + return Collections.emptyMap(); + } + return dailyTaskRewards.stream().collect(Collectors.groupingBy(DailyTaskReward::getTaskConfigId)); + } +} diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskService.java index 7d156e26b..5333a8f9f 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskService.java @@ -2,39 +2,37 @@ package com.accompany.business.service.dailytask; import com.accompany.business.common.constant.RewardTypeEnum; import com.accompany.business.common.vo.RewardVo; -import com.accompany.business.constant.activity.ActivityType; import com.accompany.business.constant.dailytask.DailyTaskTypeEnum; -import com.accompany.business.constant.dailytask.GoldBeanBillType; -import com.accompany.business.model.activity.h5.ActivityH5LevelAward; -import com.accompany.business.model.user.UserGoldBean; -import com.accompany.business.model.user.UserGoldBeanBill; -import com.accompany.business.service.activity.h5.ActivityH5AwardRecordService; +import com.accompany.business.constant.guild.GuildConstant; +import com.accompany.business.model.dailytask.DailyTaskConfig; +import com.accompany.business.model.dailytask.DailyTaskReward; +import com.accompany.business.model.guild.GuildMember; import com.accompany.business.service.activity.h5.ActivityH5LevelAwardService; -import com.accompany.business.service.user.UserGoldBeanBillService; -import com.accompany.business.service.user.UserGoldBeanService; +import com.accompany.business.service.guild.GuildMemberService; import com.accompany.business.service.user.UsersService; -import com.accompany.business.vo.dailytask.*; +import com.accompany.business.vo.dailytask.DailyProgressContext; +import com.accompany.business.vo.dailytask.DailyTaskContext; +import com.accompany.business.vo.dailytask.DailyTaskRewardVo; +import com.accompany.business.vo.dailytask.DailyTaskVo; import com.accompany.common.result.BusiResult; import com.accompany.common.status.BusiStatus; -import com.accompany.common.utils.DateTimeUtil; import com.accompany.common.utils.StringUtils; -import com.accompany.core.enumeration.PartitionEnum; import com.accompany.core.exception.ServiceException; -import com.accompany.core.model.Users; import com.accompany.payment.service.RechargeUserService; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.web.bind.annotation.RequestHeader; -import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; -import static com.accompany.business.constant.activity.ActivityType.DAILY_SHOP; -import static com.accompany.business.constant.dailytask.DailyTaskTypeEnum.*; -import static com.accompany.common.constant.ApplicationConstant.PublicParameters.PUB_UID; +import static com.accompany.business.constant.dailytask.DailyTaskTypeEnum.valueOf; +@Slf4j @Service public class DailyTaskService { @@ -42,26 +40,25 @@ public class DailyTaskService { private DailyTaskHandlerRegistry taskHandlerRegistry; @Autowired - private UserGoldBeanService userGoldBeanService; + private RechargeUserService rechargeUserService; @Autowired - private UserGoldBeanBillService userGoldBeanBillService; + private DailyTaskConfigService dailyTaskConfigService; @Autowired - private UsersService usersService; + private DailyTaskRewardService dailyTaskRewardService; @Autowired private ActivityH5LevelAwardService activityH5LevelAwardService; @Autowired - private ActivityH5AwardRecordService activityH5AwardRecordService; - + private GuildMemberService guildMemberService; @Autowired - private RechargeUserService rechargeUserService; + private UsersService usersService; - public DailyTaskVo executeDailyTask(DailyTaskTypeEnum contextTaskType, Long uid) { - DailyTaskHandler handler = taskHandlerRegistry.getHandler(DailyTaskTypeEnum.valueOf(contextTaskType.getHandlerType())); - DailyTaskContext dailyTaskContext = new DailyTaskContext(uid, contextTaskType); + public DailyTaskVo executeDailyTask(DailyTaskVo dailyTaskVo, Long uid, Integer partitionId) { + DailyTaskHandler handler = taskHandlerRegistry.getHandler(dailyTaskVo.getTaskType()); + DailyTaskContext dailyTaskContext = new DailyTaskContext(uid, dailyTaskVo, partitionId); return handler.handle(dailyTaskContext); } @@ -79,17 +76,18 @@ public class DailyTaskService { /** * 领取积分 * - * @param taskType * @param uid * @param todayDate * @return */ - public BusiResult executeReceive(DailyTaskTypeEnum taskType, Long uid, String todayDate) { - DailyTaskHandler handler = taskHandlerRegistry.getHandler(DailyTaskTypeEnum.valueOf(taskType.getHandlerType())); + public BusiResult executeReceive(Integer taskConfigId, Long uid, String todayDate) { + DailyTaskVo dailyTaskVo = this.taskVo(taskConfigId, uid); + DailyTaskTypeEnum taskType = dailyTaskVo.getTaskType(); + DailyTaskHandler handler = taskHandlerRegistry.getHandler(taskType); if (handler == null || StringUtils.isEmpty(todayDate) || uid == null) { throw new ServiceException(BusiStatus.PARAMERROR); } - return handler.receive(uid, todayDate, taskType); + return handler.receive(uid, todayDate, dailyTaskVo); } /** @@ -98,128 +96,110 @@ public class DailyTaskService { * @param uid * @return */ - public BusiResult> tasks(Long uid) { - List result = new ArrayList<>(); - result.add(this.executeDailyTask(DAILY_SIGN, uid)); + public List tasks(Long uid, Integer taskTabType) { + GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid); + List taskRole = Stream.of(GuildConstant.RoleType.NORMAL) + .collect(Collectors.toList()); - result.add(this.executeDailyTask(UP_MIC, uid)); + Optional.ofNullable(guildMember).ifPresent(member -> { + taskRole.add(member.getRoleType()); + if (member.getRoleType() == GuildConstant.RoleType.OWNER) { + taskRole.add(GuildConstant.RoleType.MANAGER); + } + }); + Integer partitionId = guildMember.getPartitionId(); + List dailyTaskVos = this.taskVoList(partitionId, taskTabType, taskRole, uid); - result.add(this.executeDailyTask(UP_MIC_120, uid)); - - result.add(this.executeDailyTask(PLAY_GAME, uid)); - - if (!rechargeUserService.isRechargeUser(uid)) { - - result.add(this.executeDailyTask(CHARGE_GOLD_NUM, uid)); - - result.add(this.executeDailyTask(CHARGE_GOLD_NUM_5, uid)); - - result.add(this.executeDailyTask(CHARGE_GOLD_NUM_10, uid)); + if (CollectionUtils.isEmpty(dailyTaskVos)) { + return dailyTaskVos; } - result.add(this.executeDailyTask(ROOM_SEND_GIFT, uid)); + dailyTaskVos.stream().forEach(dailyTaskVo -> { + executeDailyTask(dailyTaskVo, uid, partitionId); + }); - result.add(this.executeDailyTask(RECV_LUCKY_GIFT, uid)); - result.add(this.executeDailyTask(RECV_NOMAL_GIFT, uid)); - - result.add(this.executeDailyTask(RECV_NOMAL_GIFT_GOLD, uid)); - - return BusiResult.success(result); + return dailyTaskVos; } - public BusiResult shops(Long uid) { - UserGoldBean userGoldBean = userGoldBeanService.queryUserGoldBean(uid); - DailyTaskShopCenterVo dailyTaskShopCenterVo = new DailyTaskShopCenterVo(); - dailyTaskShopCenterVo.setGoldBean(userGoldBean.getGoldBean()); - Users users = usersService.getUsersByUid(uid); - dailyTaskShopCenterVo.setNick(users.getNick()); - dailyTaskShopCenterVo.setAvatar(users.getAvatar()); - dailyTaskShopCenterVo.setErbanNo(users.getErbanNo()); - List shopVos = new ArrayList<>(); - dailyTaskShopCenterVo.setShops(shopVos); - Integer partitionId = users.getPartitionId(); - List activityH5LevelAwards = activityH5LevelAwardService.listByLevelPartition(partitionId, 1, DAILY_SHOP.getType()); - if (CollectionUtils.isEmpty(activityH5LevelAwards)) { - return BusiResult.success(dailyTaskShopCenterVo); + public List taskVoList(Integer partitionId, Integer taskTabType, List taskRole, Long uid) { + List resultList = new ArrayList<>(); + List dailyTaskConfigs = dailyTaskConfigService.listByRole(partitionId, taskTabType, taskRole); + if (CollectionUtils.isEmpty(dailyTaskConfigs)) { + return resultList; } - for (ActivityH5LevelAward award : activityH5LevelAwards) { - RewardVo rewardVo = activityH5LevelAwardService.covertI18nRewardInfo(RewardTypeEnum.getByRewardType(award.getAwardType()), award.getAwardId().intValue(), partitionId); - if (rewardVo == null) { + Boolean isRechargeUser = rechargeUserService.isRechargeUser(uid); + if (isRechargeUser) { + dailyTaskConfigs = dailyTaskConfigs.stream() + .filter(dailyTaskConfig -> !dailyTaskConfig.getRechargeLimit()) + .collect(Collectors.toList()); + } + + for (DailyTaskConfig dailyTaskConfig : dailyTaskConfigs) { + try { + DailyTaskVo dailyTaskVo = DailyTaskVo.builder(). + taskConfigId(dailyTaskConfig.getTaskConfigId()). + taskType(valueOf(dailyTaskConfig.getTaskKey())). + standardValue(dailyTaskConfig.getReachNum()) + .build(); + resultList.add(dailyTaskVo); + } catch (Exception e) { + log.error("taskVoList error,config:{} e:{}", JSONObject.toJSONString(dailyTaskConfig),e.getMessage(), e); + } + } + if (CollectionUtils.isEmpty(resultList)) { + return resultList; + } + List taskConfigIds = resultList.stream().map(DailyTaskVo::getTaskConfigId).collect(Collectors.toList()); + Map> taskRewardMap = dailyTaskRewardService.mapByTaskConfigId(taskConfigIds); + if (MapUtils.isEmpty(taskRewardMap)) { + return resultList; + } + List rewardVos; + for (DailyTaskVo dailyTaskVo : resultList) { + rewardVos = new ArrayList<>(); + dailyTaskVo.setRewardVos(rewardVos); + List dailyTaskRewards = taskRewardMap.get(dailyTaskVo.getTaskConfigId()); + if (CollectionUtils.isEmpty(dailyTaskRewards)) { continue; } - DailyTaskShopVo dailyTaskShopVo = new DailyTaskShopVo(); - dailyTaskShopVo.setShopName(rewardVo.getName()); - dailyTaskShopVo.setPic(rewardVo.getPic()); - dailyTaskShopVo.setUnit(rewardVo.getUnit()); - dailyTaskShopVo.setExchangeGoldBean(award.getReferenceValue()); - dailyTaskShopVo.setAwardId(award.getId()); - dailyTaskShopVo.setAwardNum(award.getAwardNum()); - shopVos.add(dailyTaskShopVo); - } - return BusiResult.success(dailyTaskShopCenterVo); - } - - public BusiResult shopBuy(Long uid, Long awardId, Integer num) { - ActivityH5LevelAward h5LevelAward = activityH5LevelAwardService.getById(awardId); - if (h5LevelAward == null) { - throw new ServiceException(BusiStatus.PARAMERROR); - } - Long price = h5LevelAward.getReferenceValue(); - long totalPrice = price * num; - userGoldBeanService.subGoldBean(uid, BigDecimal.valueOf(totalPrice), GoldBeanBillType.MALL_PAY, h5LevelAward.getId().toString(), num); - h5LevelAward.setAwardNum(h5LevelAward.getAwardNum() * num); - Users users = usersService.getUsersByUid(uid); - Integer partitionId = users.getPartitionId(); - String format = DateTimeUtil.convertWithZoneId(new Date(), PartitionEnum.getByPartitionId(partitionId).getZoneId()).format(DateTimeUtil.dateFormatter); - ActivityType activityType = ActivityType.getByType(h5LevelAward.getType()); - activityH5AwardRecordService.sendDetailAward(partitionId, uid, format, h5LevelAward, activityType, null); - return BusiResult.success(); - } - - public BusiResult> bill(@RequestHeader(PUB_UID) Long uid, Integer billType, Integer pageNo, Integer pageSize) { - List userGoldBeanBills = userGoldBeanBillService.listByBillType(uid, billType, pageNo, pageSize); - List resultLsit = new ArrayList<>(); - if (CollectionUtils.isEmpty(userGoldBeanBills)) { - return BusiResult.success(resultLsit); - } - Users users = usersService.getUsersByUid(uid); - Integer partitionId = users.getPartitionId(); - String zoneId = PartitionEnum.getByPartitionId(partitionId).getZoneId(); - - List rewardIds = userGoldBeanBills.stream() - .filter(x -> (x.getType() == GoldBeanBillType.MALL_PAY.getType()) && StringUtils.isNotEmpty(x.getObjId())) - .map(x -> Long.valueOf(x.getObjId())).collect(Collectors.toList()); - Map awardMap = new HashMap<>(); - if (CollectionUtils.isNotEmpty(rewardIds)) { - List activityH5LevelAwards = activityH5LevelAwardService.getBaseMapper().selectByIds(rewardIds); - if (CollectionUtils.isNotEmpty(activityH5LevelAwards)) { - awardMap = activityH5LevelAwards.stream().collect(Collectors.toMap(ActivityH5LevelAward::getId, x -> x)); + for (DailyTaskReward dailyTaskReward : dailyTaskRewards) { + RewardVo rewardVo = activityH5LevelAwardService.covertI18nRewardInfo(RewardTypeEnum.getByRewardType(dailyTaskReward.getAwardType()), + dailyTaskReward.getAwardId().intValue(), partitionId); + rewardVos.add(DailyTaskRewardVo.builder() + .awardName(rewardVo.getName()) + .unit(rewardVo.getUnit()) + .awardNum(dailyTaskReward.getAwardNum()) + .awardPic(rewardVo.getPic()) + .build()); } } - int multFlag = billType == 1 ? -1 : 1; - for (UserGoldBeanBill beanBill : userGoldBeanBills) { - UserGoldBeanBillVo userGoldBeanBillVo = new UserGoldBeanBillVo(); - userGoldBeanBillVo.setOperateBean(beanBill.getOperateBean().multiply(BigDecimal.valueOf(multFlag))); - userGoldBeanBillVo.setType(beanBill.getType()); - userGoldBeanBillVo.setAfterBean(beanBill.getAfterBean()); - userGoldBeanBillVo.setTaskType(beanBill.getTaskType()); - userGoldBeanBillVo.setStandardValue(beanBill.getStandardValue()); - userGoldBeanBillVo.setTodayDate(beanBill.getTodayDate()); - userGoldBeanBillVo.setReachNum(beanBill.getReachNum()); - userGoldBeanBillVo.setBeforeBean(beanBill.getBeforeBean()); - userGoldBeanBillVo.setNum(beanBill.getNum()); - userGoldBeanBillVo.setCreateTime(DateTimeUtil.convertWithZoneId(beanBill.getCreateTime(), zoneId).format(DateTimeUtil.datetimeFormatter)); - if (beanBill.getType() == GoldBeanBillType.MALL_PAY.getType() && StringUtils.isNotEmpty(beanBill.getObjId())) { - ActivityH5LevelAward activityH5LevelAward = awardMap.get(Long.valueOf(beanBill.getObjId())); - if (activityH5LevelAward != null) { - RewardVo rewardVo = activityH5LevelAwardService.covertI18nRewardInfo(RewardTypeEnum.getByRewardType(activityH5LevelAward.getAwardType()), activityH5LevelAward.getAwardId().intValue(), partitionId); - userGoldBeanBillVo.setShopName(rewardVo.getName()); - userGoldBeanBillVo.setGoldBean(BigDecimal.valueOf(activityH5LevelAward.getReferenceValue())); - } - } - resultLsit.add(userGoldBeanBillVo); - } - return BusiResult.success(resultLsit); + return resultList; } + + public DailyTaskVo taskVo(Integer taskConfigId, Long uid) { + DailyTaskConfig dailyTaskConfig = dailyTaskConfigService.getById(taskConfigId); + Boolean isRechargeUser = rechargeUserService.isRechargeUser(uid); + if (isRechargeUser && dailyTaskConfig.getRechargeLimit()) { + throw new ServiceException(BusiStatus.ACCESS_DENIED); + } + + DailyTaskVo dailyTaskVo = DailyTaskVo.builder(). + taskConfigId(dailyTaskConfig.getTaskConfigId()). + taskType(valueOf(dailyTaskConfig.getTaskKey())). + standardValue(dailyTaskConfig.getReachNum()) + .build(); + + Map> taskRewardMap = dailyTaskRewardService.mapByTaskConfigId(Arrays.asList(taskConfigId)); + if (MapUtils.isEmpty(taskRewardMap)) { + return dailyTaskVo; + } + List dailyTaskRewards = taskRewardMap.get(dailyTaskVo.getTaskConfigId()); + if (CollectionUtils.isEmpty(dailyTaskRewards)) { + return dailyTaskVo; + } + dailyTaskVo.setConfigRewards(dailyTaskRewards); + return dailyTaskVo; + } + } \ No newline at end of file diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskShopService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskShopService.java new file mode 100644 index 000000000..683d75793 --- /dev/null +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskShopService.java @@ -0,0 +1,149 @@ +package com.accompany.business.service.dailytask; + +import com.accompany.business.common.constant.RewardTypeEnum; +import com.accompany.business.common.vo.RewardVo; +import com.accompany.business.constant.activity.ActivityType; +import com.accompany.business.constant.dailytask.GoldBeanBillType; +import com.accompany.business.model.activity.h5.ActivityH5LevelAward; +import com.accompany.business.model.user.UserGoldBean; +import com.accompany.business.model.user.UserGoldBeanBill; +import com.accompany.business.service.activity.h5.ActivityH5AwardRecordService; +import com.accompany.business.service.activity.h5.ActivityH5LevelAwardService; +import com.accompany.business.service.user.UserGoldBeanBillService; +import com.accompany.business.service.user.UserGoldBeanService; +import com.accompany.business.service.user.UsersService; +import com.accompany.business.vo.dailytask.DailyTaskShopCenterVo; +import com.accompany.business.vo.dailytask.DailyTaskShopVo; +import com.accompany.business.vo.dailytask.UserGoldBeanBillVo; +import com.accompany.common.result.BusiResult; +import com.accompany.common.status.BusiStatus; +import com.accompany.common.utils.DateTimeUtil; +import com.accompany.common.utils.StringUtils; +import com.accompany.core.enumeration.PartitionEnum; +import com.accompany.core.exception.ServiceException; +import com.accompany.core.model.Users; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestHeader; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +import static com.accompany.business.constant.activity.ActivityType.DAILY_SHOP; +import static com.accompany.common.constant.ApplicationConstant.PublicParameters.PUB_UID; + +@Service +public class DailyTaskShopService { + + @Autowired + private UserGoldBeanService userGoldBeanService; + + @Autowired + private UserGoldBeanBillService userGoldBeanBillService; + + @Autowired + private UsersService usersService; + + @Autowired + private ActivityH5LevelAwardService activityH5LevelAwardService; + + @Autowired + private ActivityH5AwardRecordService activityH5AwardRecordService; + + public BusiResult shops(Long uid) { + UserGoldBean userGoldBean = userGoldBeanService.queryUserGoldBean(uid); + DailyTaskShopCenterVo dailyTaskShopCenterVo = new DailyTaskShopCenterVo(); + dailyTaskShopCenterVo.setGoldBean(userGoldBean.getGoldBean()); + Users users = usersService.getUsersByUid(uid); + dailyTaskShopCenterVo.setNick(users.getNick()); + dailyTaskShopCenterVo.setAvatar(users.getAvatar()); + dailyTaskShopCenterVo.setErbanNo(users.getErbanNo()); + List shopVos = new ArrayList<>(); + dailyTaskShopCenterVo.setShops(shopVos); + Integer partitionId = users.getPartitionId(); + List activityH5LevelAwards = activityH5LevelAwardService.listByLevelPartition(partitionId, 1, DAILY_SHOP.getType()); + if (CollectionUtils.isEmpty(activityH5LevelAwards)) { + return BusiResult.success(dailyTaskShopCenterVo); + } + for (ActivityH5LevelAward award : activityH5LevelAwards) { + RewardVo rewardVo = activityH5LevelAwardService.covertI18nRewardInfo(RewardTypeEnum.getByRewardType(award.getAwardType()), award.getAwardId().intValue(), partitionId); + if (rewardVo == null) { + continue; + } + DailyTaskShopVo dailyTaskShopVo = new DailyTaskShopVo(); + dailyTaskShopVo.setShopName(rewardVo.getName()); + dailyTaskShopVo.setPic(rewardVo.getPic()); + dailyTaskShopVo.setUnit(rewardVo.getUnit()); + dailyTaskShopVo.setExchangeGoldBean(award.getReferenceValue()); + dailyTaskShopVo.setAwardId(award.getId()); + dailyTaskShopVo.setAwardNum(award.getAwardNum()); + shopVos.add(dailyTaskShopVo); + } + return BusiResult.success(dailyTaskShopCenterVo); + } + + public BusiResult shopBuy(Long uid, Long awardId, Integer num) { + ActivityH5LevelAward h5LevelAward = activityH5LevelAwardService.getById(awardId); + if (h5LevelAward == null) { + throw new ServiceException(BusiStatus.PARAMERROR); + } + Long price = h5LevelAward.getReferenceValue(); + long totalPrice = price * num; + userGoldBeanService.subGoldBean(uid, BigDecimal.valueOf(totalPrice), GoldBeanBillType.MALL_PAY, h5LevelAward.getId().toString(), num); + h5LevelAward.setAwardNum(h5LevelAward.getAwardNum() * num); + Users users = usersService.getUsersByUid(uid); + Integer partitionId = users.getPartitionId(); + String format = DateTimeUtil.convertWithZoneId(new Date(), PartitionEnum.getByPartitionId(partitionId).getZoneId()).format(DateTimeUtil.dateFormatter); + ActivityType activityType = ActivityType.getByType(h5LevelAward.getType()); + activityH5AwardRecordService.sendDetailAward(partitionId, uid, format, h5LevelAward, activityType, null); + return BusiResult.success(); + } + + public BusiResult> bill(@RequestHeader(PUB_UID) Long uid, Integer billType, Integer pageNo, Integer pageSize) { + List userGoldBeanBills = userGoldBeanBillService.listByBillType(uid, billType, pageNo, pageSize); + List resultLsit = new ArrayList<>(); + if (CollectionUtils.isEmpty(userGoldBeanBills)) { + return BusiResult.success(resultLsit); + } + Users users = usersService.getUsersByUid(uid); + Integer partitionId = users.getPartitionId(); + String zoneId = PartitionEnum.getByPartitionId(partitionId).getZoneId(); + + List rewardIds = userGoldBeanBills.stream() + .filter(x -> (x.getType() == GoldBeanBillType.MALL_PAY.getType()) && StringUtils.isNotEmpty(x.getObjId())) + .map(x -> Long.valueOf(x.getObjId())).collect(Collectors.toList()); + Map awardMap = new HashMap<>(); + if (CollectionUtils.isNotEmpty(rewardIds)) { + List activityH5LevelAwards = activityH5LevelAwardService.getBaseMapper().selectByIds(rewardIds); + if (CollectionUtils.isNotEmpty(activityH5LevelAwards)) { + awardMap = activityH5LevelAwards.stream().collect(Collectors.toMap(ActivityH5LevelAward::getId, x -> x)); + } + } + int multFlag = billType == 1 ? -1 : 1; + for (UserGoldBeanBill beanBill : userGoldBeanBills) { + UserGoldBeanBillVo userGoldBeanBillVo = new UserGoldBeanBillVo(); + userGoldBeanBillVo.setOperateBean(beanBill.getOperateBean().multiply(BigDecimal.valueOf(multFlag))); + userGoldBeanBillVo.setType(beanBill.getType()); + userGoldBeanBillVo.setAfterBean(beanBill.getAfterBean()); + userGoldBeanBillVo.setTaskType(beanBill.getTaskType()); + userGoldBeanBillVo.setStandardValue(beanBill.getStandardValue()); + userGoldBeanBillVo.setTodayDate(beanBill.getTodayDate()); + userGoldBeanBillVo.setReachNum(beanBill.getReachNum()); + userGoldBeanBillVo.setBeforeBean(beanBill.getBeforeBean()); + userGoldBeanBillVo.setNum(beanBill.getNum()); + userGoldBeanBillVo.setCreateTime(DateTimeUtil.convertWithZoneId(beanBill.getCreateTime(), zoneId).format(DateTimeUtil.datetimeFormatter)); + if (beanBill.getType() == GoldBeanBillType.MALL_PAY.getType() && StringUtils.isNotEmpty(beanBill.getObjId())) { + ActivityH5LevelAward activityH5LevelAward = awardMap.get(Long.valueOf(beanBill.getObjId())); + if (activityH5LevelAward != null) { + RewardVo rewardVo = activityH5LevelAwardService.covertI18nRewardInfo(RewardTypeEnum.getByRewardType(activityH5LevelAward.getAwardType()), activityH5LevelAward.getAwardId().intValue(), partitionId); + userGoldBeanBillVo.setShopName(rewardVo.getName()); + userGoldBeanBillVo.setGoldBean(BigDecimal.valueOf(activityH5LevelAward.getReferenceValue())); + } + } + resultLsit.add(userGoldBeanBillVo); + } + return BusiResult.success(resultLsit); + } +} \ No newline at end of file diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/ChargeGoldNumHandler.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/ChargeGoldNumHandler.java index eced261c0..b35edce19 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/ChargeGoldNumHandler.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/ChargeGoldNumHandler.java @@ -1,11 +1,13 @@ package com.accompany.business.service.dailytask.handler; import com.accompany.business.constant.dailytask.DailyTaskTypeEnum; +import com.accompany.business.model.dailytask.DailyTaskConfig; import com.accompany.business.service.dailytask.AbstractDailyTaskHandler; import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType; import com.accompany.business.vo.dailytask.DailyProgressContext; import com.accompany.business.vo.dailytask.DailyTaskContext; import com.accompany.business.vo.dailytask.DailyTaskVo; +import org.redisson.api.RBucket; import org.redisson.api.RMap; import org.redisson.client.codec.LongCodec; import org.springframework.stereotype.Component; @@ -19,39 +21,51 @@ import static com.accompany.business.constant.dailytask.DailyTaskConstant.RedisK public class ChargeGoldNumHandler extends AbstractDailyTaskHandler { @Override - public void executeProgress(DailyProgressContext progressContext) { + public void doExecuteProgress(DailyProgressContext progressContext) { Long uid = progressContext.getUid(); - Integer partitionId = usersService.getUsersByUid(uid).getPartitionId(); - String todayDate = getTodayDate(uid, progressContext.getCreateTime()); + Integer partitionId = progressContext.getPartitionId(); + + String todayDate = getTodayDate(partitionId, progressContext.getCreateTime()); RMap dailyChargeGold = dailyChargeGold(partitionId, todayDate); Long chargeGold = dailyChargeGold.addAndGet(uid, progressContext.getChargeGoldNum()); dailyChargeGold.expire(Duration.ofDays(EXPIRE_DAY)); chargeGold = chargeGold == null ? 0L : chargeGold; - if (chargeGold >= DailyTaskTypeEnum.CHARGE_GOLD_NUM.getReachNum()) { - taskStatus(uid, todayDate, DailyTaskTypeEnum.CHARGE_GOLD_NUM).set(1, Duration.ofDays(EXPIRE_DAY)); + + RBucket taskStatus = taskStatus(uid, todayDate, DailyTaskTypeEnum.CHARGE_GOLD_NUM); + if (!taskStatus.isExists()) { + DailyTaskConfig dailyTaskConfig = dailyTaskConfigService.getByPartTaskKey(partitionId, DailyTaskTypeEnum.CHARGE_GOLD_NUM.name()); + if (dailyTaskConfig != null && chargeGold >= dailyTaskConfig.getReachNum()) { + taskStatus(uid, todayDate, DailyTaskTypeEnum.CHARGE_GOLD_NUM).set(1, Duration.ofDays(EXPIRE_DAY)); + } } - if (chargeGold >= DailyTaskTypeEnum.CHARGE_GOLD_NUM_5.getReachNum()) { - taskStatus(uid, todayDate, DailyTaskTypeEnum.CHARGE_GOLD_NUM_5).set(1, Duration.ofDays(EXPIRE_DAY)); + + taskStatus = taskStatus(uid, todayDate, DailyTaskTypeEnum.CHARGE_GOLD_NUM_5); + if (!taskStatus.isExists()) { + DailyTaskConfig dailyTaskConfig = dailyTaskConfigService.getByPartTaskKey(partitionId, DailyTaskTypeEnum.CHARGE_GOLD_NUM_5.name()); + if (dailyTaskConfig != null && chargeGold >= dailyTaskConfig.getReachNum()) { + taskStatus(uid, todayDate, DailyTaskTypeEnum.CHARGE_GOLD_NUM_5).set(1, Duration.ofDays(EXPIRE_DAY)); + } } - if (chargeGold >= DailyTaskTypeEnum.CHARGE_GOLD_NUM_10.getReachNum()) { - taskStatus(uid, todayDate, DailyTaskTypeEnum.CHARGE_GOLD_NUM_10).set(1, Duration.ofDays(EXPIRE_DAY)); + + taskStatus = taskStatus(uid, todayDate, DailyTaskTypeEnum.CHARGE_GOLD_NUM_10); + if (!taskStatus.isExists()) { + DailyTaskConfig dailyTaskConfig = dailyTaskConfigService.getByPartTaskKey(partitionId, DailyTaskTypeEnum.CHARGE_GOLD_NUM_10.name()); + if (dailyTaskConfig != null && chargeGold >= dailyTaskConfig.getReachNum()) { + taskStatus(uid, todayDate, DailyTaskTypeEnum.CHARGE_GOLD_NUM_10).set(1, Duration.ofDays(EXPIRE_DAY)); + } } } @Override public DailyTaskVo doHandle(DailyTaskContext context) { - DailyTaskTypeEnum taskType = context.getTaskType(); + DailyTaskTypeEnum taskType = context.getDailyTaskVo().getTaskType(); + DailyTaskVo dailyTaskVo = context.getDailyTaskVo(); Long uid = context.getUid(); String todayDate = context.getTodayDate(); Long chargeGold = dailyChargeGold(context.getPartitionId(), todayDate).getOrDefault(uid, 0L); - return DailyTaskVo.builder() - .todayDate(todayDate) - .standardValue(taskType.getReachNum()) - .reachNum(chargeGold) - .taskType(taskType) - .goldBean(taskType.getReachGoldBean()) - .receiveStatus(computeReceiveStatus(uid, todayDate, taskType)) - .build(); + dailyTaskVo.setReachNum(chargeGold); + dailyTaskVo.setReceiveStatus(computeReceiveStatus(uid, todayDate, taskType)); + return dailyTaskVo; } private RMap dailyChargeGold(Integer partitionId, String todayDate) { diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/DailySignHandler.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/DailySignHandler.java index 904442d79..3d7031e84 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/DailySignHandler.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/DailySignHandler.java @@ -1,10 +1,11 @@ package com.accompany.business.service.dailytask.handler; -import com.accompany.business.vo.dailytask.DailyProgressContext; -import com.accompany.business.service.dailytask.AbstractDailyTaskHandler; -import com.accompany.business.vo.dailytask.DailyTaskContext; -import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType; +import com.accompany.business.constant.dailytask.DailyTaskConstant; import com.accompany.business.constant.dailytask.DailyTaskTypeEnum; +import com.accompany.business.service.dailytask.AbstractDailyTaskHandler; +import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType; +import com.accompany.business.vo.dailytask.DailyProgressContext; +import com.accompany.business.vo.dailytask.DailyTaskContext; import com.accompany.business.vo.dailytask.DailyTaskVo; import org.springframework.stereotype.Component; @@ -15,23 +16,20 @@ import java.time.Duration; public class DailySignHandler extends AbstractDailyTaskHandler { @Override - public void executeProgress(DailyProgressContext progressContext) { + public void doExecuteProgress(DailyProgressContext progressContext) { Long uid = progressContext.getUid(); - String todayDate = getTodayDate(uid, progressContext.getCreateTime()); + Integer partitionId = progressContext.getPartitionId(); + String todayDate = getTodayDate(partitionId, progressContext.getCreateTime()); + taskStatus(uid, todayDate, DailyTaskTypeEnum.DAILY_SIGN).set(1, Duration.ofDays(EXPIRE_DAY)); } @Override public DailyTaskVo doHandle(DailyTaskContext context) { - DailyTaskTypeEnum taskType = context.getTaskType(); - Long uid = context.getUid(); - String todayDate = context.getTodayDate(); - return DailyTaskVo.builder() - .todayDate(todayDate) - .standardValue(taskType.getReachNum()) - .taskType(taskType) - .goldBean(taskType.getReachGoldBean()) - .receiveStatus(computeReceiveStatus(uid, todayDate, taskType)) - .build(); + DailyTaskVo dailyTaskVo = context.getDailyTaskVo(); + DailyTaskConstant.ReceiveStatus receiveStatus = computeReceiveStatus(context.getUid(), + context.getTodayDate(), dailyTaskVo.getTaskType()); + dailyTaskVo.setReceiveStatus(receiveStatus); + return dailyTaskVo; } } \ No newline at end of file diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/PlayGameHandler.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/PlayGameHandler.java index 13f335e0a..97bc22753 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/PlayGameHandler.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/PlayGameHandler.java @@ -1,10 +1,11 @@ package com.accompany.business.service.dailytask.handler; -import com.accompany.business.vo.dailytask.DailyProgressContext; import com.accompany.business.constant.dailytask.DailyTaskTypeEnum; +import com.accompany.business.model.dailytask.DailyTaskConfig; import com.accompany.business.service.dailytask.AbstractDailyTaskHandler; -import com.accompany.business.vo.dailytask.DailyTaskContext; import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType; +import com.accompany.business.vo.dailytask.DailyProgressContext; +import com.accompany.business.vo.dailytask.DailyTaskContext; import com.accompany.business.vo.dailytask.DailyTaskVo; import org.redisson.api.RBucket; import org.redisson.api.RSet; @@ -19,9 +20,10 @@ import static com.accompany.business.constant.dailytask.DailyTaskConstant.RedisK public class PlayGameHandler extends AbstractDailyTaskHandler { @Override - public void executeProgress(DailyProgressContext progressContext) { + public void doExecuteProgress(DailyProgressContext progressContext) { Long uid = progressContext.getUid(); - String todayDate = getTodayDate(uid, progressContext.getCreateTime()); + Integer partitionId = progressContext.getPartitionId(); + String todayDate = getTodayDate(partitionId, progressContext.getCreateTime()); RSet playGameCategory = playGameCategory(uid, todayDate); String gameId = progressContext.getGameId(); if (playGameCategory.contains(gameId)) { @@ -31,24 +33,23 @@ public class PlayGameHandler extends AbstractDailyTaskHandler { playGameCategory.expire(Duration.ofDays(EXPIRE_DAY)); int size = playGameCategory.size(); RBucket taskStatus = taskStatus(uid, todayDate, DailyTaskTypeEnum.PLAY_GAME); - if (size >= DailyTaskTypeEnum.PLAY_GAME.getReachNum()) { + if (taskStatus.isExists()) { + return; + } + DailyTaskConfig dailyTaskConfig = dailyTaskConfigService.getByPartTaskKey(partitionId, DailyTaskTypeEnum.PLAY_GAME.name()); + if (dailyTaskConfig != null && size >= dailyTaskConfig.getReachNum()) { taskStatus.set(1, Duration.ofDays(EXPIRE_DAY)); } } @Override public DailyTaskVo doHandle(DailyTaskContext context) { - DailyTaskTypeEnum taskType = context.getTaskType(); Long uid = context.getUid(); String todayDate = context.getTodayDate(); - return DailyTaskVo.builder() - .todayDate(todayDate) - .reachNum((long)playGameCategory(uid, todayDate).size()) - .standardValue(taskType.getReachNum()) - .taskType(taskType) - .goldBean(taskType.getReachGoldBean()) - .receiveStatus(computeReceiveStatus(uid, todayDate, taskType)) - .build(); + DailyTaskVo dailyTaskVo = context.getDailyTaskVo(); + dailyTaskVo.setReachNum((long)playGameCategory(uid, todayDate).size()); + dailyTaskVo.setReceiveStatus(computeReceiveStatus(uid, todayDate, dailyTaskVo.getTaskType())); + return dailyTaskVo; } private RSet playGameCategory(Long uid, String todayDate) { diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/RecvLuckyGiftHandler.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/RecvLuckyGiftHandler.java index 7a0717df5..32174f999 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/RecvLuckyGiftHandler.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/RecvLuckyGiftHandler.java @@ -1,11 +1,11 @@ package com.accompany.business.service.dailytask.handler; -import com.accompany.business.service.gift.GiftSendService; -import com.accompany.business.vo.dailytask.DailyProgressContext; import com.accompany.business.constant.dailytask.DailyTaskTypeEnum; import com.accompany.business.service.dailytask.AbstractDailyTaskHandler; -import com.accompany.business.vo.dailytask.DailyTaskContext; import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType; +import com.accompany.business.service.gift.GiftSendService; +import com.accompany.business.vo.dailytask.DailyProgressContext; +import com.accompany.business.vo.dailytask.DailyTaskContext; import com.accompany.business.vo.dailytask.DailyTaskVo; import org.redisson.api.RBucket; import org.springframework.beans.factory.annotation.Autowired; @@ -21,9 +21,10 @@ public class RecvLuckyGiftHandler extends AbstractDailyTaskHandler { private GiftSendService giftSendService; @Override - public void executeProgress(DailyProgressContext progressContext) { + public void doExecuteProgress(DailyProgressContext progressContext) { Long uid = progressContext.getUid(); - String todayDate = getTodayDate(uid, progressContext.getCreateTime()); + Integer partitionId = progressContext.getPartitionId(); + String todayDate = getTodayDate(partitionId, progressContext.getCreateTime()); RBucket taskStatus = taskStatus(uid, todayDate, DailyTaskTypeEnum.RECV_LUCKY_GIFT); if (taskStatus.isExists()) { return; @@ -36,15 +37,10 @@ public class RecvLuckyGiftHandler extends AbstractDailyTaskHandler { @Override public DailyTaskVo doHandle(DailyTaskContext context) { - DailyTaskTypeEnum taskType = context.getTaskType(); + DailyTaskVo dailyTaskVo = context.getDailyTaskVo(); Long uid = context.getUid(); String todayDate = context.getTodayDate(); - return DailyTaskVo.builder() - .todayDate(todayDate) - .standardValue(taskType.getReachNum()) - .taskType(taskType) - .goldBean(taskType.getReachGoldBean()) - .receiveStatus(computeReceiveStatus(uid, todayDate, taskType)) - .build(); + dailyTaskVo.setReceiveStatus(computeReceiveStatus(uid, todayDate, dailyTaskVo.getTaskType())); + return dailyTaskVo; } } \ No newline at end of file diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/RecvNomalGiftGoldHandler.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/RecvNomalGiftGoldHandler.java index 322da7b94..3a545cf82 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/RecvNomalGiftGoldHandler.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/RecvNomalGiftGoldHandler.java @@ -1,10 +1,11 @@ package com.accompany.business.service.dailytask.handler; -import com.accompany.business.vo.dailytask.DailyProgressContext; import com.accompany.business.constant.dailytask.DailyTaskTypeEnum; +import com.accompany.business.model.dailytask.DailyTaskConfig; import com.accompany.business.service.dailytask.AbstractDailyTaskHandler; -import com.accompany.business.vo.dailytask.DailyTaskContext; import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType; +import com.accompany.business.vo.dailytask.DailyProgressContext; +import com.accompany.business.vo.dailytask.DailyTaskContext; import com.accompany.business.vo.dailytask.DailyTaskVo; import org.redisson.api.RBucket; import org.redisson.api.RMap; @@ -21,34 +22,32 @@ import static com.accompany.business.constant.dailytask.DailyTaskTypeEnum.RECV_N public class RecvNomalGiftGoldHandler extends AbstractDailyTaskHandler { @Override - public void executeProgress(DailyProgressContext progressContext) { + public void doExecuteProgress(DailyProgressContext progressContext) { Long uid = progressContext.getUid(); - String todayDate = getTodayDate(uid, progressContext.getCreateTime()); - RMap recvGoldNum = recvGoldNum(progressContext.getPartitiionId(), todayDate); + Integer partitionId = progressContext.getPartitionId(); + String todayDate = getTodayDate(partitionId, progressContext.getCreateTime()); + RMap recvGoldNum = recvGoldNum(partitionId, todayDate); Long addAndGet = recvGoldNum.addAndGet(uid, progressContext.getRecvGoldNum()); + recvGoldNum.expire(Duration.ofDays(EXPIRE_DAY)); RBucket taskStatus = taskStatus(uid, todayDate, RECV_NOMAL_GIFT_GOLD); if (taskStatus.isExists()) { return; } - if (addAndGet != null && addAndGet >= RECV_NOMAL_GIFT_GOLD.getReachNum()) { + DailyTaskConfig dailyTaskConfig = dailyTaskConfigService.getByPartTaskKey(partitionId, RECV_NOMAL_GIFT_GOLD.name()); + if (dailyTaskConfig != null && addAndGet != null && addAndGet >= dailyTaskConfig.getReachNum()) { taskStatus(uid, todayDate, DailyTaskTypeEnum.RECV_NOMAL_GIFT_GOLD).set(1, Duration.ofDays(EXPIRE_DAY)); } } @Override public DailyTaskVo doHandle(DailyTaskContext context) { - DailyTaskTypeEnum taskType = context.getTaskType(); - Long uid = context.getUid(); String todayDate = context.getTodayDate(); RMap recvGoldNum = recvGoldNum(context.getPartitionId(), todayDate); - return DailyTaskVo.builder() - .todayDate(todayDate) - .reachNum(recvGoldNum.getOrDefault(uid, 0L)) - .standardValue(taskType.getReachNum()) - .taskType(taskType) - .goldBean(taskType.getReachGoldBean()) - .receiveStatus(computeReceiveStatus(uid, todayDate, taskType)) - .build(); + DailyTaskVo dailyTaskVo = context.getDailyTaskVo(); + Long uid = context.getUid(); + dailyTaskVo.setReceiveStatus(computeReceiveStatus(uid, todayDate, dailyTaskVo.getTaskType())); + dailyTaskVo.setReachNum(recvGoldNum.getOrDefault(uid, 0L)); + return dailyTaskVo; } private RMap recvGoldNum(Integer partitionId, String todayDate) { diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/RecvNomalGiftHandler.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/RecvNomalGiftHandler.java index 317eff817..1cce693aa 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/RecvNomalGiftHandler.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/RecvNomalGiftHandler.java @@ -1,11 +1,11 @@ package com.accompany.business.service.dailytask.handler; -import com.accompany.business.service.gift.GiftSendService; -import com.accompany.business.vo.dailytask.DailyProgressContext; import com.accompany.business.constant.dailytask.DailyTaskTypeEnum; import com.accompany.business.service.dailytask.AbstractDailyTaskHandler; -import com.accompany.business.vo.dailytask.DailyTaskContext; import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType; +import com.accompany.business.service.gift.GiftSendService; +import com.accompany.business.vo.dailytask.DailyProgressContext; +import com.accompany.business.vo.dailytask.DailyTaskContext; import com.accompany.business.vo.dailytask.DailyTaskVo; import org.redisson.api.RBucket; import org.springframework.beans.factory.annotation.Autowired; @@ -21,9 +21,10 @@ public class RecvNomalGiftHandler extends AbstractDailyTaskHandler { private GiftSendService giftSendService; @Override - public void executeProgress(DailyProgressContext progressContext) { + public void doExecuteProgress(DailyProgressContext progressContext) { Long uid = progressContext.getUid(); - String todayDate = getTodayDate(uid, progressContext.getCreateTime()); + Integer partitionId = progressContext.getPartitionId(); + String todayDate = getTodayDate(partitionId, progressContext.getCreateTime()); RBucket taskStatus = taskStatus(uid, todayDate, DailyTaskTypeEnum.RECV_NOMAL_GIFT); if (taskStatus.isExists()) { return; @@ -37,15 +38,10 @@ public class RecvNomalGiftHandler extends AbstractDailyTaskHandler { @Override public DailyTaskVo doHandle(DailyTaskContext context) { - DailyTaskTypeEnum taskType = context.getTaskType(); + DailyTaskVo dailyTaskVo = context.getDailyTaskVo(); Long uid = context.getUid(); String todayDate = context.getTodayDate(); - return DailyTaskVo.builder() - .todayDate(todayDate) - .standardValue(taskType.getReachNum()) - .taskType(taskType) - .goldBean(taskType.getReachGoldBean()) - .receiveStatus(computeReceiveStatus(uid, todayDate, taskType)) - .build(); + dailyTaskVo.setReceiveStatus(computeReceiveStatus(uid, todayDate, dailyTaskVo.getTaskType())); + return dailyTaskVo; } } \ No newline at end of file diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/RoomSendGiftHandler.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/RoomSendGiftHandler.java index 12fd8f4e8..00368d8a4 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/RoomSendGiftHandler.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/RoomSendGiftHandler.java @@ -1,10 +1,10 @@ package com.accompany.business.service.dailytask.handler; -import com.accompany.business.vo.dailytask.DailyProgressContext; import com.accompany.business.constant.dailytask.DailyTaskTypeEnum; import com.accompany.business.service.dailytask.AbstractDailyTaskHandler; -import com.accompany.business.vo.dailytask.DailyTaskContext; import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType; +import com.accompany.business.vo.dailytask.DailyProgressContext; +import com.accompany.business.vo.dailytask.DailyTaskContext; import com.accompany.business.vo.dailytask.DailyTaskVo; import org.redisson.api.RBucket; import org.springframework.stereotype.Component; @@ -16,9 +16,10 @@ import java.time.Duration; public class RoomSendGiftHandler extends AbstractDailyTaskHandler { @Override - public void executeProgress(DailyProgressContext progressContext) { + public void doExecuteProgress(DailyProgressContext progressContext) { Long uid = progressContext.getUid(); - String todayDate = getTodayDate(uid, progressContext.getCreateTime()); + Integer partitionId = progressContext.getPartitionId(); + String todayDate = getTodayDate(partitionId, progressContext.getCreateTime()); RBucket taskStatus = taskStatus(uid, todayDate, DailyTaskTypeEnum.ROOM_SEND_GIFT); if (taskStatus.isExists()) { return; @@ -31,15 +32,10 @@ public class RoomSendGiftHandler extends AbstractDailyTaskHandler { @Override public DailyTaskVo doHandle(DailyTaskContext context) { - DailyTaskTypeEnum taskType = context.getTaskType(); + DailyTaskVo dailyTaskVo = context.getDailyTaskVo(); Long uid = context.getUid(); String todayDate = context.getTodayDate(); - return DailyTaskVo.builder() - .todayDate(todayDate) - .standardValue(taskType.getReachNum()) - .taskType(taskType) - .goldBean(taskType.getReachGoldBean()) - .receiveStatus(computeReceiveStatus(uid, todayDate, taskType)) - .build(); + dailyTaskVo.setReceiveStatus(computeReceiveStatus(uid, todayDate, dailyTaskVo.getTaskType())); + return dailyTaskVo; } } \ No newline at end of file diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/UpMicHandler.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/UpMicHandler.java index be99cd728..e96e76f45 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/UpMicHandler.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/UpMicHandler.java @@ -1,11 +1,11 @@ package com.accompany.business.service.dailytask.handler; +import com.accompany.business.constant.dailytask.DailyTaskTypeEnum; +import com.accompany.business.service.dailytask.AbstractDailyTaskHandler; +import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType; import com.accompany.business.service.room.RoomMicService; import com.accompany.business.vo.dailytask.DailyProgressContext; -import com.accompany.business.service.dailytask.AbstractDailyTaskHandler; import com.accompany.business.vo.dailytask.DailyTaskContext; -import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType; -import com.accompany.business.constant.dailytask.DailyTaskTypeEnum; import com.accompany.business.vo.dailytask.DailyTaskVo; import org.redisson.api.RAtomicLong; import org.redisson.api.RBucket; @@ -15,7 +15,6 @@ import org.springframework.stereotype.Component; import java.time.Duration; import java.util.Calendar; import java.util.Map; -import java.util.Optional; @Component @DailyTaskHandlerType(DailyTaskTypeEnum.UP_MIC) @@ -26,36 +25,33 @@ public class UpMicHandler extends AbstractDailyTaskHandler { @Override - public void executeProgress(DailyProgressContext progressContext) { - Long uid = progressContext.getUid(); - String todayDate = getTodayDate(uid, progressContext.getCreateTime()); + public void doExecuteProgress(DailyProgressContext progressContext) { +// Long uid = progressContext.getUid(); +// Integer partitionId = progressContext.getPartitionId(); +// String todayDate = getTodayDate(partitionId, progressContext.getCreateTime()); } @Override public DailyTaskVo doHandle(DailyTaskContext context) { - DailyTaskTypeEnum taskType = context.getTaskType(); Long uid = context.getUid(); + DailyTaskVo dailyTaskVo = context.getDailyTaskVo(); String todayDate = context.getTodayDate(); RAtomicLong userDayUpMicDuration = roomMicService.userDayUpMicDuration(todayDate, uid); long totalDuration = userDayUpMicDuration.get(); RBucket longRBucket = roomMicService.userUpMicTime(uid); Long upMicTime = longRBucket.get(); + DailyTaskTypeEnum taskType = dailyTaskVo.getTaskType(); if (longRBucket.isExists()) { Map upMicDuration = roomMicService.calUserUpMicDuration(upMicTime, Calendar.getInstance().getTimeInMillis(), context.getPartitionId()); if (!upMicDuration.isEmpty()) { totalDuration += upMicDuration.getOrDefault(todayDate, 0); } } - if (totalDuration >= taskType.getReachNum()) { + if (totalDuration >= dailyTaskVo.getStandardValue()) { taskStatus(uid, todayDate, taskType).set(1, Duration.ofDays(1)); } - return DailyTaskVo.builder() - .todayDate(todayDate) - .reachNum(totalDuration) - .standardValue(taskType.getReachNum()) - .taskType(taskType) - .goldBean(taskType.getReachGoldBean()) - .receiveStatus(computeReceiveStatus(uid, todayDate, taskType)) - .build(); + dailyTaskVo.setReachNum(totalDuration); + dailyTaskVo.setReceiveStatus(computeReceiveStatus(uid, todayDate, taskType)); + return dailyTaskVo; } } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/listener/DailyTaskGiftListener.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/listener/DailyTaskGiftListener.java index 075bae73d..e9f510e23 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/listener/DailyTaskGiftListener.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/listener/DailyTaskGiftListener.java @@ -4,10 +4,7 @@ import com.accompany.business.constant.dailytask.DailyTaskTypeEnum; import com.accompany.business.event.GiftMessageEvent; import com.accompany.business.message.GiftMessage; import com.accompany.business.service.dailytask.DailyTaskService; -import com.accompany.business.service.gift.GiftSendRecordService; import com.accompany.business.vo.dailytask.DailyProgressContext; -import com.accompany.common.constant.Constant; -import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationListener; @@ -35,7 +32,7 @@ public class DailyTaskGiftListener implements ApplicationListener { List listByBillType(Long uid, Integer billType, Integer pageNo, Integer pageSize); int insertBill(Long uid, GoldBeanBillType goldBeanBillType, BigDecimal goldBean, - String objId, UserGoldBean afterGoldBean, Integer num, DailyTaskTypeEnum taskType, Long reachNum, String todayDate); + String objId, UserGoldBean afterGoldBean, Integer num, String taskType, Long reachNum, Long standardValue, String todayDate); } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/user/UserGoldBeanService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/user/UserGoldBeanService.java index 7725cc9a2..0b94da90d 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/user/UserGoldBeanService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/user/UserGoldBeanService.java @@ -1,6 +1,5 @@ package com.accompany.business.service.user; -import com.accompany.business.constant.dailytask.DailyTaskTypeEnum; import com.accompany.business.constant.dailytask.GoldBeanBillType; import com.accompany.business.model.user.UserGoldBean; import com.baomidou.mybatisplus.extension.service.IService; @@ -18,7 +17,7 @@ public interface UserGoldBeanService extends IService { UserGoldBean queryUserGoldBean(Long uid); UserGoldBean addGoldBean(Long uid, BigDecimal goldBean, GoldBeanBillType goldBeanBillType, - String objId, Integer num, DailyTaskTypeEnum taskType, Long reachNum, String todayDate); + String objId, Integer num, String taskType, Long reachNum, Long standardValue, String todayDate); UserGoldBean subGoldBean(Long uid, BigDecimal goldBean, GoldBeanBillType goldBeanBillType, String objId, Integer num); } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/user/impl/UserGoldBeanBillServiceImpl.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/user/impl/UserGoldBeanBillServiceImpl.java index df81ffb85..0ee381a98 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/user/impl/UserGoldBeanBillServiceImpl.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/user/impl/UserGoldBeanBillServiceImpl.java @@ -1,6 +1,5 @@ package com.accompany.business.service.user.impl; -import com.accompany.business.constant.dailytask.DailyTaskTypeEnum; import com.accompany.business.constant.dailytask.GoldBeanBillType; import com.accompany.business.model.user.UserGoldBean; import com.accompany.business.model.user.UserGoldBeanBill; @@ -37,14 +36,12 @@ public class UserGoldBeanBillServiceImpl extends ServiceImpl { try { - userGoldBeanService.addGoldBean(uid, BigDecimal.valueOf(num), GoldBeanBillType.ROOM_BOOM_RANDOM, null, 1, null, null, null); + userGoldBeanService.addGoldBean(uid, BigDecimal.valueOf(num), GoldBeanBillType.ROOM_BOOM_RANDOM, null, 1, null, null, null,null); } catch (Exception e) { log.error("[RewardUtil] {} {} {} {} {} 发奖异常", uid, typeEnum, refId, num, remark, e); } diff --git a/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/DailyTaskConfigMapper.xml b/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/DailyTaskConfigMapper.xml new file mode 100644 index 000000000..ce37752a4 --- /dev/null +++ b/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/DailyTaskConfigMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/DailyTaskRewardMapper.xml b/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/DailyTaskRewardMapper.xml new file mode 100644 index 000000000..e70647893 --- /dev/null +++ b/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/DailyTaskRewardMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/activity/dailytask/DailyTaskController.java b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/activity/dailytask/DailyTaskController.java index 1d43e4d85..9c7fc5a19 100644 --- a/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/activity/dailytask/DailyTaskController.java +++ b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/activity/dailytask/DailyTaskController.java @@ -1,7 +1,7 @@ package com.accompany.business.controller.activity.dailytask; -import com.accompany.business.constant.dailytask.DailyTaskTypeEnum; import com.accompany.business.service.dailytask.DailyTaskService; +import com.accompany.business.service.dailytask.DailyTaskShopService; import com.accompany.business.vo.dailytask.DailyTaskShopCenterVo; import com.accompany.business.vo.dailytask.DailyTaskVo; import com.accompany.business.vo.dailytask.UserGoldBeanBillVo; @@ -23,27 +23,31 @@ import static com.accompany.common.constant.ApplicationConstant.PublicParameters public class DailyTaskController { @Autowired private DailyTaskService dailyTaskService; + @Autowired + private DailyTaskShopService dailyTaskShopService; @ApiOperation(value = "任务列表", httpMethod = "GET") @GetMapping("/tasks") - public BusiResult> tasks(@RequestHeader(PUB_UID) Long uid) { - return dailyTaskService.tasks(uid); + public BusiResult> tasks(@RequestHeader(PUB_UID) Long uid, + @RequestParam(defaultValue = "1") Integer taskTabType) { + List tasks = dailyTaskService.tasks(uid, taskTabType); + return BusiResult.success(tasks); } @ApiOperation(value = "领取", httpMethod = "POST") @ApiImplicitParams({ @ApiImplicitParam(name = "todayDate", value = "列表有传对应字段", required = true, dataType = "string", paramType = "query"), - @ApiImplicitParam(name = "taskType", value = "列表有传对应字段", required = true, dataType = "string", paramType = "query"), + @ApiImplicitParam(name = "taskConfigId", value = "列表有传对应字段", required = true, dataType = "string", paramType = "query"), }) @PostMapping("/recv") - public BusiResult> recv(@RequestHeader(PUB_UID) Long uid, String todayDate, DailyTaskTypeEnum taskType) { - return dailyTaskService.executeReceive(taskType, uid, todayDate); + public BusiResult> recv(@RequestHeader(PUB_UID) Long uid, String todayDate, Integer taskConfigId) { + return dailyTaskService.executeReceive(taskConfigId, uid, todayDate); } @ApiOperation(value = "兑换中心", httpMethod = "GET") @GetMapping("/shops") public BusiResult shops(@RequestHeader(PUB_UID) Long uid) { - return dailyTaskService.shops(uid); + return dailyTaskShopService.shops(uid); } @ApiImplicitParams({ @@ -53,7 +57,7 @@ public class DailyTaskController { @ApiOperation(value = "兑换", httpMethod = "POST") @PostMapping("/shopBuy") public BusiResult shopBuy(@RequestHeader(PUB_UID) Long uid, Long awardId, @RequestParam(defaultValue = "1") Integer num) { - return dailyTaskService.shopBuy(uid, awardId, num); + return dailyTaskShopService.shopBuy(uid, awardId, num); } @ApiImplicitParams({ @@ -62,8 +66,7 @@ public class DailyTaskController { @ApiOperation(value = "账单", httpMethod = "POST") @PostMapping("/bill") public BusiResult> bill(@RequestHeader(PUB_UID) Long uid, Integer billType, Integer pageNo, Integer pageSize) { - return dailyTaskService.bill(uid, billType, pageNo, pageSize); + return dailyTaskShopService.bill(uid, billType, pageNo, pageSize); } - }