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.
72 lines
1.7 KiB
72 lines
1.7 KiB
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 |
|
}
|
|
|