日常任务改版

This commit is contained in:
2025-08-25 18:33:55 +08:00
parent 4c274489d4
commit a565d0803d
40 changed files with 796 additions and 359 deletions

View File

@@ -17,6 +17,7 @@ public interface DailyTaskConstant {
charge_gold,//日充值金币
play_game,//游戏种类
recv_gold_num,//收礼金币
task_config,//任务配置
;
@Override

View File

@@ -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() {

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -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;
}

View File

@@ -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<DailyTaskRewardVo> rewardVos;
private List<DailyTaskReward> configRewards;
}

View File

@@ -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<DailyTaskConfig> {
}

View File

@@ -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<DailyTaskReward> {
}

View File

@@ -234,7 +234,7 @@ public class ActivityH5AwardRecordServiceImpl extends ServiceImpl<ActivityH5Awar
vo.setErbanNo(users.getErbanNo());
}
vo.setName(typeNameMap.get(record.getType()));
RewardVo rewardVo = activityH5LevelAwardService.coverRewardByType(record.getAwardType(), record.getAwardId().intValue());
RewardVo rewardVo = activityH5LevelAwardService.coverAdminRewardByType(record.getAwardType(), record.getAwardId().intValue());
if (rewardVo != null) {
vo.setAwardName(rewardVo.getName());
vo.setAwardPic(rewardVo.getPic());

View File

@@ -30,7 +30,7 @@ public interface ActivityH5LevelAwardService extends IService<ActivityH5LevelAwa
IPage<ActivityH5LevelAwardVo> listPage(ActivityH5Param param);
RewardVo coverRewardByType(Byte type, Integer refId);
RewardVo coverAdminRewardByType(Byte type, Integer refId);
RewardVo covertI18nRewardInfo(RewardTypeEnum typeEnum, Integer refId, Integer partitionId);
}

View File

@@ -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<ActivityH5Level
ActivityH5LevelAwardVo activityH5LevelAwardVo = new ActivityH5LevelAwardVo();
BeanUtils.copyProperties(record, activityH5LevelAwardVo);
activityH5LevelAwardVo.setName(typeNameMap.get(record.getType()));
RewardVo rewardVo = this.coverRewardByType(record.getAwardType(), record.getAwardId().intValue());
RewardVo rewardVo = this.coverAdminRewardByType(record.getAwardType(), record.getAwardId().intValue());
if (rewardVo != null) {
activityH5LevelAwardVo.setAwardName(rewardVo.getName());
activityH5LevelAwardVo.setAwardPic(rewardVo.getPic());
@@ -137,7 +138,7 @@ public class ActivityH5LevelAwardServiceImpl extends ServiceImpl<ActivityH5Level
return result;
}
public RewardVo coverRewardByType(Byte type, Integer refId) {
public RewardVo coverAdminRewardByType(Byte type, Integer refId) {
RewardVo vo = new RewardVo();
vo.setType(type);
vo.setRefId(refId);
@@ -221,6 +222,9 @@ public class ActivityH5LevelAwardServiceImpl extends ServiceImpl<ActivityH5Level
vo.setName(personalBackground.getName());
vo.setPic(personalBackground.getPic());
break;
case GOLDBEAN:
vo.setName(typeEnum.getDesc());
break;
default:
break;
}
@@ -368,6 +372,10 @@ public class ActivityH5LevelAwardServiceImpl extends ServiceImpl<ActivityH5Level
i18nValue = I18NMessageSourceUtil.getMessage(i18nId, personalBackground.getName(), partitionId);
vo.setPic(personalBackground.getPic());
break;
case GOLDBEAN:
i18nValue = I18NMessageSourceUtil.getMessage(GOLD_BEAN_NAME, partitionId);
vo.setPic("https://image.molistar.xyz/goldenbean_dailytask_icon.png");
break;
default:
break;
}

View File

