package free_trial import ( "cls/internal/domain/free_trial" "cls/pkg/logger" "cls/pkg/util/page" "cls/pkg/xorm_engine" "errors" "time" "xorm.io/builder" ) // FreeTrialRepositoryORM 免费试读仓储实现 type FreeTrialRepositoryORM struct { engine *xorm_engine.Engine log logger.Logger } var _ free_trial.FreeTrialRepository = (*FreeTrialRepositoryORM)(nil) // NewRepository 创建免费试读仓储 func NewFreeTrialRepositoryORM(engine *xorm_engine.Engine, log logger.New) free_trial.FreeTrialRepository { return &FreeTrialRepositoryORM{ engine: engine, log: log("cls:repository:free_trial"), } } // Save 保存免费试读 func (f *FreeTrialRepositoryORM) Save(trial *free_trial.FreeTrial) error { _, err := f.engine.Insert(trial) if err != nil { f.log.Error(err) } return err } // FindByID 根据ID查找试读记录 func (f *FreeTrialRepositoryORM) FindByID(id uint64) (*free_trial.FreeTrial, error) { trial := &free_trial.FreeTrial{} has, err := f.engine.Where(builder.Eq{"id": id}).Get(trial) if err != nil { f.log.Error(err.Error()) return nil, err } if !has { f.log.Errorf("未找到相关数据【%d】", id) return nil, errors.New("记录不存在") } return trial, nil } // FindByArticleID 根据文章ID查找试读记录 func (f *FreeTrialRepositoryORM) FindByArticleID(articleID uint64) (*free_trial.FreeTrial, error) { trial := &free_trial.FreeTrial{} has, err := f.engine.Where(builder.Eq{"article_id": articleID}).Get(trial) if err != nil { f.log.Error(err.Error()) return nil, err } if !has { f.log.Errorf("未找到相关数据【%d】", articleID) return nil, errors.New("记录不存在") } return trial, nil } // FindAll 查询试读记录列表 func (f *FreeTrialRepositoryORM) FindAll(page *page.Page, conds []builder.Cond) error { return f.engine.FindAll(page, &free_trial.FreeTrial{}, builder.And(conds...)) } // Delete 删除试读记录 func (f *FreeTrialRepositoryORM) Delete(id uint64) error { _, err := f.engine.Delete(&free_trial.FreeTrial{}, "id = ?", id) if err != nil { f.log.Error(err) } return err } func (f *FreeTrialRepositoryORM) GetValidityData() ([]*free_trial.FreeTrial, error) { data := make([]*free_trial.FreeTrial, 0) return data, f.engine.Where(builder.Lt{"ctime": time.Now().AddDate(0, 0, -7)}).Limit(20).Find(&data) }