package service import ( "context" "errors" "icloudapp.cn/tools/repository/mysql" sEntity "icloudapp.cn/tools/service/entity" "icloudapp.cn/tools/service/model" ) type Fonts struct { ctx context.Context Base query *model.MFont } func NewFonts(ctx context.Context) *Fonts { model.SetDefault(mysql.DBConn) fonts := &Fonts{ctx: ctx} fonts.query = model.Font return fonts } func (f *Fonts) Info(ID int64) (*sEntity.Font, error) { return f.query.WithContext(f.ctx).Where(f.query.ID.Eq(ID)).First() } func (f *Fonts) Infos(IDS ...int64) ([]*sEntity.Font, error) { return f.query.WithContext(f.ctx).Where(f.query.ID.In(IDS...)).Find() } func (f *Fonts) InfoByHash(hash string) (*sEntity.Font, error) { return f.query.WithContext(f.ctx).Where(f.query.Hash.Eq(hash)).First() } func (f *Fonts) Add(fonts *sEntity.Font) (*sEntity.Font, error) { exist, err := f.InfoByHash(fonts.Hash) if err != nil { return nil, err } if exist.ID > 0 { if exist.Status == -1 { affected, err := f.query.WithContext(f.ctx).Where(f.query.ID.Eq(exist.ID)).Update(f.query.Status, -1) if err != nil { return nil, err } if affected.RowsAffected == 0 { return nil, errors.New("更新数据失败") } } return exist, nil } err = f.query.WithContext(f.ctx).Create(fonts) if err != nil { return nil, err } return fonts, nil }