mirror of
https://github.com/fumiama/paper-manager.git
synced 2026-06-27 22:30:28 +08:00
split global.user
This commit is contained in:
56
backend/global/visit.go
Normal file
56
backend/global/visit.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package global
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
// MonthlyAPIVisit counts the api visit history
|
||||
type MonthlyAPIVisit struct {
|
||||
YM uint32 // YM is yyyymm
|
||||
Count uint32 // visit count this mounth
|
||||
}
|
||||
|
||||
// VisitAPI increases count of this mounth by 1
|
||||
func (u *UserDatabase) VisitAPI() {
|
||||
now := time.Now()
|
||||
ym := uint32(now.Year())*100 + uint32(now.Month())
|
||||
var v MonthlyAPIVisit
|
||||
u.mu.Lock()
|
||||
defer u.mu.Unlock()
|
||||
_ = u.db.Find(UserTableMonthlyAPIVisit, &v, "WHERE YM="+strconv.FormatUint(uint64(ym), 10))
|
||||
v.YM = ym
|
||||
v.Count++
|
||||
err := u.db.Insert(UserTableMonthlyAPIVisit, &v)
|
||||
if err != nil {
|
||||
logrus.Warnln("[global.user] insert visit error:", err)
|
||||
}
|
||||
}
|
||||
|
||||
// GetAnnualAPIVisitCount get the latest 12 mounths' count
|
||||
func (u *UserDatabase) GetAnnualAPIVisitCount() (cnts [12]uint32) {
|
||||
var v MonthlyAPIVisit
|
||||
var yms [12]uint32
|
||||
now := time.Now()
|
||||
y100 := uint32(now.Year()) * 100
|
||||
py100 := uint32(now.Year()-1) * 100
|
||||
nm := int(now.Month())
|
||||
for i := 0; i < nm; i++ {
|
||||
yms[i] = y100 + uint32(i+1)
|
||||
}
|
||||
for i := nm; i < 12; i++ {
|
||||
yms[i] = py100 + uint32(i+1)
|
||||
}
|
||||
u.mu.RLock()
|
||||
defer u.mu.RUnlock()
|
||||
i := 0
|
||||
for _, ym := range yms {
|
||||
_ = u.db.Find(UserTableMonthlyAPIVisit, &v, "WHERE YM="+strconv.FormatUint(uint64(ym), 10))
|
||||
cnts[i] = v.Count
|
||||
i++
|
||||
v.Count = 0
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user