|
@@ -138,7 +138,7 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void executeTask(Long taskId) {
|
|
public void executeTask(Long taskId) {
|
|
|
|
|
|
|
|
- String activityName = null;
|
|
|
|
|
|
|
+ String taskName;
|
|
|
|
|
|
|
|
// 1. 获取当前登录用户
|
|
// 1. 获取当前登录用户
|
|
|
WxLoginUser loginUser = getCurrentWxLoginUser();
|
|
WxLoginUser loginUser = getCurrentWxLoginUser();
|
|
@@ -160,6 +160,7 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
Integer activityType = activity.getActivityType();
|
|
Integer activityType = activity.getActivityType();
|
|
|
String isPermanent = activity.getIsPermanent();
|
|
String isPermanent = activity.getIsPermanent();
|
|
|
Date activityStartTime = activity.getStartTime();
|
|
Date activityStartTime = activity.getStartTime();
|
|
|
|
|
+ String activityName = activity.getName();
|
|
|
|
|
|
|
|
PointActivityTypeEnum pointActivityType = PointActivityTypeEnum.valueOf(activityType);
|
|
PointActivityTypeEnum pointActivityType = PointActivityTypeEnum.valueOf(activityType);
|
|
|
PointActivityTaskTypeEnum taskType = PointActivityTaskTypeEnum.getByInfo(task.getTaskName());
|
|
PointActivityTaskTypeEnum taskType = PointActivityTaskTypeEnum.getByInfo(task.getTaskName());
|
|
@@ -173,7 +174,7 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
|
|
|
|
|
// 场景 A: 每日任务/签到 -> 只需要检查今天是否做过
|
|
// 场景 A: 每日任务/签到 -> 只需要检查今天是否做过
|
|
|
if (pointActivityType == PointActivityTypeEnum.SIGN_TASK) {
|
|
if (pointActivityType == PointActivityTypeEnum.SIGN_TASK) {
|
|
|
- activityName = ActivityNameEnum.USER_SIGN_IN.getInfo();
|
|
|
|
|
|
|
+ taskName = ActivityNameEnum.USER_SIGN_IN.getInfo();
|
|
|
boolean completed = this.isTodayCompleted(openId, activityId, taskId, taskType.getCode());
|
|
boolean completed = this.isTodayCompleted(openId, activityId, taskId, taskType.getCode());
|
|
|
if (completed) {
|
|
if (completed) {
|
|
|
throw new ServiceException("今日任务已完成,请勿重复领取");
|
|
throw new ServiceException("今日任务已完成,请勿重复领取");
|
|
@@ -190,19 +191,19 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
// 2. 仅根据任务类型获取名称 (移除所有业务计数逻辑)
|
|
// 2. 仅根据任务类型获取名称 (移除所有业务计数逻辑)
|
|
|
switch (taskType) {
|
|
switch (taskType) {
|
|
|
case COMPLETE_ORDER:
|
|
case COMPLETE_ORDER:
|
|
|
- activityName = ActivityNameEnum.COMPLETE_ORDER.getInfo();
|
|
|
|
|
|
|
+ taskName = ActivityNameEnum.COMPLETE_ORDER.getInfo();
|
|
|
break;
|
|
break;
|
|
|
case RECHARGE_TASK:
|
|
case RECHARGE_TASK:
|
|
|
- activityName = ActivityNameEnum.RECHARGE_TASK.getInfo();
|
|
|
|
|
|
|
+ taskName = ActivityNameEnum.RECHARGE_TASK.getInfo();
|
|
|
break;
|
|
break;
|
|
|
case SHARE_SERVICE:
|
|
case SHARE_SERVICE:
|
|
|
- activityName = ActivityNameEnum.SHARE_ACCOUNT.getInfo();
|
|
|
|
|
|
|
+ taskName = ActivityNameEnum.SHARE_ACCOUNT.getInfo();
|
|
|
break;
|
|
break;
|
|
|
case BROWLE_NEWS:
|
|
case BROWLE_NEWS:
|
|
|
- activityName = ActivityNameEnum.BROWSE_DYNAMIC.getInfo();
|
|
|
|
|
|
|
+ taskName = ActivityNameEnum.BROWSE_DYNAMIC.getInfo();
|
|
|
break;
|
|
break;
|
|
|
case BROWLE_MERCHANT:
|
|
case BROWLE_MERCHANT:
|
|
|
- activityName = ActivityNameEnum.BROWSE_MERCHANT.getInfo();
|
|
|
|
|
|
|
+ taskName = ActivityNameEnum.BROWSE_MERCHANT.getInfo();
|
|
|
break;
|
|
break;
|
|
|
default:
|
|
default:
|
|
|
throw new ServiceException("不支持的任务类型: " + taskType);
|
|
throw new ServiceException("不支持的任务类型: " + taskType);
|
|
@@ -221,23 +222,23 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
case COMPLETE_ORDER: // 完成订单
|
|
case COMPLETE_ORDER: // 完成订单
|
|
|
int orderCount = orderService.countCompletedOrders(openId, queryTime);
|
|
int orderCount = orderService.countCompletedOrders(openId, queryTime);
|
|
|
isVerified = orderCount >= targetCount;
|
|
isVerified = orderCount >= targetCount;
|
|
|
- activityName = ActivityNameEnum.COMPLETE_ORDER.getInfo();
|
|
|
|
|
|
|
+ taskName = ActivityNameEnum.COMPLETE_ORDER.getInfo();
|
|
|
break;
|
|
break;
|
|
|
case RECHARGE_TASK: // 充值任务
|
|
case RECHARGE_TASK: // 充值任务
|
|
|
int rechargeCount = rechargeService.countSuccessRecharges(openId, queryTime);
|
|
int rechargeCount = rechargeService.countSuccessRecharges(openId, queryTime);
|
|
|
isVerified = rechargeCount >= targetCount;
|
|
isVerified = rechargeCount >= targetCount;
|
|
|
- activityName = ActivityNameEnum.RECHARGE_TASK.getInfo();
|
|
|
|
|
|
|
+ taskName = ActivityNameEnum.RECHARGE_TASK.getInfo();
|
|
|
break;
|
|
break;
|
|
|
case SHARE_SERVICE: // 分享服务号
|
|
case SHARE_SERVICE: // 分享服务号
|
|
|
- activityName = ActivityNameEnum.SHARE_ACCOUNT.getInfo();
|
|
|
|
|
|
|
+ taskName = ActivityNameEnum.SHARE_ACCOUNT.getInfo();
|
|
|
isVerified = true;
|
|
isVerified = true;
|
|
|
break;
|
|
break;
|
|
|
case BROWLE_NEWS: // 浏览动态
|
|
case BROWLE_NEWS: // 浏览动态
|
|
|
- activityName = ActivityNameEnum.BROWSE_DYNAMIC.getInfo();
|
|
|
|
|
|
|
+ taskName = ActivityNameEnum.BROWSE_DYNAMIC.getInfo();
|
|
|
isVerified = true;
|
|
isVerified = true;
|
|
|
break;
|
|
break;
|
|
|
case BROWLE_MERCHANT:// 浏览商户
|
|
case BROWLE_MERCHANT:// 浏览商户
|
|
|
- activityName = ActivityNameEnum.BROWSE_MERCHANT.getInfo();
|
|
|
|
|
|
|
+ taskName = ActivityNameEnum.BROWSE_MERCHANT.getInfo();
|
|
|
isVerified = true;
|
|
isVerified = true;
|
|
|
break;
|
|
break;
|
|
|
default:
|
|
default:
|
|
@@ -274,7 +275,7 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
// 4.3 发放积分
|
|
// 4.3 发放积分
|
|
|
// 注意:这里需要确保只发一次。如果 completeTask 只是增加次数,这里需要判断是否刚好达标才发分
|
|
// 注意:这里需要确保只发一次。如果 completeTask 只是增加次数,这里需要判断是否刚好达标才发分
|
|
|
// 为了简单,假设这里调用 addPoints 是安全的(或者你在 addPoints 内部做幂等)
|
|
// 为了简单,假设这里调用 addPoints 是安全的(或者你在 addPoints 内部做幂等)
|
|
|
- pointAccountService.addPoints(openId, task.getRewardPoints().intValue(), activityName, null, activityId, taskId, taskType.getCode());
|
|
|
|
|
|
|
+ pointAccountService.addPoints(openId, task.getRewardPoints().intValue(), activityName, null, activityId, taskId, taskType.getCode(), taskName);
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -308,20 +309,21 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 通用任务完成方法(内部使用)
|
|
* 通用任务完成方法(内部使用)
|
|
|
- * @param openId 用户openId
|
|
|
|
|
- * @param taskTypeEnum 任务类型枚举
|
|
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param openId 用户openId
|
|
|
|
|
+ * @param taskTypeEnum 任务类型枚举
|
|
|
* @param activityNameEnum 活动名称枚举
|
|
* @param activityNameEnum 活动名称枚举
|
|
|
- * @param countSupplier 查询已完成次数的函数
|
|
|
|
|
|
|
+ * @param countSupplier 查询已完成次数的函数
|
|
|
*/
|
|
*/
|
|
|
private void completeTaskByPriorityInternal(String openId,
|
|
private void completeTaskByPriorityInternal(String openId,
|
|
|
- PointActivityTaskTypeEnum taskTypeEnum,
|
|
|
|
|
- ActivityNameEnum activityNameEnum,
|
|
|
|
|
- java.util.function.Function<Date, Integer> countSupplier) {
|
|
|
|
|
|
|
+ PointActivityTaskTypeEnum taskTypeEnum,
|
|
|
|
|
+ ActivityNameEnum activityNameEnum,
|
|
|
|
|
+ java.util.function.Function<Date, Integer> countSupplier) {
|
|
|
// 活动类型优先级:新手活动、每日活动、每月活动
|
|
// 活动类型优先级:新手活动、每日活动、每月活动
|
|
|
List<Integer> priorityTypes = Arrays.asList(
|
|
List<Integer> priorityTypes = Arrays.asList(
|
|
|
- PointActivityTypeEnum.NEW_USER_ACTIVITY.getCode(),
|
|
|
|
|
- PointActivityTypeEnum.DAILY_ACTIVITY.getCode(),
|
|
|
|
|
- PointActivityTypeEnum.MONTHLY_ACTIVITY.getCode()
|
|
|
|
|
|
|
+ PointActivityTypeEnum.NEW_USER_ACTIVITY.getCode(),
|
|
|
|
|
+ PointActivityTypeEnum.DAILY_ACTIVITY.getCode(),
|
|
|
|
|
+ PointActivityTypeEnum.MONTHLY_ACTIVITY.getCode()
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
// 按优先级遍历活动类型
|
|
// 按优先级遍历活动类型
|
|
@@ -329,21 +331,21 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
try {
|
|
try {
|
|
|
// 查询该活动类型下所有进行中的任务
|
|
// 查询该活动类型下所有进行中的任务
|
|
|
List<PointActivityTask> taskList = pointActivityTaskService.list(
|
|
List<PointActivityTask> taskList = pointActivityTaskService.list(
|
|
|
- Wrappers.lambdaQuery(PointActivityTask.class)
|
|
|
|
|
- .eq(PointActivityTask::getTaskName, activityNameEnum.getInfo())
|
|
|
|
|
- .eq(PointActivityTask::getStatus, 0)
|
|
|
|
|
- .eq(PointActivityTask::getIsDeleted, 0)
|
|
|
|
|
|
|
+ Wrappers.lambdaQuery(PointActivityTask.class)
|
|
|
|
|
+ .eq(PointActivityTask::getTaskName, activityNameEnum.getInfo())
|
|
|
|
|
+ .eq(PointActivityTask::getStatus, 0)
|
|
|
|
|
+ .eq(PointActivityTask::getIsDeleted, 0)
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
// 过滤出属于该活动类型的任务
|
|
// 过滤出属于该活动类型的任务
|
|
|
taskList = taskList.stream()
|
|
taskList = taskList.stream()
|
|
|
- .filter(task -> {
|
|
|
|
|
- PointActivity activity = pointActivityService.getById(task.getActivityId());
|
|
|
|
|
- return activity != null
|
|
|
|
|
- && activity.getActivityType().equals(activityType)
|
|
|
|
|
- && activity.getStatus().equals(PointActivityStatusEnum.IN_PROGRESS.getCode());
|
|
|
|
|
- })
|
|
|
|
|
- .collect(Collectors.toList());
|
|
|
|
|
|
|
+ .filter(task -> {
|
|
|
|
|
+ PointActivity activity = pointActivityService.getById(task.getActivityId());
|
|
|
|
|
+ return activity != null
|
|
|
|
|
+ && activity.getActivityType().equals(activityType)
|
|
|
|
|
+ && activity.getStatus().equals(PointActivityStatusEnum.IN_PROGRESS.getCode());
|
|
|
|
|
+ })
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
|
|
if (CollectionUtil.isEmpty(taskList)) {
|
|
if (CollectionUtil.isEmpty(taskList)) {
|
|
|
continue;
|
|
continue;
|
|
@@ -371,11 +373,11 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
if (completedCount >= targetCount) {
|
|
if (completedCount >= targetCount) {
|
|
|
// 查询是否已经完成过该任务
|
|
// 查询是否已经完成过该任务
|
|
|
PointUserActivityTaskCompletion existingRecord = this.getOne(
|
|
PointUserActivityTaskCompletion existingRecord = this.getOne(
|
|
|
- new LambdaQueryWrapper<PointUserActivityTaskCompletion>()
|
|
|
|
|
- .eq(PointUserActivityTaskCompletion::getOpenId, openId)
|
|
|
|
|
- .eq(PointUserActivityTaskCompletion::getTaskId, task.getId())
|
|
|
|
|
- .eq(PointUserActivityTaskCompletion::getActivityId, activity.getId())
|
|
|
|
|
- .eq(PointUserActivityTaskCompletion::getTaskType, taskTypeEnum.getCode())
|
|
|
|
|
|
|
+ new LambdaQueryWrapper<PointUserActivityTaskCompletion>()
|
|
|
|
|
+ .eq(PointUserActivityTaskCompletion::getOpenId, openId)
|
|
|
|
|
+ .eq(PointUserActivityTaskCompletion::getTaskId, task.getId())
|
|
|
|
|
+ .eq(PointUserActivityTaskCompletion::getActivityId, activity.getId())
|
|
|
|
|
+ .eq(PointUserActivityTaskCompletion::getTaskType, taskTypeEnum.getCode())
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
// 检查是否已经达到目标次数(防刷)
|
|
// 检查是否已经达到目标次数(防刷)
|
|
@@ -389,13 +391,14 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
|
|
|
|
|
// 发放积分
|
|
// 发放积分
|
|
|
pointAccountService.addPoints(
|
|
pointAccountService.addPoints(
|
|
|
- openId,
|
|
|
|
|
- task.getRewardPoints().intValue(),
|
|
|
|
|
- activityNameEnum.getInfo(),
|
|
|
|
|
- null,
|
|
|
|
|
- activity.getId(),
|
|
|
|
|
- task.getId(),
|
|
|
|
|
- taskTypeEnum.getCode()
|
|
|
|
|
|
|
+ openId,
|
|
|
|
|
+ task.getRewardPoints().intValue(),
|
|
|
|
|
+ activity.getName(),
|
|
|
|
|
+ null,
|
|
|
|
|
+ activity.getId(),
|
|
|
|
|
+ task.getId(),
|
|
|
|
|
+ taskTypeEnum.getCode(),
|
|
|
|
|
+ activityNameEnum.getInfo()
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
// 成功完成一个任务后,跳出循环(只完成优先级最高的一个任务)
|
|
// 成功完成一个任务后,跳出循环(只完成优先级最高的一个任务)
|
|
@@ -404,7 +407,7 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
} catch (ServiceException e) {
|
|
} catch (ServiceException e) {
|
|
|
// 如果任务已完成或不符合条件,继续尝试下一个任务
|
|
// 如果任务已完成或不符合条件,继续尝试下一个任务
|
|
|
if (!e.getMessage().contains("今日任务已完成")
|
|
if (!e.getMessage().contains("今日任务已完成")
|
|
|
- && !e.getMessage().contains("任务奖励已领取")) {
|
|
|
|
|
|
|
+ && !e.getMessage().contains("任务奖励已领取")) {
|
|
|
// 其他异常则抛出
|
|
// 其他异常则抛出
|
|
|
throw e;
|
|
throw e;
|
|
|
}
|
|
}
|
|
@@ -422,9 +425,9 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
public void completeOrderTaskByPriority(String openId) {
|
|
public void completeOrderTaskByPriority(String openId) {
|
|
|
// 活动类型优先级:新手活动、每日活动、每月活动
|
|
// 活动类型优先级:新手活动、每日活动、每月活动
|
|
|
List<Integer> priorityTypes = Arrays.asList(
|
|
List<Integer> priorityTypes = Arrays.asList(
|
|
|
- PointActivityTypeEnum.NEW_USER_ACTIVITY.getCode(),
|
|
|
|
|
- PointActivityTypeEnum.DAILY_ACTIVITY.getCode(),
|
|
|
|
|
- PointActivityTypeEnum.MONTHLY_ACTIVITY.getCode()
|
|
|
|
|
|
|
+ PointActivityTypeEnum.NEW_USER_ACTIVITY.getCode(),
|
|
|
|
|
+ PointActivityTypeEnum.DAILY_ACTIVITY.getCode(),
|
|
|
|
|
+ PointActivityTypeEnum.MONTHLY_ACTIVITY.getCode()
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
// 按优先级遍历活动类型
|
|
// 按优先级遍历活动类型
|
|
@@ -432,21 +435,21 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
try {
|
|
try {
|
|
|
// 查询该活动类型下所有进行中的"完成订单"任务
|
|
// 查询该活动类型下所有进行中的"完成订单"任务
|
|
|
List<PointActivityTask> taskList = pointActivityTaskService.list(
|
|
List<PointActivityTask> taskList = pointActivityTaskService.list(
|
|
|
- Wrappers.lambdaQuery(PointActivityTask.class)
|
|
|
|
|
- .eq(PointActivityTask::getTaskName, ActivityNameEnum.COMPLETE_ORDER.getInfo())
|
|
|
|
|
- .eq(PointActivityTask::getStatus, 0)
|
|
|
|
|
- .eq(PointActivityTask::getIsDeleted, 0)
|
|
|
|
|
|
|
+ Wrappers.lambdaQuery(PointActivityTask.class)
|
|
|
|
|
+ .eq(PointActivityTask::getTaskName, ActivityNameEnum.COMPLETE_ORDER.getInfo())
|
|
|
|
|
+ .eq(PointActivityTask::getStatus, 0)
|
|
|
|
|
+ .eq(PointActivityTask::getIsDeleted, 0)
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
// 过滤出属于该活动类型的任务
|
|
// 过滤出属于该活动类型的任务
|
|
|
taskList = taskList.stream()
|
|
taskList = taskList.stream()
|
|
|
- .filter(task -> {
|
|
|
|
|
- PointActivity activity = pointActivityService.getById(task.getActivityId());
|
|
|
|
|
- return activity != null
|
|
|
|
|
- && activity.getActivityType().equals(activityType)
|
|
|
|
|
- && activity.getStatus().equals(PointActivityStatusEnum.IN_PROGRESS.getCode());
|
|
|
|
|
- })
|
|
|
|
|
- .collect(Collectors.toList());
|
|
|
|
|
|
|
+ .filter(task -> {
|
|
|
|
|
+ PointActivity activity = pointActivityService.getById(task.getActivityId());
|
|
|
|
|
+ return activity != null
|
|
|
|
|
+ && activity.getActivityType().equals(activityType)
|
|
|
|
|
+ && activity.getStatus().equals(PointActivityStatusEnum.IN_PROGRESS.getCode());
|
|
|
|
|
+ })
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
|
|
if (CollectionUtil.isEmpty(taskList)) {
|
|
if (CollectionUtil.isEmpty(taskList)) {
|
|
|
continue;
|
|
continue;
|
|
@@ -474,11 +477,11 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
if (orderCount >= targetCount) {
|
|
if (orderCount >= targetCount) {
|
|
|
// 查询是否已经完成过该任务
|
|
// 查询是否已经完成过该任务
|
|
|
PointUserActivityTaskCompletion existingRecord = this.getOne(
|
|
PointUserActivityTaskCompletion existingRecord = this.getOne(
|
|
|
- new LambdaQueryWrapper<PointUserActivityTaskCompletion>()
|
|
|
|
|
- .eq(PointUserActivityTaskCompletion::getOpenId, openId)
|
|
|
|
|
- .eq(PointUserActivityTaskCompletion::getTaskId, task.getId())
|
|
|
|
|
- .eq(PointUserActivityTaskCompletion::getActivityId, activity.getId())
|
|
|
|
|
- .eq(PointUserActivityTaskCompletion::getTaskType, PointActivityTaskTypeEnum.COMPLETE_ORDER.getCode())
|
|
|
|
|
|
|
+ new LambdaQueryWrapper<PointUserActivityTaskCompletion>()
|
|
|
|
|
+ .eq(PointUserActivityTaskCompletion::getOpenId, openId)
|
|
|
|
|
+ .eq(PointUserActivityTaskCompletion::getTaskId, task.getId())
|
|
|
|
|
+ .eq(PointUserActivityTaskCompletion::getActivityId, activity.getId())
|
|
|
|
|
+ .eq(PointUserActivityTaskCompletion::getTaskType, PointActivityTaskTypeEnum.COMPLETE_ORDER.getCode())
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
// 检查是否已经达到目标次数(防刷)
|
|
// 检查是否已经达到目标次数(防刷)
|
|
@@ -492,13 +495,14 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
|
|
|
|
|
// 发放积分
|
|
// 发放积分
|
|
|
pointAccountService.addPoints(
|
|
pointAccountService.addPoints(
|
|
|
- openId,
|
|
|
|
|
- task.getRewardPoints().intValue(),
|
|
|
|
|
- ActivityNameEnum.COMPLETE_ORDER.getInfo(),
|
|
|
|
|
- null,
|
|
|
|
|
- activity.getId(),
|
|
|
|
|
- task.getId(),
|
|
|
|
|
- PointActivityTaskTypeEnum.COMPLETE_ORDER.getCode()
|
|
|
|
|
|
|
+ openId,
|
|
|
|
|
+ task.getRewardPoints().intValue(),
|
|
|
|
|
+ activity.getName(),
|
|
|
|
|
+ null,
|
|
|
|
|
+ activity.getId(),
|
|
|
|
|
+ task.getId(),
|
|
|
|
|
+ PointActivityTaskTypeEnum.COMPLETE_ORDER.getCode(),
|
|
|
|
|
+ ActivityNameEnum.COMPLETE_ORDER.getInfo()
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
// 成功完成一个任务后,跳出循环(只完成优先级最高的一个任务)
|
|
// 成功完成一个任务后,跳出循环(只完成优先级最高的一个任务)
|
|
@@ -507,7 +511,7 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
} catch (ServiceException e) {
|
|
} catch (ServiceException e) {
|
|
|
// 如果任务已完成或不符合条件,继续尝试下一个任务
|
|
// 如果任务已完成或不符合条件,继续尝试下一个任务
|
|
|
if (!e.getMessage().contains("今日任务已完成")
|
|
if (!e.getMessage().contains("今日任务已完成")
|
|
|
- && !e.getMessage().contains("任务奖励已领取")) {
|
|
|
|
|
|
|
+ && !e.getMessage().contains("任务奖励已领取")) {
|
|
|
// 其他异常则抛出
|
|
// 其他异常则抛出
|
|
|
throw e;
|
|
throw e;
|
|
|
}
|
|
}
|
|
@@ -525,9 +529,9 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
public void completeRechargeTaskByPriority(String openId) {
|
|
public void completeRechargeTaskByPriority(String openId) {
|
|
|
// 活动类型优先级:新手活动、每日活动、每月活动
|
|
// 活动类型优先级:新手活动、每日活动、每月活动
|
|
|
List<Integer> priorityTypes = Arrays.asList(
|
|
List<Integer> priorityTypes = Arrays.asList(
|
|
|
- PointActivityTypeEnum.NEW_USER_ACTIVITY.getCode(),
|
|
|
|
|
- PointActivityTypeEnum.DAILY_ACTIVITY.getCode(),
|
|
|
|
|
- PointActivityTypeEnum.MONTHLY_ACTIVITY.getCode()
|
|
|
|
|
|
|
+ PointActivityTypeEnum.NEW_USER_ACTIVITY.getCode(),
|
|
|
|
|
+ PointActivityTypeEnum.DAILY_ACTIVITY.getCode(),
|
|
|
|
|
+ PointActivityTypeEnum.MONTHLY_ACTIVITY.getCode()
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
// 按优先级遍历活动类型
|
|
// 按优先级遍历活动类型
|
|
@@ -535,21 +539,21 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
try {
|
|
try {
|
|
|
// 查询该活动类型下所有进行中的"充值任务"
|
|
// 查询该活动类型下所有进行中的"充值任务"
|
|
|
List<PointActivityTask> taskList = pointActivityTaskService.list(
|
|
List<PointActivityTask> taskList = pointActivityTaskService.list(
|
|
|
- Wrappers.lambdaQuery(PointActivityTask.class)
|
|
|
|
|
- .eq(PointActivityTask::getTaskName, ActivityNameEnum.RECHARGE_TASK.getInfo())
|
|
|
|
|
- .eq(PointActivityTask::getStatus, 0)
|
|
|
|
|
- .eq(PointActivityTask::getIsDeleted, 0)
|
|
|
|
|
|
|
+ Wrappers.lambdaQuery(PointActivityTask.class)
|
|
|
|
|
+ .eq(PointActivityTask::getTaskName, ActivityNameEnum.RECHARGE_TASK.getInfo())
|
|
|
|
|
+ .eq(PointActivityTask::getStatus, 0)
|
|
|
|
|
+ .eq(PointActivityTask::getIsDeleted, 0)
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
// 过滤出属于该活动类型的任务
|
|
// 过滤出属于该活动类型的任务
|
|
|
taskList = taskList.stream()
|
|
taskList = taskList.stream()
|
|
|
- .filter(task -> {
|
|
|
|
|
- PointActivity activity = pointActivityService.getById(task.getActivityId());
|
|
|
|
|
- return activity != null
|
|
|
|
|
- && activity.getActivityType().equals(activityType)
|
|
|
|
|
- && activity.getStatus().equals(PointActivityStatusEnum.IN_PROGRESS.getCode());
|
|
|
|
|
- })
|
|
|
|
|
- .collect(Collectors.toList());
|
|
|
|
|
|
|
+ .filter(task -> {
|
|
|
|
|
+ PointActivity activity = pointActivityService.getById(task.getActivityId());
|
|
|
|
|
+ return activity != null
|
|
|
|
|
+ && activity.getActivityType().equals(activityType)
|
|
|
|
|
+ && activity.getStatus().equals(PointActivityStatusEnum.IN_PROGRESS.getCode());
|
|
|
|
|
+ })
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
|
|
if (CollectionUtil.isEmpty(taskList)) {
|
|
if (CollectionUtil.isEmpty(taskList)) {
|
|
|
continue;
|
|
continue;
|
|
@@ -577,11 +581,11 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
if (rechargeCount >= targetCount) {
|
|
if (rechargeCount >= targetCount) {
|
|
|
// 查询是否已经完成过该任务
|
|
// 查询是否已经完成过该任务
|
|
|
PointUserActivityTaskCompletion existingRecord = this.getOne(
|
|
PointUserActivityTaskCompletion existingRecord = this.getOne(
|
|
|
- new LambdaQueryWrapper<PointUserActivityTaskCompletion>()
|
|
|
|
|
- .eq(PointUserActivityTaskCompletion::getOpenId, openId)
|
|
|
|
|
- .eq(PointUserActivityTaskCompletion::getTaskId, task.getId())
|
|
|
|
|
- .eq(PointUserActivityTaskCompletion::getActivityId, activity.getId())
|
|
|
|
|
- .eq(PointUserActivityTaskCompletion::getTaskType, PointActivityTaskTypeEnum.RECHARGE_TASK.getCode())
|
|
|
|
|
|
|
+ new LambdaQueryWrapper<PointUserActivityTaskCompletion>()
|
|
|
|
|
+ .eq(PointUserActivityTaskCompletion::getOpenId, openId)
|
|
|
|
|
+ .eq(PointUserActivityTaskCompletion::getTaskId, task.getId())
|
|
|
|
|
+ .eq(PointUserActivityTaskCompletion::getActivityId, activity.getId())
|
|
|
|
|
+ .eq(PointUserActivityTaskCompletion::getTaskType, PointActivityTaskTypeEnum.RECHARGE_TASK.getCode())
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
// 检查是否已经达到目标次数(防刷)
|
|
// 检查是否已经达到目标次数(防刷)
|
|
@@ -595,13 +599,14 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
|
|
|
|
|
// 发放积分
|
|
// 发放积分
|
|
|
pointAccountService.addPoints(
|
|
pointAccountService.addPoints(
|
|
|
- openId,
|
|
|
|
|
- task.getRewardPoints().intValue(),
|
|
|
|
|
- ActivityNameEnum.RECHARGE_TASK.getInfo(),
|
|
|
|
|
- null,
|
|
|
|
|
- activity.getId(),
|
|
|
|
|
- task.getId(),
|
|
|
|
|
- PointActivityTaskTypeEnum.RECHARGE_TASK.getCode()
|
|
|
|
|
|
|
+ openId,
|
|
|
|
|
+ task.getRewardPoints().intValue(),
|
|
|
|
|
+ activity.getName(),
|
|
|
|
|
+ null,
|
|
|
|
|
+ activity.getId(),
|
|
|
|
|
+ task.getId(),
|
|
|
|
|
+ PointActivityTaskTypeEnum.RECHARGE_TASK.getCode(),
|
|
|
|
|
+ ActivityNameEnum.RECHARGE_TASK.getInfo()
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
// 成功完成一个任务后,跳出循环(只完成优先级最高的一个任务)
|
|
// 成功完成一个任务后,跳出循环(只完成优先级最高的一个任务)
|
|
@@ -610,7 +615,7 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
|
|
|
} catch (ServiceException e) {
|
|
} catch (ServiceException e) {
|
|
|
// 如果任务已完成或不符合条件,继续尝试下一个任务
|
|
// 如果任务已完成或不符合条件,继续尝试下一个任务
|
|
|
if (!e.getMessage().contains("今日任务已完成")
|
|
if (!e.getMessage().contains("今日任务已完成")
|
|
|
- && !e.getMessage().contains("任务奖励已领取")) {
|
|
|
|
|
|
|
+ && !e.getMessage().contains("任务奖励已领取")) {
|
|
|
// 其他异常则抛出
|
|
// 其他异常则抛出
|
|
|
throw e;
|
|
throw e;
|
|
|
}
|
|
}
|