You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
2.4 KiB
Go
122 lines
2.4 KiB
Go
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
|
|
}
|