You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
2.5 KiB
132 lines
2.5 KiB
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 |
|
}
|
|
|