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

add batch add ab from peer and up my

lejianwen 1 год назад
Родитель
Сommit
592b04746d

+ 10 - 9
http/controller/admin/addressBook.go

@@ -335,7 +335,11 @@ func (ct *AddressBook) BatchCreateFromPeers(c *gin.Context) {
335 335
 		response.Fail(c, 101, response.TranslateMsg(c, "ParamsError")+err.Error())
336 336
 		return
337 337
 	}
338
-	u := service.AllService.UserService.CurUser(c)
338
+
339
+	if f.UserId == 0 {
340
+		response.Fail(c, 101, response.TranslateMsg(c, "ParamsError"))
341
+		return
342
+	}
339 343
 
340 344
 	if f.CollectionId != 0 {
341 345
 		collection := service.AllService.AddressBookService.CollectionInfoById(f.CollectionId)
@@ -343,17 +347,13 @@ func (ct *AddressBook) BatchCreateFromPeers(c *gin.Context) {
343 347
 			response.Fail(c, 101, response.TranslateMsg(c, "ItemNotFound"))
344 348
 			return
345 349
 		}
346
-		if collection.UserId != u.Id {
347
-			response.Fail(c, 101, response.TranslateMsg(c, "NoAccess"))
348
-			return
349
-		}
350 350
 	}
351 351
 
352
-	peers := service.AllService.PeerService.List(1, 999, func(tx *gorm.DB) {
352
+	pl := int64(len(f.PeerIds))
353
+	peers := service.AllService.PeerService.List(1, uint(pl), func(tx *gorm.DB) {
353 354
 		tx.Where("row_id in ?", f.PeerIds)
354
-		tx.Where("user_id = ?", u.Id)
355 355
 	})
356
-	if peers.Total == 0 {
356
+	if peers.Total == 0 || pl != peers.Total {
357 357
 		response.Fail(c, 101, response.TranslateMsg(c, "ItemNotFound"))
358 358
 		return
359 359
 	}
@@ -363,7 +363,8 @@ func (ct *AddressBook) BatchCreateFromPeers(c *gin.Context) {
363 363
 		ab := service.AllService.AddressBookService.FromPeer(peer)
364 364
 		ab.Tags = tags
365 365
 		ab.CollectionId = f.CollectionId
366
-		ex := service.AllService.AddressBookService.InfoByUserIdAndIdAndCid(u.Id, ab.Id, ab.CollectionId)
366
+		ab.UserId = f.UserId
367
+		ex := service.AllService.AddressBookService.InfoByUserIdAndIdAndCid(f.UserId, ab.Id, ab.CollectionId)
367 368
 		if ex.RowId != 0 {
368 369
 			continue
369 370
 		}

+ 59 - 0
http/controller/admin/my/addressBook.go

@@ -0,0 +1,59 @@
1
+package my
2
+
3
+import (
4
+	"Gwen/http/request/admin"
5
+	"Gwen/http/response"
6
+	"Gwen/service"
7
+	"encoding/json"
8
+	"github.com/gin-gonic/gin"
9
+	"gorm.io/gorm"
10
+)
11
+
12
+type AddressBook struct{}
13
+
14
+func (ct *AddressBook) BatchCreateFromPeers(c *gin.Context) {
15
+	f := &admin.BatchCreateFromPeersForm{}
16
+	if err := c.ShouldBindJSON(f); err != nil {
17
+		response.Fail(c, 101, response.TranslateMsg(c, "ParamsError")+err.Error())
18
+		return
19
+	}
20
+	u := service.AllService.UserService.CurUser(c)
21
+
22
+	if f.CollectionId != 0 {
23
+		collection := service.AllService.AddressBookService.CollectionInfoById(f.CollectionId)
24
+		if collection.Id == 0 {
25
+			response.Fail(c, 101, response.TranslateMsg(c, "ItemNotFound"))
26
+			return
27
+		}
28
+		if collection.UserId != u.Id {
29
+			response.Fail(c, 101, response.TranslateMsg(c, "NoAccess"))
30
+			return
31
+		}
32
+	}
33
+	if len(f.PeerIds) == 0 {
34
+		response.Fail(c, 101, response.TranslateMsg(c, "ParamsError"))
35
+		return
36
+	}
37
+	pl := int64(len(f.PeerIds))
38
+	peers := service.AllService.PeerService.List(1, uint(pl), func(tx *gorm.DB) {
39
+		tx.Where("row_id in ?", f.PeerIds)
40
+		tx.Where("user_id = ?", u.Id)
41
+	})
42
+	if peers.Total == 0 || pl != peers.Total {
43
+		response.Fail(c, 101, response.TranslateMsg(c, "ItemNotFound"))
44
+		return
45
+	}
46
+
47
+	tags, _ := json.Marshal(f.Tags)
48
+	for _, peer := range peers.Peers {
49
+		ab := service.AllService.AddressBookService.FromPeer(peer)
50
+		ab.Tags = tags
51
+		ab.CollectionId = f.CollectionId
52
+		ex := service.AllService.AddressBookService.InfoByUserIdAndIdAndCid(u.Id, ab.Id, ab.CollectionId)
53
+		if ex.RowId != 0 {
54
+			continue
55
+		}
56
+		service.AllService.AddressBookService.Create(ab)
57
+	}
58
+	response.Success(c, nil)
59
+}

+ 1 - 0
http/request/admin/addressBook.go

@@ -127,6 +127,7 @@ type BatchCreateFromPeersForm struct {
127 127
 	CollectionId uint     `json:"collection_id"`
128 128
 	PeerIds      []uint   `json:"peer_ids"`
129 129
 	Tags         []string `json:"tags"`
130
+	UserId       uint     `json:"user_id"`
130 131
 }
131 132
 type BatchUpdateTagsForm struct {
132 133
 	RowIds []uint   `json:"row_ids"`

+ 9 - 5
http/router/admin.go

@@ -111,11 +111,12 @@ func AddressBookBind(rg *gin.RouterGroup) {
111 111
 		aR.POST("/update", cont.Update)
112 112
 		aR.POST("/delete", cont.Delete)
113 113
 		aR.POST("/shareByWebClient", cont.ShareByWebClient)
114
-		aR.POST("/batchCreateFromPeers", cont.BatchCreateFromPeers)
114
+
115 115
 		aR.POST("/batchUpdateTags", cont.BatchUpdateTags)
116 116
 
117 117
 		arp := aR.Use(middleware.AdminPrivilege())
118 118
 		arp.POST("/batchCreate", cont.BatchCreate)
119
+		arp.POST("/batchCreateFromPeers", cont.BatchCreateFromPeers)
119 120
 
120 121
 	}
121 122
 }
@@ -227,10 +228,13 @@ func FileBind(rg *gin.RouterGroup) {
227 228
 
228 229
 func MyBind(rg *gin.RouterGroup) {
229 230
 	{
230
-		sr := &my.ShareRecord{}
231
-		rg.GET("/my/share_record/list", sr.List)
232
-		rg.POST("/my/share_record/delete", sr.Delete)
233
-		rg.POST("/my/share_record/batchDelete", sr.BatchDelete)
231
+		msr := &my.ShareRecord{}
232
+		rg.GET("/my/share_record/list", msr.List)
233
+		rg.POST("/my/share_record/delete", msr.Delete)
234
+		rg.POST("/my/share_record/batchDelete", msr.BatchDelete)
235
+
236
+		mab := &my.AddressBook{}
237
+		rg.POST("/my/address_book/batchCreateFromPeers", mab.BatchCreateFromPeers)
234 238
 	}
235 239
 }
236 240