tag.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package service
  2. import (
  3. "Gwen/global"
  4. "Gwen/model"
  5. "gorm.io/gorm"
  6. )
  7. type TagService struct {
  8. }
  9. func (s *TagService) Info(id uint) *model.Tag {
  10. p := &model.Tag{}
  11. global.DB.Where("id = ?", id).First(p)
  12. return p
  13. }
  14. func (s *TagService) ListByUserId(userId uint) (res *model.TagList) {
  15. res = s.List(1, 1000, func(tx *gorm.DB) {
  16. tx.Where("user_id = ?", userId)
  17. })
  18. return
  19. }
  20. func (s *TagService) UpdateTags(userId uint, tags map[string]uint) {
  21. tx := global.DB.Begin()
  22. //先查询所有tag
  23. var allTags []*model.Tag
  24. tx.Where("user_id = ?", userId).Find(&allTags)
  25. for _, t := range allTags {
  26. if _, ok := tags[t.Name]; !ok {
  27. //删除
  28. tx.Delete(t)
  29. } else {
  30. if tags[t.Name] != t.Color {
  31. //更新
  32. t.Color = tags[t.Name]
  33. tx.Save(t)
  34. }
  35. //移除
  36. delete(tags, t.Name)
  37. }
  38. }
  39. //新增
  40. for tag, color := range tags {
  41. t := &model.Tag{}
  42. t.Name = tag
  43. t.Color = color
  44. t.UserId = userId
  45. tx.Create(t)
  46. }
  47. tx.Commit()
  48. }
  49. // InfoById 根据用户id取用户信息
  50. func (t *TagService) InfoById(id uint) *model.Tag {
  51. u := &model.Tag{}
  52. global.DB.Where("id = ?", id).First(u)
  53. return u
  54. }
  55. func (t *TagService) List(page, pageSize uint, where func(tx *gorm.DB)) (res *model.TagList) {
  56. res = &model.TagList{}
  57. res.Page = int64(page)
  58. res.PageSize = int64(pageSize)
  59. tx := global.DB.Model(&model.Tag{})
  60. if where != nil {
  61. where(tx)
  62. }
  63. tx.Count(&res.Total)
  64. tx.Scopes(Paginate(page, pageSize))
  65. tx.Find(&res.Tags)
  66. return
  67. }
  68. // Create 创建
  69. func (t *TagService) Create(u *model.Tag) error {
  70. res := global.DB.Create(u).Error
  71. return res
  72. }
  73. func (t *TagService) Delete(u *model.Tag) error {
  74. return global.DB.Delete(u).Error
  75. }
  76. // Update 更新
  77. func (t *TagService) Update(u *model.Tag) error {
  78. return global.DB.Model(u).Updates(u).Error
  79. }