Browse Source

wip:订单编码池初始化

wangshan 1 year ago
parent
commit
6023536931

+ 3 - 3
go.mod

@@ -5,9 +5,8 @@ go 1.20
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20240523083821-42a82b37ae20
 	app.yhyue.com/moapp/jyfs v0.0.0-20231024061508-480c270480d4
-	app.yhyue.com/moapp/jypkg v1.20.1
+	app.yhyue.com/moapp/jypkg v1.21.4
 	github.com/gogf/gf/v2 v2.7.1
-	github.com/golang/protobuf v1.5.4
 	github.com/zeromicro/go-zero v1.6.4
 	google.golang.org/grpc v1.63.2
 	google.golang.org/protobuf v1.33.0
@@ -21,7 +20,7 @@ require (
 	app.yhyue.com/moapp/message v0.0.0-20231204024949-8c7145bfc161 // indirect
 	bp.jydev.jianyu360.cn/BaseService/entManageApplication v0.0.0-20231226074509-942d80dc34eb // indirect
 	bp.jydev.jianyu360.cn/BaseService/jyMicroservices v0.0.2 // indirect
-	bp.jydev.jianyu360.cn/BaseService/powerCheckCenter v0.0.0-20231222060155-36e225b61353 // indirect
+	bp.jydev.jianyu360.cn/BaseService/powerCheckCenter v0.0.0-20240603091545-83ceaad11e6b // indirect
 	bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.1.3 // indirect
 	bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.16 // indirect
 	filippo.io/edwards25519 v1.1.0 // indirect
@@ -46,6 +45,7 @@ require (
 	github.com/go-sql-driver/mysql v1.8.1 // indirect
 	github.com/gogo/protobuf v1.3.2 // indirect
 	github.com/golang/mock v1.6.0 // indirect
+	github.com/golang/protobuf v1.5.4 // indirect
 	github.com/golang/snappy v0.0.4 // indirect
 	github.com/gomodule/redigo v2.0.0+incompatible // indirect
 	github.com/google/gnostic-models v0.6.8 // indirect

+ 4 - 4
go.sum

@@ -19,8 +19,8 @@ app.yhyue.com/moapp/jybase v0.0.0-20240523083821-42a82b37ae20 h1:F1ZHkzo7yHp5eNr
 app.yhyue.com/moapp/jybase v0.0.0-20240523083821-42a82b37ae20/go.mod h1:XHNATN6tsJKHdCB0DbUtFdPPHXexTUFyB3RlO+lUUoM=
 app.yhyue.com/moapp/jyfs v0.0.0-20231024061508-480c270480d4 h1:5oCyV5lZ65iYTx0jts6qsrM8xTc2dbEnVd7qqnUzfy0=
 app.yhyue.com/moapp/jyfs v0.0.0-20231024061508-480c270480d4/go.mod h1:61hzZ3dZHXL28BNl8BOgZsvM2S5UVY5YFzOkEUPrSu4=
-app.yhyue.com/moapp/jypkg v1.20.1 h1:VbslvnZTOu1srmZvEJKS2dAmWnCrnNbUm6CPTuqgY00=
-app.yhyue.com/moapp/jypkg v1.20.1/go.mod h1:b3+0Q50iZYNaiYn7yR9bIIvIEsPvSy5figX7riSi/n4=
+app.yhyue.com/moapp/jypkg v1.21.4 h1:NApb2EOlUkncX9yjMjKDFyOXKK66vOMJ3HprzMx8alc=
+app.yhyue.com/moapp/jypkg v1.21.4/go.mod h1:wyJeNc8I9R5799tqch7n8SEZrB0s8nmNou0brBh91w4=
 app.yhyue.com/moapp/message v0.0.0-20231204024949-8c7145bfc161 h1:WGi4OEIoqw6NpNFGioUEBZnjK9aBa+xJqf/5WY+QyhM=
 app.yhyue.com/moapp/message v0.0.0-20231204024949-8c7145bfc161/go.mod h1:0Oj8SB4pVjdCLD28sy2zyM3hS0WHGpNuVcakLW43GmI=
 bp.jydev.jianyu360.cn/BP/jynsq v0.0.0-20220222052708-ebc43af90698/go.mod h1:ojo/AUH9Yr1wzarEjOaNMkj1Cet/9r8IgLyba64Z52E=
@@ -30,8 +30,8 @@ bp.jydev.jianyu360.cn/BaseService/gateway v0.0.0-20220419090715-88ddb32961be/go.
 bp.jydev.jianyu360.cn/BaseService/gateway v1.3.4/go.mod h1:BMLd/5wb3BIEGhnEgF9y1sJN9P5/Dw9kYsoiE9V8I9g=
 bp.jydev.jianyu360.cn/BaseService/jyMicroservices v0.0.2 h1:Qi8C7gZeR7+kjOtSl9ilR5HwbjCe8GO1RuotFb4+kFA=
 bp.jydev.jianyu360.cn/BaseService/jyMicroservices v0.0.2/go.mod h1:v8y7FCbkKEIRP4Ie9ZM8NtoRP+Fk4O3C1hnexNusYIQ=
-bp.jydev.jianyu360.cn/BaseService/powerCheckCenter v0.0.0-20231222060155-36e225b61353 h1:QnkyOQ0tHVaPmtYx0xcCKzwBrUEasWH+nQ3qVnD0XnI=
-bp.jydev.jianyu360.cn/BaseService/powerCheckCenter v0.0.0-20231222060155-36e225b61353/go.mod h1:rCCaOSWBYfQabf/yIvSVheSPtN2THnHeTl2J5/RrcuU=
+bp.jydev.jianyu360.cn/BaseService/powerCheckCenter v0.0.0-20240603091545-83ceaad11e6b h1:6f/if8nVoR89n7RbgFEniiUqt4QpqJNQX2kS2JJHDEM=
+bp.jydev.jianyu360.cn/BaseService/powerCheckCenter v0.0.0-20240603091545-83ceaad11e6b/go.mod h1:rCCaOSWBYfQabf/yIvSVheSPtN2THnHeTl2J5/RrcuU=
 bp.jydev.jianyu360.cn/BaseService/pushpkg v0.0.0-20230911091604-2faa31032743/go.mod h1:1SQIPPL5Ya5BzQdByFKtTkXrXTWBv+PDqWIhNknLnZw=
 bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220418005748-8ba5d936dd53/go.mod h1:E5lcDI3k4FESLxiAetCfWQTq8qfpy9cv0yN1oKoEO34=
 bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220419023723-0b32d4a41751/go.mod h1:6KL5LMEku83uRbre0W/bj5kXG2I6pJGBFtktmtp51yM=

+ 1 - 1
rpc/partnerlib/crontab/service/docinInfo.go

@@ -86,7 +86,7 @@ func InsertDocinInfos(b []byte) (err error, lastId int64, expectTotal, actualTot
 					"docSummary":   v.Desc,
 					"docTags":      strings.Join(docTags, ","),
 					"downTimes":    v.DownloadCount,
-					"previewImgId": v.ProductId,
+					"previewImgId": common.InterfaceToStr(v.ProductId),
 					"price":        price,
 					"uploadDate":   date.NowFormat(date.Date_Full_Layout),
 					"viewTimes":    v.VisitCount,

+ 1 - 1
rpc/partnerlib/etc/partnerlib.yaml

@@ -1,5 +1,5 @@
 Name: jydocs.partnerlib.rpc
-ListenOn: 127.0.0.1:8082
+ListenOn: 127.0.0.1:8087
 WebRpcPort: 8185
 Etcd:
   Hosts:

+ 2 - 1
rpc/partnerlib/init/init.go

@@ -4,7 +4,7 @@ import (
 	"app.yhyue.com/moapp/jy_docs/rpc/partnerlib/internal/config"
 	"app.yhyue.com/moapp/jy_docs/services/partner"
 	jyDocsRpcUtil "app.yhyue.com/moapp/jy_docs/services/util"
-	_ "app.yhyue.com/moapp/jypkg/public"
+	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
 	"flag"
 	"github.com/zeromicro/go-zero/core/conf"
 )
@@ -32,6 +32,7 @@ func init() {
 		jyDocsRpcUtil.InitMongo(C.Mongo)
 		jyDocsRpcUtil.InitOss(C.FileSystemConf)
 	}
+	jy.OrderCodePoolInit()
 	//初始化 分类对应关系
 	go partner.InitDocClass()
 }

BIN
rpc/partnerlib/partner.exe


+ 2 - 2
rpc/partnerlib/util/util.go

@@ -2,7 +2,7 @@ package util
 
 import (
 	"app.yhyue.com/moapp/jybase/common"
-	"app.yhyue.com/moapp/jypkg/public"
+	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
 	"crypto/sha256"
 	"fmt"
 )
@@ -19,5 +19,5 @@ func GetHashKey(bs []byte) string {
 
 // 创建订单号
 func GetOrderCode(name string) string {
-	return fmt.Sprintf("%s-%s", name, <-public.VarOrderCode.Pool)
+	return fmt.Sprintf("%s-%s", name, <-jy.VarOrderCode.Pool)
 }

+ 6 - 7
rpc/stdlib/test/doc_test.go

@@ -7,14 +7,13 @@ import (
 	"time"
 
 	"app.yhyue.com/moapp/jy_docs/rpc/stdlib/stdlib"
-	"app.yhyue.com/moapp/jy_docs/rpc/stdlib/stdlibclient"
 	"github.com/zeromicro/go-zero/core/discov"
 	"github.com/zeromicro/go-zero/zrpc"
 )
 
 func Test_DocOn(t *testing.T) {
 	ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
-	std := stdlibclient.NewStdlib(zrpc.MustNewClient(zrpc.RpcClientConf{Etcd: discov.EtcdConf{Hosts: []string{"192.168.3.240:2379"}, Key: "jydocs.stdlib.rpc"}}))
+	std := stdlib.NewStdlib(zrpc.MustNewClient(zrpc.RpcClientConf{Etcd: discov.EtcdConf{Hosts: []string{"192.168.3.240:2379"}, Key: "jydocs.stdlib.rpc"}}))
 	req := &stdlib.DocChangeReq{Id: "123", Reason: 1, AppId: "app_id_123"}
 	res, err := std.DocOn(ctx, req)
 	log.Println("err ", err)
@@ -26,7 +25,7 @@ func Test_DocOn(t *testing.T) {
 }
 func Test_DocOff(t *testing.T) {
 	ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
-	std := stdlibclient.NewStdlib(zrpc.MustNewClient(zrpc.RpcClientConf{Etcd: discov.EtcdConf{Hosts: []string{"192.168.3.240:2379"}, Key: "jydocs.stdlib.rpc"}}))
+	std := stdlib.NewStdlib(zrpc.MustNewClient(zrpc.RpcClientConf{Etcd: discov.EtcdConf{Hosts: []string{"192.168.3.240:2379"}, Key: "jydocs.stdlib.rpc"}}))
 	req := &stdlib.DocChangeReq{Id: "123", Reason: 10, AppId: "app_id_123"}
 	res, err := std.DocOff(ctx, req)
 	log.Println("err ", err)
@@ -41,7 +40,7 @@ func Test_DocOff(t *testing.T) {
 
 func Test_DocActivity(t *testing.T) {
 	ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
-	std := stdlibclient.NewStdlib(zrpc.MustNewClient(zrpc.RpcClientConf{Etcd: discov.EtcdConf{Hosts: []string{"192.168.3.240:2379"}, Key: "jydocs.stdlib.rpc"}}))
+	std := stdlib.NewStdlib(zrpc.MustNewClient(zrpc.RpcClientConf{Etcd: discov.EtcdConf{Hosts: []string{"192.168.3.240:2379"}, Key: "jydocs.stdlib.rpc"}}))
 	req := &stdlib.DocActivityReq{PageNum: 1, PageSize: 10, AppId: "10000", ActivityId: 3, UserId: "5e8eb60ae138234b4f91aacf"}
 	res, err := std.DocActivity(ctx, req)
 	log.Println("err ", err)
@@ -53,7 +52,7 @@ func Test_DocActivity(t *testing.T) {
 
 func Test_DocStatistics(t *testing.T) {
 	ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
-	std := stdlibclient.NewStdlib(zrpc.MustNewClient(zrpc.RpcClientConf{Etcd: discov.EtcdConf{Hosts: []string{"192.168.3.240:2379"}, Key: "jydocs.stdlib.rpc"}}))
+	std := stdlib.NewStdlib(zrpc.MustNewClient(zrpc.RpcClientConf{Etcd: discov.EtcdConf{Hosts: []string{"192.168.3.240:2379"}, Key: "jydocs.stdlib.rpc"}}))
 	req := &stdlib.DocStatisticsReq{DocId: "123", DocStatisticsType: 1, AppId: "app_id_123"}
 	res, err := std.DocStatistics(ctx, req)
 	log.Println("err ", err)
@@ -62,7 +61,7 @@ func Test_DocStatistics(t *testing.T) {
 
 func Test_DocGetCheck(t *testing.T) {
 	ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
-	std := stdlibclient.NewStdlib(zrpc.MustNewClient(zrpc.RpcClientConf{Etcd: discov.EtcdConf{Hosts: []string{"192.168.3.240:2379"}, Key: "jydocs.stdlib.rpc"}}))
+	std := stdlib.NewStdlib(zrpc.MustNewClient(zrpc.RpcClientConf{Etcd: discov.EtcdConf{Hosts: []string{"192.168.3.240:2379"}, Key: "jydocs.stdlib.rpc"}}))
 	req := &stdlib.DocGetCheckReq{DocId: "001d00e2-887b-11eb-8699-0050568f51e7", UserId: "5e8eb60ae138234b4f91aacf", AppId: "10000"}
 	res, err := std.DocGetCheck(ctx, req)
 	log.Println("err ", err)
@@ -71,7 +70,7 @@ func Test_DocGetCheck(t *testing.T) {
 
 func Test_DocGetContent(t *testing.T) {
 	ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
-	std := stdlibclient.NewStdlib(zrpc.MustNewClient(zrpc.RpcClientConf{Etcd: discov.EtcdConf{Hosts: []string{"192.168.3.240:2379"}, Key: "jydocs.stdlib.rpc"}}))
+	std := stdlib.NewStdlib(zrpc.MustNewClient(zrpc.RpcClientConf{Etcd: discov.EtcdConf{Hosts: []string{"192.168.3.240:2379"}, Key: "jydocs.stdlib.rpc"}}))
 	req := &stdlib.DocGetCheckReq{DocId: "111", UserId: "123", AppId: "app_id_123"}
 	res, err := std.DocGetContent(ctx, req)
 	log.Println("err ", err)

+ 1 - 2
rpc/stdlib/test/docquery_test.go

@@ -7,14 +7,13 @@ import (
 	"time"
 
 	"app.yhyue.com/moapp/jy_docs/rpc/stdlib/stdlib"
-	"app.yhyue.com/moapp/jy_docs/rpc/stdlib/stdlibclient"
 	"github.com/zeromicro/go-zero/core/discov"
 	"github.com/zeromicro/go-zero/zrpc"
 )
 
 func Test_Docquery(t *testing.T) {
 	ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
-	std := stdlibclient.NewStdlib(zrpc.MustNewClient(zrpc.RpcClientConf{Etcd: discov.EtcdConf{Hosts: []string{"127.0.0.1:2379"}, Key: "jydocs.stdlib.rpc"}}))
+	std := stdlib.NewStdlib(zrpc.MustNewClient(zrpc.RpcClientConf{Etcd: discov.EtcdConf{Hosts: []string{"127.0.0.1:2379"}, Key: "jydocs.stdlib.rpc"}}))
 	res, err := std.DocQuery(ctx, &stdlib.DocQueryRequest{UserId: "5d6378301c298a5aac7b5402", AppId: "jy", KeyWord: "软件", PageSize: 3, Sort: []string{}})
 	if err != nil {
 		log.Println(err)

+ 27 - 26
rpc/userlib/test/userLib_test.go

@@ -1,7 +1,7 @@
 package test
 
 import (
-	"app.yhyue.com/moapp/jy_docs/rpc/userlib/userlibclient"
+	"app.yhyue.com/moapp/jy_docs/rpc/userlib/userlib"
 	"context"
 	"github.com/zeromicro/go-zero/core/discov"
 	"github.com/zeromicro/go-zero/zrpc"
@@ -9,7 +9,7 @@ import (
 	"testing"
 )
 
-//用户收藏单元测试
+// 用户收藏单元测试
 func Test_UserDocCollect(t *testing.T) {
 	client := zrpc.MustNewClient(zrpc.RpcClientConf{
 		Etcd: discov.EtcdConf{
@@ -17,8 +17,8 @@ func Test_UserDocCollect(t *testing.T) {
 			Key:   "jydocs.userlib.rpc",
 		},
 	})
-	userLib := userlibclient.NewUserLib(client)
-	resp, err := userLib.DocCollect(context.Background(), &userlibclient.UserCollectRequest{
+	userLib := userlib.NewUserLib(client)
+	resp, err := userLib.DocCollect(context.Background(), &userlib.UserCollectRequest{
 		DocId:  "0002bef6-8e6d-11eb-8419-0050568f1307",
 		UserId: "456",
 		AppId:  "10000",
@@ -29,7 +29,7 @@ func Test_UserDocCollect(t *testing.T) {
 	log.Print("UserDoc Collect call response:", resp)
 }
 
-//用户取消收藏单元测试
+// 用户取消收藏单元测试
 func Test_UserCancelDocCollect(t *testing.T) {
 	client := zrpc.MustNewClient(zrpc.RpcClientConf{
 		Etcd: discov.EtcdConf{
@@ -37,8 +37,8 @@ func Test_UserCancelDocCollect(t *testing.T) {
 			Key:   "jydocs.userlib.rpc",
 		},
 	})
-	userLib := userlibclient.NewUserLib(client)
-	resp, err := userLib.DocCancelCollect(context.Background(), &userlibclient.UserCancelRequest{
+	userLib := userlib.NewUserLib(client)
+	resp, err := userLib.DocCancelCollect(context.Background(), &userlib.UserCancelRequest{
 		DocId:  "SUgJfBt1M6nop8kvwcu5",
 		UserId: "5d6378301c298a5aac7b5402",
 		AppId:  "10000",
@@ -49,7 +49,7 @@ func Test_UserCancelDocCollect(t *testing.T) {
 	log.Print("UserDoc Collect call response:", resp)
 }
 
-//下载删除
+// 下载删除
 func Test_UserDocDelete(t *testing.T) {
 	client := zrpc.MustNewClient(zrpc.RpcClientConf{
 		Etcd: discov.EtcdConf{
@@ -57,8 +57,8 @@ func Test_UserDocDelete(t *testing.T) {
 			Key:   "jydocs.userlib.rpc",
 		},
 	})
-	userLib := userlibclient.NewUserLib(client)
-	resp, err := userLib.DocDelete(context.Background(), &userlibclient.UserRecoveryRequest{
+	userLib := userlib.NewUserLib(client)
+	resp, err := userLib.DocDelete(context.Background(), &userlib.UserRecoveryRequest{
 		UserDocId: int32(13),
 		AppId:     "10000",
 		UserId:    "wh11",
@@ -69,7 +69,7 @@ func Test_UserDocDelete(t *testing.T) {
 	log.Print("UserDoc Collect call response:", resp)
 }
 
-//删除找回
+// 删除找回
 func Test_UserDocRestore(t *testing.T) {
 	client := zrpc.MustNewClient(zrpc.RpcClientConf{
 		Etcd: discov.EtcdConf{
@@ -77,8 +77,8 @@ func Test_UserDocRestore(t *testing.T) {
 			Key:   "jydocs.userlib.rpc",
 		},
 	})
-	userLib := userlibclient.NewUserLib(client)
-	resp, err := userLib.DocRestore(context.Background(), &userlibclient.UserRecoveryRequest{
+	userLib := userlib.NewUserLib(client)
+	resp, err := userLib.DocRestore(context.Background(), &userlib.UserRecoveryRequest{
 		UserDocId: int32(10),
 		AppId:     "10000",
 		UserId:    "wh11",
@@ -89,7 +89,7 @@ func Test_UserDocRestore(t *testing.T) {
 	log.Print("UserDoc Collect call response:", resp)
 }
 
-//永久删除
+// 永久删除
 func Test_UserDocPermanentDelete(t *testing.T) {
 	client := zrpc.MustNewClient(zrpc.RpcClientConf{
 		Etcd: discov.EtcdConf{
@@ -97,8 +97,8 @@ func Test_UserDocPermanentDelete(t *testing.T) {
 			Key:   "jydocs.userlib.rpc",
 		},
 	})
-	userLib := userlibclient.NewUserLib(client)
-	resp, err := userLib.DocPermanentDelete(context.Background(), &userlibclient.UserRecoveryRequest{
+	userLib := userlib.NewUserLib(client)
+	resp, err := userLib.DocPermanentDelete(context.Background(), &userlib.UserRecoveryRequest{
 		UserDocId: int32(10),
 		AppId:     "10000",
 		UserId:    "wh11",
@@ -109,7 +109,7 @@ func Test_UserDocPermanentDelete(t *testing.T) {
 	log.Print("UserDoc Collect call response:", resp)
 }
 
-//我的文库0兑换的 1收藏的 2回收站的
+// 我的文库0兑换的 1收藏的 2回收站的
 func Test_UserDocList(t *testing.T) {
 	client := zrpc.MustNewClient(zrpc.RpcClientConf{
 		Etcd: discov.EtcdConf{
@@ -117,8 +117,8 @@ func Test_UserDocList(t *testing.T) {
 			Key:   "jydocs.userlib.rpc",
 		},
 	})
-	userLib := userlibclient.NewUserLib(client)
-	resp, err := userLib.UserDocs(context.Background(), &userlibclient.UserDocsRequest{
+	userLib := userlib.NewUserLib(client)
+	resp, err := userLib.UserDocs(context.Background(), &userlib.UserDocsRequest{
 		UserId:          "5d6378301c298a5aac7b5402",
 		AppId:           "10000",
 		PageSize:        10,
@@ -131,7 +131,7 @@ func Test_UserDocList(t *testing.T) {
 	log.Print("UserDoc Collect call response:", resp)
 }
 
-//用户转存单元测试
+// 用户转存单元测试
 func Test_UserDocDwnload(t *testing.T) {
 	client := zrpc.MustNewClient(zrpc.RpcClientConf{
 		Etcd: discov.EtcdConf{
@@ -139,8 +139,8 @@ func Test_UserDocDwnload(t *testing.T) {
 			Key:   "jydocs.userlib.rpc",
 		},
 	})
-	userLib := userlibclient.NewUserLib(client)
-	resp, err := userLib.DocDownload(context.Background(), &userlibclient.UserCollectRequest{
+	userLib := userlib.NewUserLib(client)
+	resp, err := userLib.DocDownload(context.Background(), &userlib.UserCollectRequest{
 		DocId:  "010ef774-888c-11eb-8699-0050568f51e7",
 		UserId: "456",
 		Cost:   1000,
@@ -151,7 +151,8 @@ func Test_UserDocDwnload(t *testing.T) {
 	}
 	log.Print("UserDoc Collect call response:", resp.Message, resp.Code)
 }
-//账号合并
+
+// 账号合并
 func Test_MergeUser(t *testing.T) {
 	client := zrpc.MustNewClient(zrpc.RpcClientConf{
 		Etcd: discov.EtcdConf{
@@ -159,11 +160,11 @@ func Test_MergeUser(t *testing.T) {
 			Key:   "jydocs.userlib.rpc",
 		},
 	})
-	userLib := userlibclient.NewUserLib(client)
-	resp, err := userLib.UserMerge(context.Background(), &userlibclient.MergeInfo{
+	userLib := userlib.NewUserLib(client)
+	resp, err := userLib.UserMerge(context.Background(), &userlib.MergeInfo{
 		MergeUser:  "123",
 		MergedUser: "456",
-		AppId:  "10000",})
+		AppId:      "10000"})
 	if err != nil {
 		log.Println("UserDoc Collect call error:", err)
 	}