63 lines
1.3 KiB
Go
63 lines
1.3 KiB
Go
package data
|
||
|
||
import (
|
||
"go-common/app/admin/main/up/conf"
|
||
"go-common/app/admin/main/up/dao/data"
|
||
"go-common/app/admin/main/up/dao/tag"
|
||
"time"
|
||
)
|
||
|
||
//Service data service
|
||
type Service struct {
|
||
c *conf.Config
|
||
data *data.Dao
|
||
dtag *tag.Dao
|
||
}
|
||
|
||
//New get service
|
||
func New(c *conf.Config) *Service {
|
||
s := &Service{
|
||
c: c,
|
||
data: data.New(c),
|
||
dtag: tag.New(c),
|
||
}
|
||
return s
|
||
}
|
||
|
||
func beginningOfDay(t time.Time) time.Time {
|
||
d := time.Duration(-t.Hour()) * time.Hour
|
||
return t.Truncate(time.Hour).Add(d)
|
||
}
|
||
|
||
func getTuesday(now time.Time) time.Time {
|
||
t := beginningOfDay(now)
|
||
weekday := int(t.Weekday())
|
||
if weekday == 0 {
|
||
weekday = 7
|
||
}
|
||
d := time.Duration(-weekday+2) * 24 * time.Hour
|
||
return t.Truncate(time.Hour).Add(d)
|
||
}
|
||
|
||
func getSunday(now time.Time) time.Time {
|
||
t := beginningOfDay(now)
|
||
weekday := int(t.Weekday())
|
||
if weekday == 0 {
|
||
return t
|
||
}
|
||
d := time.Duration(7-weekday) * 24 * time.Hour
|
||
return t.Truncate(time.Hour).Add(d)
|
||
}
|
||
|
||
func getDateLastSunday() (date time.Time) {
|
||
t := time.Now()
|
||
td := getTuesday(t).Add(12 * time.Hour)
|
||
if t.Before(td) { //当前时间在本周二12点之前,则取上上周日的数据,否则取上周日的数据
|
||
date = getSunday(t.AddDate(0, 0, -14))
|
||
} else {
|
||
date = getSunday(t.AddDate(0, 0, -7))
|
||
}
|
||
//log.Info("current time (%s) tuesday (%s) sunday (%s)", t.Format("2006-01-02 15:04:05"), td, sd)
|
||
return
|
||
}
|