瀏覽代碼

feat:标讯收藏添加标签接口

miyang 3 年之前
父節點
當前提交
fab77c6b79

+ 19 - 3
jyBXAdditional/api/internal/logic/bcactionlogic.go

@@ -1,7 +1,9 @@
 package logic
 
 import (
+	"app.yhyue.com/moapp/jybase/common"
 	"context"
+	"jyBXAdditional/rpc/bxcollection/bxcol"
 
 	"jyBXAdditional/api/internal/svc"
 	"jyBXAdditional/api/internal/types"
@@ -24,7 +26,21 @@ func NewBCActionLogic(ctx context.Context, svcCtx *svc.ServiceContext) *BCAction
 }
 
 func (l *BCActionLogic) BCAction(req *types.BCAction) (resp *types.CommonRes, err error) {
-	// todo: add your logic here and delete this line
-
-	return
+	res, err0 := l.svcCtx.Bxcollection.BCAction(l.ctx, &bxcol.BCActionReq{
+		UserId:  req.UserId,
+		Baction: req.Baction,
+		Bids:    req.Bids,
+	})
+	if err0 != nil {
+		return &types.CommonRes{
+			Err_code: -1,
+			Err_msg:  "错误",
+			Data:     nil,
+		}, nil
+	}
+	return &types.CommonRes{
+		Err_code: common.IntAll(res.ErrCode),
+		Err_msg:  res.ErrMsg,
+		Data:     res.Status,
+	}, nil
 }

+ 17 - 3
jyBXAdditional/api/internal/logic/getlabelactionlogic.go

@@ -1,7 +1,9 @@
 package logic
 
 import (
+	"app.yhyue.com/moapp/jybase/common"
 	"context"
+	"jyBXAdditional/rpc/bxcollection/bxcol"
 
 	"jyBXAdditional/api/internal/svc"
 	"jyBXAdditional/api/internal/types"
@@ -24,7 +26,19 @@ func NewGetLabelActionLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Ge
 }
 
 func (l *GetLabelActionLogic) GetLabelAction(req *types.GetLabelAction) (resp *types.CommonRes, err error) {
-	// todo: add your logic here and delete this line
-
-	return
+	res, err0 := l.svcCtx.Bxcollection.GetLabelAction(l.ctx, &bxcol.GetLabelActionReq{
+		UserId: req.UserId,
+	})
+	if err0 != nil {
+		return &types.CommonRes{
+			Err_code: -1,
+			Err_msg:  "错误",
+			Data:     nil,
+		}, nil
+	}
+	return &types.CommonRes{
+		Err_code: common.IntAll(res.ErrCode),
+		Err_msg:  res.ErrMsg,
+		Data:     res.Labels,
+	}, nil
 }

+ 19 - 3
jyBXAdditional/api/internal/logic/iscollactionlogic.go

@@ -1,7 +1,9 @@
 package logic
 
 import (
+	"app.yhyue.com/moapp/jybase/common"
 	"context"
+	"jyBXAdditional/rpc/bxcollection/bxcol"
 
 	"jyBXAdditional/api/internal/svc"
 	"jyBXAdditional/api/internal/types"
@@ -24,7 +26,21 @@ func NewIsCollActionLogic(ctx context.Context, svcCtx *svc.ServiceContext) *IsCo
 }
 
 func (l *IsCollActionLogic) IsCollAction(req *types.IsCollAction) (resp *types.CommonRes, err error) {
-	// todo: add your logic here and delete this line
-
-	return
+	res, err0 := l.svcCtx.Bxcollection.IsCollAction(l.ctx, &bxcol.IsCollActionReq{
+		UserId: req.UserId,
+		Bids:   req.Bids,
+		Label:  req.Label,
+	})
+	if err0 != nil {
+		return &types.CommonRes{
+			Err_code: -1,
+			Err_msg:  "错误",
+			Data:     nil,
+		}, nil
+	}
+	return &types.CommonRes{
+		Err_code: common.IntAll(res.ErrCode),
+		Err_msg:  res.ErrMsg,
+		Data:     res.Data,
+	}, nil
 }

+ 21 - 3
jyBXAdditional/api/internal/logic/labelactionlogic.go

@@ -1,7 +1,9 @@
 package logic
 
 import (
+	"app.yhyue.com/moapp/jybase/common"
 	"context"
+	"jyBXAdditional/rpc/bxcollection/bxcol"
 
 	"jyBXAdditional/api/internal/svc"
 	"jyBXAdditional/api/internal/types"
@@ -24,7 +26,23 @@ func NewLabelActionLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Label
 }
 
 func (l *LabelActionLogic) LabelAction(req *types.LabelAction) (resp *types.CommonRes, err error) {
-	// todo: add your logic here and delete this line
-
-	return
+	res, err0 := l.svcCtx.Bxcollection.LabelAction(l.ctx, &bxcol.LabelActionReq{
+		UserId:  req.UserId,
+		Laction: req.Laction,
+		Binfo:   req.Binfo,
+		Lids:    req.Lids,
+		Lname:   req.Lname,
+	})
+	if err0 != nil {
+		return &types.CommonRes{
+			Err_code: -1,
+			Err_msg:  "错误",
+			Data:     nil,
+		}, nil
+	}
+	return &types.CommonRes{
+		Err_code: common.IntAll(res.ErrCode),
+		Err_msg:  res.ErrMsg,
+		Data:     res.Status,
+	}, nil
 }

+ 23 - 3
jyBXAdditional/api/internal/logic/listlogic.go

