133 lines
2.5 KiB
Go
Raw Normal View History

2019-04-22 02:59:20 +00:00
package http
import (
"strconv"
"time"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
const (
_format = "2006-01-02"
)
var (
_loc = time.Now().Location()
)
// generate generate invite code in batches.
func generate(c *bm.Context) {
var (
err error
params = c.Request.Form
)
numStr := params.Get("num")
if numStr == "" {
httpCode(c, ecode.RequestErr)
return
}
num, err := strconv.ParseInt(numStr, 10, 64)
if err != nil {
httpCode(c, ecode.RequestErr)
return
}
midStr := params.Get("mid")
if midStr == "" {
httpCode(c, ecode.RequestErr)
return
}
mid, err := strconv.ParseInt(midStr, 10, 64)
if err != nil {
httpCode(c, ecode.RequestErr)
return
}
expireDayStr := params.Get("expire")
if expireDayStr == "" {
httpCode(c, ecode.RequestErr)
return
}
expireDay, err := strconv.ParseInt(expireDayStr, 10, 64)
if err != nil {
httpCode(c, ecode.RequestErr)
return
}
invs, err := svc.Generate(c, mid, num, expireDay)
if err != nil {
log.Error("service.Generate(%d, %d, %d) error(%v)", mid, num, expireDay, err)
httpCode(c, err)
return
}
httpData(c, invs, nil)
}
// list get invite codes range from and to.
func list(c *bm.Context) {
params := c.Request.Form
midStr := params.Get("mid")
if midStr == "" {
httpCode(c, ecode.RequestErr)
return
}
mid, err := strconv.ParseInt(midStr, 10, 64)
if err != nil {
httpCode(c, ecode.RequestErr)
return
}
fromStr := params.Get("from")
toStr := params.Get("to")
if fromStr == "" || toStr == "" {
httpCode(c, ecode.RequestErr)
return
}
from, to, ok := rangeDate(fromStr, toStr)
if !ok {
httpCode(c, ecode.RequestErr)
return
}
fromTs := from.Unix()
toTs := to.Unix()
if fromTs < 0 || toTs < 0 || fromTs > toTs {
httpCode(c, ecode.RequestErr)
return
}
invs, err := svc.List(c, mid, fromTs, toTs)
if err != nil {
log.Error("service.List(%d, %d, %d) error(%v)", mid, from, to, err)
httpCode(c, err)
return
}
httpData(c, invs, nil)
}
func rangeDate(fromStr, toStr string) (from, to time.Time, ok bool) {
ok = true
if fromStr == "" || toStr == "" {
ok = false
return
}
fromDate, err := time.ParseInLocation(_format, fromStr, _loc)
if err != nil {
ok = false
return
}
toDate, err := time.ParseInLocation(_format, toStr, _loc)
if err != nil {
ok = false
return
}
from = time.Date(fromDate.Year(), fromDate.Month(), fromDate.Day(), 0, 0, 0, 0, fromDate.Location())
to = time.Date(toDate.Year(), toDate.Month(), toDate.Day(), 23, 59, 59, 0, toDate.Location())
return
}