|
|
@@ -172,6 +172,7 @@ public class TaskService implements TaskServiceInterface {
|
|
|
|
|
|
if ("child".equals(executorType)) {
|
|
|
task.setExecutorId(memberId);
|
|
|
+ task.setFamilyMemberId(memberId);
|
|
|
task.setChildId(memberId);
|
|
|
} else if ("member".equals(executorType)) {
|
|
|
task.setExecutorId(memberId);
|
|
|
@@ -317,7 +318,7 @@ public List<Task> getTodayTasks(Long memberId, String dimensionCode) {
|
|
|
Date endOfDay = calendar.getTime();
|
|
|
|
|
|
LambdaQueryWrapper<Task> wrapper = new LambdaQueryWrapper<Task>()
|
|
|
- .eq(Task::getChildId, memberId)
|
|
|
+ .eq(Task::getFamilyMemberId, memberId)
|
|
|
.ge(Task::getDeadline, startOfDay)
|
|
|
.lt(Task::getDeadline, endOfDay)
|
|
|
.in(Task::getStatus, Arrays.asList("pending", "completed", "locked"))
|
|
|
@@ -381,7 +382,7 @@ public List<Task> getTodayTasks(Long memberId, String dimensionCode) {
|
|
|
Date endOfDay = calendar.getTime();
|
|
|
|
|
|
return filterLockedChildren(taskMapper.selectList(new LambdaQueryWrapper<Task>()
|
|
|
- .eq(Task::getChildId, memberId)
|
|
|
+ .eq(Task::getFamilyMemberId, memberId)
|
|
|
.eq(Task::getCategory, category)
|
|
|
.ge(Task::getDeadline, startOfDay)
|
|
|
.lt(Task::getDeadline, endOfDay)
|
|
|
@@ -413,7 +414,7 @@ public List<Task> getTodayTasks(Long memberId, String dimensionCode) {
|
|
|
|
|
|
List<Task> allTasks = taskMapper.selectList(
|
|
|
new LambdaQueryWrapper<Task>()
|
|
|
- .eq(Task::getChildId, memberId)
|
|
|
+ .eq(Task::getFamilyMemberId, memberId)
|
|
|
.between(Task::getDeadline, todayStart, todayEnd)
|
|
|
);
|
|
|
|
|
|
@@ -425,7 +426,7 @@ public List<Task> getTodayTasks(Long memberId, String dimensionCode) {
|
|
|
|
|
|
List<Task> pendingReview = taskMapper.selectList(
|
|
|
new LambdaQueryWrapper<Task>()
|
|
|
- .eq(Task::getChildId, memberId)
|
|
|
+ .eq(Task::getFamilyMemberId, memberId)
|
|
|
.eq(Task::getNeedReview, 1)
|
|
|
.eq(Task::getStatus, "pending")
|
|
|
);
|
|
|
@@ -450,7 +451,7 @@ public List<Task> getTodayTasks(Long memberId, String dimensionCode) {
|
|
|
@Transactional
|
|
|
public Map<String, Object> startTask(Long taskId, Long memberId) {
|
|
|
Task task = taskMapper.selectById(taskId);
|
|
|
- if (task == null || !task.getChildId().equals(memberId)) {
|
|
|
+ if (task == null || !task.getFamilyMemberId().equals(memberId)) {
|
|
|
throw new IllegalArgumentException("任务不存在或不属于该成员");
|
|
|
}
|
|
|
if ("completed".equals(task.getStatus())) {
|
|
|
@@ -500,7 +501,7 @@ public List<Task> getTodayTasks(Long memberId, String dimensionCode) {
|
|
|
@Transactional
|
|
|
public Map<String, Object> completeTask(Long taskId, Long memberId, String photoUrl, String content, String contentType) {
|
|
|
Task task = taskMapper.selectById(taskId);
|
|
|
- if (task == null || !task.getChildId().equals(memberId)) {
|
|
|
+ if (task == null || !task.getFamilyMemberId().equals(memberId)) {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
@@ -754,14 +755,14 @@ return result;
|
|
|
public Page<Task> getTaskHistory(Long memberId, Integer page, Integer size) {
|
|
|
Page<Task> pageParam = new Page<>(page, size);
|
|
|
return taskMapper.selectPage(pageParam, new LambdaQueryWrapper<Task>()
|
|
|
- .eq(Task::getChildId, memberId)
|
|
|
+ .eq(Task::getFamilyMemberId, memberId)
|
|
|
.orderByDesc(Task::getCreatedAt));
|
|
|
}
|
|
|
|
|
|
public Page<Task> getTaskHistoryByCategory(Long memberId, Integer page, Integer size, String category) {
|
|
|
Page<Task> pageParam = new Page<>(page, size);
|
|
|
return taskMapper.selectPage(pageParam, new LambdaQueryWrapper<Task>()
|
|
|
- .eq(Task::getChildId, memberId)
|
|
|
+ .eq(Task::getFamilyMemberId, memberId)
|
|
|
.eq(Task::getCategory, category)
|
|
|
.orderByDesc(Task::getCreatedAt));
|
|
|
}
|
|
|
@@ -870,7 +871,7 @@ return result;
|
|
|
|
|
|
// 记录积分流水
|
|
|
PointsLog log = new PointsLog();
|
|
|
- log.setChildId(task.getChildId());
|
|
|
+ log.setChildId(task.getFamilyMemberId());
|
|
|
log.setAmount(pointsEarned);
|
|
|
log.setType(isEarly ? "earn" : "earn");
|
|
|
log.setDescription("完成任务: " + task.getTitle());
|
|
|
@@ -880,7 +881,7 @@ return result;
|
|
|
Map<String, Object> result = new HashMap<>();
|
|
|
result.put("pointsEarned", pointsEarned);
|
|
|
|
|
|
- try { FamilyMember child = familyMemberMapper.selectById(task.getChildId()); if (child != null) { onboardingService.completeTask(child.getUserId(), "FIRST_TASK"); } } catch (Exception e) { /* onboarding trigger failure should not block task completion */ }
|
|
|
+ try { FamilyMember child = familyMemberMapper.selectById(task.getFamilyMemberId()); if (child != null) { onboardingService.completeTask(child.getUserId(), "FIRST_TASK"); } } catch (Exception e) { /* onboarding trigger failure should not block task completion */ }
|
|
|
result.put("newBalance", user.getTotalPoints());
|
|
|
result.put("needReview", task.getNeedReview() == 1);
|
|
|
|
|
|
@@ -917,7 +918,7 @@ return result;
|
|
|
*/
|
|
|
public List<Task> getPendingReviewTasksForChild(Long memberId) {
|
|
|
return taskMapper.selectList(new LambdaQueryWrapper<Task>()
|
|
|
- .eq(Task::getChildId, memberId)
|
|
|
+ .eq(Task::getFamilyMemberId, memberId)
|
|
|
.eq(Task::getNeedReview, 1)
|
|
|
.eq(Task::getStatus, "completed")
|
|
|
.orderByDesc(Task::getCompletedAt));
|
|
|
@@ -928,7 +929,7 @@ return result;
|
|
|
*/
|
|
|
public List<Task> getAllTasksByChild(Long memberId) {
|
|
|
return taskMapper.selectList(new LambdaQueryWrapper<Task>()
|
|
|
- .eq(Task::getChildId, memberId)
|
|
|
+ .eq(Task::getFamilyMemberId, memberId)
|
|
|
.orderByDesc(Task::getCreatedAt));
|
|
|
}
|
|
|
|
|
|
@@ -938,7 +939,7 @@ return result;
|
|
|
public Page<Task> getTaskHistoryByChild(Long memberId, Integer page, Integer size, String status) {
|
|
|
Page<Task> pageParam = new Page<>(page, size);
|
|
|
LambdaQueryWrapper<Task> wrapper = new LambdaQueryWrapper<Task>()
|
|
|
- .eq(Task::getChildId, memberId)
|
|
|
+ .eq(Task::getFamilyMemberId, memberId)
|
|
|
.orderByDesc(Task::getCreatedAt);
|
|
|
|
|
|
if (status != null && !status.isEmpty()) {
|
|
|
@@ -1074,7 +1075,7 @@ return 0; // 达到每日扣分上限
|
|
|
@Transactional
|
|
|
public Map<String, Object> completeMinigameTask(Long taskId, Long memberId, Integer completionTime, Integer score) {
|
|
|
Task task = taskMapper.selectById(taskId);
|
|
|
- if (task == null || !task.getChildId().equals(memberId)) {
|
|
|
+ if (task == null || !task.getFamilyMemberId().equals(memberId)) {
|
|
|
throw new RuntimeException("任务不存在或不属于该孩子");
|
|
|
}
|
|
|
|