335 lines
7.8 KiB
Go
335 lines
7.8 KiB
Go
package http
|
||
|
||
import (
|
||
"strconv"
|
||
"time"
|
||
|
||
"go-common/app/admin/main/reply/conf"
|
||
"go-common/app/admin/main/reply/model"
|
||
"go-common/library/ecode"
|
||
"go-common/library/log"
|
||
bm "go-common/library/net/http/blademaster"
|
||
xtime "go-common/library/time"
|
||
)
|
||
|
||
//panigate notice list
|
||
func listNotice(c *bm.Context) {
|
||
var (
|
||
err error
|
||
page = int64(1)
|
||
pageSize = int64(conf.Conf.Reply.PageSize)
|
||
)
|
||
|
||
params := c.Request.Form
|
||
pageStr := params.Get("page")
|
||
pageSizeStr := params.Get("pagesize")
|
||
if pageStr != "" {
|
||
if page, err = strconv.ParseInt(pageStr, 10, 64); err != nil {
|
||
log.Warn("strconv.ParseInt(page:%s) error(%v)", pageStr, err)
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
if page < 1 {
|
||
page = 1
|
||
}
|
||
}
|
||
if pageSizeStr != "" {
|
||
if pageSize, err = strconv.ParseInt(pageSizeStr, 10, 64); err != nil || pageSize < 1 {
|
||
log.Warn("strconv.ParseInt(pagesize:%s) error(%v)", pageSizeStr, err)
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
}
|
||
data, total, err := rpSvc.ListNotice(c, page, pageSize)
|
||
if err != nil {
|
||
log.Error("svc.ListNotcie(%d,%d) error(%v)", page, pageSize, err)
|
||
c.JSON(nil, err)
|
||
return
|
||
}
|
||
res := map[string]interface{}{}
|
||
res["data"] = data
|
||
res["pager"] = map[string]interface{}{
|
||
"num": page,
|
||
"size": pageSize,
|
||
"total": total,
|
||
}
|
||
c.JSONMap(res, nil)
|
||
return
|
||
}
|
||
|
||
//panigate notice list
|
||
func listNotice2(c *bm.Context) {
|
||
var (
|
||
err error
|
||
page int64 = 1
|
||
pageSize = int64(conf.Conf.Reply.PageSize)
|
||
)
|
||
|
||
params := c.Request.Form
|
||
pageStr := params.Get("page")
|
||
pageSizeStr := params.Get("pagesize")
|
||
if pageStr != "" {
|
||
if page, err = strconv.ParseInt(pageStr, 10, 64); err != nil {
|
||
log.Warn("strconv.ParseInt(page:%s) error(%v)", pageStr, err)
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
if page < 1 {
|
||
page = 1
|
||
}
|
||
}
|
||
if pageSizeStr != "" {
|
||
if pageSize, err = strconv.ParseInt(pageSizeStr, 10, 64); err != nil || pageSize < 1 {
|
||
log.Warn("strconv.ParseInt(pagesize:%s) error(%v)", pageSizeStr, err)
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
}
|
||
data, total, err := rpSvc.ListNotice(c, page, pageSize)
|
||
if err != nil {
|
||
log.Error("svc.ListNotcie(%d,%d) error(%v)", page, pageSize, err)
|
||
c.JSON(nil, err)
|
||
return
|
||
}
|
||
res := map[string]interface{}{}
|
||
res["data"] = data
|
||
res["pager"] = model.Pager{Page: page, PageSize: pageSize, Total: total}
|
||
c.JSONMap(res, nil)
|
||
return
|
||
}
|
||
|
||
//return a notice detail
|
||
func getNotice(c *bm.Context) {
|
||
var (
|
||
err error
|
||
id uint64
|
||
)
|
||
|
||
params := c.Request.Form
|
||
idStr := params.Get("id")
|
||
if idStr == "" {
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
if id, err = strconv.ParseUint(idStr, 10, 32); err != nil {
|
||
log.Warn("strconv.ParseUint(id:%s) error(%v)", idStr, err)
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
data, err := rpSvc.GetNotice(c, uint32(id))
|
||
if err != nil {
|
||
log.Error("svc.GetNotice(%d) error(%v)", id, err)
|
||
c.JSON(nil, err)
|
||
return
|
||
}
|
||
if data == nil {
|
||
c.JSON(nil, ecode.NothingFound)
|
||
return
|
||
}
|
||
c.JSON(data, nil)
|
||
return
|
||
}
|
||
|
||
//update or create a notice
|
||
func editNotice(c *bm.Context) {
|
||
var (
|
||
err error
|
||
id uint64
|
||
plat uint64
|
||
condition uint64
|
||
version string
|
||
build uint64
|
||
title string
|
||
content string
|
||
link string
|
||
stime int64
|
||
etime int64
|
||
clientType string
|
||
)
|
||
|
||
params := c.Request.Form
|
||
idStr := params.Get("id")
|
||
platStr := params.Get("plat")
|
||
conditionStr := params.Get("condi")
|
||
version = params.Get("version")
|
||
buildStr := params.Get("build")
|
||
title = params.Get("title")
|
||
content = params.Get("content")
|
||
link = params.Get("link")
|
||
stimeStr := params.Get("stime")
|
||
etimeStr := params.Get("etime")
|
||
clientType = params.Get("client_type")
|
||
if platStr == "" || title == "" || content == "" || stimeStr == "" || etimeStr == "" {
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
if idStr != "" {
|
||
if id, err = strconv.ParseUint(idStr, 10, 32); err != nil {
|
||
log.Warn("strconv.ParseUint(id:%s) error(%v)", idStr, err)
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
}
|
||
if plat, err = strconv.ParseUint(platStr, 10, 8); err != nil {
|
||
log.Warn("strconv.ParseUint(plat:%s) error(%v)", platStr, err)
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
if conditionStr != "" {
|
||
if condition, err = strconv.ParseUint(conditionStr, 10, 8); err != nil {
|
||
log.Warn("strconv.ParseUint(condition:%s) error(%v)", conditionStr, err)
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
}
|
||
if buildStr != "" {
|
||
if build, err = strconv.ParseUint(buildStr, 10, 32); err != nil {
|
||
log.Warn("strconv.ParseUint(build:%s) error(%v)", buildStr, err)
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
}
|
||
var tempTime time.Time
|
||
if tempTime, err = time.Parse("2006-01-02 15:04:05", stimeStr); err != nil {
|
||
//error,so try to parse as unix timestamp again
|
||
stime, err = strconv.ParseInt(stimeStr, 10, 64)
|
||
if err != nil {
|
||
log.Warn("strconv.ParseUint(stime:%s) error(%v)", stimeStr, err)
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
} else {
|
||
//标准库的time.parse默认以UTC为标准转换成unix时间戳,所以需要减去8小时
|
||
stime = tempTime.Unix() - 8*3600
|
||
}
|
||
if tempTime, err = time.Parse("2006-01-02 15:04:05", etimeStr); err != nil {
|
||
//error,so try to parse as unix timestamp again
|
||
etime, err = strconv.ParseInt(etimeStr, 10, 64)
|
||
if err != nil {
|
||
log.Warn("strconv.ParseUint(etime:%s) error(%v)", etimeStr, err)
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
} else {
|
||
//标准库的time.parse默认以UTC为标准转换成unix时间戳,所以需要减去8小时
|
||
etime = tempTime.Unix() - 8*3600
|
||
}
|
||
//开始时间必须小于等于结束时间
|
||
if stime > etime {
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
nt := &model.Notice{
|
||
ID: uint32(id),
|
||
Plat: model.NoticePlat(plat),
|
||
Version: version,
|
||
Condition: model.NoticeCondition(condition),
|
||
Build: uint32(build),
|
||
Title: title,
|
||
Content: content,
|
||
Link: link,
|
||
StartTime: xtime.Time(stime),
|
||
EndTime: xtime.Time(etime),
|
||
ClientType: clientType,
|
||
}
|
||
if idStr == "" {
|
||
_, err = rpSvc.CreateNotice(c, nt)
|
||
if err != nil {
|
||
log.Error("svc.CreateNotice(%v) error(%v)", *nt, err)
|
||
c.JSON(nil, err)
|
||
return
|
||
}
|
||
} else {
|
||
err = rpSvc.UpdateNotice(c, nt)
|
||
if err != nil {
|
||
log.Error("svc.UpdateNotice(%v) error(%v)", *nt, err)
|
||
c.JSON(nil, err)
|
||
return
|
||
}
|
||
}
|
||
c.JSON(nil, nil)
|
||
return
|
||
}
|
||
|
||
func deleteNotice(c *bm.Context) {
|
||
var (
|
||
err error
|
||
id uint64
|
||
)
|
||
|
||
params := c.Request.Form
|
||
idStr := params.Get("id")
|
||
if idStr == "" {
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
if id, err = strconv.ParseUint(idStr, 10, 32); err != nil {
|
||
log.Warn("strconv.ParseUint(id:%s) error(%v)", idStr, err)
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
err = rpSvc.DeleteNotice(c, uint32(id))
|
||
if err != nil {
|
||
log.Error("svc.DeleteNotice(%d) error(%v)", id, err)
|
||
c.JSON(nil, err)
|
||
return
|
||
}
|
||
c.JSON(nil, nil)
|
||
return
|
||
}
|
||
|
||
func offlineNotice(c *bm.Context) {
|
||
|
||
var (
|
||
err error
|
||
id uint64
|
||
)
|
||
|
||
params := c.Request.Form
|
||
idStr := params.Get("id")
|
||
if idStr == "" {
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
if id, err = strconv.ParseUint(idStr, 10, 32); err != nil {
|
||
log.Warn("strconv.ParseUint(id:%s) error(%v)", idStr, err)
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
err = rpSvc.UpdateNoticeStatus(c, model.StatusOffline, uint32(id))
|
||
if err != nil {
|
||
log.Error("svc.UpdateNoticeStatus(%d) error(%v)", id, err)
|
||
c.JSON(nil, err)
|
||
return
|
||
}
|
||
c.JSON(nil, nil)
|
||
return
|
||
}
|
||
|
||
func onlineNotice(c *bm.Context) {
|
||
var (
|
||
err error
|
||
id uint64
|
||
)
|
||
|
||
params := c.Request.Form
|
||
idStr := params.Get("id")
|
||
if idStr == "" {
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
if id, err = strconv.ParseUint(idStr, 10, 32); err != nil {
|
||
log.Warn("strconv.ParseUint(id:%s) error(%v)", idStr, err)
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
err = rpSvc.UpdateNoticeStatus(c, model.StatusOnline, uint32(id))
|
||
if err != nil {
|
||
log.Error("svc.UpdateNoticeStatus(%d) error(%v)", id, err)
|
||
c.JSON(nil, err)
|
||
return
|
||
}
|
||
c.JSON(nil, nil)
|
||
return
|
||
}
|