|
@@ -17,10 +17,7 @@ import com.ylx.common.utils.SecurityUtils;
|
|
|
import com.ylx.point.domain.*;
|
|
import com.ylx.point.domain.*;
|
|
|
import com.ylx.point.domain.dto.*;
|
|
import com.ylx.point.domain.dto.*;
|
|
|
import com.ylx.point.domain.vo.*;
|
|
import com.ylx.point.domain.vo.*;
|
|
|
-import com.ylx.point.enums.ActivityCompletionTaskTypeEnum;
|
|
|
|
|
-import com.ylx.point.enums.TaskNameEnum;
|
|
|
|
|
-import com.ylx.point.enums.PointActivityStatusEnum;
|
|
|
|
|
-import com.ylx.point.enums.PointActivityTypeEnum;
|
|
|
|
|
|
|
+import com.ylx.point.enums.*;
|
|
|
import com.ylx.point.mapper.PointActivityMapper;
|
|
import com.ylx.point.mapper.PointActivityMapper;
|
|
|
import com.ylx.point.service.*;
|
|
import com.ylx.point.service.*;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -267,7 +264,23 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
|
|
|
WxLoginUser wxLoginUser = getCurrentWxLoginUser();
|
|
WxLoginUser wxLoginUser = getCurrentWxLoginUser();
|
|
|
String openId = wxLoginUser.getCOpenid();
|
|
String openId = wxLoginUser.getCOpenid();
|
|
|
dto.setOpenId(openId);
|
|
dto.setOpenId(openId);
|
|
|
- return pointActivityMapper.selectTaskWithProgress(page, dto);
|
|
|
|
|
|
|
+ Page<UserPointActivityVo> userPointActivityVoPage = pointActivityMapper.selectTaskWithProgress(page, dto);
|
|
|
|
|
+ if (ObjectUtil.isNotNull(userPointActivityVoPage) && CollectionUtil.isNotEmpty(userPointActivityVoPage.getRecords())) {
|
|
|
|
|
+ userPointActivityVoPage.getRecords().forEach(userPointActivityVo -> {
|
|
|
|
|
+ String frequencyLimitValue = userPointActivityVo.getTriggerValue();
|
|
|
|
|
+ // 2. 非空才走枚举匹配,为空直接设0
|
|
|
|
|
+ String triggerValue = "0";
|
|
|
|
|
+ if (StrUtil.isNotBlank(frequencyLimitValue)) {
|
|
|
|
|
+ // 3. 链式调用 + 空安全,避免NPE
|
|
|
|
|
+ triggerValue = Optional.ofNullable(TaskLimitTimesEnum.getByValue(frequencyLimitValue))
|
|
|
|
|
+ .map(TaskLimitTimesEnum::getTime)
|
|
|
|
|
+ .map(Object::toString)
|
|
|
|
|
+ .orElse("0");
|
|
|
|
|
+ }
|
|
|
|
|
+ userPointActivityVo.setTriggerValue(triggerValue);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ return userPointActivityVoPage;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -607,7 +620,18 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
|
|
|
vo.setCompletedCount(completion != null ? String.valueOf(completion.getCompletedCount()) : "0");
|
|
vo.setCompletedCount(completion != null ? String.valueOf(completion.getCompletedCount()) : "0");
|
|
|
|
|
|
|
|
// 触发条件:直接从任务配置中获取,或者根据 taskCode 查字典
|
|
// 触发条件:直接从任务配置中获取,或者根据 taskCode 查字典
|
|
|
- vo.setTriggerValue(task.getFrequencyLimitValue());
|
|
|
|
|
|
|
+ // 1. 获取值 + 统一判空
|
|
|
|
|
+ String frequencyLimitValue = task.getFrequencyLimitValue();
|
|
|
|
|
+ // 2. 非空才走枚举匹配,为空直接设0
|
|
|
|
|
+ String triggerValue = "0";
|
|
|
|
|
+ if (StrUtil.isNotBlank(frequencyLimitValue)) {
|
|
|
|
|
+ // 3. 链式调用 + 空安全,避免NPE
|
|
|
|
|
+ triggerValue = Optional.ofNullable(TaskLimitTimesEnum.getByValue(frequencyLimitValue))
|
|
|
|
|
+ .map(TaskLimitTimesEnum::getTime)
|
|
|
|
|
+ .map(Object::toString)
|
|
|
|
|
+ .orElse("0");
|
|
|
|
|
+ }
|
|
|
|
|
+ vo.setTriggerValue(triggerValue);
|
|
|
|
|
|
|
|
return vo;
|
|
return vo;
|
|
|
}
|
|
}
|
|
@@ -629,7 +653,7 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
|
|
|
(ObjectUtil.isNull(timeConfig.getStartTime()) || ObjectUtil.isNull(timeConfig.getEndTime())))) {
|
|
(ObjectUtil.isNull(timeConfig.getStartTime()) || ObjectUtil.isNull(timeConfig.getEndTime())))) {
|
|
|
throw new ServiceException("活动时间配置不能为空");
|
|
throw new ServiceException("活动时间配置不能为空");
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 检查是否为签到活动
|
|
// 检查是否为签到活动
|
|
|
if (PointActivityTypeEnum.SIGN_TASK.getCode().equals(dto.getActivityType())) {
|
|
if (PointActivityTypeEnum.SIGN_TASK.getCode().equals(dto.getActivityType())) {
|
|
|
// 检查该城市是否已存在进行中的签到活动
|
|
// 检查该城市是否已存在进行中的签到活动
|
|
@@ -639,14 +663,15 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 检查指定城市是否已存在进行中的签到活动
|
|
* 检查指定城市是否已存在进行中的签到活动
|
|
|
|
|
+ *
|
|
|
* @param cityCode 城市代码
|
|
* @param cityCode 城市代码
|
|
|
*/
|
|
*/
|
|
|
private void checkExistingSignInActivity(String cityCode) {
|
|
private void checkExistingSignInActivity(String cityCode) {
|
|
|
// 构建查询条件:活动类型为签到任务,状态为进行中,城市代码匹配
|
|
// 构建查询条件:活动类型为签到任务,状态为进行中,城市代码匹配
|
|
|
LambdaQueryWrapper<PointActivity> queryWrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<PointActivity> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper.eq(PointActivity::getActivityType, PointActivityTypeEnum.SIGN_TASK.getCode())
|
|
queryWrapper.eq(PointActivity::getActivityType, PointActivityTypeEnum.SIGN_TASK.getCode())
|
|
|
- .eq(PointActivity::getStatus, PointActivityStatusEnum.IN_PROGRESS.getCode())
|
|
|
|
|
- .eq(PointActivity::getCityCode, cityCode);
|
|
|
|
|
|
|
+ .eq(PointActivity::getStatus, PointActivityStatusEnum.IN_PROGRESS.getCode())
|
|
|
|
|
+ .eq(PointActivity::getCityCode, cityCode);
|
|
|
|
|
|
|
|
// 查询是否存在符合条件的活动
|
|
// 查询是否存在符合条件的活动
|
|
|
long count = this.count(queryWrapper);
|
|
long count = this.count(queryWrapper);
|