@@ -1,19 +1,22 @@
package com.accompany.business.service.dailytask;
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.constant.dailytask.GoldBeanBillType;
import com.accompany.business.service.user.UsersService;
import com.accompany.business.model.dailytask.DailyTaskReward;
import com.accompany.business.service.user.UserGoldBeanService;
import com.accompany.business.vo.dailytask.DailyTaskVo;
import com.accompany.business.service.user.UsersService;
import com.accompany.business.vo.dailytask.DailyProgressContext;
import com.accompany.business.vo.dailytask.DailyTaskContext;
import com.accompany.business.vo.dailytask.DailyTaskVo;
import com.accompany.common.result.BusiResult;
import com.accompany.common.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.apache.commons.collections.CollectionUtils;
import org.redisson.api.RBucket;
import org.redisson.api.RedissonClient;
import org.redisson.client.codec.IntegerCodec;
@@ -34,25 +37,20 @@ public abstract class AbstractDailyTaskHandler implements DailyTaskHandler {
protected RedissonClient redissonClient;
@Autowired
private UserGoldBeanService userGoldBeanService;
@Autowired
protected DailyTaskConfigService dailyTaskConfigService;
protected final int EXPIRE_DAY = 1;
@Override
public DailyTaskVo handle(DailyTaskContext context){
Users users = usersService.getUsersByUid(context.getUid());
context.setTodayDate(this.getTodayDate(context.getUid(), new Date()));
context.setPartitionId(users.getPartitionId());
String todayDate = this.getTodayDate(context.getPartitionId(), new Date());
context.setTodayDate(todayDate);
context.getDailyTaskVo().setTodayDate(todayDate);
return this.doHandle(context);
}
/**
* 进度逻辑
* @param progressContext
* @return
*/
@Override
public abstract void executeProgress(DailyProgressContext progressContext);
/**
* 业务逻辑
* @param context
@@ -62,16 +60,39 @@ public abstract class AbstractDailyTaskHandler implements DailyTaskHandler {
public abstract DailyTaskVo doHandle(DailyTaskContext context);
/**
* 领取任务奖励
* @param uid
* @param receiveDate
* @param dailyTaskTypeEnum
* 进度逻辑
* @param progressContext
* @return
*/
@Override
public BusiResult receive(Long uid, String receiveDate, DailyTaskTypeEnum dailyTaskTypeEnum) {
DailyTaskContext dailyTaskContext = new DailyTaskContext(uid, dailyTaskTypeEnum);
DailyTaskVo dailyTaskVo = this.handle(dailyTaskContext);
public void executeProgress(DailyProgressContext progressContext) {
Users users = usersService.getUsersByUid(progressContext.getUid());
progressContext.setPartitionId(users.getPartitionId());
this.doExecuteProgress(progressContext);
}
/**
* 进度逻辑
* @param progressContext
* @return
*/
@Override
public abstract void doExecuteProgress(DailyProgressContext progressContext);
/**
* 领取任务奖励-此部分只发金豆
* @param uid
* @param receiveDate
* @param dailyTaskVo
* @return
*/
@Override
public BusiResult receive(Long uid, String receiveDate, DailyTaskVo dailyTaskVo) {
Users users = usersService.getUsersByUid(uid);
DailyTaskTypeEnum dailyTaskTypeEnum = dailyTaskVo.getTaskType();
DailyTaskContext dailyTaskContext = new DailyTaskContext(uid, dailyTaskVo, users.getPartitionId());
this.handle(dailyTaskContext);
if (!dailyTaskVo.getTodayDate().equals(receiveDate)) {
throw new ServiceException(BusiStatus.DAILY_RECEIVE_EXPIRE);
}
@@ -84,15 +105,22 @@ public abstract class AbstractDailyTaskHandler implements DailyTaskHandler {
if (receiveStatus != null) {
throw new ServiceException(BusiStatus.DAILY_RECEIVE_EXIST);
}
userGoldBeanService.addGoldBean(uid, BigDecimal.valueOf(dailyTaskTypeEnum.getReachGoldBean()),
GoldBeanBillType.TASK_GAIN, String.valueOf(dailyTaskTypeEnum.ordinal()), 1, dailyTaskTypeEnum, dailyTaskVo.getReachNum(), receiveDate);
if (CollectionUtils.isEmpty(dailyTaskVo.getConfigRewards())) {
throw new ServiceException(BusiStatus.SERVERBUSY);
}
for (DailyTaskReward dailyTaskReward : dailyTaskVo.getConfigRewards()) {
if (RewardTypeEnum.GOLDBEAN.getType().equals(dailyTaskReward.getAwardType())) {
userGoldBeanService.addGoldBean(uid, BigDecimal.valueOf(dailyTaskReward.getAwardNum()), GoldBeanBillType.TASK_GAIN,
String.valueOf(dailyTaskTypeEnum.ordinal()), 1, dailyTaskVo.getTaskType().name(),
dailyTaskVo.getReachNum(), dailyTaskVo.getStandardValue(), receiveDate);
}
}
return BusiResult.success();
}
@Override
public String getTodayDate(Long uid, Date date) {
Users users = usersService.getUsersByUid(uid);
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(users.getPartitionId());
public String getTodayDate(Integer partitionId, Date date) {
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
ZonedDateTime zonedDateTime = DateTimeUtil.convertWithZoneId(date, partitionEnum.getZoneId());
return zonedDateTime.format(DateTimeUtil.dateFormatter);
}

View File

@@ -0,0 +1,65 @@
package com.accompany.business.service.dailytask;
import com.accompany.business.constant.dailytask.DailyTaskConstant;
import com.accompany.business.model.dailytask.DailyTaskConfig;
import com.accompany.business.mybatismapper.dailytask.DailyTaskConfigMapper;
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.redisson.api.RMap;
import org.redisson.api.RedissonClient;
import org.redisson.codec.TypedJsonJacksonCodec;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 日常任务 服务实现类
*
* @author
* @since 2025-08-25
*/
@Service
public class DailyTaskConfigService extends ServiceImpl<DailyTaskConfigMapper, DailyTaskConfig> {
@Autowired
private RedissonClient redissonClient;
public List<DailyTaskConfig> listByRole(Integer partitionId, Integer taskTabType, List<Byte> taskRole) {
LambdaQueryWrapper<DailyTaskConfig> 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<String, DailyTaskConfig> cacheMap = this.getCacheMap(partitionId);
DailyTaskConfig dailyTaskConfig = cacheMap.get(taskKey);
if (dailyTaskConfig != null) {
return dailyTaskConfig;
}
LambdaQueryWrapper<DailyTaskConfig> 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<String, DailyTaskConfig> getCacheMap(Integer partitionId) {
return redissonClient.getMap(DailyTaskConstant.RedisKey.task_config.getKey(partitionId),
new TypedJsonJacksonCodec(String.class, DailyTaskConfig.class));
}
}

View File

@@ -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);
}

View File

@@ -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<DailyTaskRewardMapper, DailyTaskReward> {
public Map<Integer, List<DailyTaskReward>> mapByTaskConfigId(List<Integer> taskConfigIds) {
LambdaQueryWrapper<DailyTaskReward> wrapper = Wrappers.lambdaQuery();
wrapper.select(DailyTaskReward::getTaskConfigId, DailyTaskReward::getAwardType,
DailyTaskReward::getAwardId, DailyTaskReward::getAwardNum,DailyTaskReward::getAwardSeq)
.in(DailyTaskReward::getTaskConfigId, taskConfigIds);
List<DailyTaskReward> dailyTaskRewards = baseMapper.selectList(wrapper);
if (CollectionUtils.isEmpty(dailyTaskRewards)) {
return Collections.emptyMap();
}
return dailyTaskRewards.stream().collect(Collectors.groupingBy(DailyTaskReward::getTaskConfigId));
}
}

View File

@@ -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<List<DailyTaskVo>> tasks(Long uid) {
List<DailyTaskVo> result = new ArrayList<>();
result.add(this.executeDailyTask(DAILY_SIGN, uid));
public List<DailyTaskVo> tasks(Long uid, Integer taskTabType) {
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid);
List<Byte> 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<DailyTaskVo> 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<DailyTaskShopCenterVo> 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<DailyTaskShopVo> shopVos = new ArrayList<>();
dailyTaskShopCenterVo.setShops(shopVos);
Integer partitionId = users.getPartitionId();
List<ActivityH5LevelAward> activityH5LevelAwards = activityH5LevelAwardService.listByLevelPartition(partitionId, 1, DAILY_SHOP.getType());
if (CollectionUtils.isEmpty(activityH5LevelAwards)) {
return BusiResult.success(dailyTaskShopCenterVo);
public List<DailyTaskVo> taskVoList(Integer partitionId, Integer taskTabType, List<Byte> taskRole, Long uid) {
List<DailyTaskVo> resultList = new ArrayList<>();
List<DailyTaskConfig> 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<Integer> taskConfigIds = resultList.stream().map(DailyTaskVo::getTaskConfigId).collect(Collectors.toList());
Map<Integer, List<DailyTaskReward>> taskRewardMap = dailyTaskRewardService.mapByTaskConfigId(taskConfigIds);
if (MapUtils.isEmpty(taskRewardMap)) {
return resultList;
}
List<DailyTaskRewardVo> rewardVos;
for (DailyTaskVo dailyTaskVo : resultList) {
rewardVos = new ArrayList<>();
dailyTaskVo.setRewardVos(rewardVos);
List<DailyTaskReward> 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<Void> 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<List<UserGoldBeanBillVo>> bill(@RequestHeader(PUB_UID) Long uid, Integer billType, Integer pageNo, Integer pageSize) {
List<UserGoldBeanBill> userGoldBeanBills = userGoldBeanBillService.listByBillType(uid, billType, pageNo, pageSize);
List<UserGoldBeanBillVo> 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<Long> 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<Long, ActivityH5LevelAward> awardMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(rewardIds)) {
List<ActivityH5LevelAward> 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<Integer, List<DailyTaskReward>> taskRewardMap = dailyTaskRewardService.mapByTaskConfigId(Arrays.asList(taskConfigId));
if (MapUtils.isEmpty(taskRewardMap)) {
return dailyTaskVo;
}
List<DailyTaskReward> dailyTaskRewards = taskRewardMap.get(dailyTaskVo.getTaskConfigId());
if (CollectionUtils.isEmpty(dailyTaskRewards)) {
return dailyTaskVo;
}
dailyTaskVo.setConfigRewards(dailyTaskRewards);
return dailyTaskVo;
}
}

View File

@@ -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<DailyTaskShopCenterVo> 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<DailyTaskShopVo> shopVos = new ArrayList<>();
dailyTaskShopCenterVo.setShops(shopVos);
Integer partitionId = users.getPartitionId();
List<ActivityH5LevelAward> 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<Void> 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<List<UserGoldBeanBillVo>> bill(@RequestHeader(PUB_UID) Long uid, Integer billType, Integer pageNo, Integer pageSize) {
List<UserGoldBeanBill> userGoldBeanBills = userGoldBeanBillService.listByBillType(uid, billType, pageNo, pageSize);
List<UserGoldBeanBillVo> 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<Long> 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<Long, ActivityH5LevelAward> awardMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(rewardIds)) {
List<ActivityH5LevelAward> 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);
}
}

View File

@@ -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<Long, Long> 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<Integer> 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<Long, Long> dailyChargeGold(Integer partitionId, String todayDate) {

View File

@@ -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;
}
}

View File

@@ -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<String> 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<Integer> 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<String> playGameCategory(Long uid, String todayDate) {

View File

@@ -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<Integer> 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;
}
}

View File

@@ -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<Long, Long> recvGoldNum = recvGoldNum(progressContext.getPartitiionId(), todayDate);
Integer partitionId = progressContext.getPartitionId();
String todayDate = getTodayDate(partitionId, progressContext.getCreateTime());
RMap<Long, Long> recvGoldNum = recvGoldNum(partitionId, todayDate);
Long addAndGet = recvGoldNum.addAndGet(uid, progressContext.getRecvGoldNum());
recvGoldNum.expire(Duration.ofDays(EXPIRE_DAY));
RBucket<Integer> 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<Long, Long> 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<Long, Long> recvGoldNum(Integer partitionId, String todayDate) {

View File

@@ -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<Integer> 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;
}
}

View File

@@ -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<Integer> 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;
}
}

