123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- package archive
- const (
- // ForbidRank 禁止排行
- ForbidRank = "rank"
- // ForbidDynamic 动态禁止
- ForbidDynamic = "dynamic"
- // ForbidRecommend 禁止推荐
- ForbidRecommend = "recommend"
- // ForbidShow 禁止展示
- ForbidShow = "show"
- // ForbidRankMain forbid rank main
- ForbidRankMain = 0
- // ForbidRankRecentArc forbid rank recent archive
- ForbidRankRecentArc = 1
- // ForbidRankAllArc forbid rank all archive
- ForbidRankAllArc = 2
- // ForbidDynamicMain forbid dynamic main
- ForbidDynamicMain = 0
- // ForbidRecommendMain forbid recomment main
- ForbidRecommendMain = 0
- // ForbidShowMain forbid show main
- ForbidShowMain = 0
- // ForbidShowMobile forbid show mobile
- ForbidShowMobile = 1
- // ForbidShowWeb forbid show web
- ForbidShowWeb = 2
- // ForbidShowOversea forbid show oversea
- ForbidShowOversea = 3
- // ForbidShowOnline forbid show online
- ForbidShowOnline = 4
- //ForbidAttrChannel forbid channel
- ForbidAttrChannel = 101
- //ForbidAttrHot forbid hot
- ForbidAttrHot = 102
- )
- var (
- _forbidBits = map[string]map[uint]string{
- ForbidRank: map[uint]string{
- ForbidRankMain: "所有排行禁止",
- ForbidRankRecentArc: "近期稿件排行禁止",
- ForbidRankAllArc: "全部稿件排行禁止",
- },
- ForbidDynamic: map[uint]string{
- ForbidDynamicMain: "所有动态禁止",
- },
- ForbidRecommend: map[uint]string{
- ForbidRecommendMain: "所有推荐禁止",
- },
- ForbidShow: map[uint]string{
- ForbidShowMain: "移动端最新/网页端最新/热度/在线等禁止",
- ForbidShowMobile: "移动端最新禁止",
- ForbidShowWeb: "网页端最新禁止",
- ForbidShowOversea: "海外禁止",
- ForbidShowOnline: "在线列表禁止",
- },
- }
- )
- // ForbidAttr forbid attribute
- type ForbidAttr struct {
- Aid int64 `json:"aid"`
- OnFlowID int64 `json:"on_flow_id"`
- RankV int32 `json:"-"`
- DynamicV int32 `json:"-"`
- RecommendV int32 `json:"-"`
- ShowV int32 `json:"-"`
- // specific
- Rank struct {
- Main int32 `json:"main"`
- RecentArc int32 `json:"recent_arc"`
- AllArc int32 `json:"all_arc"`
- } `json:"rank_attr"`
- Dynamic struct {
- Main int32 `json:"main"`
- } `json:"dynamic_attr"`
- Recommend struct {
- Main int32 `json:"main"`
- } `json:"recommend_attr"`
- Show struct {
- Main int32 `json:"main"`
- Mobile int32 `json:"mobile"`
- Web int32 `json:"web"`
- Oversea int32 `json:"oversea"`
- Online int32 `json:"online"`
- } `json:"show_attr"`
- }
- // Convert convert db value into attr.
- func (f *ForbidAttr) Convert() {
- // rank
- f.Rank.Main = f.RankV & 1
- f.Rank.RecentArc = (f.RankV >> 1) & 1
- f.Rank.AllArc = (f.RankV >> 2) & 1
- // dynamic
- f.Dynamic.Main = f.DynamicV & 1
- // recommend
- f.Recommend.Main = f.RecommendV & 1
- // show
- f.Show.Main = f.ShowV & 1
- f.Show.Mobile = (f.ShowV >> 1) & 1
- f.Show.Web = (f.ShowV >> 2) & 1
- f.Show.Oversea = (f.ShowV >> 3) & 1
- f.Show.Online = (f.ShowV >> 4) & 1
- }
- // Reverse reverse attr into db value.
- // func (f *ForbidAttr) Reverse() {
- // // rank
- // f.RankV = (f.Rank.AllArc << 2) | (f.Rank.RecentArc << 1) | f.Rank.Main
- // // dynamic
- // f.DynamicV = f.Dynamic.Main
- // // recommend
- // f.RecommendV = f.Recommend.Main
- // // show
- // f.ShowV = (f.Show.Online << 4) | (f.Show.Oversea << 3) | (f.Show.Web << 2) | (f.Show.Mobile << 1) | f.Show.Main
- // }
- // SetAttr set forbid attr.
- func (f *ForbidAttr) SetAttr(name string, v int32, bit uint) (change bool) {
- if name == ForbidRank {
- old := f.RankV
- f.RankV = f.RankV&(^(1 << bit)) | (v << bit)
- change = old == f.RankV
- } else if name == ForbidDynamic {
- old := f.DynamicV
- f.DynamicV = f.DynamicV&(^(1 << bit)) | (v << bit)
- change = old == f.DynamicV
- } else if name == ForbidRecommend {
- old := f.RecommendV
- f.RecommendV = f.RecommendV&(^(1 << bit)) | (v << bit)
- change = old == f.RecommendV
- } else if name == ForbidShow {
- old := f.ShowV
- f.ShowV = f.ShowV&(^(1 << bit)) | (v << bit)
- change = old == f.ShowV
- }
- return
- }
- // ForbidBitDesc return bit desc.
- func ForbidBitDesc(name string, bit uint) (desc string) {
- return _forbidBits[name][bit]
- }
|