获取签到数据接口优化
This commit is contained in:
@@ -9,7 +9,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.sqx.common.exception.SqxException;
|
import com.sqx.common.exception.SqxException;
|
||||||
import com.sqx.modules.app.dao.UserDao;
|
import com.sqx.modules.app.dao.UserDao;
|
||||||
|
import com.sqx.modules.app.dao.UserMoneyDetailsDao;
|
||||||
import com.sqx.modules.app.entity.UserEntity;
|
import com.sqx.modules.app.entity.UserEntity;
|
||||||
|
import com.sqx.modules.app.entity.UserMoneyDetails;
|
||||||
import com.sqx.modules.common.dao.CommonInfoDao;
|
import com.sqx.modules.common.dao.CommonInfoDao;
|
||||||
import com.sqx.modules.common.entity.CommonInfo;
|
import com.sqx.modules.common.entity.CommonInfo;
|
||||||
import com.sqx.modules.userSign.dao.UserSignRecordDao;
|
import com.sqx.modules.userSign.dao.UserSignRecordDao;
|
||||||
@@ -36,6 +38,9 @@ public class UserSignRecordServiceImpl extends ServiceImpl<UserSignRecordDao, Us
|
|||||||
@Autowired
|
@Autowired
|
||||||
private UserDao userDao;
|
private UserDao userDao;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserMoneyDetailsDao userMoneyDetailsDao;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UserSignDTO getUserSignData(long userId) {
|
public UserSignDTO getUserSignData(long userId) {
|
||||||
UserEntity currentUser = userDao.selectById(userId);
|
UserEntity currentUser = userDao.selectById(userId);
|
||||||
@@ -45,6 +50,7 @@ public class UserSignRecordServiceImpl extends ServiceImpl<UserSignRecordDao, Us
|
|||||||
dto.setMobile(currentUser.getPhone());
|
dto.setMobile(currentUser.getPhone());
|
||||||
dto.setSignDays(0);
|
dto.setSignDays(0);
|
||||||
dto.setEnable(1);
|
dto.setEnable(1);
|
||||||
|
dto.setIsReceived(0);
|
||||||
CommonInfo config = commonInfoDao.findOne(918);
|
CommonInfo config = commonInfoDao.findOne(918);
|
||||||
if (config == null) {
|
if (config == null) {
|
||||||
throw new SqxException("签到活动配置不存在");
|
throw new SqxException("签到活动配置不存在");
|
||||||
@@ -81,6 +87,8 @@ public class UserSignRecordServiceImpl extends ServiceImpl<UserSignRecordDao, Us
|
|||||||
//LocalDate endDay = LocalDate.parse(list.get(list.size() - 1).getSignDay(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).plusDays(activeDays);
|
//LocalDate endDay = LocalDate.parse(list.get(list.size() - 1).getSignDay(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).plusDays(activeDays);
|
||||||
LocalDate endDay = LocalDate.now().plusDays(activeDays - 1);
|
LocalDate endDay = LocalDate.now().plusDays(activeDays - 1);
|
||||||
flowDays = buildFlowDays(beginSignDay, endDay);
|
flowDays = buildFlowDays(beginSignDay, endDay);
|
||||||
|
// 需要移除的记录
|
||||||
|
List<UserSignRecordDTO> removeList = new ArrayList<>();
|
||||||
Map<String, Date> signMap = list.stream().collect(Collectors.toMap(UserSignRecord::getSignDay, UserSignRecord::getCreateTime));
|
Map<String, Date> signMap = list.stream().collect(Collectors.toMap(UserSignRecord::getSignDay, UserSignRecord::getCreateTime));
|
||||||
for (String day : flowDays) {
|
for (String day : flowDays) {
|
||||||
Date date = signMap.get(day);
|
Date date = signMap.get(day);
|
||||||
@@ -112,10 +120,20 @@ public class UserSignRecordServiceImpl extends ServiceImpl<UserSignRecordDao, Us
|
|||||||
if (signDays == activeDays) {
|
if (signDays == activeDays) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (LocalDate.parse(record.getSignDay(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).isEqual(endDay.plusDays(0 - signDays))) {
|
if (LocalDate.parse(record.getSignDay(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).isEqual(endDay)) {
|
||||||
|
List<UserSignRecordDTO> tempList = CollUtil.reverseNew(recordList);
|
||||||
|
Long isInclude = tempList.stream().filter(item -> DateUtil.today().equals(item.getSignDay()) && "1".equals(item.getStatus())).collect(Collectors.counting());
|
||||||
|
int removeSize = signDays;
|
||||||
|
if (isInclude > 0){
|
||||||
|
removeSize = signDays - 1;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < removeSize; i++) {
|
||||||
|
removeList.add(tempList.get(i));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
recordList.removeAll(removeList);
|
||||||
Collections.reverse(recordList);
|
Collections.reverse(recordList);
|
||||||
recordList = recordList.stream().limit(activeDays).collect(Collectors.toList());
|
recordList = recordList.stream().limit(activeDays).collect(Collectors.toList());
|
||||||
Collections.reverse(recordList);
|
Collections.reverse(recordList);
|
||||||
@@ -130,6 +148,20 @@ public class UserSignRecordServiceImpl extends ServiceImpl<UserSignRecordDao, Us
|
|||||||
if (signDays >= activeDays) {
|
if (signDays >= activeDays) {
|
||||||
dto.setEnable(0);
|
dto.setEnable(0);
|
||||||
}
|
}
|
||||||
|
int count = userMoneyDetailsDao.selectCount(
|
||||||
|
Wrappers.<UserMoneyDetails>lambdaQuery()
|
||||||
|
.eq(UserMoneyDetails::getUserId, userId)
|
||||||
|
.eq(UserMoneyDetails::getType, 1)
|
||||||
|
.eq(UserMoneyDetails::getClassify, 7)
|
||||||
|
.eq(UserMoneyDetails::getMoneyType, 1)
|
||||||
|
.likeLeft(UserMoneyDetails::getTitle, "[连续签到")
|
||||||
|
.likeRight(UserMoneyDetails::getTitle, "天]")
|
||||||
|
);
|
||||||
|
if (count > 0) {
|
||||||
|
dto.setIsReceived(1);
|
||||||
|
} else {
|
||||||
|
dto.setIsReceived(0);
|
||||||
|
}
|
||||||
return dto;
|
return dto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user