任务中心 处理一次性任务

大转盘抽奖 第三次需要实名后使用
This commit is contained in:
2025-01-10 14:58:02 +08:00
parent 8d12ce9ae5
commit e3f3e7d654
8 changed files with 111 additions and 33 deletions

View File

@@ -4,8 +4,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sqx.modules.taskCenter.entity.TaskCenterRecord;
import org.apache.ibatis.annotations.Mapper;
import java.util.Set;
@Mapper
public interface TaskCenterRecordDao extends BaseMapper<TaskCenterRecord> {
Integer countTaskNum(Long userId, Long taskId, String time);
TaskCenterRecord countTaskNumByUserIds(Set<Long> userId, Long taskId, String time);
}

View File

@@ -3,7 +3,7 @@ package com.sqx.modules.taskCenter.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sqx.modules.taskCenter.entity.TaskCenterRecord;
import java.util.Map;
import java.util.Set;
public interface TaskCenterRecordService extends IService<TaskCenterRecord> {
@@ -15,5 +15,6 @@ public interface TaskCenterRecordService extends IService<TaskCenterRecord> {
* @return
*/
Integer countTaskNum(Long userId,Long taskId,String time);
Integer countTaskNum(Set<Long> userId, Long taskId, String time);
}

View File

@@ -5,11 +5,8 @@ import com.sqx.modules.taskCenter.dao.TaskCenterRecordDao;
import com.sqx.modules.taskCenter.entity.TaskCenterRecord;
import com.sqx.modules.taskCenter.service.TaskCenterRecordService;
import org.springframework.stereotype.Service;
import org.apache.commons.lang3.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Map;
import java.util.Set;
@Service
public class TaskCenterRecordServiceImpl extends ServiceImpl<TaskCenterRecordDao, TaskCenterRecord> implements TaskCenterRecordService {
@@ -19,5 +16,11 @@ public class TaskCenterRecordServiceImpl extends ServiceImpl<TaskCenterRecordDao
public Integer countTaskNum(Long userId, Long taskId, String time) {
return baseMapper.countTaskNum(userId, taskId, time);
}
@Override
public Integer countTaskNum(Set<Long> userId, Long taskId, String time) {
TaskCenterRecord record = baseMapper.countTaskNumByUserIds(userId, taskId, time);
return record == null ? 0 : 1;
}
}

View File

@@ -9,12 +9,9 @@ import com.sqx.common.utils.RedisKeys;
import com.sqx.common.utils.RedisUtils;
import com.sqx.common.utils.Result;
import com.sqx.modules.app.entity.InviteAchievement;
import com.sqx.modules.app.entity.UserEntity;
import com.sqx.modules.app.entity.UserInfo;
import com.sqx.modules.app.entity.UserMoneyDetails;
import com.sqx.modules.app.service.InviteAchievementService;
import com.sqx.modules.app.service.UserMoneyDetailsService;
import com.sqx.modules.app.service.UserMoneyService;
import com.sqx.modules.app.service.UserService;
import com.sqx.modules.app.service.*;
import com.sqx.modules.discSpinning.service.DiscSpinningRecordService;
import com.sqx.modules.orders.service.OrdersService;
import com.sqx.modules.taskCenter.dao.TaskCenterDao;
@@ -33,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class TaskCenterServiceImpl extends ServiceImpl<TaskCenterDao, TaskCenter> implements TaskCenterService {
@@ -52,6 +50,8 @@ public class TaskCenterServiceImpl extends ServiceImpl<TaskCenterDao, TaskCenter
@Autowired
private DiscSpinningRecordService discSpinningRecordService;
@Autowired
private UserInfoService userInfoService;
@Autowired
private UserService userService;
@Autowired
private RedisUtils redisUtils;
@@ -167,26 +167,28 @@ public class TaskCenterServiceImpl extends ServiceImpl<TaskCenterDao, TaskCenter
//一次性任务
case 3:
if (s.getId().equals(1L)) {
// Integer sumOrderNum = ordersService.countOrderNum(userId, null);
InviteAchievement inviteAchievement = inviteAchievementService.getByUserId(userId);
Integer sumOrderNum = 0;
if (inviteAchievement != null) {
sumOrderNum = inviteAchievement.getCount();
}
if (sumOrderNum != null && sumOrderNum < s.getNumber()) {
s.setDiscNumber(sumOrderNum);
s.setNumber(s.getNumber());
} else if (recordService.countTaskNum(userId, s.getId(), null) > 0) {
continue;
} else {
s.setDiscNumber(0);
s.setNumber(null);
s.setJumpType(0);
}
} else if (s.getDetail().contains("绑定支付宝")) {
UserEntity userInfo = userService.queryByUserId(userId);
if (StringUtils.isNotBlank(userInfo.getZhiFuBao()) && StringUtils.isNotBlank(userInfo.getZhiFuBaoName())) {
continue;
UserInfo userInfo = userInfoService.getByUserId(userId);
if (userInfo != null || StringUtils.isNotBlank(userInfo.getCertNo()) || StringUtils.isNotBlank(userInfo.getCertName())) {
List<UserInfo> users = userInfoService.getUsersByNameAndCertNo(userInfo.getCertName(), userInfo.getCertNo());
Set<Long> courseIds = users.stream().map(UserInfo::getUserId).collect(Collectors.toSet());
if (recordService.countTaskNum(courseIds, s.getId(), null) > 0){
continue;
}
}else if (recordService.countTaskNum(userId, s.getId(), null) > 0){
s.setDiscNumber(0);
s.setNumber(null);
s.setJumpType(0);
}
}
}
break;
@@ -234,8 +236,14 @@ public class TaskCenterServiceImpl extends ServiceImpl<TaskCenterDao, TaskCenter
// Integer sumOrderNum = ordersService.countOrderNum(userId, null);
if (sumOrderNum != null && sumOrderNum < taskCenter.getNumber()) {
return Result.error("领取失败,未达成领取条件");
} else if (recordService.countTaskNum(userId, taskCenter.getId(), null) > 0) {
return Result.error("不可重复领取");
} else {
UserInfo userInfo = userInfoService.getByUserId(userId);
if (userInfo == null || StringUtils.isBlank(userInfo.getCertNo()) || StringUtils.isBlank(userInfo.getCertName())) {
return Result.error("请实名后领取");
}
List<UserInfo> users = userInfoService.getUsersByNameAndCertNo(userInfo.getCertName(), userInfo.getCertNo());
Set<Long> courseIds = users.stream().map(UserInfo::getUserId).collect(Collectors.toSet());
if (recordService.countTaskNum(courseIds, taskCenter.getId(), null) > 0) return Result.error("同一实名算一个新用户,不可重复领取");
}
}
List<TaskCenterRecord> records = new ArrayList<>();
@@ -271,7 +279,7 @@ public class TaskCenterServiceImpl extends ServiceImpl<TaskCenterDao, TaskCenter
record.setTaskId(id);
record.setType(reward.getType());
record.setNumber(reward.getNumber());
record.setName(taskCenter.getTitle() + ":" + record.getName());
record.setName(taskCenter.getTitle());
record.setTargetId(targetId);
record.setCreateTime(DateUtil.now());
record.setUpdateTime(DateUtil.now());