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 ProjectAd struct { Cache } func NewProjectAd(ctx context.Context) *ProjectAd { c := new(ProjectAd) c.init(ctx, &model.ProjectAd{}) return c } // FindByProjectId project_id 获取数据 func (c ProjectAd) FindByProjectId(projectId int64) (*model.ProjectAd, error) { data, err := c.get(c.projectIdKey(projectId), func() ([]byte, error) { m := dao.Q.ProjectAd data, err := m.WithContext(c.ctx).Where(m.ProjectID.Eq(projectId)).Take() if err = dbcheck.DbError(err); err != nil { return nil, err } return jsonm.MarshalCkZero(data) }) if err != nil { return nil, err } var ads *model.ProjectAd err = jsonm.Unmarshal(data, &ads) return ads, err } func (c ProjectAd) projectIdKey(projectId int64) string { return fmt.Sprintf("%s:%d", c.Prefix(), projectId) } // Clear 清理缓存 func (c ProjectAd) Clear(list ...*model.ProjectAd) error { var key []string for _, v := range list { key = append(key, c.projectIdKey(v.ProjectID)) } if len(key) > 0 { return app.Redis.Cache.Del(c.ctx, key...).Err() } return nil }