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.
148 lines
3.2 KiB
148 lines
3.2 KiB
package http |
|
|
|
import ( |
|
"go-common/app/admin/main/tv/model" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
bm "go-common/library/net/http/blademaster" |
|
|
|
"github.com/jinzhu/gorm" |
|
) |
|
|
|
func chlInfo(c *bm.Context) { |
|
var ( |
|
req = c.Request.Form |
|
|
|
vid = parseInt(req.Get("id")) |
|
err error |
|
) |
|
exist := model.ChannelFmt{} |
|
if err = tvSrv.DB.Where("id=?", vid).Where("deleted!=?", _isDeleted).First(&exist).Error; err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
exist.MtimeFormat = tvSrv.TimeFormat(exist.Mtime) |
|
exist.Mtime = 0 |
|
c.JSON(exist, nil) |
|
} |
|
|
|
func chlList(c *bm.Context) { |
|
param := new(model.ReqChannel) |
|
if err := c.Bind(param); err != nil { |
|
return |
|
} |
|
c.JSON(tvSrv.ChlSplash(c, param)) |
|
} |
|
|
|
func chlEdit(c *bm.Context) { |
|
var ( |
|
req = c.Request.PostForm |
|
vid = parseInt(req.Get("id")) |
|
allowed bool |
|
err error |
|
) |
|
exist := model.Channel{} |
|
if err = tvSrv.DB.Where("id=?", vid).Where("deleted!=?", _isDeleted).First(&exist).Error; err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
alert, simple := validateChl(c) |
|
if alert != "" { |
|
renderErrMsg(c, ecode.RequestErr.Code(), alert) |
|
return |
|
} |
|
if allowed, _ = nameExist(simple.Title, int(vid)); !allowed { |
|
renderErrMsg(c, ecode.RequestErr.Code(), "Title exists") |
|
return |
|
} |
|
if err = tvSrv.DB.Model(&model.Channel{}).Where("id=?", vid).Update(simple).Error; err != nil { |
|
log.Error("tvSrv.saveChannel error(%v)", err) |
|
c.JSON(nil, err) |
|
return |
|
} |
|
c.JSON(nil, nil) |
|
} |
|
|
|
func chlAdd(c *bm.Context) { |
|
var ( |
|
err error |
|
allowed bool |
|
) |
|
alert, simple := validateChl(c) |
|
if alert != "" { |
|
renderErrMsg(c, ecode.RequestErr.Code(), alert) |
|
return |
|
} |
|
if allowed, _ = nameExist(simple.Title, 0); !allowed { |
|
renderErrMsg(c, ecode.RequestErr.Code(), _errTitleExist) |
|
return |
|
} |
|
if err = tvSrv.DB.Create(simple).Error; err != nil { |
|
log.Error("tvSrv.addChannel error(%v)", err) |
|
c.JSON(nil, err) |
|
return |
|
} |
|
c.JSON(nil, nil) |
|
} |
|
|
|
func chlDel(c *bm.Context) { |
|
var ( |
|
req = c.Request.PostForm |
|
|
|
vid = parseInt(req.Get("id")) |
|
err error |
|
) |
|
exist := model.Channel{} |
|
if err = tvSrv.DB.Where("id=?", vid).Where("deleted!=?", _isDeleted).First(&exist).Error; err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
if err = tvSrv.DB.Model(&model.Channel{}).Where("id=?", vid).Update(map[string]int{"deleted": _isDeleted}).Error; err != nil { |
|
log.Error("tvSrv.chlDel error(%v)", err) |
|
c.JSON(nil, err) |
|
return |
|
} |
|
c.JSON(nil, nil) |
|
} |
|
|
|
// avoid two same names in DB - conflict |
|
func nameExist(name string, myID int) (allowed bool, err error) { |
|
var ( |
|
exist = model.Channel{} |
|
db = tvSrv.DB.Where("title = ?", name).Where("deleted!=?", _isDeleted) |
|
) |
|
if myID != 0 { |
|
db = db.Where("id != ?", myID) |
|
} |
|
if err = db.First(&exist).Error; err != nil { |
|
if err != gorm.ErrRecordNotFound { |
|
log.Error("tvSrv.nameExist error(%v)", err) |
|
return |
|
} |
|
return true, nil |
|
} |
|
return false, nil |
|
} |
|
|
|
// validate Channel params |
|
func validateChl(c *bm.Context) (alert string, simple *model.Channel) { |
|
var ( |
|
req = c.Request.PostForm |
|
title = req.Get("title") |
|
desc = req.Get("desc") |
|
splash = req.Get("splash") |
|
) |
|
if title == "" { |
|
alert = "Channel Title can't be empty" |
|
return |
|
} |
|
if splash == "" { |
|
alert = "Splash can't be empty" |
|
return |
|
} |
|
return "", &model.Channel{ |
|
Title: title, |
|
Desc: desc, |
|
Splash: splash, |
|
} |
|
}
|
|
|