package provider import ( "context" "joybuywork/internal/repository/cache" "joybuywork/internal/repository/model" "joybuywork/internal/repository/mtype" "joybuywork/internal/utils/logic" "joybuywork/internal/utils/merr" "gorm.io/gen" ) type LangTitle struct { logic.Context cpn *model.FissionCampaign userLang string lang *model.FissionCampaignLang } // NewLangTitle 奖品发放验证 func NewLangTitle(ctx context.Context, cpn *model.FissionCampaign, userLang string) (*LangTitle, error) { lang := &LangTitle{ cpn: cpn, userLang: userLang, } lang.BaseInit(ctx, merr.NewBE(ctx)) err := lang.setLang() if err != nil { return nil, err } return lang, nil } // GetCondTitle 获取任务名称文案 func (s *LangTitle) GetCondTitle(condIds ...int64) (data map[int64]string, err error) { data = make(map[int64]string) l := len(condIds) if s.lang != nil { var idMap = make(map[int64]struct{}, l) for _, id := range condIds { idMap[id] = struct{}{} } for _, cond := range s.lang.GetConds() { if _, ok := idMap[cond.CondId]; !ok && l > 0 { continue } data[cond.CondId] = cond.Desc } return } m := s.GetDao().FissionCampaignCond var conds []gen.Condition if l > 0 { conds = append(conds, m.ID.In(condIds...)) } else { conds = append(conds, m.CampaignID.Eq(s.cpn.ID), m.WithContext(s.Ctx). Or(m.IsDel.Eq(mtype.No)). Or(m.IsDel.Eq(mtype.Yes), m.DelUse.Eq(mtype.Yes))) } list, err := m.WithContext(s.Ctx).Where(conds...).Find() if err != nil { err = s.BE().MysqlError(err) return } for _, cond := range list { data[cond.ID] = cond.Desc } return } // GetPageTitle 获取页面标题 func (s *LangTitle) GetPageTitle() (string, error) { if s.lang != nil { return s.lang.PageTitle, nil } style, err := cache.NewCampaignStyle(s.Ctx).FindByCampaignId(s.cpn.ID) if err != nil { return "", s.BE().CacheError(err) } if style != nil { return style.PageTitle, nil } oldConf, err := cache.NewCampaignConfig(s.Ctx).FindByCampaignId(s.cpn.ID) if err != nil { return "", s.BE().CacheError(err) } if oldConf != nil { return oldConf.PageTitle, nil } return "", s.BE().VerifyError("not found data") } func (s *LangTitle) setLang() (err error) { if s.userLang == s.cpn.GetLangMarks()[0] { return } s.lang, err = cache.NewCampaignLang(s.Ctx).FindByCampaignId(s.cpn.ID, s.userLang) if err != nil { err = s.BE().CacheError(err) return } return }