go-common/app/admin/main/tv/dao/mango.go

73 lines
1.7 KiB
Go
Raw Normal View History

2019-04-22 10:49:16 +00:00
package dao
import (
"context"
"encoding/json"
"time"
"go-common/app/admin/main/tv/model"
"go-common/library/cache/memcache"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
xtime "go-common/library/time"
)
const (
_mangoKey = "mango_cms_recom"
_delRecom = "UPDATE mango_recom SET deleted = 1 WHERE id = ?"
_maxOrder = "SELECT MAX(rorder) AS ord FROM mango_recom WHERE deleted = 0"
)
//MangoRecom is used to set mango recom cache in MC
func (d *Dao) MangoRecom(c context.Context, ids []int64) (err error) {
conn := d.mc.Get(c)
defer conn.Close()
mcItem := &model.MRecomMC{
RIDs: ids,
Pubtime: xtime.Time(time.Now().Unix()),
}
itemJSON := &memcache.Item{
Key: _mangoKey,
Object: mcItem,
Flags: memcache.FlagJSON,
Expiration: 0,
}
if err = conn.Set(itemJSON); err != nil {
log.Error("MangoRecom Ids %v, Err %v", ids, err)
}
return
}
// GetMRecom get mango recom mc data
func (d *Dao) GetMRecom(c context.Context) (res *model.MRecomMC, err error) {
var item *memcache.Item
conn := d.mc.Get(c)
defer conn.Close()
if item, err = conn.Get(_mangoKey); err != nil {
log.Error("GetMRecom MangoKey, Err %v", _mangoKey, err)
return
}
err = json.Unmarshal(item.Value, &res)
return
}
// DelMRecom deletes an mango recom position
func (d *Dao) DelMRecom(c *bm.Context, id int64) (err error) {
if err = d.DB.Exec(_delRecom, id).Error; err != nil {
log.Error("DelMRecom Error %v", err)
}
return
}
// MaxOrder picks the max rorder from the table
func (d *Dao) MaxOrder(ctx context.Context) int {
var maxR = new(struct {
Ord int
})
if err := d.DB.Raw(_maxOrder).Scan(&maxR).Error; err != nil {
log.Error("MaxOrder Error %v", err)
return 0
}
return maxR.Ord
}