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.

62 lines
1.3 KiB
Go

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
}