View File

@@ -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<Long> longRBucket = roomMicService.userUpMicTime(uid);
Long upMicTime = longRBucket.get();
DailyTaskTypeEnum taskType = dailyTaskVo.getTaskType();
if (longRBucket.isExists()) {
Map<String, Integer> 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;
}
}

View File

@@ -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<GiftMessageEve
.giftType(giftMessage.getGiftType())
.recvGoldNum(giftMessage.getRealGoldNum())
.createTime(new Date(giftMessage.getMessTime()))
.partitiionId(giftMessage.getPartitionId())
.partitionId(giftMessage.getPartitionId())
.build();
dailyTaskService.executeProgress(DailyTaskTypeEnum.RECV_LUCKY_GIFT, dailyProgressContext);
dailyTaskService.executeProgress(DailyTaskTypeEnum.RECV_NOMAL_GIFT_GOLD, dailyProgressContext);

View File

@@ -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.accompany.business.model.user.UserGoldBeanBill;
@@ -20,5 +19,5 @@ public interface UserGoldBeanBillService extends IService<UserGoldBeanBill> {
List<UserGoldBeanBill> 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);
}

View File

@@ -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> {
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);
}

View File

@@ -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<UserGoldBeanBillMap
@Override
public 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) {
UserGoldBeanBill beanBill = new UserGoldBeanBill();
beanBill.setBillType(goldBeanBillType.getBillType());
beanBill.setType(goldBeanBillType.getType());
if (taskType != null) {
beanBill.setTaskType(taskType.name());
beanBill.setStandardValue(taskType.getReachNum());
}
beanBill.setTaskType(taskType);
beanBill.setStandardValue(standardValue.intValue());
beanBill.setReachNum(reachNum);
beanBill.setTodayDate(todayDate);
beanBill.setUid(uid);

View File

@@ -1,7 +1,6 @@
package com.accompany.business.service.user.impl;
import com.accompany.business.constant.dailytask.DailyTaskConstant;
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.mybatismapper.user.UserGoldBeanMapper;
@@ -53,7 +52,7 @@ public class UserGoldBeanServiceImpl extends ServiceImpl<UserGoldBeanMapper, Use
@Override
public 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) {
if (goldBean.doubleValue() < 0D) {
throw new ServiceException(BusiStatus.PARAMETERILLEGAL);
}
@@ -69,7 +68,7 @@ public class UserGoldBeanServiceImpl extends ServiceImpl<UserGoldBeanMapper, Use
log.info("addGoldBean 操作后,buss:{},userGoldBean:{}", goldBeanBillType.getDesc(), JSONObject.toJSONString(userGoldBean));
return userGoldBean;
});
userGoldBeanBillService.insertBill(uid, goldBeanBillType, goldBean, objId, after, num, taskType, reachNum, todayDate);
userGoldBeanBillService.insertBill(uid, goldBeanBillType, goldBean, objId, after, num, taskType, reachNum, standardValue, todayDate);
return after;
}
@@ -97,7 +96,7 @@ public class UserGoldBeanServiceImpl extends ServiceImpl<UserGoldBeanMapper, Use
return userGoldBean;
});
userGoldBeanBillService.insertBill(uid, goldBeanBillType, goldBean, objId, after, num, null, null, null);
userGoldBeanBillService.insertBill(uid, goldBeanBillType, goldBean, objId, after, num, null, null, null,null);
return after;
}