@@ -1,7 +1,9 @@
 package logic
 
 import (
+	"app.yhyue.com/moapp/jybase/common"
 	"context"
+	"jyBXAdditional/rpc/bxcollection/bxcol"
 
 	"jyBXAdditional/api/internal/svc"
 	"jyBXAdditional/api/internal/types"
@@ -24,7 +26,25 @@ func NewListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListLogic {
 }
 
 func (l *ListLogic) List(req *types.List) (resp *types.CommonRes, err error) {
-	// todo: add your logic here and delete this line
-
-	return
+	res, err0 := l.svcCtx.Bxcollection.List(l.ctx, &bxcol.ListReq{
+		UserId:      req.UserId,
+		SelectTime:  req.SelectTime,
+		Buyerclass:  req.Buyerclass,
+		BuyerPhone:  req.BuyerPhone,
+		Pagenum:     req.Pagenum,
+		Pagesize:    req.Pagesize,
+		WinnerPhone: req.WinnerPhone,
+	})
+	if err0 != nil {
+		return &types.CommonRes{
+			Err_code: -1,
+			Err_msg:  "错误",
+			Data:     nil,
+		}, nil
+	}
+	return &types.CommonRes{
+		Err_code: common.IntAll(res.ErrCode),
+		Err_msg:  res.ErrMsg,
+		Data:     res.Ldata,
+	}, nil
 }

+ 8 - 0
jyBXAdditional/go.mod

@@ -4,12 +4,14 @@ go 1.17
 
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20220427020729-974c1a148186
+	github.com/go-sql-driver/mysql v1.6.0
 	github.com/zeromicro/go-zero v1.3.3
 	google.golang.org/grpc v1.46.0
 	google.golang.org/protobuf v1.28.0
 )
 
 require (
+	app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d // indirect
 	github.com/beorn7/perks v1.0.1 // indirect
 	github.com/cespare/xxhash/v2 v2.1.2 // indirect
 	github.com/coreos/go-semver v0.3.0 // indirect
@@ -17,6 +19,7 @@ require (
 	github.com/davecgh/go-spew v1.1.1 // indirect
 	github.com/dchest/captcha v0.0.0-20200903113550-03f5f0333e1f // indirect
 	github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
+	github.com/garyburd/redigo v1.6.2 // indirect
 	github.com/go-logr/logr v1.2.2 // indirect
 	github.com/go-logr/stdr v1.2.2 // indirect
 	github.com/go-redis/redis/v8 v8.11.4 // indirect
@@ -29,11 +32,14 @@ require (
 	github.com/google/uuid v1.3.0 // indirect
 	github.com/googleapis/gnostic v0.4.1 // indirect
 	github.com/hashicorp/golang-lru v0.5.1 // indirect
+	github.com/jinzhu/inflection v1.0.0 // indirect
+	github.com/jinzhu/now v1.1.1 // indirect
 	github.com/json-iterator/go v1.1.12 // indirect
 	github.com/justinas/alice v1.2.0 // indirect
 	github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 	github.com/modern-go/reflect2 v1.0.2 // indirect
+	github.com/olivere/elastic v6.2.37+incompatible // indirect
 	github.com/openzipkin/zipkin-go v0.4.0 // indirect
 	github.com/prometheus/client_golang v1.11.0 // indirect
 	github.com/prometheus/client_model v0.2.0 // indirect
@@ -63,6 +69,8 @@ require (
 	google.golang.org/genproto v0.0.0-20220422154200-b37d22cd5731 // indirect
 	gopkg.in/inf.v0 v0.9.1 // indirect
 	gopkg.in/yaml.v2 v2.4.0 // indirect
+	gorm.io/driver/mysql v1.0.5 // indirect
+	gorm.io/gorm v1.21.3 // indirect
 	k8s.io/api v0.20.12 // indirect
 	k8s.io/apimachinery v0.20.12 // indirect
 	k8s.io/client-go v0.20.12 // indirect

+ 10 - 0
jyBXAdditional/go.sum

@@ -1,3 +1,4 @@
+app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d h1:WPsYuuptAd3UEgN+jPzpnsDe/OvcshDUUtOTZPYGSJ8=
 app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d/go.mod h1:91/lSD/hS+ckMVP3WdidRzDhC60lLMdyce9QHy0cSMA=
 app.yhyue.com/moapp/jybase v0.0.0-20220427020729-974c1a148186 h1:2AG+jLpFWFjhtdJHGb6xrRIFtQVHWrMyj2F71DBUozM=
 app.yhyue.com/moapp/jybase v0.0.0-20220427020729-974c1a148186/go.mod h1:qNRA0sHuYqcLoYoP8irpaWnW9YsXixe6obBIkwaXpD0=
@@ -128,6 +129,7 @@ github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM
 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
 github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
 github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
+github.com/garyburd/redigo v1.6.2 h1:yE/pwKCrbLpLpQICzYTeZ7JsTA/C53wFTJHaEtRqniM=
 github.com/garyburd/redigo v1.6.2/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY=
 github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
 github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
@@ -161,6 +163,7 @@ github.com/go-redis/redis/v8 v8.11.4 h1:kHoYkfZP6+pe04aFTnhDH6GDROa5yJdHJVNxV3F4
 github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w=
 github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
 github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
+github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
 github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
 github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
 github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
@@ -287,12 +290,15 @@ github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/U
 github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg=
 github.com/jcmturner/gokrb5/v8 v8.4.2/go.mod h1:sb+Xq/fTY5yktf/VxLsE3wlfPqQjp0aWNYyvBVK62bc=
 github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc=
+github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
 github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
+github.com/jinzhu/now v1.1.1 h1:g39TucaRWyV3dwDO++eEc6qf8TVIQ/Da48WmqjZ3i7E=
 github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
 github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
 github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
 github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=
 github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
+github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
 github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
 github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
 github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
@@ -330,6 +336,7 @@ github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
 github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
 github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
 github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
 github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
@@ -359,6 +366,7 @@ github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI
 github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
 github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
 github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
+github.com/olivere/elastic v6.2.37+incompatible h1:UfSGJem5czY+x/LqxgeCBgjDn6St+z8OnsCuxwD3L0U=
 github.com/olivere/elastic v6.2.37+incompatible/go.mod h1:J+q1zQJTgAz9woqsbVRqGeB5G1iqDKVBWLNSYW8yfJ8=
 github.com/olivere/elastic/v7 v7.0.22/go.mod h1:VDexNy9NjmtAkrjNoI7tImv7FR4tf5zUA3ickqu5Pc8=
 github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
@@ -861,7 +869,9 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gorm.io/driver/mysql v1.0.5 h1:WAAmvLK2rG0tCOqrf5XcLi2QUwugd4rcVJ/W3aoon9o=
 gorm.io/driver/mysql v1.0.5/go.mod h1:N1OIhHAIhx5SunkMGqWbGFVeh4yTNWKmMo1GOAsohLI=
+gorm.io/gorm v1.21.3 h1:qDFi55ZOsjZTwk5eN+uhAmHi8GysJ/qCTichM/yO7ME=
 gorm.io/gorm v1.21.3/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw=
 honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

+ 210 - 146
jyBXAdditional/rpc/bxcollection/bxcol/bxcollection.pb.go

@@ -584,11 +584,9 @@ type IsCollActionRes struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	ErrCode int64     `protobuf:"varint,1,opt,name=err_code,json=errCode,proto3" json:"err_code,omitempty"`
-	ErrMsg  string    `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"`
-	Iscoll  bool      `protobuf:"varint,3,opt,name=iscoll,proto3" json:"iscoll,omitempty"`
-	Labels  []*Labels `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty"`
-	Bids    []string  `protobuf:"bytes,5,rep,name=bids,proto3" json:"bids,omitempty"`
+	ErrCode int64  `protobuf:"varint,1,opt,name=err_code,json=errCode,proto3" json:"err_code,omitempty"`
+	ErrMsg  string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"`
+	Data    *IData `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
 }
 
 func (x *IsCollActionRes) Reset() {
@@ -637,21 +635,70 @@ func (x *IsCollActionRes) GetErrMsg() string {
 	return ""
 }
 
-func (x *IsCollActionRes) GetIscoll() bool {
+func (x *IsCollActionRes) GetData() *IData {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+type IData struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Iscoll bool      `protobuf:"varint,1,opt,name=iscoll,proto3" json:"iscoll,omitempty"`
+	Labels []*Labels `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty"`
+	Bids   []string  `protobuf:"bytes,3,rep,name=bids,proto3" json:"bids,omitempty"`
+}
+
+func (x *IData) Reset() {
+	*x = IData{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_bxcollection_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *IData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IData) ProtoMessage() {}
+
+func (x *IData) ProtoReflect() protoreflect.Message {
+	mi := &file_bxcollection_proto_msgTypes[10]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use IData.ProtoReflect.Descriptor instead.
+func (*IData) Descriptor() ([]byte, []int) {
+	return file_bxcollection_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *IData) GetIscoll() bool {
 	if x != nil {
 		return x.Iscoll
 	}
 	return false
 }
 
-func (x *IsCollActionRes) GetLabels() []*Labels {
+func (x *IData) GetLabels() []*Labels {
 	if x != nil {
 		return x.Labels
 	}
 	return nil
 }
 
-func (x *IsCollActionRes) GetBids() []string {
+func (x *IData) GetBids() []string {
 	if x != nil {
 		return x.Bids
 	}
@@ -670,7 +717,7 @@ type Labels struct {
 func (x *Labels) Reset() {
 	*x = Labels{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bxcollection_proto_msgTypes[10]
+		mi := &file_bxcollection_proto_msgTypes[11]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -683,7 +730,7 @@ func (x *Labels) String() string {
 func (*Labels) ProtoMessage() {}
 
 func (x *Labels) ProtoReflect() protoreflect.Message {
-	mi := &file_bxcollection_proto_msgTypes[10]
+	mi := &file_bxcollection_proto_msgTypes[11]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -696,7 +743,7 @@ func (x *Labels) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use Labels.ProtoReflect.Descriptor instead.
 func (*Labels) Descriptor() ([]byte, []int) {
-	return file_bxcollection_proto_rawDescGZIP(), []int{10}
+	return file_bxcollection_proto_rawDescGZIP(), []int{11}
 }
 
 func (x *Labels) GetId() string {
@@ -731,7 +778,7 @@ type ListReq struct {
 func (x *ListReq) Reset() {
 	*x = ListReq{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bxcollection_proto_msgTypes[11]
+		mi := &file_bxcollection_proto_msgTypes[12]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -744,7 +791,7 @@ func (x *ListReq) String() string {
 func (*ListReq) ProtoMessage() {}
 
 func (x *ListReq) ProtoReflect() protoreflect.Message {
-	mi := &file_bxcollection_proto_msgTypes[11]
+	mi := &file_bxcollection_proto_msgTypes[12]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -757,7 +804,7 @@ func (x *ListReq) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListReq.ProtoReflect.Descriptor instead.
 func (*ListReq) Descriptor() ([]byte, []int) {
-	return file_bxcollection_proto_rawDescGZIP(), []int{11}
+	return file_bxcollection_proto_rawDescGZIP(), []int{12}
 }
 
 func (x *ListReq) GetUserId() string {
@@ -829,7 +876,7 @@ type ListRes struct {
 func (x *ListRes) Reset() {
 	*x = ListRes{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bxcollection_proto_msgTypes[12]
+		mi := &file_bxcollection_proto_msgTypes[13]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -842,7 +889,7 @@ func (x *ListRes) String() string {
 func (*ListRes) ProtoMessage() {}
 
 func (x *ListRes) ProtoReflect() protoreflect.Message {
-	mi := &file_bxcollection_proto_msgTypes[12]
+	mi := &file_bxcollection_proto_msgTypes[13]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -855,7 +902,7 @@ func (x *ListRes) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListRes.ProtoReflect.Descriptor instead.
 func (*ListRes) Descriptor() ([]byte, []int) {
-	return file_bxcollection_proto_rawDescGZIP(), []int{12}
+	return file_bxcollection_proto_rawDescGZIP(), []int{13}
 }
 
 func (x *ListRes) GetErrCode() int64 {
@@ -892,7 +939,7 @@ type ColList struct {
 func (x *ColList) Reset() {
 	*x = ColList{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bxcollection_proto_msgTypes[13]
+		mi := &file_bxcollection_proto_msgTypes[14]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -905,7 +952,7 @@ func (x *ColList) String() string {
 func (*ColList) ProtoMessage() {}
 
 func (x *ColList) ProtoReflect() protoreflect.Message {
-	mi := &file_bxcollection_proto_msgTypes[13]
+	mi := &file_bxcollection_proto_msgTypes[14]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -918,7 +965,7 @@ func (x *ColList) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ColList.ProtoReflect.Descriptor instead.
 func (*ColList) Descriptor() ([]byte, []int) {
-	return file_bxcollection_proto_rawDescGZIP(), []int{13}
+	return file_bxcollection_proto_rawDescGZIP(), []int{14}
 }
 
 func (x *ColList) GetCount() int64 {
@@ -964,7 +1011,7 @@ type ColData struct {
 func (x *ColData) Reset() {
 	*x = ColData{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bxcollection_proto_msgTypes[14]
+		mi := &file_bxcollection_proto_msgTypes[15]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -977,7 +1024,7 @@ func (x *ColData) String() string {
 func (*ColData) ProtoMessage() {}
 
 func (x *ColData) ProtoReflect() protoreflect.Message {
-	mi := &file_bxcollection_proto_msgTypes[14]
+	mi := &file_bxcollection_proto_msgTypes[15]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -990,7 +1037,7 @@ func (x *ColData) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ColData.ProtoReflect.Descriptor instead.
 func (*ColData) Descriptor() ([]byte, []int) {
-	return file_bxcollection_proto_rawDescGZIP(), []int{14}
+	return file_bxcollection_proto_rawDescGZIP(), []int{15}
 }
 
 func (x *ColData) GetId() string {
@@ -1090,7 +1137,7 @@ type CommonRes struct {
 func (x *CommonRes) Reset() {
 	*x = CommonRes{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bxcollection_proto_msgTypes[15]
+		mi := &file_bxcollection_proto_msgTypes[16]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1103,7 +1150,7 @@ func (x *CommonRes) String() string {
 func (*CommonRes) ProtoMessage() {}
 
 func (x *CommonRes) ProtoReflect() protoreflect.Message {
-	mi := &file_bxcollection_proto_msgTypes[15]
+	mi := &file_bxcollection_proto_msgTypes[16]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1116,7 +1163,7 @@ func (x *CommonRes) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use CommonRes.ProtoReflect.Descriptor instead.
 func (*CommonRes) Descriptor() ([]byte, []int) {
-	return file_bxcollection_proto_rawDescGZIP(), []int{15}
+	return file_bxcollection_proto_rawDescGZIP(), []int{16}
 }
 
 func (x *CommonRes) GetErrCode() int64 {
@@ -1186,96 +1233,99 @@ var file_bxcollection_proto_rawDesc = []byte{
 	0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65,
 	0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
 	0x09, 0x52, 0x04, 0x62, 0x69, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x98, 0x01,
-	0x0a, 0x0f, 0x49, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x67, 0x0a,
+	0x0f, 0x49, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
+	0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65,
+	0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72,
+	0x72, 0x4d, 0x73, 0x67, 0x12, 0x20, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x49, 0x44, 0x61, 0x74, 0x61,
+	0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5a, 0x0a, 0x05, 0x49, 0x44, 0x61, 0x74, 0x61, 0x12,
+	0x16, 0x0a, 0x06, 0x69, 0x73, 0x63, 0x6f, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x06, 0x69, 0x73, 0x63, 0x6f, 0x6c, 0x6c, 0x12, 0x25, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c,
+	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e,
+	0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x12,
+	0x0a, 0x04, 0x62, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x62, 0x69,
+	0x64, 0x73, 0x22, 0x36, 0x0a, 0x06, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x0e, 0x0a, 0x02,
+	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09,
+	0x6c, 0x61, 0x62, 0x65, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x09, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xed, 0x01, 0x0a, 0x07, 0x4c,
+	0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12,
+	0x0a, 0x04, 0x62, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x69,
+	0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x69,
+	0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x79, 0x65, 0x72, 0x63, 0x6c, 0x61, 0x73, 0x73,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x79, 0x65, 0x72, 0x63, 0x6c, 0x61,
+	0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x67, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x07, 0x70, 0x61, 0x67, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a,
+	0x62, 0x75, 0x79, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x0a, 0x62, 0x75, 0x79, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x20, 0x0a, 0x0b,
+	0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x0b, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1a,
+	0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x63, 0x0a, 0x07, 0x4c, 0x69,
+	0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64,
+	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65,
+	0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x24, 0x0a, 0x05, 0x6c, 0x64, 0x61,
+	0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c,
+	0x2e, 0x43, 0x6f, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x22,
+	0x65, 0x0a, 0x07, 0x43, 0x6f, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f,
+	0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+	0x12, 0x22, 0x0a, 0x0c, 0x68, 0x61, 0x76, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x68, 0x61, 0x76, 0x65, 0x4e, 0x65, 0x78, 0x74,
+	0x50, 0x61, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x03, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x0e, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, 0x6c, 0x44, 0x61, 0x74,
+	0x61, 0x52, 0x03, 0x72, 0x65, 0x73, 0x22, 0xcb, 0x02, 0x0a, 0x07, 0x43, 0x6f, 0x6c, 0x44, 0x61,
+	0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
+	0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x65, 0x61,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x65, 0x61, 0x12, 0x1e, 0x0a, 0x0a,
+	0x62, 0x75, 0x79, 0x65, 0x72, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x0a, 0x62, 0x75, 0x79, 0x65, 0x72, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04,
+	0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
+	0x12, 0x27, 0x0a, 0x0f, 0x73, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x63, 0x6c,
+	0x61, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x53, 0x75, 0x62, 0x73,
+	0x63, 0x6f, 0x70, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x75, 0x62,
+	0x6c, 0x69, 0x73, 0x68, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b,
+	0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62,
+	0x75, 0x64, 0x67, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x64,
+	0x67, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x69, 0x64, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
+	0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x69, 0x64, 0x61, 0x6d, 0x6f, 0x75, 0x6e,
+	0x74, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x77, 0x69, 0x6e,
+	0x6e, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x57, 0x69, 0x6e, 0x6e,
+	0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x69, 0x64, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x69, 0x6d,
+	0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x69, 0x64, 0x6f, 0x70, 0x65, 0x6e,
+	0x74, 0x69, 0x6d, 0x65, 0x22, 0x3f, 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65,
 	0x73, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20,
 	0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07,
 	0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65,
-	0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x63, 0x6f, 0x6c, 0x6c, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x63, 0x6f, 0x6c, 0x6c, 0x12, 0x25, 0x0a,
-	0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e,
-	0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x06, 0x6c, 0x61,
-	0x62, 0x65, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x04, 0x62, 0x69, 0x64, 0x73, 0x22, 0x36, 0x0a, 0x06, 0x4c, 0x61, 0x62, 0x65,
-	0x6c, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
-	0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x6e, 0x61, 0x6d, 0x65,
-	0x22, 0xed, 0x01, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06,
-	0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73,
-	0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x04, 0x62, 0x69, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x6c, 0x65,
-	0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65,
-	0x6c, 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x79, 0x65,
-	0x72, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75,
-	0x79, 0x65, 0x72, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x67, 0x65,
-	0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x70, 0x61, 0x67, 0x65, 0x6e,
-	0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x79, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65,
-	0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x75, 0x79, 0x65, 0x72, 0x50, 0x68, 0x6f,
-	0x6e, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e,
-	0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x50,
-	0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x73, 0x69, 0x7a, 0x65,
-	0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x73, 0x69, 0x7a, 0x65,
-	0x22, 0x63, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x65,
-	0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65,
-	0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73,
-	0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12,
-	0x24, 0x0a, 0x05, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e,
-	0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05,
-	0x6c, 0x64, 0x61, 0x74, 0x61, 0x22, 0x65, 0x0a, 0x07, 0x43, 0x6f, 0x6c, 0x4c, 0x69, 0x73, 0x74,
-	0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x61, 0x76, 0x65, 0x4e, 0x65,
-	0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x68, 0x61,
-	0x76, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x03, 0x72, 0x65,
-	0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e,
-	0x43, 0x6f, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x03, 0x72, 0x65, 0x73, 0x22, 0xcb, 0x02, 0x0a,
-	0x07, 0x43, 0x6f, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12,
-	0x0a, 0x04, 0x61, 0x72, 0x65, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72,
-	0x65, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x79, 0x65, 0x72, 0x63, 0x6c, 0x61, 0x73, 0x73,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x79, 0x65, 0x72, 0x63, 0x6c, 0x61,
-	0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x5f, 0x73, 0x75, 0x62, 0x73,
-	0x63, 0x6f, 0x70, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0e, 0x73, 0x53, 0x75, 0x62, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12,
-	0x20, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x74, 0x69, 0x6d,
-	0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x06, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x69, 0x64,
-	0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x69,
-	0x64, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72,
-	0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72, 0x12, 0x19, 0x0a,
-	0x08, 0x73, 0x5f, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x07, 0x73, 0x57, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x69, 0x64, 0x6f,
-	0x70, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62,
-	0x69, 0x64, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x3f, 0x0a, 0x09, 0x43, 0x6f,
-	0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63,
-	0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f,
-	0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x32, 0xdd, 0x02, 0x0a, 0x05,
-	0x62, 0x78, 0x63, 0x6f, 0x6c, 0x12, 0x32, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x6c, 0x61, 0x62, 0x65,
-	0x6c, 0x12, 0x12, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x41, 0x64, 0x64, 0x6c, 0x61, 0x62,
-	0x65, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x41, 0x64,
-	0x64, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x0e, 0x47, 0x65, 0x74,
-	0x4c, 0x61, 0x62, 0x65, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x2e, 0x62, 0x78,
-	0x63, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x41, 0x63, 0x74, 0x69,
-	0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x47, 0x65,
-	0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x12,
-	0x3b, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15,
-	0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x41, 0x63, 0x74, 0x69,
-	0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x4c, 0x61,
-	0x62, 0x65, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x08,
-	0x42, 0x43, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c,
-	0x2e, 0x42, 0x43, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x62,
-	0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
-	0x52, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x0c, 0x49, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x41, 0x63, 0x74,
-	0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x49, 0x73, 0x43, 0x6f,
-	0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x62, 0x78,
-	0x63, 0x6f, 0x6c, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
-	0x52, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x2e, 0x62, 0x78,
-	0x63, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x62, 0x78,
-	0x63, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x42, 0x09, 0x5a, 0x07, 0x2e,
-	0x2f, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x72, 0x72, 0x4d, 0x73, 0x67, 0x32, 0xdd, 0x02, 0x0a, 0x05, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x12,
+	0x32, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x12, 0x2e, 0x62, 0x78,
+	0x63, 0x6f, 0x6c, 0x2e, 0x41, 0x64, 0x64, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x1a,
+	0x12, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x41, 0x64, 0x64, 0x6c, 0x61, 0x62, 0x65, 0x6c,
+	0x52, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x41,
+	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x47, 0x65,
+	0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a,
+	0x18, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c,
+	0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x4c, 0x61, 0x62,
+	0x65, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c,
+	0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a,
+	0x15, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x41, 0x63, 0x74,
+	0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x42, 0x43, 0x41, 0x63, 0x74, 0x69,
+	0x6f, 0x6e, 0x12, 0x12, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x42, 0x43, 0x41, 0x63, 0x74,
+	0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x4c,
+	0x61, 0x62, 0x65, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x12, 0x3e, 0x0a,
+	0x0c, 0x49, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e,
+	0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69,
+	0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x49, 0x73,
+	0x43, 0x6f, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x12, 0x26, 0x0a,
+	0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x4c, 0x69,
+	0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x6c, 0x2e, 0x4c, 0x69,
+	0x73, 0x74, 0x52, 0x65, 0x73, 0x42, 0x09, 0x5a, 0x07, 0x2e, 0x2f, 0x62, 0x78, 0x63, 0x6f, 0x6c,
+	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -1290,7 +1340,7 @@ func file_bxcollection_proto_rawDescGZIP() []byte {
 	return file_bxcollection_proto_rawDescData
 }
 
-var file_bxcollection_proto_msgTypes = make([]protoimpl.MessageInfo, 16)
+var file_bxcollection_proto_msgTypes = make([]protoimpl.MessageInfo, 17)
 var file_bxcollection_proto_goTypes = []interface{}{
 	(*AddlabelReq)(nil),       // 0: bxcol.AddlabelReq
 	(*AddlabelRes)(nil),       // 1: bxcol.AddlabelRes
@@ -1302,35 +1352,37 @@ var file_bxcollection_proto_goTypes = []interface{}{
 	(*BCActionReq)(nil),       // 7: bxcol.BCActionReq
 	(*IsCollActionReq)(nil),   // 8: bxcol.IsCollActionReq
 	(*IsCollActionRes)(nil),   // 9: bxcol.IsCollActionRes
-	(*Labels)(nil),            // 10: bxcol.Labels
-	(*ListReq)(nil),           // 11: bxcol.ListReq
-	(*ListRes)(nil),           // 12: bxcol.ListRes
-	(*ColList)(nil),           // 13: bxcol.ColList
-	(*ColData)(nil),           // 14: bxcol.ColData
-	(*CommonRes)(nil),         // 15: bxcol.CommonRes
+	(*IData)(nil),             // 10: bxcol.IData
+	(*Labels)(nil),            // 11: bxcol.Labels
+	(*ListReq)(nil),           // 12: bxcol.ListReq
+	(*ListRes)(nil),           // 13: bxcol.ListRes
+	(*ColList)(nil),           // 14: bxcol.ColList
+	(*ColData)(nil),           // 15: bxcol.ColData
+	(*CommonRes)(nil),         // 16: bxcol.CommonRes
 }
 var file_bxcollection_proto_depIdxs = []int32{
 	4,  // 0: bxcol.GetLabelActionRes.labels:type_name -> bxcol.LabelByUser
-	10, // 1: bxcol.IsCollActionRes.labels:type_name -> bxcol.Labels
-	13, // 2: bxcol.ListRes.ldata:type_name -> bxcol.ColList
-	14, // 3: bxcol.ColList.res:type_name -> bxcol.ColData
-	0,  // 4: bxcol.bxcol.Addlabel:input_type -> bxcol.AddlabelReq
-	2,  // 5: bxcol.bxcol.GetLabelAction:input_type -> bxcol.GetLabelActionReq
-	5,  // 6: bxcol.bxcol.LabelAction:input_type -> bxcol.LabelActionReq
-	7,  // 7: bxcol.bxcol.BCAction:input_type -> bxcol.BCActionReq
-	8,  // 8: bxcol.bxcol.IsCollAction:input_type -> bxcol.IsCollActionReq
-	11, // 9: bxcol.bxcol.List:input_type -> bxcol.ListReq
-	1,  // 10: bxcol.bxcol.Addlabel:output_type -> bxcol.AddlabelRes
-	3,  // 11: bxcol.bxcol.GetLabelAction:output_type -> bxcol.GetLabelActionRes
-	6,  // 12: bxcol.bxcol.LabelAction:output_type -> bxcol.LabelActionRes
-	6,  // 13: bxcol.bxcol.BCAction:output_type -> bxcol.LabelActionRes
-	9,  // 14: bxcol.bxcol.IsCollAction:output_type -> bxcol.IsCollActionRes
-	12, // 15: bxcol.bxcol.List:output_type -> bxcol.ListRes
-	10, // [10:16] is the sub-list for method output_type
-	4,  // [4:10] is the sub-list for method input_type
-	4,  // [4:4] is the sub-list for extension type_name
-	4,  // [4:4] is the sub-list for extension extendee
-	0,  // [0:4] is the sub-list for field type_name
+	10, // 1: bxcol.IsCollActionRes.data:type_name -> bxcol.IData
+	11, // 2: bxcol.IData.labels:type_name -> bxcol.Labels
+	14, // 3: bxcol.ListRes.ldata:type_name -> bxcol.ColList
+	15, // 4: bxcol.ColList.res:type_name -> bxcol.ColData
+	0,  // 5: bxcol.bxcol.Addlabel:input_type -> bxcol.AddlabelReq
+	2,  // 6: bxcol.bxcol.GetLabelAction:input_type -> bxcol.GetLabelActionReq
+	5,  // 7: bxcol.bxcol.LabelAction:input_type -> bxcol.LabelActionReq
+	7,  // 8: bxcol.bxcol.BCAction:input_type -> bxcol.BCActionReq
+	8,  // 9: bxcol.bxcol.IsCollAction:input_type -> bxcol.IsCollActionReq
+	12, // 10: bxcol.bxcol.List:input_type -> bxcol.ListReq
+	1,  // 11: bxcol.bxcol.Addlabel:output_type -> bxcol.AddlabelRes
+	3,  // 12: bxcol.bxcol.GetLabelAction:output_type -> bxcol.GetLabelActionRes
+	6,  // 13: bxcol.bxcol.LabelAction:output_type -> bxcol.LabelActionRes
+	6,  // 14: bxcol.bxcol.BCAction:output_type -> bxcol.LabelActionRes
+	9,  // 15: bxcol.bxcol.IsCollAction:output_type -> bxcol.IsCollActionRes
+	13, // 16: bxcol.bxcol.List:output_type -> bxcol.ListRes
+	11, // [11:17] is the sub-list for method output_type
+	5,  // [5:11] is the sub-list for method input_type
+	5,  // [5:5] is the sub-list for extension type_name
+	5,  // [5:5] is the sub-list for extension extendee
+	0,  // [0:5] is the sub-list for field type_name
 }
 
 func init() { file_bxcollection_proto_init() }
@@ -1460,7 +1512,7 @@ func file_bxcollection_proto_init() {
 			}
 		}
 		file_bxcollection_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Labels); i {
+			switch v := v.(*IData); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -1472,7 +1524,7 @@ func file_bxcollection_proto_init() {
 			}
 		}
 		file_bxcollection_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListReq); i {
+			switch v := v.(*Labels); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -1484,7 +1536,7 @@ func file_bxcollection_proto_init() {
 			}
 		}
 		file_bxcollection_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListRes); i {
+			switch v := v.(*ListReq); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -1496,7 +1548,7 @@ func file_bxcollection_proto_init() {
 			}
 		}
 		file_bxcollection_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ColList); i {
+			switch v := v.(*ListRes); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -1508,7 +1560,7 @@ func file_bxcollection_proto_init() {
 			}
 		}
 		file_bxcollection_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ColData); i {
+			switch v := v.(*ColList); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -1520,6 +1572,18 @@ func file_bxcollection_proto_init() {
 			}
 		}
 		file_bxcollection_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ColData); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_bxcollection_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*CommonRes); i {
 			case 0:
 				return &v.state
@@ -1538,7 +1602,7 @@ func file_bxcollection_proto_init() {
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_bxcollection_proto_rawDesc,
 			NumEnums:      0,
-			NumMessages:   16,
+			NumMessages:   17,
 			NumExtensions: 0,
 			NumServices:   1,
 		},

+ 14 - 13
jyBXAdditional/rpc/bxcollection/bxcollection.go

@@ -1,40 +1,41 @@
 package main
 
 import (
-	"flag"
+	MC "app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/endless"
 	"fmt"
+	"log"
 
 	"jyBXAdditional/rpc/bxcollection/bxcol"
-	"jyBXAdditional/rpc/bxcollection/internal/config"
 	"jyBXAdditional/rpc/bxcollection/internal/server"
 	"jyBXAdditional/rpc/bxcollection/internal/svc"
 
-	"github.com/zeromicro/go-zero/core/conf"
 	"github.com/zeromicro/go-zero/core/service"
 	"github.com/zeromicro/go-zero/zrpc"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/reflection"
+	IC "jyBXAdditional/rpc/bxcollection/model"
 )
 
-var configFile = flag.String("f", "etc/bxcollection.yaml", "the config file")
-
 func main() {
-	flag.Parse()
-
-	var c config.Config
-	conf.MustLoad(*configFile, &c)
-	ctx := svc.NewServiceContext(c)
+	go func() {
+		err := endless.ListenAndServe(":"+MC.InterfaceToStr(IC.C.Webrpcport), nil, func() {})
+		if err != nil {
+			log.Println("ListenAndServe: ", err)
+		}
+	}()
+	ctx := svc.NewServiceContext(IC.C)
 	svr := server.NewBxcolServer(ctx)
 
-	s := zrpc.MustNewServer(c.RpcServerConf, func(grpcServer *grpc.Server) {
+	s := zrpc.MustNewServer(IC.C.RpcServerConf, func(grpcServer *grpc.Server) {
 		bxcol.RegisterBxcolServer(grpcServer, svr)
 
-		if c.Mode == service.DevMode || c.Mode == service.TestMode {
+		if IC.C.Mode == service.DevMode || IC.C.Mode == service.TestMode {
 			reflection.Register(grpcServer)
 		}
 	})
 	defer s.Stop()
 
-	fmt.Printf("Starting rpc server at %s...\n", c.ListenOn)
+	fmt.Printf("Starting rpc server at %s...\n", IC.C.ListenOn)
 	s.Start()
 }

+ 6 - 3
jyBXAdditional/rpc/bxcollection/bxcollection.proto

@@ -50,9 +50,12 @@ message IsCollActionReq {
 message IsCollActionRes {
   int64 err_code = 1;
   string err_msg = 2;
-  bool iscoll = 3;
-  repeated Labels labels = 4;
-  repeated string bids = 5;
+  IData data = 3;
+}
+message IData {
+  bool iscoll = 1;
+  repeated Labels labels = 2;
+  repeated string bids = 3;
 }
 message Labels {
   string id = 1;

+ 15 - 0
jyBXAdditional/rpc/bxcollection/etc/bxcollection.yaml

@@ -4,3 +4,18 @@ Etcd:
   Hosts:
   - 127.0.0.1:2379
   Key: bxcollection.rpc
+Webrpcport: 8012
+MysqlMain:
+  dbName: jianyu
+  address: 127.0.0.1:3366
+  userName: root
+  passWord: Topnet123
+  maxOpenConns: 5
+  maxIdleConns: 5
+Redis:
+  Host: 127.0.0.1
+  addr: 127.0.0.1:1712
+  modules: other
+Es:
+  addr: http://127.0.0.1:9800
+  size: 5

+ 6 - 0
jyBXAdditional/rpc/bxcollection/etc/logs.yaml

@@ -0,0 +1,6 @@
+Mode: file
+Path: ./logs
+Level:
+  - info
+  - error
+KeepDays: 10

+ 8 - 1
jyBXAdditional/rpc/bxcollection/internal/config/config.go

@@ -1,7 +1,14 @@
 package config
 
-import "github.com/zeromicro/go-zero/zrpc"
+import (
+	"github.com/zeromicro/go-zero/zrpc"
+	"jyBXAdditional/entity"
+)
 
 type Config struct {
 	zrpc.RpcServerConf
+	Webrpcport int64
+	MysqlMain  entity.MysqlMainStruct
+	Redis      entity.RedisStuct
+	Es         entity.EsStruct
 }

+ 43 - 3
jyBXAdditional/rpc/bxcollection/internal/logic/addlabellogic.go

@@ -1,7 +1,13 @@
 package logic
 
 import (
+	se "app.yhyue.com/moapp/jybase/encrypt"
 	"context"
+	"fmt"
+	"jyBXAdditional/rpc/bxcollection/model"
+	"log"
+	"strconv"
+	"time"
 
 	"jyBXAdditional/rpc/bxcollection/bxcol"
 	"jyBXAdditional/rpc/bxcollection/internal/svc"
@@ -25,7 +31,41 @@ func NewAddlabelLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Addlabel
 
 // 新增标签
 func (l *AddlabelLogic) Addlabel(in *bxcol.AddlabelReq) (*bxcol.AddlabelRes, error) {
-	// todo: add your logic here and delete this line
-
-	return &bxcol.AddlabelRes{}, nil
+	userid := in.UserId
+	var resp bxcol.AddlabelRes
+	if in.Name == "" {
+		return &bxcol.AddlabelRes{
+			ErrCode: -1,
+			ErrMsg:  "未传入名字",
+		}, nil
+	}
+	//now := time.Now().Unix()
+	if model.Mysql.CountBySql(fmt.Sprintf(`select count(1) from %s where userid =?`, "bdlabel"), userid) >= 50 {
+		return &bxcol.AddlabelRes{
+			ErrCode: -1,
+			ErrMsg:  "标签数量已达上限",
+		}, nil
+	}
+	//是否有重名
+	if labArr := *model.Mysql.SelectBySql(fmt.Sprintf("select * from %s where labelname = ? and userid = ?", "bdlabel"), in.Name, userid); len(labArr) == 1 {
+		return &bxcol.AddlabelRes{
+			ErrCode: -1,
+			ErrMsg:  "该标签已经存在",
+		}, nil
+	} else { //新增标签
+		insertMap := map[string]interface{}{
+			"userid":     userid,
+			"labelname":  in.Name,
+			"createdate": time.Now(),
+		}
+		if lid := model.Mysql.Insert("bdlabel", insertMap); lid > 0 {
+			resp.Labid = se.SE.EncodeString(strconv.FormatInt(lid, 10))
+			return &resp, nil
+		} else {
+			log.Println("新增标签失败 - name:", in.Name)
+			resp.ErrMsg = "保存失败"
+			resp.ErrCode = -1
+			return &resp, nil
+		}
+	}
 }

+ 1 - 7
jyBXAdditional/rpc/model/db.go → jyBXAdditional/rpc/bxcollection/model/db.go

@@ -7,7 +7,7 @@ import (
 	"fmt"
 	"log"
 
-	"app.yhyue.com/moapp/jyMicroservices/jyyBXAdditional/entity"
+	"jyBXAdditional/entity"
 
 	"app.yhyue.com/moapp/jybase/esv1"
 	"app.yhyue.com/moapp/jybase/mysql"
@@ -18,7 +18,6 @@ var (
 	Mysql       *mysql.Mysql
 	NsqConfig   *entity.NsqStruct
 	SupplyTotal int
-	Sensitive   *entity.Sensitive
 	PublishCity *map[string]string
 )
 
@@ -76,8 +75,3 @@ func InitEs(es *entity.EsStruct) {
 		elastic.InitElasticSize(es.Addr, es.Size)
 	}
 }
-
-func InitSensitive(ss *entity.Sensitive) {
-	//初始化 Sensitive
-	Sensitive = ss
-}

+ 44 - 0
jyBXAdditional/rpc/bxcollection/model/init.go

@@ -0,0 +1,44 @@
+package model
+
+import (
+	"flag"
+	_ "github.com/go-sql-driver/mysql"
+	"github.com/zeromicro/go-zero/core/conf"
+	"github.com/zeromicro/go-zero/core/logx"
+	"jyBXAdditional/entity"
+	"jyBXAdditional/rpc/bxcollection/internal/config"
+)
+
+var configF = flag.String("f", "etc/bxcollection.yaml", "the config file")
+
+var C config.Config
+var err error
+
+//
+var logFile = flag.String("lf", "etc/logs.yaml", "the config file")
+var logc entity.Logc
+
+func init() {
+	conf.MustLoad(*configF, &C)
+	//初始化msyql
+	InitMysql(&C.MysqlMain)
+
+	//初始redis
+	InitRedis(&C.Redis)
+
+	//初始es
+	InitEs(&C.Es)
+	//初始化日志信息
+	conf.MustLoad(*logFile, &logc)
+	if len(logc.Level) > 0 {
+		for _, v := range logc.Level {
+			logx.MustSetup(logx.LogConf{
+				Mode:     logc.Mode,
+				Path:     logc.Path,
+				Level:    v,
+				KeepDays: logc.KeepDays,
+			})
+			logx.Info(v, "--日志记录")
+		}
+	}
+}