package cache import ( "context" "joybuywork/internal/app" "joybuywork/internal/plugins/jsonm" "joybuywork/internal/repository/dao" "joybuywork/internal/repository/dbcheck" "joybuywork/internal/repository/model" "fmt" ) type CompanyMade struct { Cache } func NewCompanyMade(ctx context.Context) *CompanyMade { c := new(CompanyMade) c.init(ctx, &model.CompanyMade{}) return c } // FindByUniqId id 获取数据 func (c CompanyMade) FindByUniqId(companyId int64, mark string) (*model.CompanyMade, error) { data, err := c.get(c.uniqIdKey(companyId, mark), func() ([]byte, error) { m := dao.Q.CompanyMade data, err := m.WithContext(c.ctx).Where(m.CompanyID.Eq(companyId), m.Mark.Eq(mark)).Take() if err = dbcheck.DbError(err); err != nil { return nil, err } return jsonm.MarshalCkZero(data) }) if err != nil { return nil, err } var info *model.CompanyMade err = jsonm.Unmarshal(data, &info) return info, err } func (c CompanyMade) uniqIdKey(companyId int64, mark string) string { return fmt.Sprintf("%s:company_id:%d:mark:%s", c.Prefix(), companyId, mark) } // Clear 清理缓存 func (c CompanyMade) Clear(campaigns ...*model.CompanyMade) error { var key []string for _, v := range campaigns { key = append(key, c.uniqIdKey(v.CompanyID, v.Mark)) } if len(key) > 0 { return app.Redis.Cache.Del(c.ctx, key...).Err() } return nil }