diff --git a/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningController.java b/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningController.java index e78ea8a0..a1233e60 100644 --- a/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningController.java +++ b/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningController.java @@ -194,24 +194,27 @@ public class DiscSpinningController { }else if(source.equals(3)){ redisKey = RedisKeys.getDateKey("spinning:amount:taskM") + userId; } - Map week = redisUtils.get(redisKey, Map.class); - for (Map.Entry entry : week.entrySet()) { - Integer value = entry.getValue(); + Map week = redisUtils.get(redisKey, Map.class); + for (Map.Entry entry : week.entrySet()) { + int value = new BigDecimal(entry.getValue().toString()).intValue(); if (value > 1) { value = value - 1; week.put(entry.getKey(), value); + sourceId = Long.valueOf(entry.getKey()); break; } else { TaskCenterRecord centerRecord = new TaskCenterRecord(); centerRecord.setUserId(userId); - centerRecord.setTaskId(entry.getKey().longValue()); + centerRecord.setTaskId(Long.valueOf(entry.getKey())); if(source.equals(2)){ - centerRecord.setSourceId(entry.getKey().longValue()); + sourceId = Long.valueOf(entry.getKey()); + centerRecord.setSourceId(Long.getLong(entry.getKey())); } centerRecord.setName(source.equals(2) ? "周任务奖励" : "月任务奖励"); centerRecord.setType(9); centerRecord.setNumber(1); centerRecord.setCreateTime(DateUtil.now()); + centerRecord.setUpdateTime(DateUtil.now()); taskRecordService.save(centerRecord); week.remove(entry.getKey()); break; diff --git a/src/main/java/com/sqx/modules/taskCenter/dao/TaskCenterRewardDao.java b/src/main/java/com/sqx/modules/taskCenter/dao/TaskCenterRewardDao.java index ac11f2e4..127187d0 100644 --- a/src/main/java/com/sqx/modules/taskCenter/dao/TaskCenterRewardDao.java +++ b/src/main/java/com/sqx/modules/taskCenter/dao/TaskCenterRewardDao.java @@ -5,13 +5,14 @@ import com.sqx.modules.taskCenter.entity.TaskCenterReward; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; +import java.util.List; import java.util.Map; @Mapper public interface TaskCenterRewardDao extends BaseMapper { @Select("SELECT type,number FROM `task_center_reward` where task_id = #{taskId}") - Map getRewardMap(Long taskId); + List getRewardMap(Long taskId); } diff --git a/src/main/java/com/sqx/modules/taskCenter/service/impl/TaskCenterRewardServiceImpl.java b/src/main/java/com/sqx/modules/taskCenter/service/impl/TaskCenterRewardServiceImpl.java index 624554a0..1a09030f 100644 --- a/src/main/java/com/sqx/modules/taskCenter/service/impl/TaskCenterRewardServiceImpl.java +++ b/src/main/java/com/sqx/modules/taskCenter/service/impl/TaskCenterRewardServiceImpl.java @@ -9,7 +9,10 @@ import org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.beans.factory.annotation.Autowired; +import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Service public class TaskCenterRewardServiceImpl extends ServiceImpl implements TaskCenterRewardService { @@ -17,7 +20,14 @@ public class TaskCenterRewardServiceImpl extends ServiceImpl getRewardMap(Long taskId) { - return baseMapper.getRewardMap(taskId); + List rewards = baseMapper.getRewardMap(taskId); + + Map map = rewards.stream() + .collect(Collectors.groupingBy( + TaskCenterReward::getType, + Collectors.summingInt(TaskCenterReward::getNumber) + )); + return map; } } diff --git a/src/main/java/com/sqx/modules/taskCenter/service/impl/TaskCenterServiceImpl.java b/src/main/java/com/sqx/modules/taskCenter/service/impl/TaskCenterServiceImpl.java index 72d066ca..0093a154 100644 --- a/src/main/java/com/sqx/modules/taskCenter/service/impl/TaskCenterServiceImpl.java +++ b/src/main/java/com/sqx/modules/taskCenter/service/impl/TaskCenterServiceImpl.java @@ -91,14 +91,21 @@ public class TaskCenterServiceImpl extends ServiceImpl 1 && s.getNumber() < 8) { if (rewardMap.containsKey(9)) { + boolean isBreak = false; //抽奖次数 - Map taskWCount = signRecordService.getTaskWCount(userId, rewardMap.get(9)); + Map taskWCount = signRecordService.getTaskWCount(userId, rewardMap.get(9)); if (CollectionUtil.isNotEmpty(taskWCount)) { for (Integer value : taskWCount.values()) { if (value > 0) { + isBreak=true; break; } } + if (isBreak){ + s.setDiscNumber(null); + s.setNumber(null); + break; + } } } Integer wSignCount = signRecordService.getWSignCount(userId); @@ -123,6 +130,8 @@ public class TaskCenterServiceImpl extends ServiceImpl 0) { + s.setDiscNumber(null); + s.setNumber(null); break; } else { s.setButtonTitle("已领取"); @@ -264,14 +273,14 @@ public class TaskCenterServiceImpl extends ServiceImpl taskWRedisMap = new HashMap<>(); if ("2".equals(type)) { //抽奖次数 - Map taskWCount = signRecordService.getTaskWCount(userId, rewardMap.get(9)); + Map taskWCount = signRecordService.getTaskWCount(userId, rewardMap.get(9)); if (CollectionUtil.isNotEmpty(taskWCount)) { - for (Map.Entry entry : taskWCount.entrySet()) { - Integer key = entry.getKey(); + for (Map.Entry entry : taskWCount.entrySet()) { + Long key = entry.getKey(); Integer value = entry.getValue(); if (value > 0) { countTaskDisc = countTaskDisc + value; - taskWRedisMap.put(key, value); + taskWRedisMap.put(key.intValue(), value); } } } diff --git a/src/main/java/com/sqx/modules/userSign/dao/UserSignRecordDao.java b/src/main/java/com/sqx/modules/userSign/dao/UserSignRecordDao.java index 878ec4f8..f99936eb 100644 --- a/src/main/java/com/sqx/modules/userSign/dao/UserSignRecordDao.java +++ b/src/main/java/com/sqx/modules/userSign/dao/UserSignRecordDao.java @@ -4,12 +4,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.sqx.modules.userSign.entity.UserSignRecord; import org.apache.ibatis.annotations.Mapper; +import java.util.List; import java.util.Map; @Mapper public interface UserSignRecordDao extends BaseMapper { //周 抽奖次数 - Map getTaskWCount(long userId, int wCount,String time); + List getTaskWCount(long userId, int wCount,String time,List ids); + + List getNoRecordTask(long userId, String time); //周 签到 次数 连续签到 Integer getWSignCount(long userId,String time); diff --git a/src/main/java/com/sqx/modules/userSign/service/UserSignRecordService.java b/src/main/java/com/sqx/modules/userSign/service/UserSignRecordService.java index 086f50ff..5d3a1e96 100644 --- a/src/main/java/com/sqx/modules/userSign/service/UserSignRecordService.java +++ b/src/main/java/com/sqx/modules/userSign/service/UserSignRecordService.java @@ -13,7 +13,7 @@ public interface UserSignRecordService extends IService { //获取当月签到次数 int getUserSignCount(long userId); //周 剩余抽奖次数 - Map getTaskWCount(long userId, int wCount); + Map getTaskWCount(long userId, int wCount); //周 签到 次数 Integer getWSignCount(long userId); diff --git a/src/main/java/com/sqx/modules/userSign/service/impl/UserSignRecordServiceImpl.java b/src/main/java/com/sqx/modules/userSign/service/impl/UserSignRecordServiceImpl.java index a95af798..847e9f5f 100644 --- a/src/main/java/com/sqx/modules/userSign/service/impl/UserSignRecordServiceImpl.java +++ b/src/main/java/com/sqx/modules/userSign/service/impl/UserSignRecordServiceImpl.java @@ -12,6 +12,7 @@ import com.sqx.modules.app.dao.UserDao; import com.sqx.modules.app.entity.UserEntity; import com.sqx.modules.common.dao.CommonInfoDao; import com.sqx.modules.common.entity.CommonInfo; +import com.sqx.modules.taskCenter.entity.TaskCenterReward; import com.sqx.modules.userSign.dao.UserSignRecordDao; import com.sqx.modules.userSign.dto.UserSignDTO; import com.sqx.modules.userSign.dto.UserSignRecordDTO; @@ -132,9 +133,16 @@ public class UserSignRecordServiceImpl extends ServiceImpl getTaskWCount(long userId,int wCount) { + public Map getTaskWCount(long userId,int wCount) { Date thirtyDaysAgo = DateUtil.offsetDay(new Date(), -30); - return baseMapper.getTaskWCount(userId,wCount,DateUtil.format(thirtyDaysAgo, "yyyy-MM-dd")+" 00:00:00"); + List noRecordTasks = baseMapper.getNoRecordTask(userId, DateUtil.format(thirtyDaysAgo, "yyyy-MM-dd") + " 00:00:00"); + List taskWCount = baseMapper.getTaskWCount(userId, wCount, DateUtil.format(thirtyDaysAgo, "yyyy-MM-dd") + " 00:00:00", noRecordTasks); + Map map = taskWCount.stream() + .collect(Collectors.groupingBy( + UserSignRecord::getId, + Collectors.summingInt(UserSignRecord::getDay) + )); + return map; } @Override diff --git a/src/main/resources/mapper/orders/OrdersDao.xml b/src/main/resources/mapper/orders/OrdersDao.xml index 5cd28465..eaae0119 100644 --- a/src/main/resources/mapper/orders/OrdersDao.xml +++ b/src/main/resources/mapper/orders/OrdersDao.xml @@ -281,12 +281,12 @@ @@ -298,7 +298,7 @@ AND orders.`status` = 1 AND orders.`pay_way` = 9 AND orders.create_time > DATE_FORMAT(CURDATE(), '%Y-%m-%d 00:00:00') - AND record.order_id IS NULL + AND record.source_id IS NULL ORDER BY orders.create_time LIMIT 1 diff --git a/src/main/resources/mapper/userSign/TaskCenterDto.xml b/src/main/resources/mapper/userSign/TaskCenterDto.xml index 52489664..f77487a2 100644 --- a/src/main/resources/mapper/userSign/TaskCenterDto.xml +++ b/src/main/resources/mapper/userSign/TaskCenterDto.xml @@ -2,19 +2,38 @@ - SELECT - sign.id, - #{wCount} - COUNT(CASE WHEN cenRecord.id IS NULL and record.source_id IS NOT NULL THEN 1 END) AS record_count - + sign.id + FROM + user_sign_record sign + LEFT JOIN task_center_record cenRecord ON sign.id = cenRecord.source_id + WHERE + sign.`DAY` = 7 + AND sign.user_id = #{userId} + and sign.create_time > #{time} + AND cenRecord.id IS NULL + order by sign.create_time asc + + +