|
|
@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.etotem.cfc.dto.RecognizeFoodResult;
|
|
|
import com.etotem.cfc.entity.DietRecord;
|
|
|
import com.etotem.cfc.entity.DietRecordItem;
|
|
|
+import com.etotem.cfc.entity.FamilyMember;
|
|
|
import com.etotem.cfc.mapper.DietRecordItemMapper;
|
|
|
import com.etotem.cfc.mapper.DietRecordMapper;
|
|
|
+import com.etotem.cfc.mapper.FamilyMemberMapper;
|
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -27,6 +29,9 @@ public class DietRecordService {
|
|
|
@Resource
|
|
|
private DietRecordItemMapper dietRecordItemMapper;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private FamilyMemberMapper familyMemberMapper;
|
|
|
+
|
|
|
@Resource
|
|
|
private AiGateway aiGateway;
|
|
|
|
|
|
@@ -84,40 +89,61 @@ public class DietRecordService {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- public Map<String, Object> getDailySummary(Long memberId, String dateStr) {
|
|
|
+ public Map<String, Object> getDailySummary(Long userId, Long memberId, String dateStr) {
|
|
|
+ memberId = resolveMemberId(userId, memberId);
|
|
|
LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
-
|
|
|
- LambdaQueryWrapper<DietRecord> wrapper = new LambdaQueryWrapper<>();
|
|
|
- wrapper.eq(DietRecord::getMemberId, memberId)
|
|
|
- .eq(DietRecord::getRecordDate, date);
|
|
|
- List<DietRecord> records = dietRecordMapper.selectList(wrapper);
|
|
|
-
|
|
|
+
|
|
|
Map<String, Object> summary = new HashMap<>();
|
|
|
summary.put("date", dateStr);
|
|
|
- summary.put("records", records);
|
|
|
+ summary.put("records", java.util.Collections.emptyList());
|
|
|
summary.put("totalCalories", 0);
|
|
|
summary.put("totalProtein", 0);
|
|
|
summary.put("totalCarbs", 0);
|
|
|
-
|
|
|
+ if (memberId == null) return summary;
|
|
|
+
|
|
|
+ LambdaQueryWrapper<DietRecord> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(DietRecord::getMemberId, memberId)
|
|
|
+ .eq(DietRecord::getRecordDate, date);
|
|
|
+ List<DietRecord> records = dietRecordMapper.selectList(wrapper);
|
|
|
+ summary.put("records", records);
|
|
|
return summary;
|
|
|
}
|
|
|
|
|
|
- public Map<String, Object> getWeeklyTrend(Long memberId, String startDateStr) {
|
|
|
+ public Map<String, Object> getWeeklyTrend(Long userId, Long memberId, String startDateStr) {
|
|
|
+ memberId = resolveMemberId(userId, memberId);
|
|
|
LocalDate startDate = LocalDate.parse(startDateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
LocalDate endDate = startDate.plusDays(6);
|
|
|
-
|
|
|
+
|
|
|
+ Map<String, Object> trend = new HashMap<>();
|
|
|
+ trend.put("start_date", startDateStr);
|
|
|
+ trend.put("end_date", endDate.toString());
|
|
|
+ trend.put("records", java.util.Collections.emptyList());
|
|
|
+ trend.put("days", 0);
|
|
|
+ if (memberId == null) return trend;
|
|
|
+
|
|
|
LambdaQueryWrapper<DietRecord> wrapper = new LambdaQueryWrapper<>();
|
|
|
wrapper.eq(DietRecord::getMemberId, memberId)
|
|
|
.ge(DietRecord::getRecordDate, startDate)
|
|
|
.le(DietRecord::getRecordDate, endDate);
|
|
|
List<DietRecord> records = dietRecordMapper.selectList(wrapper);
|
|
|
-
|
|
|
- Map<String, Object> trend = new HashMap<>();
|
|
|
- trend.put("start_date", startDateStr);
|
|
|
- trend.put("end_date", endDate.toString());
|
|
|
trend.put("records", records);
|
|
|
trend.put("days", records.size());
|
|
|
-
|
|
|
return trend;
|
|
|
}
|
|
|
+
|
|
|
+ private Long resolveMemberId(Long userId, Long memberId) {
|
|
|
+ if (memberId != null) return memberId;
|
|
|
+ if (userId == null) return null;
|
|
|
+ try {
|
|
|
+ FamilyMember self = familyMemberMapper.selectOne(
|
|
|
+ new LambdaQueryWrapper<FamilyMember>()
|
|
|
+ .eq(FamilyMember::getUserId, userId)
|
|
|
+ .last("LIMIT 1")
|
|
|
+ );
|
|
|
+ return self != null ? self.getId() : null;
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("根据userId反查family_members失败: userId={}, error={}", userId, e.getMessage());
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|