View File

@@ -106,7 +106,6 @@ public class UserSignService {
DailyProgressContext dailyProgressContext = DailyProgressContext.builder()
.uid(uid)
.createTime(now)
.partitiionId(partitionId)
.build();
dailyTaskService.executeProgress(DailyTaskTypeEnum.DAILY_SIGN, dailyProgressContext);
return BusiResult.success();

View File

@@ -348,7 +348,7 @@ public class RewardUtil {
}
bizExecutor.execute(() -> {
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);
}

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.accompany.business.mybatismapper.dailytask.DailyTaskConfigMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.accompany.business.mybatismapper.dailytask.DailyTaskRewardMapper">
</mapper>

View File

@@ -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<List<DailyTaskVo>> tasks(@RequestHeader(PUB_UID) Long uid) {
return dailyTaskService.tasks(uid);
public BusiResult<List<DailyTaskVo>> tasks(@RequestHeader(PUB_UID) Long uid,
@RequestParam(defaultValue = "1") Integer taskTabType) {
List<DailyTaskVo> 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<List<DailyTaskVo>> recv(@RequestHeader(PUB_UID) Long uid, String todayDate, DailyTaskTypeEnum taskType) {
return dailyTaskService.executeReceive(taskType, uid, todayDate);
public BusiResult<List<DailyTaskVo>> recv(@RequestHeader(PUB_UID) Long uid, String todayDate, Integer taskConfigId) {
return dailyTaskService.executeReceive(taskConfigId, uid, todayDate);
}
@ApiOperation(value = "兑换中心", httpMethod = "GET")
@GetMapping("/shops")
public BusiResult<DailyTaskShopCenterVo> 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<Void> 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<List<UserGoldBeanBillVo>> 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);
}
}