123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309 |
- package http
- import (
- "go-common/app/admin/main/creative/model/operation"
- "go-common/library/ecode"
- "go-common/library/log"
- bm "go-common/library/net/http/blademaster"
- "go-common/library/net/http/blademaster/render"
- "net/http"
- "time"
- )
- var (
- typesMap = map[int8]int8{
- 0: 0, // 显示
- 1: 1, // 隐藏
- 2: 2, // 全部
- }
- platformMap = map[int8]int8{
- 0: 0, // web+app
- 1: 1, // app
- 2: 2, // web
- 100: 100, // 全平台
- }
- )
- func viewNotice(c *bm.Context) {
- var (
- err error
- info = &operation.Operation{}
- )
- v := new(struct {
- ID int64 `form:"id"`
- })
- if err = c.Bind(v); err != nil {
- return
- }
- if v.ID == 0 {
- c.JSON(nil, ecode.RequestErr)
- return
- }
- if err = svc.DB.Debug().Model(&operation.Operation{}).First(info, v.ID).Error; err != nil {
- c.JSON(nil, err)
- return
- }
- if info.ID == 0 {
- c.JSON(nil, ecode.NothingFound)
- } else {
- layout := "2006-01-02 15:04:05"
- ftime, _ := time.Parse(time.RFC3339, info.Stime)
- info.Stime = ftime.Format(layout)
- ftime, _ = time.Parse(time.RFC3339, info.Etime)
- info.Etime = ftime.Format(layout)
- ftime, _ = time.Parse(time.RFC3339, info.Ctime)
- info.Ctime = ftime.Format(layout)
- ftime, _ = time.Parse(time.RFC3339, info.Mtime)
- info.Mtime = ftime.Format(layout)
- ftime, _ = time.Parse(time.RFC3339, info.Dtime)
- info.Dtime = ftime.Format(layout)
- c.JSON(info, nil)
- }
- }
- func listNotice(c *bm.Context) {
- var (
- err error
- ops []*operation.Operation
- total int
- )
- v := new(struct {
- Type int8 `form:"type"`
- Platform int8 `form:"platform"`
- Page int `form:"page" validate:"min=1"`
- PageSize int `form:"pagesize" validate:"min=1"`
- })
- if err = c.Bind(v); err != nil {
- return
- }
- if v.Page < 1 {
- v.Page = 1
- }
- if v.PageSize < 20 {
- v.PageSize = 20
- }
- if _, ok := typesMap[v.Type]; !ok {
- data := map[string]interface{}{
- "code": ecode.RequestErr,
- "message": "forbid request with wrong type enum value",
- }
- c.Render(http.StatusOK, render.MapJSON(data))
- return
- }
- if _, ok := platformMap[v.Platform]; !ok {
- data := map[string]interface{}{
- "code": ecode.RequestErr,
- "message": "forbid request with wrong platform enum value",
- }
- c.Render(http.StatusOK, render.MapJSON(data))
- return
- }
- now := time.Now().Format("2006-01-02 15:04:05")
- where := " dtime = '0000-00-00 00:00:00' AND type = 'play' AND platform = ?"
- if v.Platform == 100 {
- where = " dtime = '0000-00-00 00:00:00' AND type = 'play' "
- }
- if v.Type == 0 {
- where += " AND (stime < ? AND etime > ?) "
- } else if v.Type == 1 {
- where += " AND (stime > ? OR etime < ?) "
- } else if v.Type == 2 {
- where += " AND 1=1 "
- }
- if v.Type == 2 {
- if v.Platform == 100 {
- if err = svc.DB.Debug().Model(&operation.Operation{}).Order("rank ASC").Offset((v.Page-1)*v.PageSize).Limit(v.PageSize).Find(&ops, where).Error; err != nil {
- c.JSON(nil, err)
- return
- }
- svc.DB.Debug().Model(&operation.Operation{}).Where(where).Count(&total)
- } else {
- if err = svc.DB.Debug().Model(&operation.Operation{}).Order("rank ASC").Offset((v.Page-1)*v.PageSize).Limit(v.PageSize).Find(&ops, where, v.Platform).Error; err != nil {
- c.JSON(nil, err)
- return
- }
- svc.DB.Debug().Model(&operation.Operation{}).Where(where, v.Platform).Count(&total)
- }
- } else {
- if v.Platform == 100 {
- if err = svc.DB.Debug().Model(&operation.Operation{}).Order("rank ASC").Offset((v.Page-1)*v.PageSize).Limit(v.PageSize).Find(&ops, where, now, now).Error; err != nil {
- c.JSON(nil, err)
- return
- }
- svc.DB.Debug().Model(&operation.Operation{}).Where(where, now, now).Count(&total)
- } else {
- if err = svc.DB.Debug().Model(&operation.Operation{}).Order("rank ASC").Offset((v.Page-1)*v.PageSize).Limit(v.PageSize).Find(&ops, where, v.Platform, now, now).Error; err != nil {
- c.JSON(nil, err)
- return
- }
- svc.DB.Debug().Model(&operation.Operation{}).Where(where, v.Platform, now, now).Count(&total)
- }
- }
- var opsView []*operation.ViewOperation
- for _, v := range ops {
- var (
- status string
- timeNow = time.Now()
- stime, _ = time.Parse(time.RFC3339, v.Stime)
- etime, _ = time.Parse(time.RFC3339, v.Etime)
- )
- if time.Now().Before(etime) && timeNow.After(stime) {
- status = "显示"
- } else {
- status = "隐藏"
- }
- opsView = append(opsView, &operation.ViewOperation{
- ID: v.ID,
- Type: v.Type,
- Ads: v.Ads,
- Platform: v.Platform,
- Rank: v.Rank,
- Pic: v.Pic,
- Link: v.Link,
- Content: v.Content,
- Username: v.Username,
- Remark: v.Remark,
- Note: v.Note,
- AppPic: v.AppPic,
- Stime: v.Stime,
- Etime: v.Etime,
- Ctime: v.Ctime,
- Mtime: v.Mtime,
- Dtime: v.Dtime,
- Status: status,
- })
- }
- c.Render(http.StatusOK, render.MapJSON(map[string]interface{}{
- "code": 0,
- "message": "0",
- "data": opsView,
- "pager": map[string]int{
- "page": v.Page,
- "pagesize": v.PageSize,
- "total": total,
- },
- }))
- }
- func addNotice(c *bm.Context) {
- var (
- err error
- )
- v := new(struct {
- Ads int8 `form:"ads" `
- Rank int8 `form:"rank"`
- Pic string `form:"pic" validate:"required"`
- Link string `form:"link" validate:"required"`
- Content string `form:"content" validate:"required"`
- Username string `form:"username" validate:"required"`
- Remark string `form:"remark"`
- Note string `form:"note"`
- AppPic string `form:"app_pic" validate:"required"`
- Platform int8 `form:"platform"`
- Stime string `form:"stime" validate:"required"`
- Etime string `form:"etime" validate:"required"`
- })
- if err = c.Bind(v); err != nil {
- return
- }
- m := &operation.Operation{
- Type: "play",
- Ads: v.Ads,
- Rank: v.Rank,
- Pic: v.Pic,
- Link: v.Link,
- Content: v.Content,
- Username: v.Username,
- Remark: v.Remark,
- Note: v.Note,
- AppPic: v.AppPic,
- Platform: v.Platform,
- Ctime: time.Now().Format("2006-01-02 15:04:05"),
- Stime: v.Stime,
- Etime: v.Etime,
- }
- db := svc.DB.Debug().Model(&operation.Operation{}).Create(m)
- if err = db.Error; err != nil {
- log.Error("creativeSvc.Operation error(%v)", err)
- c.JSON(nil, ecode.RequestErr)
- return
- }
- c.JSON(map[string]interface{}{
- "id": db.Value.(*operation.Operation).ID,
- }, nil)
- }
- func upNotice(c *bm.Context) {
- var (
- op = &operation.Operation{}
- err error
- )
- v := new(struct {
- ID int64 `form:"id"`
- Ads int8 `form:"ads"`
- Platform int8 `form:"platform"`
- Rank int8 `form:"rank"`
- Pic string `form:"pic"`
- Link string `form:"link"`
- Content string `form:"content"`
- Username string `form:"username"`
- Remark string `form:"remark"`
- Note string `form:"note"`
- AppPic string `form:"app_pic"`
- Stime string `form:"stime"`
- Etime string `form:"etime"`
- })
- if err = c.Bind(v); err != nil {
- return
- }
- if v.ID == 0 {
- c.JSON(nil, ecode.RequestErr)
- return
- }
- if err = svc.DB.Debug().Model(&operation.Operation{}).Find(op, v.ID).Error; err != nil {
- c.JSON(nil, err)
- return
- }
- if err = svc.DB.Debug().Model(&operation.Operation{ID: v.ID}).Update(map[string]interface {
- }{
- "id": v.ID,
- "ads": v.Ads,
- "rank": v.Rank,
- "pic": v.Pic,
- "link": v.Link,
- "content": v.Content,
- "username": v.Username,
- "remark": v.Remark,
- "note": v.Note,
- "app_pic": v.AppPic,
- "platform": v.Platform,
- "mtime": time.Now().Format("2006-01-02 15:04:05"),
- "stime": v.Stime,
- "etime": v.Etime,
- }).Error; err != nil {
- log.Error("svc.save error(%v)", err)
- }
- c.JSON(nil, err)
- }
- func delNotice(c *bm.Context) {
- var (
- op = &operation.Operation{}
- err error
- )
- if err = c.Bind(op); err != nil {
- return
- }
- if op.ID == 0 {
- c.JSON(nil, ecode.RequestErr)
- return
- }
- if err = svc.DB.Debug().Model(&operation.Operation{}).Find(op, op.ID).Error; err != nil {
- c.JSON(nil, err)
- return
- }
- if err = svc.DB.Debug().Model(&operation.Operation{ID: op.ID}).Update("dtime", time.Now().Format("2006-01-02 15:04:05")).Error; err != nil {
- log.Error("svc.del Notice error(%v)", err)
- }
- c.JSON(nil, err)
- }
|