feat: 添加图表统计功能
- TG: /chart 本月分类饼图, /week 近7天消费柱状图 - QQ: 统计/报表 本月文本统计 - 新增 go-chart 依赖生成 PNG 图表 - 新增 GetCategoryStats/GetDailyStats 查询方法
This commit is contained in:
@@ -114,3 +114,41 @@ func (s *FinanceService) GetTransactionsByDate(userID int64, date string) ([]mod
|
||||
Order("id desc").Find(&items).Error
|
||||
return items, err
|
||||
}
|
||||
|
||||
// CategoryStat 分类统计结果
|
||||
type CategoryStat struct {
|
||||
Category string
|
||||
Total int64
|
||||
Count int
|
||||
}
|
||||
|
||||
// GetCategoryStats 获取用户指定日期范围的分类统计
|
||||
func (s *FinanceService) GetCategoryStats(userID int64, dateFrom, dateTo string) ([]CategoryStat, error) {
|
||||
var stats []CategoryStat
|
||||
err := s.db.Model(&models.Transaction{}).
|
||||
Select("category, SUM(amount) as total, COUNT(*) as count").
|
||||
Where("user_id = ? AND date >= ? AND date <= ? AND is_deleted = ?", userID, dateFrom, dateTo, false).
|
||||
Group("category").
|
||||
Order("total desc").
|
||||
Find(&stats).Error
|
||||
return stats, err
|
||||
}
|
||||
|
||||
// DailyStat 每日统计结果
|
||||
type DailyStat struct {
|
||||
Date string
|
||||
Total int64
|
||||
Count int
|
||||
}
|
||||
|
||||
// GetDailyStats 获取用户指定日期范围的每日统计
|
||||
func (s *FinanceService) GetDailyStats(userID int64, dateFrom, dateTo string) ([]DailyStat, error) {
|
||||
var stats []DailyStat
|
||||
err := s.db.Model(&models.Transaction{}).
|
||||
Select("date, SUM(amount) as total, COUNT(*) as count").
|
||||
Where("user_id = ? AND date >= ? AND date <= ? AND is_deleted = ?", userID, dateFrom, dateTo, false).
|
||||
Group("date").
|
||||
Order("date asc").
|
||||
Find(&stats).Error
|
||||
return stats, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user