package cache import ( "context" "joybuywork/internal/app" "joybuywork/internal/plugins/jsonm" "joybuywork/internal/repository/dao" "joybuywork/internal/repository/dbcheck" "joybuywork/internal/repository/model" "joybuywork/internal/repository/mtype" "fmt" ) type CampaignLang struct { Cache } func NewCampaignLang(ctx context.Context) *CampaignLang { c := new(CampaignLang) c.init(ctx, &model.FissionCampaignLang{}) return c } // FindByCampaignId campaignId 获取数据 func (c CampaignLang) FindByCampaignId(campaignId int64, langMark string) (*model.FissionCampaignLang, error) { data, err := c.get(c.campaignIdKey(campaignId, langMark), func() ([]byte, error) { m := dao.Q.FissionCampaignLang data, err := m.WithContext(c.ctx).Where(m.CampaignID.Eq(campaignId), m.LangMark.Eq(langMark), m.IsDel.Eq(mtype.No)).Take() if err = dbcheck.DbError(err); err != nil { return nil, err } return jsonm.MarshalCkZero(data) }) if err != nil { return nil, err } var conf *model.FissionCampaignLang err = jsonm.Unmarshal(data, &conf) return conf, err } func (c CampaignLang) campaignIdKey(campaignId int64, langMark string) string { return fmt.Sprintf("%s:%d:%s", c.Prefix(), campaignId, langMark) } // Clear 清理缓存 func (c CampaignLang) Clear(vals ...*model.FissionCampaignLang) error { var key []string for _, v := range vals { key = append(key, c.campaignIdKey(v.CampaignID, v.LangMark)) } if len(key) > 0 { return app.Redis.Cache.Del(c.ctx, key...).Err() } return nil }