日常任务改版
This commit is contained in:
@@ -17,6 +17,7 @@ public interface DailyTaskConstant {
|
||||
charge_gold,//日充值金币
|
||||
play_game,//游戏种类
|
||||
recv_gold_num,//收礼金币
|
||||
task_config,//任务配置
|
||||
;
|
||||
|
||||
@Override
|
||||
|
@@ -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() {
|
||||
|
@@ -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;
|
||||
|
||||
|
||||
}
|
@@ -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;
|
||||
|
||||
|
||||
}
|
@@ -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;
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
@@ -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;
|
||||
}
|
||||
|
@@ -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> {
|
||||
|
||||
}
|
@@ -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> {
|
||||
|
||||
}
|
@@ -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());
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -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);
|
||||
}
|
@@ -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));
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -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) {
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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) {
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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) {
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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();
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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>
|
@@ -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>
|
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user