任务列表接口修复
This commit is contained in:
parent
d3b93b9702
commit
da7b0a4d48
@ -246,66 +246,142 @@ public class TaskServiceImpl implements TaskService {
|
||||
|
||||
@Override
|
||||
public List<TaskDTO> getTaskListV2(AppExtCommand cmd) {
|
||||
List<TaskDTO> resultList = new ArrayList<>();
|
||||
//获取当前天 yyyy-mm-dd 格式
|
||||
String date = DateUtil.format(new Date(), "yyyy-MM-dd");
|
||||
Long userId = cmd.getReqUserId();
|
||||
// 查询任务配置信息
|
||||
//获取所有任务
|
||||
List<TaskConfig> taskConfigs = taskConfigDao.selectList(
|
||||
new LambdaQueryWrapper<TaskConfig>()
|
||||
.orderByAsc(TaskConfig::getSortOrder));
|
||||
Map<Long, TaskConfig> taskMapByIds = taskConfigs.stream().collect(Collectors.toMap(TaskConfig::getTaskId, taskConfig -> taskConfig));
|
||||
List<TaskDTO> resultList = new ArrayList<>();
|
||||
String date = DateUtil.format(new Date(), "yyyy-MM-dd");
|
||||
Long userId = cmd.getReqUserId();
|
||||
|
||||
//判断是否初始化成长任务
|
||||
List<UserTaskProgress> userTaskList = createTasksIfNotExists(userId, taskConfigs);
|
||||
List<UserTaskProgress> allTask = new ArrayList<>(userTaskList);
|
||||
// 1. 查询所有任务配置
|
||||
List<TaskConfig> taskConfigs = taskConfigDao.selectList(
|
||||
new LambdaQueryWrapper<TaskConfig>()
|
||||
.orderByAsc(TaskConfig::getSortOrder));
|
||||
|
||||
// 每天有用户请求的时候创建对应的任务数据
|
||||
List<UserTaskProgress> dailyUserTaskList = createDailyTasksIfNotExists(userId, taskConfigs, date);
|
||||
if (CollectionUtils.isEmpty(dailyUserTaskList)) {
|
||||
//新增list为空就是 已经创建过了 直接拼接
|
||||
LambdaQueryWrapper<UserTaskProgress> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(UserTaskProgress::getUserId, userId);
|
||||
queryWrapper.eq(UserTaskProgress::getDayString, date);
|
||||
dailyUserTaskList = userTaskProgressDao.selectList(queryWrapper);
|
||||
}
|
||||
allTask.addAll(dailyUserTaskList);
|
||||
Set<Long> rewardIds = taskConfigs.stream().map(TaskConfig::getRewardId).collect(Collectors.toSet());
|
||||
//获取对应详情
|
||||
Map<Long, ActivityPropsGroup> activityMap = propsActivityCnfClient.mapActivityPropsGroup(cmd.getReqSysOrigin().getOrigin(), rewardIds).getBody();
|
||||
allTask.forEach(item -> {
|
||||
|
||||
ActivityPropsGroup activity = activityMap.get(item.getRewardId());
|
||||
|
||||
if (activity != null && !activity.getActivityRewardProps().isEmpty()) {
|
||||
TaskDTO build = TaskDTO.builder()
|
||||
.taskType(item.getTaskType())
|
||||
.taskId(item.getTaskId())
|
||||
.taskDesc(taskMapByIds.get(item.getTaskId()).getTaskDesc())
|
||||
.jumpPage(taskMapByIds.get(item.getTaskId()).getJumpPage())
|
||||
.taskStatus(item.getTaskStatus())
|
||||
.isRewardCollected(item.getIsRewardCollected())
|
||||
.taskIcon(taskMapByIds.get(item.getTaskId()).getTaskIcon())
|
||||
.taskStatus(item.getTaskStatus())
|
||||
.conditionType(getConditionType(activity.getActivityRewardProps()))
|
||||
.conditionValue(getConditionValue(activity.getActivityRewardProps()))
|
||||
.quantity(activity.getActivityRewardProps().get(0).getQuantity())
|
||||
.build();
|
||||
|
||||
if (item.getTaskId() == 1) {
|
||||
String redisKey = "mic:heartbeat:" + userId;
|
||||
String inc = redisService.getString(redisKey);
|
||||
build.setCompletedValue(inc);
|
||||
} else {
|
||||
build.setCompletedValue(item.getTaskStatus().toString());
|
||||
}
|
||||
|
||||
resultList.add(build);
|
||||
}
|
||||
});
|
||||
//拼接任务
|
||||
if (CollectionUtils.isEmpty(taskConfigs)) {
|
||||
return resultList;
|
||||
}
|
||||
|
||||
// 2. 查询用户已有的任务进度
|
||||
List<UserTaskProgress> existingProgressList = userTaskProgressDao.selectList(
|
||||
new LambdaQueryWrapper<UserTaskProgress>()
|
||||
.eq(UserTaskProgress::getUserId, userId)
|
||||
.and(wrapper -> wrapper
|
||||
.eq(UserTaskProgress::getTaskType, 2) // 成长任务
|
||||
.or()
|
||||
.eq(UserTaskProgress::getDayString, date) // 今日每日任务
|
||||
));
|
||||
|
||||
// 3. 构建已有进度的Map,key为 taskId_dayString(每日任务) 或 taskId(成长任务)
|
||||
Map<String, UserTaskProgress> existingProgressMap = new HashMap<>();
|
||||
for (UserTaskProgress progress : existingProgressList) {
|
||||
String key = progress.getTaskType() == 1
|
||||
? progress.getTaskId() + "_" + progress.getDayString()
|
||||
: String.valueOf(progress.getTaskId());
|
||||
existingProgressMap.put(key, progress);
|
||||
}
|
||||
|
||||
// 4. 检查并创建缺失的任务进度
|
||||
List<UserTaskProgress> newProgressList = new ArrayList<>();
|
||||
for (TaskConfig taskConfig : taskConfigs) {
|
||||
String key;
|
||||
UserTaskProgress progress;
|
||||
|
||||
if (taskConfig.getTaskType() == 1) {
|
||||
// 每日任务:需要判断当天是否有记录
|
||||
key = taskConfig.getTaskId() + "_" + date;
|
||||
progress = existingProgressMap.get(key);
|
||||
|
||||
if (progress == null) {
|
||||
// 创建今日的每日任务进度
|
||||
progress = new UserTaskProgress();
|
||||
progress.setId(IdWorkerUtils.getId());
|
||||
progress.setUserId(userId);
|
||||
progress.setTaskId(taskConfig.getTaskId());
|
||||
progress.setIsRewardCollected(0);
|
||||
progress.setRewardId(taskConfig.getRewardId());
|
||||
progress.setTaskType(taskConfig.getTaskType());
|
||||
progress.setTaskStatus(0);
|
||||
progress.setDayString(date);
|
||||
progress.setCreateTimestamp(TimestampUtils.now());
|
||||
|
||||
newProgressList.add(progress);
|
||||
existingProgressMap.put(key, progress);
|
||||
}
|
||||
} else if (taskConfig.getTaskType() == 2) {
|
||||
// 成长任务:只需判断是否有记录
|
||||
key = String.valueOf(taskConfig.getTaskId());
|
||||
progress = existingProgressMap.get(key);
|
||||
|
||||
if (progress == null) {
|
||||
// 创建成长任务进度
|
||||
progress = new UserTaskProgress();
|
||||
progress.setId(IdWorkerUtils.getId());
|
||||
progress.setUserId(userId);
|
||||
progress.setTaskId(taskConfig.getTaskId());
|
||||
progress.setIsRewardCollected(0);
|
||||
progress.setRewardId(taskConfig.getRewardId());
|
||||
progress.setTaskType(taskConfig.getTaskType());
|
||||
progress.setTaskStatus(0);
|
||||
progress.setCreateTimestamp(TimestampUtils.now());
|
||||
|
||||
newProgressList.add(progress);
|
||||
existingProgressMap.put(key, progress);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 5. 批量插入新创建的任务进度
|
||||
if (!newProgressList.isEmpty()) {
|
||||
userTaskProgressDao.insertBatchSomeColumn(newProgressList);
|
||||
}
|
||||
|
||||
// 6. 查询奖励详情
|
||||
Set<Long> rewardIds = taskConfigs.stream()
|
||||
.map(TaskConfig::getRewardId)
|
||||
.collect(Collectors.toSet());
|
||||
Map<Long, ActivityPropsGroup> activityMap = propsActivityCnfClient
|
||||
.mapActivityPropsGroup(cmd.getReqSysOrigin().getOrigin(), rewardIds)
|
||||
.getBody();
|
||||
|
||||
// 7. 组装返回结果
|
||||
for (TaskConfig taskConfig : taskConfigs) {
|
||||
String key = taskConfig.getTaskType() == 1
|
||||
? taskConfig.getTaskId() + "_" + date
|
||||
: String.valueOf(taskConfig.getTaskId());
|
||||
|
||||
UserTaskProgress progress = existingProgressMap.get(key);
|
||||
if (progress == null) {
|
||||
continue; // 理论上不会发生
|
||||
}
|
||||
|
||||
ActivityPropsGroup activity = activityMap.get(progress.getRewardId());
|
||||
if (activity != null && !activity.getActivityRewardProps().isEmpty()) {
|
||||
TaskDTO build = TaskDTO.builder()
|
||||
.taskType(progress.getTaskType())
|
||||
.taskId(progress.getTaskId())
|
||||
.taskDesc(taskConfig.getTaskDesc())
|
||||
.jumpPage(taskConfig.getJumpPage())
|
||||
.taskStatus(progress.getTaskStatus())
|
||||
.isRewardCollected(progress.getIsRewardCollected())
|
||||
.taskIcon(taskConfig.getTaskIcon())
|
||||
.conditionType(getConditionType(activity.getActivityRewardProps()))
|
||||
.conditionValue(getConditionValue(activity.getActivityRewardProps()))
|
||||
.targetValue(taskConfig.getTargetValue())
|
||||
.quantity(activity.getActivityRewardProps().get(0).getQuantity())
|
||||
.build();
|
||||
|
||||
// 特殊处理任务ID为1的情况
|
||||
if (progress.getTaskId() == 1) {
|
||||
String redisKey = "mic:heartbeat:" + userId;
|
||||
String inc = redisService.getString(redisKey);
|
||||
build.setCompletedValue(inc == null ? "0" : inc);
|
||||
} else {
|
||||
build.setCompletedValue(progress.getTaskStatus().toString());
|
||||
}
|
||||
|
||||
resultList.add(build);
|
||||
}
|
||||
}
|
||||
|
||||
return resultList;
|
||||
}
|
||||
|
||||
private String getConditionType(List<ActivityRewardProps> activityRewardProps) {
|
||||
@ -361,22 +437,10 @@ public class TaskServiceImpl implements TaskService {
|
||||
userTaskProgressList.add(userTaskProgress);
|
||||
}
|
||||
userTaskProgressDao.insertBatchSomeColumn(userTaskProgressList);
|
||||
} else {
|
||||
return userTaskList;
|
||||
}
|
||||
return userTaskProgressList;
|
||||
/* for (TaskConfig taskConfig : dailyTasks) {
|
||||
UserTaskProgress userTaskProgress = userTaskProgressDao.selectByUserIdAndTaskId(userId, taskConfig.getTaskId());
|
||||
if (userTaskProgress == null) {
|
||||
userTaskProgress = new UserTaskProgress();
|
||||
userTaskProgress.setUserId(userId);
|
||||
userTaskProgress.setTaskId(taskConfig.getTaskId());
|
||||
userTaskProgress.setRewardId(taskConfig.getRewardId());
|
||||
userTaskProgress.setTaskType(taskConfig.getTaskType());
|
||||
userTaskProgress.setTaskStatus(0);
|
||||
userTaskProgress.setIsRewardCollected(0);
|
||||
userTaskProgressDao.insert(userTaskProgress);
|
||||
}
|
||||
}*/
|
||||
|
||||
}
|
||||
|
||||
private List<UserTaskProgress> createTasksIfNotExists(Long userId, List<TaskConfig> taskConfigs) {
|
||||
@ -400,38 +464,6 @@ public class TaskServiceImpl implements TaskService {
|
||||
userTaskProgress.setTaskType(taskConfig.getTaskType());
|
||||
userTaskProgress.setTaskStatus(0);
|
||||
userTaskProgress.setCreateTimestamp(TimestampUtils.now());
|
||||
|
||||
UserConsumptionLevel userLevel = userProfileGateway.getUserConsumptionLevel(
|
||||
SysOriginPlatformEnum.valueOf("LIKEI"),
|
||||
userId);
|
||||
//taskid =6 加入家族 7 组成cp 13 财富等级10 14 魅力等级10 初始化时就要判断是否完成
|
||||
switch (taskConfig.getTaskId().intValue()) {
|
||||
case 6:
|
||||
FamilyMemberInfo familyMemberInfo = familyMemberInfoService.getFamilyMemberByUserId(userId);
|
||||
if (!Objects.isNull(familyMemberInfo)) {
|
||||
userTaskProgress.setTaskStatus(1);
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
CpRelationship cp = cpRelationshipService.getByUserId(userId);
|
||||
if (!Objects.isNull(cp)) {
|
||||
userTaskProgress.setTaskStatus(1);
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
if (userLevel.getWealthLevel() >= 10) {
|
||||
userTaskProgress.setTaskStatus(1);
|
||||
}
|
||||
//财富等级逻辑
|
||||
break;
|
||||
case 14:
|
||||
//魅力等级逻辑
|
||||
if (userLevel.getCharmLevel() >= 10) {
|
||||
userTaskProgress.setTaskStatus(1);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
}
|
||||
userTaskProgressList.add(userTaskProgress);
|
||||
});
|
||||
|
||||
|
||||
@ -34,6 +34,6 @@ public class LotteryRankQryCmd extends AppExtCommand {
|
||||
/**
|
||||
* 查询数量(默认100).
|
||||
*/
|
||||
private Integer limit = 100;
|
||||
private Integer limit = 500;
|
||||
|
||||
}
|
||||
|
||||
@ -24,6 +24,11 @@ public class TaskDTO {
|
||||
*/
|
||||
private String conditionValue;
|
||||
|
||||
/**
|
||||
* 任务数量
|
||||
*/
|
||||
private Integer targetValue;
|
||||
|
||||
/**
|
||||
* 完成值
|
||||
*/
|
||||
|
||||
@ -45,6 +45,11 @@ public class TaskConfig {
|
||||
* 奖励数量(预留)
|
||||
*/
|
||||
private Integer rewardAmount;
|
||||
|
||||
/**
|
||||
* 目标数量
|
||||
*/
|
||||
private Integer targetValue;
|
||||
|
||||
/**
|
||||
* 条件类型(如:MIC_DURATION)(预留)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user