42 lines
958 B
Go
42 lines
958 B
Go
package service
|
|
|
|
import (
|
|
"crm/dao"
|
|
"crm/models"
|
|
"time"
|
|
)
|
|
|
|
type DashboardService struct {
|
|
dashboardDao *dao.DashboardDao
|
|
}
|
|
|
|
func NewDashboardService() *DashboardService {
|
|
return &DashboardService{
|
|
dashboardDao: dao.NewDashboardDao(),
|
|
}
|
|
}
|
|
|
|
// 数据汇总
|
|
func (d *DashboardService) Summary(uid int64, days int) models.DashboardSum {
|
|
ds := d.dashboardDao.Count(uid, days)
|
|
now := time.Now().Unix()
|
|
ds.Amount = make([]float64, days)
|
|
ds.Date = make([]string, days)
|
|
for i, dd := 0, days; i < days; i++ {
|
|
day := now - (int64(dd) * 24 * 60 * 60)
|
|
start, end := dayRange(day)
|
|
ds.Amount[i] = d.dashboardDao.AmountSum(start, end, uid)
|
|
ds.Date[i] = time.Unix(day, 0).Format("01-02")
|
|
dd--
|
|
}
|
|
return ds
|
|
}
|
|
|
|
// 获取某一天的时间范围
|
|
func dayRange(day int64) (int64, int64) {
|
|
t := time.Unix(day, 0)
|
|
start := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location())
|
|
end := start.AddDate(0, 0, 1)
|
|
return start.Unix(), end.Unix()
|
|
}
|