Просмотр исходного кода

delete the token when delete a peer

Tao Chen 1 год назад
Родитель
Сommit
6a7ef29089
2 измененных файлов с 37 добавлено и 3 удалено
  1. 27 3
      service/peer.go
  2. 10 0
      service/user.go

+ 27 - 3
service/peer.go

@@ -94,16 +94,40 @@ func (ps *PeerService) Create(u *model.Peer) error {
94 94
 	res := global.DB.Create(u).Error
95 95
 	return res
96 96
 }
97
+
98
+// Delete 删除, 同时也应该删除token
97 99
 func (ps *PeerService) Delete(u *model.Peer) error {
98
-	return global.DB.Delete(u).Error
100
+	uuid := u.Uuid
101
+	err := global.DB.Delete(u).Error
102
+	if err != nil {
103
+		return err
104
+	}
105
+	// 删除token
106
+	return AllService.UserService.FlushTokenByUuid(uuid)
107
+}
108
+
109
+// GetUuidListByIDs 根据ids获取uuid列表
110
+func (ps *PeerService) GetUuidListByIDs(ids []uint) ([]string, error) {
111
+	var uuids []string
112
+	err := global.DB.Model(&model.Peer{}).
113
+		Where("row_id in (?)", ids).
114
+		Pluck("uuid", &uuids).Error
115
+	return uuids, err
99 116
 }
100 117
 
101
-// BatchDelete
118
+// BatchDelete 批量删除, 同时也应该删除token
102 119
 func (ps *PeerService) BatchDelete(ids []uint) error {
103
-	return global.DB.Where("row_id in (?)", ids).Delete(&model.Peer{}).Error
120
+	uuids, err := ps.GetUuidListByIDs(ids)
121
+	err = global.DB.Where("row_id in (?)", ids).Delete(&model.Peer{}).Error
122
+	if err != nil {
123
+		return err
124
+	}
125
+	// 删除token
126
+	return AllService.UserService.FlushTokenByUuids(uuids)
104 127
 }
105 128
 
106 129
 // Update 更新
107 130
 func (ps *PeerService) Update(u *model.Peer) error {
108 131
 	return global.DB.Model(u).Updates(u).Error
109 132
 }
133
+

+ 10 - 0
service/user.go

@@ -220,6 +220,16 @@ func (us *UserService) FlushToken(u *model.User) error {
220 220
 	return global.DB.Where("user_id = ?", u.Id).Delete(&model.UserToken{}).Error
221 221
 }
222 222
 
223
+// FlushTokenByUuid 清空token
224
+func (us *UserService) FlushTokenByUuid(uuid string) error {
225
+	return global.DB.Where("device_uuid = ?", uuid).Delete(&model.UserToken{}).Error
226
+}
227
+
228
+// FlushTokenByUuids 清空token
229
+func (us *UserService) FlushTokenByUuids(uuids []string) error {
230
+	return global.DB.Where("device_uuid in (?)", uuids).Delete(&model.UserToken{}).Error
231
+}
232
+
223 233
 // UpdatePassword 更新密码
224 234
 func (us *UserService) UpdatePassword(u *model.User, password string) error {
225 235
 	u.Password = us.EncryptPassword(password)