feat: 成长报告海报改周报口径 + 显示统计周期
- 海报四项统计原来是全部累计,和「周报告」不符;改成近 7 天口径 (和报告页本周概览一致),高风险异常也按本周真实统计(原来写死 0) - Poster 加 period 字段,海报上画出「近 7 天 · 07.25 - 07.31」 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -203,6 +203,7 @@ type Poster struct {
|
||||
Age string `json:"age"`
|
||||
Weight string `json:"weight"`
|
||||
Stage string `json:"stage"`
|
||||
Period string `json:"period"` // 报告周期,如 "07.25 - 07.31"
|
||||
TasksCompleted int64 `json:"tasks_completed"`
|
||||
WeightRecords int64 `json:"weight_records"`
|
||||
VaccineRecords int64 `json:"vaccine_records"`
|
||||
@@ -216,17 +217,23 @@ func (s *Service) GetPoster(userID, petID string) (*Poster, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var tasksDone, weightRecs, vaccineRecs int64
|
||||
// 这是周报告,所有统计按近 7 天算(和报告页「本周概览」口径一致)
|
||||
now := time.Now()
|
||||
weekAgo := now.AddDate(0, 0, -7)
|
||||
|
||||
var tasksDone, weightRecs, vaccineRecs, highRisk int64
|
||||
s.db.Model(&model.PlanTask{}).
|
||||
Where("plan_id IN (SELECT id FROM sundynix_plans WHERE pet_id = ?) AND done = ?", petID, true).
|
||||
Where("plan_id IN (SELECT id FROM sundynix_plans WHERE pet_id = ?) AND done = ? AND updated_at >= ?", petID, true, weekAgo).
|
||||
Count(&tasksDone)
|
||||
s.db.Model(&model.HealthRecord{}).Where("pet_id = ? AND type = ?", petID, model.RecordWeight).Count(&weightRecs)
|
||||
s.db.Model(&model.HealthRecord{}).Where("pet_id = ? AND type = ?", petID, model.RecordVaccine).Count(&vaccineRecs)
|
||||
s.db.Model(&model.HealthRecord{}).Where("pet_id = ? AND type = ? AND occurred_at >= ?", petID, model.RecordWeight, weekAgo).Count(&weightRecs)
|
||||
s.db.Model(&model.HealthRecord{}).Where("pet_id = ? AND type = ? AND occurred_at >= ?", petID, model.RecordVaccine, weekAgo).Count(&vaccineRecs)
|
||||
s.db.Model(&model.HealthRecord{}).Where("pet_id = ? AND type = ? AND category = ? AND occurred_at >= ?", petID, model.RecordSymptom, "高", weekAgo).Count(&highRisk)
|
||||
|
||||
return &Poster{
|
||||
PetName: pet.Name, PetEmoji: pet.Emoji, PetAvatarURL: pet.AvatarURL,
|
||||
Age: pet.Age, Weight: pet.Weight, Stage: pet.Stage,
|
||||
Period: weekAgo.Format("01.02") + " - " + now.Format("01.02"),
|
||||
TasksCompleted: tasksDone, WeightRecords: weightRecs, VaccineRecords: vaccineRecs,
|
||||
HighRiskCount: 0, Headline: "稳定成长",
|
||||
HighRiskCount: highRisk, Headline: "稳定成长",
|
||||
}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user