fonts.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package service
  2. import (
  3. "context"
  4. "errors"
  5. "icloudapp.cn/tools/repository/mysql"
  6. sEntity "icloudapp.cn/tools/service/entity"
  7. "icloudapp.cn/tools/service/model"
  8. )
  9. type Fonts struct {
  10. ctx context.Context
  11. Base
  12. query *model.MFont
  13. }
  14. func NewFonts(ctx context.Context) *Fonts {
  15. model.SetDefault(mysql.DBConn)
  16. fonts := &Fonts{ctx: ctx}
  17. fonts.query = model.Font
  18. return fonts
  19. }
  20. func (f *Fonts) Info(ID int64) (*sEntity.Font, error) {
  21. return f.query.WithContext(f.ctx).Where(f.query.ID.Eq(ID)).First()
  22. }
  23. func (f *Fonts) Infos(IDS ...int64) ([]*sEntity.Font, error) {
  24. return f.query.WithContext(f.ctx).Where(f.query.ID.In(IDS...)).Find()
  25. }
  26. func (f *Fonts) InfoByHash(hash string) (*sEntity.Font, error) {
  27. return f.query.WithContext(f.ctx).Where(f.query.Hash.Eq(hash)).First()
  28. }
  29. func (f *Fonts) Add(fonts *sEntity.Font) (*sEntity.Font, error) {
  30. exist, err := f.InfoByHash(fonts.Hash)
  31. if err != nil {
  32. return nil, err
  33. }
  34. if exist.ID > 0 {
  35. if exist.Status == -1 {
  36. affected, err := f.query.WithContext(f.ctx).Where(f.query.ID.Eq(exist.ID)).Update(f.query.Status, -1)
  37. if err != nil {
  38. return nil, err
  39. }
  40. if affected.RowsAffected == 0 {
  41. return nil, errors.New("更新数据失败")
  42. }
  43. }
  44. return exist, nil
  45. }
  46. err = f.query.WithContext(f.ctx).Create(fonts)
  47. if err != nil {
  48. return nil, err
  49. }
  50. return fonts, nil
  51. }