tag.go 1.9 KB

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