tag.go 2.2 KB

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