Эх сурвалжийг харах

wip:取消认领、认领增加返回值

fuwencai 2 жил өмнө
parent
commit
9409ddc85b

+ 3 - 0
.gitignore

@@ -2,3 +2,6 @@ api/medical/logs
 rpc/medical/logs
 rpc/medical/logs
 .idea
 .idea
 .output
 .output
+*.idea
+*.exe
+*.log

+ 1 - 1
Makefile

@@ -36,7 +36,7 @@ lint:
 #定义变量
 #定义变量
 API_LINUX_FILE=./.output/medical_field_api_linux
 API_LINUX_FILE=./.output/medical_field_api_linux
 API_WIN_FILE=./.output/medical_field_api.exe
 API_WIN_FILE=./.output/medical_field_api.exe
-RPC_LINUX_FILE=./.output/medical_field_rpclinux
+RPC_LINUX_FILE=./.output/medical_field_rpc_linux
 RPC_WIN_FILE=./.output/medical_field_rpc.exe
 RPC_WIN_FILE=./.output/medical_field_rpc.exe
 
 
 #编译api--linux
 #编译api--linux

+ 6 - 4
api/medical/internal/logic/public/claimlogic.go

@@ -26,7 +26,7 @@ func NewClaimLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ClaimLogic
 }
 }
 
 
 // Claim 认领
 // Claim 认领
-func (l *ClaimLogic) Claim(req *types.ClaimReq) (resp *types.CommonRes, err error) {
+func (l *ClaimLogic) Claim(req *types.ClaimReq) (resp *types.ClaimResp, err error) {
 
 
 	rs, _ := l.svcCtx.Medical.Claim(l.ctx, &medical.ClaimReq{
 	rs, _ := l.svcCtx.Medical.Claim(l.ctx, &medical.ClaimReq{
 		UserId: int64(req.UserId),
 		UserId: int64(req.UserId),
@@ -35,8 +35,10 @@ func (l *ClaimLogic) Claim(req *types.ClaimReq) (resp *types.CommonRes, err erro
 		AppId:  req.AppId,
 		AppId:  req.AppId,
 	})
 	})
 
 
-	return &types.CommonRes{
-		Error_msg:  rs.ErrorMsg,
-		Error_code: int(rs.ErrorCode),
+	return &types.ClaimResp{
+		Error_msg:   rs.ErrorMsg,
+		Error_code:  int(rs.ErrorCode),
+		ResourceNum: int(rs.ResourceNum),
+		ResourceIds: rs.ResourceIds,
 	}, nil
 	}, nil
 }
 }

+ 6 - 4
api/medical/internal/logic/public/unclaimedlogic.go

@@ -27,14 +27,16 @@ func NewUnclaimedLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Unclaim
 }
 }
 
 
 // Unclaimed 取消认领
 // Unclaimed 取消认领
-func (l *UnclaimedLogic) Unclaimed(req *types.UnclaimedReq) (resp *types.CommonRes, err error) {
+func (l *UnclaimedLogic) Unclaimed(req *types.UnclaimedReq) (resp *types.ClaimResp, err error) {
 	rs, _ := l.svcCtx.Medical.UnClaimed(l.ctx, &medical.UnclaimedReq{
 	rs, _ := l.svcCtx.Medical.UnClaimed(l.ctx, &medical.UnclaimedReq{
 		UserId: int64(req.UserId),
 		UserId: int64(req.UserId),
 		Id:     common.Int64All(encrypt.SE.Decode4Hex(req.Id)),
 		Id:     common.Int64All(encrypt.SE.Decode4Hex(req.Id)),
 	})
 	})
 
 
-	return &types.CommonRes{
-		Error_msg:  rs.ErrorMsg,
-		Error_code: int(rs.ErrorCode),
+	return &types.ClaimResp{
+		Error_msg:   rs.ErrorMsg,
+		Error_code:  int(rs.ErrorCode),
+		ResourceIds: rs.ResourceIds,
+		ResourceNum: int(rs.ResourceNum),
 	}, nil
 	}, nil
 }
 }

+ 7 - 0
api/medical/internal/types/types.go

@@ -70,6 +70,13 @@ type UnclaimedReq struct {
 	Id     string `json:"id"`
 	Id     string `json:"id"`
 }
 }
 
 
+type ClaimResp struct {
+	Error_code  int    `json:"error_code"`
+	Error_msg   string `json:"error_msg"`
+	ResourceNum int    `json:"resourceNum"`
+	ResourceIds string `json:"resourceIds"`
+}
+
 type IsClaimedReq struct {
 type IsClaimedReq struct {
 	UserId    int    `header:"newUserId"`      // 用户id
 	UserId    int    `header:"newUserId"`      // 用户id
 	CompanyId string `json:"company_id"`       // 机构id
 	CompanyId string `json:"company_id"`       // 机构id

+ 8 - 3
api/medical/medical.api

@@ -73,7 +73,12 @@ type UnclaimedReq {
 	UserId int    `header:"newUserId"` // 用户id
 	UserId int    `header:"newUserId"` // 用户id
 	Id     string `json:"id"`
 	Id     string `json:"id"`
 }
 }
-
+type ClaimResp {
+	Error_code  int    `json:"error_code"`
+	Error_msg   string `json:"error_msg"`
+	ResourceNum int    `json:"resourceNum"`
+	ResourceIds string `json:"resourceIds"`
+}
 // 是否是认领过的
 // 是否是认领过的
 type IsClaimedReq {
 type IsClaimedReq {
 	UserId    int    `header:"newUserId"`      // 用户id
 	UserId    int    `header:"newUserId"`      // 用户id
@@ -130,9 +135,9 @@ service medical-api {
 )
 )
 service medical-api {
 service medical-api {
 	@handler claim
 	@handler claim
-	post /claim (ClaimReq) returns (CommonRes); 	// 认领
+	post /claim (ClaimReq) returns (ClaimResp); 	// 认领
 	@handler unclaimed
 	@handler unclaimed
-	post /unclaimed (UnclaimedReq) returns (CommonRes); // 取消认领
+	post /unclaimed (UnclaimedReq) returns (ClaimResp); // 取消认领
 	@handler isClaimed
 	@handler isClaimed
 	post /isClaimed (IsClaimedReq) returns (CommonRes); // 是否认领
 	post /isClaimed (IsClaimedReq) returns (CommonRes); // 是否认领
 	
 	

+ 16 - 8
rpc/medical/internal/logic/claimlogic.go

@@ -1,11 +1,14 @@
 package logic
 package logic
 
 
 import (
 import (
+	"app.yhyue.com/moapp/jybase/common"
 	"app.yhyue.com/moapp/jybase/date"
 	"app.yhyue.com/moapp/jybase/date"
+	"app.yhyue.com/moapp/jybase/encrypt"
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/entity"
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/entity"
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/rpc/medical/internal/svc"
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/rpc/medical/internal/svc"
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/rpc/medical/medical"
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/rpc/medical/medical"
 	"context"
 	"context"
+	"fmt"
 	"github.com/mitchellh/mapstructure"
 	"github.com/mitchellh/mapstructure"
 	"github.com/zeromicro/go-zero/core/logx"
 	"github.com/zeromicro/go-zero/core/logx"
 )
 )
@@ -25,7 +28,7 @@ func NewClaimLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ClaimLogic
 }
 }
 
 
 // Claim 认领(经销商/医疗机构)
 // Claim 认领(经销商/医疗机构)
-func (l *ClaimLogic) Claim(in *medical.ClaimReq) (*medical.CommonResp, error) {
+func (l *ClaimLogic) Claim(in *medical.ClaimReq) (*medical.ClaimResp, error) {
 	tmp := struct {
 	tmp := struct {
 		CompanyName    string `mapstructure:"company_name,omitempty"`
 		CompanyName    string `mapstructure:"company_name,omitempty"`
 		EstablishDate  string `mapstructure:"establish_date,omitempty"`
 		EstablishDate  string `mapstructure:"establish_date,omitempty"`
@@ -49,14 +52,19 @@ func (l *ClaimLogic) Claim(in *medical.ClaimReq) (*medical.CommonResp, error) {
 		Type:       int(in.Type),
 		Type:       int(in.Type),
 		CreateTime: date.NowFormat(date.Date_Full_Layout),
 		CreateTime: date.NowFormat(date.Date_Full_Layout),
 	})
 	})
-	if !rs {
-		return &medical.CommonResp{
-			ErrorMsg:  "操作失败",
-			ErrorCode: entity.ERRORCODE,
+	if rs < 0 {
+		return &medical.ClaimResp{
+			ErrorMsg:    "操作失败",
+			ErrorCode:   entity.ERRORCODE,
+			ResourceNum: 0,
+			ResourceIds: "",
 		}, nil
 		}, nil
 	}
 	}
-	return &medical.CommonResp{
-		ErrorMsg:  "",
-		ErrorCode: entity.SUCCESSCODE,
+	id := encrypt.SE.Encode2Hex(fmt.Sprintf("%v", rs))
+	return &medical.ClaimResp{
+		ErrorMsg:    "",
+		ErrorCode:   entity.SUCCESSCODE,
+		ResourceNum: common.Int64All(common.If(rs == int64(0), 0, 1)),
+		ResourceIds: common.ObjToString(common.If(rs == int64(0), "", id)),
 	}, nil
 	}, nil
 }
 }

+ 13 - 7
rpc/medical/internal/logic/unclaimedlogic.go

@@ -1,8 +1,10 @@
 package logic
 package logic
 
 
 import (
 import (
+	"app.yhyue.com/moapp/jybase/encrypt"
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/entity"
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/entity"
 	"context"
 	"context"
+	"fmt"
 
 
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/rpc/medical/internal/svc"
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/rpc/medical/internal/svc"
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/rpc/medical/medical"
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/rpc/medical/medical"
@@ -25,16 +27,20 @@ func NewUnClaimedLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UnClaim
 }
 }
 
 
 // UnClaimed 取消认领(经销商/医疗机构)
 // UnClaimed 取消认领(经销商/医疗机构)
-func (l *UnClaimedLogic) UnClaimed(in *medical.UnclaimedReq) (*medical.CommonResp, error) {
+func (l *UnClaimedLogic) UnClaimed(in *medical.UnclaimedReq) (*medical.ClaimResp, error) {
 	rs := l.svcCtx.EntClaimSrv.Unclaimed(int(in.Id), int(in.UserId))
 	rs := l.svcCtx.EntClaimSrv.Unclaimed(int(in.Id), int(in.UserId))
 	if !rs {
 	if !rs {
-		return &medical.CommonResp{
-			ErrorMsg:  "操作失败",
-			ErrorCode: entity.ERRORCODE,
+		return &medical.ClaimResp{
+			ErrorMsg:    "操作失败",
+			ErrorCode:   entity.ERRORCODE,
+			ResourceNum: 0,
+			ResourceIds: "",
 		}, nil
 		}, nil
 	}
 	}
-	return &medical.CommonResp{
-		ErrorMsg:  "",
-		ErrorCode: entity.SUCCESSCODE,
+	return &medical.ClaimResp{
+		ErrorMsg:    "",
+		ErrorCode:   entity.SUCCESSCODE,
+		ResourceNum: 1,
+		ResourceIds: encrypt.SE.Encode2Hex(fmt.Sprintf("%v", in.Id)),
 	}, nil
 	}, nil
 }
 }

+ 2 - 2
rpc/medical/internal/server/medicalserver.go

@@ -59,13 +59,13 @@ func (s *MedicalServer) Portrait(ctx context.Context, in *medical.PortraitReq) (
 }
 }
 
 
 //  认领(经销商/医疗机构)
 //  认领(经销商/医疗机构)
-func (s *MedicalServer) Claim(ctx context.Context, in *medical.ClaimReq) (*medical.CommonResp, error) {
+func (s *MedicalServer) Claim(ctx context.Context, in *medical.ClaimReq) (*medical.ClaimResp, error) {
 	l := logic.NewClaimLogic(ctx, s.svcCtx)
 	l := logic.NewClaimLogic(ctx, s.svcCtx)
 	return l.Claim(in)
 	return l.Claim(in)
 }
 }
 
 
 //  取消认领(经销商/医疗机构)
 //  取消认领(经销商/医疗机构)
-func (s *MedicalServer) UnClaimed(ctx context.Context, in *medical.UnclaimedReq) (*medical.CommonResp, error) {
+func (s *MedicalServer) UnClaimed(ctx context.Context, in *medical.UnclaimedReq) (*medical.ClaimResp, error) {
 	l := logic.NewUnClaimedLogic(ctx, s.svcCtx)
 	l := logic.NewUnClaimedLogic(ctx, s.svcCtx)
 	return l.UnClaimed(in)
 	return l.UnClaimed(in)
 }
 }

+ 9 - 2
rpc/medical/medical.proto

@@ -145,6 +145,13 @@ message UnclaimedReq{
   int64  Id = 2; // 认领记录id
   int64  Id = 2; // 认领记录id
   string AppId = 3 ;//appid
   string AppId = 3 ;//appid
 }
 }
+//
+message ClaimResp{
+  int64           ErrorCode = 1;  // 响应代码
+  string          ErrorMsg = 2;   // 响应信息
+  int64           resourceNum = 3;   // 数量
+  string          resourceIds = 4;   //id
+}
 // 是否是认领的
 // 是否是认领的
 message IsClaimedReq{
 message IsClaimedReq{
   int64  UserId = 1 ;// 用户id
   int64  UserId = 1 ;// 用户id
@@ -235,9 +242,9 @@ service Medical {
       //医疗机构画像
       //医疗机构画像
       rpc Portrait(PortraitReq) returns (PortraitResp);
       rpc Portrait(PortraitReq) returns (PortraitResp);
       // 认领(经销商/医疗机构)
       // 认领(经销商/医疗机构)
-      rpc Claim(ClaimReq) returns(CommonResp);
+      rpc Claim(ClaimReq) returns(ClaimResp);
       // 取消认领(经销商/医疗机构)
       // 取消认领(经销商/医疗机构)
-      rpc UnClaimed(UnclaimedReq) returns(CommonResp);
+      rpc UnClaimed(UnclaimedReq) returns(ClaimResp);
       // 是否认领(经销商/医疗机构)
       // 是否认领(经销商/医疗机构)
       rpc IsClaimed(IsClaimedReq) returns(IsClaimedResp);
       rpc IsClaimed(IsClaimedReq) returns(IsClaimedResp);
       // 我认领的经销商列表
       // 我认领的经销商列表

+ 4 - 4
rpc/medical/medical/medical.go

@@ -25,9 +25,9 @@ type (
 		// 医疗机构画像
 		// 医疗机构画像
 		Portrait(ctx context.Context, in *PortraitReq, opts ...grpc.CallOption) (*PortraitResp, error)
 		Portrait(ctx context.Context, in *PortraitReq, opts ...grpc.CallOption) (*PortraitResp, error)
 		//  认领(经销商/医疗机构)
 		//  认领(经销商/医疗机构)
-		Claim(ctx context.Context, in *ClaimReq, opts ...grpc.CallOption) (*CommonResp, error)
+		Claim(ctx context.Context, in *ClaimReq, opts ...grpc.CallOption) (*ClaimResp, error)
 		//  取消认领(经销商/医疗机构)
 		//  取消认领(经销商/医疗机构)
-		UnClaimed(ctx context.Context, in *UnclaimedReq, opts ...grpc.CallOption) (*CommonResp, error)
+		UnClaimed(ctx context.Context, in *UnclaimedReq, opts ...grpc.CallOption) (*ClaimResp, error)
 		//  是否认领(经销商/医疗机构)
 		//  是否认领(经销商/医疗机构)
 		IsClaimed(ctx context.Context, in *IsClaimedReq, opts ...grpc.CallOption) (*IsClaimedResp, error)
 		IsClaimed(ctx context.Context, in *IsClaimedReq, opts ...grpc.CallOption) (*IsClaimedResp, error)
 		//  我认领的经销商列表
 		//  我认领的经销商列表
@@ -86,13 +86,13 @@ func (m *defaultMedical) Portrait(ctx context.Context, in *PortraitReq, opts ...
 }
 }
 
 
 //  认领(经销商/医疗机构)
 //  认领(经销商/医疗机构)
-func (m *defaultMedical) Claim(ctx context.Context, in *ClaimReq, opts ...grpc.CallOption) (*CommonResp, error) {
+func (m *defaultMedical) Claim(ctx context.Context, in *ClaimReq, opts ...grpc.CallOption) (*ClaimResp, error) {
 	client := NewMedicalClient(m.cli.Conn())
 	client := NewMedicalClient(m.cli.Conn())
 	return client.Claim(ctx, in, opts...)
 	return client.Claim(ctx, in, opts...)
 }
 }
 
 
 //  取消认领(经销商/医疗机构)
 //  取消认领(经销商/医疗机构)
-func (m *defaultMedical) UnClaimed(ctx context.Context, in *UnclaimedReq, opts ...grpc.CallOption) (*CommonResp, error) {
+func (m *defaultMedical) UnClaimed(ctx context.Context, in *UnclaimedReq, opts ...grpc.CallOption) (*ClaimResp, error) {
 	client := NewMedicalClient(m.cli.Conn())
 	client := NewMedicalClient(m.cli.Conn())
 	return client.UnClaimed(ctx, in, opts...)
 	return client.UnClaimed(ctx, in, opts...)
 }
 }

+ 288 - 195
rpc/medical/medical/medical.pb.go

@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // versions:
 // 	protoc-gen-go v1.28.0
 // 	protoc-gen-go v1.28.0
-// 	protoc        v3.15.1
+// 	protoc        v3.19.4
 // source: medical.proto
 // source: medical.proto
 
 
 package medical
 package medical
@@ -1504,6 +1504,78 @@ func (x *UnclaimedReq) GetAppId() string {
 	return ""
 	return ""
 }
 }
 
 
+//
+type ClaimResp struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	ErrorCode   int64  `protobuf:"varint,1,opt,name=ErrorCode,proto3" json:"ErrorCode,omitempty"`     // 响应代码
+	ErrorMsg    string `protobuf:"bytes,2,opt,name=ErrorMsg,proto3" json:"ErrorMsg,omitempty"`        // 响应信息
+	ResourceNum int64  `protobuf:"varint,3,opt,name=resourceNum,proto3" json:"resourceNum,omitempty"` // 数量
+	ResourceIds string `protobuf:"bytes,4,opt,name=resourceIds,proto3" json:"resourceIds,omitempty"`  //id
+}
+
+func (x *ClaimResp) Reset() {
+	*x = ClaimResp{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_medical_proto_msgTypes[20]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ClaimResp) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClaimResp) ProtoMessage() {}
+
+func (x *ClaimResp) ProtoReflect() protoreflect.Message {
+	mi := &file_medical_proto_msgTypes[20]
+	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 ClaimResp.ProtoReflect.Descriptor instead.
+func (*ClaimResp) Descriptor() ([]byte, []int) {
+	return file_medical_proto_rawDescGZIP(), []int{20}
+}
+
+func (x *ClaimResp) GetErrorCode() int64 {
+	if x != nil {
+		return x.ErrorCode
+	}
+	return 0
+}
+
+func (x *ClaimResp) GetErrorMsg() string {
+	if x != nil {
+		return x.ErrorMsg
+	}
+	return ""
+}
+
+func (x *ClaimResp) GetResourceNum() int64 {
+	if x != nil {
+		return x.ResourceNum
+	}
+	return 0
+}
+
+func (x *ClaimResp) GetResourceIds() string {
+	if x != nil {
+		return x.ResourceIds
+	}
+	return ""
+}
+
 // 是否是认领的
 // 是否是认领的
 type IsClaimedReq struct {
 type IsClaimedReq struct {
 	state         protoimpl.MessageState
 	state         protoimpl.MessageState
@@ -1519,7 +1591,7 @@ type IsClaimedReq struct {
 func (x *IsClaimedReq) Reset() {
 func (x *IsClaimedReq) Reset() {
 	*x = IsClaimedReq{}
 	*x = IsClaimedReq{}
 	if protoimpl.UnsafeEnabled {
 	if protoimpl.UnsafeEnabled {
-		mi := &file_medical_proto_msgTypes[20]
+		mi := &file_medical_proto_msgTypes[21]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 		ms.StoreMessageInfo(mi)
 	}
 	}
@@ -1532,7 +1604,7 @@ func (x *IsClaimedReq) String() string {
 func (*IsClaimedReq) ProtoMessage() {}
 func (*IsClaimedReq) ProtoMessage() {}
 
 
 func (x *IsClaimedReq) ProtoReflect() protoreflect.Message {
 func (x *IsClaimedReq) ProtoReflect() protoreflect.Message {
-	mi := &file_medical_proto_msgTypes[20]
+	mi := &file_medical_proto_msgTypes[21]
 	if protoimpl.UnsafeEnabled && x != nil {
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
 		if ms.LoadMessageInfo() == nil {
@@ -1545,7 +1617,7 @@ func (x *IsClaimedReq) ProtoReflect() protoreflect.Message {
 
 
 // Deprecated: Use IsClaimedReq.ProtoReflect.Descriptor instead.
 // Deprecated: Use IsClaimedReq.ProtoReflect.Descriptor instead.
 func (*IsClaimedReq) Descriptor() ([]byte, []int) {
 func (*IsClaimedReq) Descriptor() ([]byte, []int) {
-	return file_medical_proto_rawDescGZIP(), []int{20}
+	return file_medical_proto_rawDescGZIP(), []int{21}
 }
 }
 
 
 func (x *IsClaimedReq) GetUserId() int64 {
 func (x *IsClaimedReq) GetUserId() int64 {
@@ -1589,7 +1661,7 @@ type IsClaimedResp struct {
 func (x *IsClaimedResp) Reset() {
 func (x *IsClaimedResp) Reset() {
 	*x = IsClaimedResp{}
 	*x = IsClaimedResp{}
 	if protoimpl.UnsafeEnabled {
 	if protoimpl.UnsafeEnabled {
-		mi := &file_medical_proto_msgTypes[21]
+		mi := &file_medical_proto_msgTypes[22]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 		ms.StoreMessageInfo(mi)
 	}
 	}
@@ -1602,7 +1674,7 @@ func (x *IsClaimedResp) String() string {
 func (*IsClaimedResp) ProtoMessage() {}
 func (*IsClaimedResp) ProtoMessage() {}
 
 
 func (x *IsClaimedResp) ProtoReflect() protoreflect.Message {
 func (x *IsClaimedResp) ProtoReflect() protoreflect.Message {
-	mi := &file_medical_proto_msgTypes[21]
+	mi := &file_medical_proto_msgTypes[22]
 	if protoimpl.UnsafeEnabled && x != nil {
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
 		if ms.LoadMessageInfo() == nil {
@@ -1615,7 +1687,7 @@ func (x *IsClaimedResp) ProtoReflect() protoreflect.Message {
 
 
 // Deprecated: Use IsClaimedResp.ProtoReflect.Descriptor instead.
 // Deprecated: Use IsClaimedResp.ProtoReflect.Descriptor instead.
 func (*IsClaimedResp) Descriptor() ([]byte, []int) {
 func (*IsClaimedResp) Descriptor() ([]byte, []int) {
-	return file_medical_proto_rawDescGZIP(), []int{21}
+	return file_medical_proto_rawDescGZIP(), []int{22}
 }
 }
 
 
 func (x *IsClaimedResp) GetErrorCode() int64 {
 func (x *IsClaimedResp) GetErrorCode() int64 {
@@ -1654,7 +1726,7 @@ type ClaimedReq struct {
 func (x *ClaimedReq) Reset() {
 func (x *ClaimedReq) Reset() {
 	*x = ClaimedReq{}
 	*x = ClaimedReq{}
 	if protoimpl.UnsafeEnabled {
 	if protoimpl.UnsafeEnabled {
-		mi := &file_medical_proto_msgTypes[22]
+		mi := &file_medical_proto_msgTypes[23]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 		ms.StoreMessageInfo(mi)
 	}
 	}
@@ -1667,7 +1739,7 @@ func (x *ClaimedReq) String() string {
 func (*ClaimedReq) ProtoMessage() {}
 func (*ClaimedReq) ProtoMessage() {}
 
 
 func (x *ClaimedReq) ProtoReflect() protoreflect.Message {
 func (x *ClaimedReq) ProtoReflect() protoreflect.Message {
-	mi := &file_medical_proto_msgTypes[22]
+	mi := &file_medical_proto_msgTypes[23]
 	if protoimpl.UnsafeEnabled && x != nil {
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
 		if ms.LoadMessageInfo() == nil {
@@ -1680,7 +1752,7 @@ func (x *ClaimedReq) ProtoReflect() protoreflect.Message {
 
 
 // Deprecated: Use ClaimedReq.ProtoReflect.Descriptor instead.
 // Deprecated: Use ClaimedReq.ProtoReflect.Descriptor instead.
 func (*ClaimedReq) Descriptor() ([]byte, []int) {
 func (*ClaimedReq) Descriptor() ([]byte, []int) {
-	return file_medical_proto_rawDescGZIP(), []int{22}
+	return file_medical_proto_rawDescGZIP(), []int{23}
 }
 }
 
 
 func (x *ClaimedReq) GetUserId() int64 {
 func (x *ClaimedReq) GetUserId() int64 {
@@ -1725,7 +1797,7 @@ type GetNewMsgReq struct {
 func (x *GetNewMsgReq) Reset() {
 func (x *GetNewMsgReq) Reset() {
 	*x = GetNewMsgReq{}
 	*x = GetNewMsgReq{}
 	if protoimpl.UnsafeEnabled {
 	if protoimpl.UnsafeEnabled {
-		mi := &file_medical_proto_msgTypes[23]
+		mi := &file_medical_proto_msgTypes[24]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 		ms.StoreMessageInfo(mi)
 	}
 	}
@@ -1738,7 +1810,7 @@ func (x *GetNewMsgReq) String() string {
 func (*GetNewMsgReq) ProtoMessage() {}
 func (*GetNewMsgReq) ProtoMessage() {}
 
 
 func (x *GetNewMsgReq) ProtoReflect() protoreflect.Message {
 func (x *GetNewMsgReq) ProtoReflect() protoreflect.Message {
-	mi := &file_medical_proto_msgTypes[23]
+	mi := &file_medical_proto_msgTypes[24]
 	if protoimpl.UnsafeEnabled && x != nil {
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
 		if ms.LoadMessageInfo() == nil {
@@ -1751,7 +1823,7 @@ func (x *GetNewMsgReq) ProtoReflect() protoreflect.Message {
 
 
 // Deprecated: Use GetNewMsgReq.ProtoReflect.Descriptor instead.
 // Deprecated: Use GetNewMsgReq.ProtoReflect.Descriptor instead.
 func (*GetNewMsgReq) Descriptor() ([]byte, []int) {
 func (*GetNewMsgReq) Descriptor() ([]byte, []int) {
-	return file_medical_proto_rawDescGZIP(), []int{23}
+	return file_medical_proto_rawDescGZIP(), []int{24}
 }
 }
 
 
 func (x *GetNewMsgReq) GetCompanyName() string {
 func (x *GetNewMsgReq) GetCompanyName() string {
@@ -1790,7 +1862,7 @@ type GetNewMsgResp struct {
 func (x *GetNewMsgResp) Reset() {
 func (x *GetNewMsgResp) Reset() {
 	*x = GetNewMsgResp{}
 	*x = GetNewMsgResp{}
 	if protoimpl.UnsafeEnabled {
 	if protoimpl.UnsafeEnabled {
-		mi := &file_medical_proto_msgTypes[24]
+		mi := &file_medical_proto_msgTypes[25]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 		ms.StoreMessageInfo(mi)
 	}
 	}
@@ -1803,7 +1875,7 @@ func (x *GetNewMsgResp) String() string {
 func (*GetNewMsgResp) ProtoMessage() {}
 func (*GetNewMsgResp) ProtoMessage() {}
 
 
 func (x *GetNewMsgResp) ProtoReflect() protoreflect.Message {
 func (x *GetNewMsgResp) ProtoReflect() protoreflect.Message {
-	mi := &file_medical_proto_msgTypes[24]
+	mi := &file_medical_proto_msgTypes[25]
 	if protoimpl.UnsafeEnabled && x != nil {
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
 		if ms.LoadMessageInfo() == nil {
@@ -1816,7 +1888,7 @@ func (x *GetNewMsgResp) ProtoReflect() protoreflect.Message {
 
 
 // Deprecated: Use GetNewMsgResp.ProtoReflect.Descriptor instead.
 // Deprecated: Use GetNewMsgResp.ProtoReflect.Descriptor instead.
 func (*GetNewMsgResp) Descriptor() ([]byte, []int) {
 func (*GetNewMsgResp) Descriptor() ([]byte, []int) {
-	return file_medical_proto_rawDescGZIP(), []int{24}
+	return file_medical_proto_rawDescGZIP(), []int{25}
 }
 }
 
 
 func (x *GetNewMsgResp) GetList() []*NewMsgList {
 func (x *GetNewMsgResp) GetList() []*NewMsgList {
@@ -1865,7 +1937,7 @@ type NewMsgList struct {
 func (x *NewMsgList) Reset() {
 func (x *NewMsgList) Reset() {
 	*x = NewMsgList{}
 	*x = NewMsgList{}
 	if protoimpl.UnsafeEnabled {
 	if protoimpl.UnsafeEnabled {
-		mi := &file_medical_proto_msgTypes[25]
+		mi := &file_medical_proto_msgTypes[26]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 		ms.StoreMessageInfo(mi)
 	}
 	}
@@ -1878,7 +1950,7 @@ func (x *NewMsgList) String() string {
 func (*NewMsgList) ProtoMessage() {}
 func (*NewMsgList) ProtoMessage() {}
 
 
 func (x *NewMsgList) ProtoReflect() protoreflect.Message {
 func (x *NewMsgList) ProtoReflect() protoreflect.Message {
-	mi := &file_medical_proto_msgTypes[25]
+	mi := &file_medical_proto_msgTypes[26]
 	if protoimpl.UnsafeEnabled && x != nil {
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
 		if ms.LoadMessageInfo() == nil {
@@ -1891,7 +1963,7 @@ func (x *NewMsgList) ProtoReflect() protoreflect.Message {
 
 
 // Deprecated: Use NewMsgList.ProtoReflect.Descriptor instead.
 // Deprecated: Use NewMsgList.ProtoReflect.Descriptor instead.
 func (*NewMsgList) Descriptor() ([]byte, []int) {
 func (*NewMsgList) Descriptor() ([]byte, []int) {
-	return file_medical_proto_rawDescGZIP(), []int{25}
+	return file_medical_proto_rawDescGZIP(), []int{26}
 }
 }
 
 
 func (x *NewMsgList) GetArea() string {
 func (x *NewMsgList) GetArea() string {
@@ -1965,7 +2037,7 @@ type EntClaim struct {
 func (x *EntClaim) Reset() {
 func (x *EntClaim) Reset() {
 	*x = EntClaim{}
 	*x = EntClaim{}
 	if protoimpl.UnsafeEnabled {
 	if protoimpl.UnsafeEnabled {
-		mi := &file_medical_proto_msgTypes[26]
+		mi := &file_medical_proto_msgTypes[27]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 		ms.StoreMessageInfo(mi)
 	}
 	}
@@ -1978,7 +2050,7 @@ func (x *EntClaim) String() string {
 func (*EntClaim) ProtoMessage() {}
 func (*EntClaim) ProtoMessage() {}
 
 
 func (x *EntClaim) ProtoReflect() protoreflect.Message {
 func (x *EntClaim) ProtoReflect() protoreflect.Message {
-	mi := &file_medical_proto_msgTypes[26]
+	mi := &file_medical_proto_msgTypes[27]
 	if protoimpl.UnsafeEnabled && x != nil {
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
 		if ms.LoadMessageInfo() == nil {
@@ -1991,7 +2063,7 @@ func (x *EntClaim) ProtoReflect() protoreflect.Message {
 
 
 // Deprecated: Use EntClaim.ProtoReflect.Descriptor instead.
 // Deprecated: Use EntClaim.ProtoReflect.Descriptor instead.
 func (*EntClaim) Descriptor() ([]byte, []int) {
 func (*EntClaim) Descriptor() ([]byte, []int) {
-	return file_medical_proto_rawDescGZIP(), []int{26}
+	return file_medical_proto_rawDescGZIP(), []int{27}
 }
 }
 
 
 func (x *EntClaim) GetId() string {
 func (x *EntClaim) GetId() string {
@@ -2091,7 +2163,7 @@ type EntClaimListStruct struct {
 func (x *EntClaimListStruct) Reset() {
 func (x *EntClaimListStruct) Reset() {
 	*x = EntClaimListStruct{}
 	*x = EntClaimListStruct{}
 	if protoimpl.UnsafeEnabled {
 	if protoimpl.UnsafeEnabled {
-		mi := &file_medical_proto_msgTypes[27]
+		mi := &file_medical_proto_msgTypes[28]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 		ms.StoreMessageInfo(mi)
 	}
 	}
@@ -2104,7 +2176,7 @@ func (x *EntClaimListStruct) String() string {
 func (*EntClaimListStruct) ProtoMessage() {}
 func (*EntClaimListStruct) ProtoMessage() {}
 
 
 func (x *EntClaimListStruct) ProtoReflect() protoreflect.Message {
 func (x *EntClaimListStruct) ProtoReflect() protoreflect.Message {
-	mi := &file_medical_proto_msgTypes[27]
+	mi := &file_medical_proto_msgTypes[28]
 	if protoimpl.UnsafeEnabled && x != nil {
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
 		if ms.LoadMessageInfo() == nil {
@@ -2117,7 +2189,7 @@ func (x *EntClaimListStruct) ProtoReflect() protoreflect.Message {
 
 
 // Deprecated: Use EntClaimListStruct.ProtoReflect.Descriptor instead.
 // Deprecated: Use EntClaimListStruct.ProtoReflect.Descriptor instead.
 func (*EntClaimListStruct) Descriptor() ([]byte, []int) {
 func (*EntClaimListStruct) Descriptor() ([]byte, []int) {
-	return file_medical_proto_rawDescGZIP(), []int{27}
+	return file_medical_proto_rawDescGZIP(), []int{28}
 }
 }
 
 
 func (x *EntClaimListStruct) GetList() []*EntClaim {
 func (x *EntClaimListStruct) GetList() []*EntClaim {
@@ -2148,7 +2220,7 @@ type EntClaimListResp struct {
 func (x *EntClaimListResp) Reset() {
 func (x *EntClaimListResp) Reset() {
 	*x = EntClaimListResp{}
 	*x = EntClaimListResp{}
 	if protoimpl.UnsafeEnabled {
 	if protoimpl.UnsafeEnabled {
-		mi := &file_medical_proto_msgTypes[28]
+		mi := &file_medical_proto_msgTypes[29]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 		ms.StoreMessageInfo(mi)
 	}
 	}
@@ -2161,7 +2233,7 @@ func (x *EntClaimListResp) String() string {
 func (*EntClaimListResp) ProtoMessage() {}
 func (*EntClaimListResp) ProtoMessage() {}
 
 
 func (x *EntClaimListResp) ProtoReflect() protoreflect.Message {
 func (x *EntClaimListResp) ProtoReflect() protoreflect.Message {
-	mi := &file_medical_proto_msgTypes[28]
+	mi := &file_medical_proto_msgTypes[29]
 	if protoimpl.UnsafeEnabled && x != nil {
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
 		if ms.LoadMessageInfo() == nil {
@@ -2174,7 +2246,7 @@ func (x *EntClaimListResp) ProtoReflect() protoreflect.Message {
 
 
 // Deprecated: Use EntClaimListResp.ProtoReflect.Descriptor instead.
 // Deprecated: Use EntClaimListResp.ProtoReflect.Descriptor instead.
 func (*EntClaimListResp) Descriptor() ([]byte, []int) {
 func (*EntClaimListResp) Descriptor() ([]byte, []int) {
-	return file_medical_proto_rawDescGZIP(), []int{28}
+	return file_medical_proto_rawDescGZIP(), []int{29}
 }
 }
 
 
 func (x *EntClaimListResp) GetErrorCode() int64 {
 func (x *EntClaimListResp) GetErrorCode() int64 {
@@ -2209,7 +2281,7 @@ type IsClaimedResp_StatusRes struct {
 func (x *IsClaimedResp_StatusRes) Reset() {
 func (x *IsClaimedResp_StatusRes) Reset() {
 	*x = IsClaimedResp_StatusRes{}
 	*x = IsClaimedResp_StatusRes{}
 	if protoimpl.UnsafeEnabled {
 	if protoimpl.UnsafeEnabled {
-		mi := &file_medical_proto_msgTypes[29]
+		mi := &file_medical_proto_msgTypes[30]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 		ms.StoreMessageInfo(mi)
 	}
 	}
@@ -2222,7 +2294,7 @@ func (x *IsClaimedResp_StatusRes) String() string {
 func (*IsClaimedResp_StatusRes) ProtoMessage() {}
 func (*IsClaimedResp_StatusRes) ProtoMessage() {}
 
 
 func (x *IsClaimedResp_StatusRes) ProtoReflect() protoreflect.Message {
 func (x *IsClaimedResp_StatusRes) ProtoReflect() protoreflect.Message {
-	mi := &file_medical_proto_msgTypes[29]
+	mi := &file_medical_proto_msgTypes[30]
 	if protoimpl.UnsafeEnabled && x != nil {
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
 		if ms.LoadMessageInfo() == nil {
@@ -2235,7 +2307,7 @@ func (x *IsClaimedResp_StatusRes) ProtoReflect() protoreflect.Message {
 
 
 // Deprecated: Use IsClaimedResp_StatusRes.ProtoReflect.Descriptor instead.
 // Deprecated: Use IsClaimedResp_StatusRes.ProtoReflect.Descriptor instead.
 func (*IsClaimedResp_StatusRes) Descriptor() ([]byte, []int) {
 func (*IsClaimedResp_StatusRes) Descriptor() ([]byte, []int) {
-	return file_medical_proto_rawDescGZIP(), []int{21, 0}
+	return file_medical_proto_rawDescGZIP(), []int{22, 0}
 }
 }
 
 
 func (x *IsClaimedResp_StatusRes) GetStatus() bool {
 func (x *IsClaimedResp_StatusRes) GetStatus() bool {
@@ -2424,141 +2496,149 @@ var file_medical_proto_rawDesc = []byte{
 	0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72,
 	0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72,
 	0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02,
 	0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02,
 	0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
 	0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, 0x22, 0x66, 0x0a, 0x0c, 0x49, 0x73, 0x43, 0x6c,
-	0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72,
-	0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64,
-	0x12, 0x14, 0x0a, 0x05, 0x45, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x05, 0x45, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
-	0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65,
-	0x22, 0xa4, 0x01, 0x0a, 0x0d, 0x49, 0x73, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65,
-	0x73, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65,
-	0x12, 0x1a, 0x0a, 0x08, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x08, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x34, 0x0a, 0x04,
-	0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x65, 0x64,
-	0x69, 0x63, 0x61, 0x6c, 0x2e, 0x49, 0x73, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65,
-	0x73, 0x70, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x52, 0x04, 0x44, 0x61,
-	0x74, 0x61, 0x1a, 0x23, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x12,
-	0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x6a, 0x0a, 0x0a, 0x43, 0x6c, 0x61, 0x69, 0x6d,
-	0x65, 0x64, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a,
-	0x05, 0x41, 0x70, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x41, 0x70,
-	0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x04, 0x50, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53,
-	0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53,
-	0x69, 0x7a, 0x65, 0x22, 0x66, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x77, 0x4d, 0x73, 0x67,
-	0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4e, 0x61,
-	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e,
-	0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x12,
-	0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x0d,
-	0x47, 0x65, 0x74, 0x4e, 0x65, 0x77, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x27, 0x0a,
-	0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x65,
-	0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74,
-	0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09,
-	0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x72, 0x72,
-	0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65,
-	0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x0a, 0x4e, 0x65, 0x77,
-	0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x65, 0x61, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x65, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x62,
-	0x69, 0x64, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
-	0x62, 0x69, 0x64, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x69, 0x64,
-	0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x69,
-	0x64, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x72, 0x73, 0x74,
-	0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x72, 0x73,
-	0x74, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x06,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x77,
-	0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x77, 0x69, 0x6e,
-	0x6e, 0x65, 0x72, 0x22, 0xd1, 0x02, 0x0a, 0x08, 0x45, 0x6e, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d,
-	0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
-	0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x74,
-	0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64,
-	0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74,
-	0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
-	0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x73, 0x74,
-	0x61, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0d, 0x65, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x44, 0x61, 0x74, 0x65,
-	0x12, 0x18, 0x0a, 0x07, 0x63, 0x61, 0x70, 0x69, 0x74, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x07, 0x63, 0x61, 0x70, 0x69, 0x74, 0x61, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f,
-	0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12,
-	0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
-	0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f,
-	0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61,
-	0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
-	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x70, 0x64,
-	0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x51, 0x0a, 0x12, 0x45, 0x6e, 0x74, 0x43, 0x6c,
-	0x61, 0x69, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x25, 0x0a,
-	0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x65,
-	0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x45, 0x6e, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x04,
-	0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x7d, 0x0a, 0x10, 0x45, 0x6e,
-	0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c,
+	0x09, 0x52, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, 0x22, 0x89, 0x01, 0x0a, 0x09, 0x43, 0x6c, 0x61,
+	0x69, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43,
+	0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72,
+	0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67,
+	0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e,
+	0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64,
+	0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+	0x65, 0x49, 0x64, 0x73, 0x22, 0x66, 0x0a, 0x0c, 0x49, 0x73, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65,
+	0x64, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05,
+	0x45, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x45, 0x6e, 0x74,
+	0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22, 0xa4, 0x01, 0x0a,
+	0x0d, 0x49, 0x73, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c,
 	0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
 	0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
 	0x03, 0x52, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08,
 	0x03, 0x52, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08,
 	0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
 	0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
-	0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2f, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c,
-	0x2e, 0x45, 0x6e, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x72,
-	0x75, 0x63, 0x74, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x32, 0xf0, 0x05, 0x0a, 0x07, 0x4d, 0x65,
-	0x64, 0x69, 0x63, 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x0b, 0x49, 0x6e, 0x73, 0x74, 0x69, 0x74, 0x75,
-	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x53,
-	0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e,
-	0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x43, 0x6f,
-	0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x0d, 0x47, 0x65, 0x74,
-	0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0d, 0x2e, 0x6d, 0x65, 0x64,
-	0x69, 0x63, 0x61, 0x6c, 0x2e, 0x5a, 0x65, 0x72, 0x6f, 0x1a, 0x17, 0x2e, 0x6d, 0x65, 0x64, 0x69,
-	0x63, 0x61, 0x6c, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65,
-	0x73, 0x70, 0x12, 0x42, 0x0a, 0x0b, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f,
-	0x72, 0x12, 0x1d, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x61, 0x72,
-	0x63, 0x68, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71,
-	0x1a, 0x14, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61,
-	0x6e, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x41, 0x75,
-	0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x61, 0x76, 0x65, 0x12, 0x11, 0x2e, 0x6d, 0x65, 0x64,
-	0x69, 0x63, 0x61, 0x6c, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x13, 0x2e,
-	0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65,
-	0x73, 0x70, 0x12, 0x39, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e,
-	0x66, 0x6f, 0x12, 0x12, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x43, 0x6f, 0x6d,
-	0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c,
-	0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a,
-	0x08, 0x50, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x12, 0x14, 0x2e, 0x6d, 0x65, 0x64, 0x69,
-	0x63, 0x61, 0x6c, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x52, 0x65, 0x71, 0x1a,
-	0x15, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x72, 0x61,
-	0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x05, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12,
-	0x11, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52,
-	0x65, 0x71, 0x1a, 0x13, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x43, 0x6f, 0x6d,
-	0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x09, 0x55, 0x6e, 0x43, 0x6c, 0x61,
-	0x69, 0x6d, 0x65, 0x64, 0x12, 0x15, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x55,
-	0x6e, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x6d, 0x65,
-	0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70,
-	0x12, 0x3a, 0x0a, 0x09, 0x49, 0x73, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x12, 0x15, 0x2e,
-	0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x49, 0x73, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65,
-	0x64, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x49,
-	0x73, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x48, 0x0a, 0x16,
-	0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
-	0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x13, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c,
-	0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x6d, 0x65,
-	0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x45, 0x6e, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4c, 0x69,
-	0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x48, 0x0a, 0x16, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65,
-	0x64, 0x49, 0x6e, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74,
+	0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x34, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c,
+	0x2e, 0x49, 0x73, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x53,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x23,
+	0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61,
+	0x74, 0x75, 0x73, 0x22, 0x6a, 0x0a, 0x0a, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65,
+	0x71, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x70, 0x70,
+	0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, 0x12,
+	0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x50,
+	0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22,
+	0x66, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x77, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x12,
+	0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4e, 0x61, 0x6d,
+	0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x07, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x70,
+	0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70,
+	0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4e,
+	0x65, 0x77, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x27, 0x0a, 0x04, 0x6c, 0x69, 0x73,
+	0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61,
+	0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x04, 0x6c, 0x69,
+	0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f,
+	0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72,
+	0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63,
+	0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72,
+	0x43, 0x6f, 0x64, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x0a, 0x4e, 0x65, 0x77, 0x4d, 0x73, 0x67, 0x4c,
+	0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x65, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x04, 0x61, 0x72, 0x65, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x69, 0x64, 0x73, 0x74,
+	0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x69, 0x64, 0x73,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x69, 0x64, 0x61, 0x6d, 0x6f, 0x75,
+	0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x69, 0x64, 0x61, 0x6d, 0x6f,
+	0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x72, 0x73, 0x74, 0x74, 0x69, 0x6d, 0x65,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x72, 0x73, 0x74, 0x74, 0x69, 0x6d,
+	0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
+	0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x6e, 0x65,
+	0x72, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x22,
+	0xd1, 0x02, 0x0a, 0x08, 0x45, 0x6e, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x0e, 0x0a, 0x02,
+	0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07,
+	0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75,
+	0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08,
+	0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+	0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61,
+	0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64,
+	0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69,
+	0x73, 0x68, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65,
+	0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x44, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07,
+	0x63, 0x61, 0x70, 0x69, 0x74, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,
+	0x61, 0x70, 0x69, 0x74, 0x61, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e,
+	0x79, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63,
+	0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61,
+	0x70, 0x70, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49,
+	0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+	0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69,
+	0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d,
+	0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54,
+	0x69, 0x6d, 0x65, 0x22, 0x51, 0x0a, 0x12, 0x45, 0x6e, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4c,
+	0x69, 0x73, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x25, 0x0a, 0x04, 0x6c, 0x69, 0x73,
+	0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61,
+	0x6c, 0x2e, 0x45, 0x6e, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74,
+	0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x7d, 0x0a, 0x10, 0x45, 0x6e, 0x74, 0x43, 0x6c, 0x61,
+	0x69, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x45, 0x72,
+	0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x45,
+	0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x45, 0x72, 0x72, 0x6f,
+	0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x45, 0x72, 0x72, 0x6f,
+	0x72, 0x4d, 0x73, 0x67, 0x12, 0x2f, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x45, 0x6e, 0x74,
+	0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52,
+	0x04, 0x44, 0x61, 0x74, 0x61, 0x32, 0xee, 0x05, 0x0a, 0x07, 0x4d, 0x65, 0x64, 0x69, 0x63, 0x61,
+	0x6c, 0x12, 0x42, 0x0a, 0x0b, 0x49, 0x6e, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e,
+	0x12, 0x1d, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63,
+	0x68, 0x49, 0x6e, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a,
+	0x14, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e,
+	0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74,
+	0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0d, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c,
+	0x2e, 0x5a, 0x65, 0x72, 0x6f, 0x1a, 0x17, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e,
+	0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x42,
+	0x0a, 0x0b, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x12, 0x1d, 0x2e,
+	0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x69,
+	0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x6d,
+	0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x65,
+	0x73, 0x70, 0x12, 0x3a, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e,
+	0x66, 0x6f, 0x53, 0x61, 0x76, 0x65, 0x12, 0x11, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c,
+	0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x13, 0x2e, 0x6d, 0x65, 0x64, 0x69,
+	0x63, 0x61, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x39,
+	0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12,
+	0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52,
+	0x65, 0x71, 0x1a, 0x15, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x55, 0x73, 0x65,
+	0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x08, 0x50, 0x6f, 0x72,
+	0x74, 0x72, 0x61, 0x69, 0x74, 0x12, 0x14, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e,
+	0x50, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x6d, 0x65,
+	0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x52, 0x65,
+	0x73, 0x70, 0x12, 0x2e, 0x0a, 0x05, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x11, 0x2e, 0x6d, 0x65,
+	0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x12,
+	0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65,
+	0x73, 0x70, 0x12, 0x36, 0x0a, 0x09, 0x55, 0x6e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x12,
+	0x15, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x55, 0x6e, 0x63, 0x6c, 0x61, 0x69,
+	0x6d, 0x65, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c,
+	0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, 0x09, 0x49, 0x73,
+	0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x12, 0x15, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61,
+	0x6c, 0x2e, 0x49, 0x73, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x16,
+	0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x49, 0x73, 0x43, 0x6c, 0x61, 0x69, 0x6d,
+	0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x48, 0x0a, 0x16, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65,
+	0x64, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74,
 	0x12, 0x13, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d,
 	0x12, 0x13, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d,
 	0x65, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e,
 	0x65, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e,
 	0x45, 0x6e, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70,
 	0x45, 0x6e, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70,
-	0x12, 0x3a, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x77, 0x4d, 0x73, 0x67, 0x12, 0x15, 0x2e,
-	0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x77, 0x4d, 0x73,
-	0x67, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x47,
-	0x65, 0x74, 0x4e, 0x65, 0x77, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0b, 0x5a, 0x09,
-	0x2e, 0x2f, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x33,
+	0x12, 0x48, 0x0a, 0x16, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x69,
+	0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x13, 0x2e, 0x6d, 0x65, 0x64,
+	0x69, 0x63, 0x61, 0x6c, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x71, 0x1a,
+	0x19, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x45, 0x6e, 0x74, 0x43, 0x6c, 0x61,
+	0x69, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, 0x09, 0x47, 0x65,
+	0x74, 0x4e, 0x65, 0x77, 0x4d, 0x73, 0x67, 0x12, 0x15, 0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61,
+	0x6c, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x77, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x16,
+	0x2e, 0x6d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x77, 0x4d,
+	0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0b, 0x5a, 0x09, 0x2e, 0x2f, 0x6d, 0x65, 0x64, 0x69,
+	0x63, 0x61, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 }
 
 
 var (
 var (
@@ -2573,7 +2653,7 @@ func file_medical_proto_rawDescGZIP() []byte {
 	return file_medical_proto_rawDescData
 	return file_medical_proto_rawDescData
 }
 }
 
 
-var file_medical_proto_msgTypes = make([]protoimpl.MessageInfo, 30)
+var file_medical_proto_msgTypes = make([]protoimpl.MessageInfo, 31)
 var file_medical_proto_goTypes = []interface{}{
 var file_medical_proto_goTypes = []interface{}{
 	(*Request)(nil),                 // 0: medical.Request
 	(*Request)(nil),                 // 0: medical.Request
 	(*Response)(nil),                // 1: medical.Response
 	(*Response)(nil),                // 1: medical.Response
@@ -2595,16 +2675,17 @@ var file_medical_proto_goTypes = []interface{}{
 	(*PortraitResp)(nil),            // 17: medical.PortraitResp
 	(*PortraitResp)(nil),            // 17: medical.PortraitResp
 	(*ClaimReq)(nil),                // 18: medical.ClaimReq
 	(*ClaimReq)(nil),                // 18: medical.ClaimReq
 	(*UnclaimedReq)(nil),            // 19: medical.UnclaimedReq
 	(*UnclaimedReq)(nil),            // 19: medical.UnclaimedReq
-	(*IsClaimedReq)(nil),            // 20: medical.IsClaimedReq
-	(*IsClaimedResp)(nil),           // 21: medical.IsClaimedResp
-	(*ClaimedReq)(nil),              // 22: medical.ClaimedReq
-	(*GetNewMsgReq)(nil),            // 23: medical.GetNewMsgReq
-	(*GetNewMsgResp)(nil),           // 24: medical.GetNewMsgResp
-	(*NewMsgList)(nil),              // 25: medical.NewMsgList
-	(*EntClaim)(nil),                // 26: medical.EntClaim
-	(*EntClaimListStruct)(nil),      // 27: medical.EntClaimListStruct
-	(*EntClaimListResp)(nil),        // 28: medical.EntClaimListResp
-	(*IsClaimedResp_StatusRes)(nil), // 29: medical.IsClaimedResp.StatusRes
+	(*ClaimResp)(nil),               // 20: medical.ClaimResp
+	(*IsClaimedReq)(nil),            // 21: medical.IsClaimedReq
+	(*IsClaimedResp)(nil),           // 22: medical.IsClaimedResp
+	(*ClaimedReq)(nil),              // 23: medical.ClaimedReq
+	(*GetNewMsgReq)(nil),            // 24: medical.GetNewMsgReq
+	(*GetNewMsgResp)(nil),           // 25: medical.GetNewMsgResp
+	(*NewMsgList)(nil),              // 26: medical.NewMsgList
+	(*EntClaim)(nil),                // 27: medical.EntClaim
+	(*EntClaimListStruct)(nil),      // 28: medical.EntClaimListStruct
+	(*EntClaimListResp)(nil),        // 29: medical.EntClaimListResp
+	(*IsClaimedResp_StatusRes)(nil), // 30: medical.IsClaimedResp.StatusRes
 }
 }
 var file_medical_proto_depIdxs = []int32{
 var file_medical_proto_depIdxs = []int32{
 	7,  // 0: medical.SearchInstitutionReq.sdequipmentCode:type_name -> medical.Business_Scope
 	7,  // 0: medical.SearchInstitutionReq.sdequipmentCode:type_name -> medical.Business_Scope
@@ -2614,10 +2695,10 @@ var file_medical_proto_depIdxs = []int32{
 	11, // 4: medical.FilterItem.mi_type_code:type_name -> medical.MiTypeCode
 	11, // 4: medical.FilterItem.mi_type_code:type_name -> medical.MiTypeCode
 	12, // 5: medical.FilterItemResp.data:type_name -> medical.FilterItem
 	12, // 5: medical.FilterItemResp.data:type_name -> medical.FilterItem
 	14, // 6: medical.UserInfoResp.data:type_name -> medical.UserInfo
 	14, // 6: medical.UserInfoResp.data:type_name -> medical.UserInfo
-	29, // 7: medical.IsClaimedResp.Data:type_name -> medical.IsClaimedResp.StatusRes
-	25, // 8: medical.GetNewMsgResp.list:type_name -> medical.NewMsgList
-	26, // 9: medical.EntClaimListStruct.list:type_name -> medical.EntClaim
-	27, // 10: medical.EntClaimListResp.Data:type_name -> medical.EntClaimListStruct
+	30, // 7: medical.IsClaimedResp.Data:type_name -> medical.IsClaimedResp.StatusRes
+	26, // 8: medical.GetNewMsgResp.list:type_name -> medical.NewMsgList
+	27, // 9: medical.EntClaimListStruct.list:type_name -> medical.EntClaim
+	28, // 10: medical.EntClaimListResp.Data:type_name -> medical.EntClaimListStruct
 	5,  // 11: medical.Medical.Institution:input_type -> medical.SearchInstitutionReq
 	5,  // 11: medical.Medical.Institution:input_type -> medical.SearchInstitutionReq
 	4,  // 12: medical.Medical.GetFilterItem:input_type -> medical.Zero
 	4,  // 12: medical.Medical.GetFilterItem:input_type -> medical.Zero
 	6,  // 13: medical.Medical.Distributor:input_type -> medical.SearchDistributorReq
 	6,  // 13: medical.Medical.Distributor:input_type -> medical.SearchDistributorReq
@@ -2626,22 +2707,22 @@ var file_medical_proto_depIdxs = []int32{
 	16, // 16: medical.Medical.Portrait:input_type -> medical.PortraitReq
 	16, // 16: medical.Medical.Portrait:input_type -> medical.PortraitReq
 	18, // 17: medical.Medical.Claim:input_type -> medical.ClaimReq
 	18, // 17: medical.Medical.Claim:input_type -> medical.ClaimReq
 	19, // 18: medical.Medical.UnClaimed:input_type -> medical.UnclaimedReq
 	19, // 18: medical.Medical.UnClaimed:input_type -> medical.UnclaimedReq
-	20, // 19: medical.Medical.IsClaimed:input_type -> medical.IsClaimedReq
-	22, // 20: medical.Medical.ClaimedDistributorList:input_type -> medical.ClaimedReq
-	22, // 21: medical.Medical.ClaimedInstitutionList:input_type -> medical.ClaimedReq
-	23, // 22: medical.Medical.GetNewMsg:input_type -> medical.GetNewMsgReq
+	21, // 19: medical.Medical.IsClaimed:input_type -> medical.IsClaimedReq
+	23, // 20: medical.Medical.ClaimedDistributorList:input_type -> medical.ClaimedReq
+	23, // 21: medical.Medical.ClaimedInstitutionList:input_type -> medical.ClaimedReq
+	24, // 22: medical.Medical.GetNewMsg:input_type -> medical.GetNewMsgReq
 	9,  // 23: medical.Medical.Institution:output_type -> medical.CompanyResp
 	9,  // 23: medical.Medical.Institution:output_type -> medical.CompanyResp
 	13, // 24: medical.Medical.GetFilterItem:output_type -> medical.FilterItemResp
 	13, // 24: medical.Medical.GetFilterItem:output_type -> medical.FilterItemResp
 	9,  // 25: medical.Medical.Distributor:output_type -> medical.CompanyResp
 	9,  // 25: medical.Medical.Distributor:output_type -> medical.CompanyResp
 	2,  // 26: medical.Medical.userAuthInfoSave:output_type -> medical.CommonResp
 	2,  // 26: medical.Medical.userAuthInfoSave:output_type -> medical.CommonResp
 	15, // 27: medical.Medical.userAuthInfo:output_type -> medical.UserInfoResp
 	15, // 27: medical.Medical.userAuthInfo:output_type -> medical.UserInfoResp
 	17, // 28: medical.Medical.Portrait:output_type -> medical.PortraitResp
 	17, // 28: medical.Medical.Portrait:output_type -> medical.PortraitResp
-	2,  // 29: medical.Medical.Claim:output_type -> medical.CommonResp
-	2,  // 30: medical.Medical.UnClaimed:output_type -> medical.CommonResp
-	21, // 31: medical.Medical.IsClaimed:output_type -> medical.IsClaimedResp
-	28, // 32: medical.Medical.ClaimedDistributorList:output_type -> medical.EntClaimListResp
-	28, // 33: medical.Medical.ClaimedInstitutionList:output_type -> medical.EntClaimListResp
-	24, // 34: medical.Medical.GetNewMsg:output_type -> medical.GetNewMsgResp
+	20, // 29: medical.Medical.Claim:output_type -> medical.ClaimResp
+	20, // 30: medical.Medical.UnClaimed:output_type -> medical.ClaimResp
+	22, // 31: medical.Medical.IsClaimed:output_type -> medical.IsClaimedResp
+	29, // 32: medical.Medical.ClaimedDistributorList:output_type -> medical.EntClaimListResp
+	29, // 33: medical.Medical.ClaimedInstitutionList:output_type -> medical.EntClaimListResp
+	25, // 34: medical.Medical.GetNewMsg:output_type -> medical.GetNewMsgResp
 	23, // [23:35] is the sub-list for method output_type
 	23, // [23:35] is the sub-list for method output_type
 	11, // [11:23] is the sub-list for method input_type
 	11, // [11:23] is the sub-list for method input_type
 	11, // [11:11] is the sub-list for extension type_name
 	11, // [11:11] is the sub-list for extension type_name
@@ -2896,7 +2977,7 @@ func file_medical_proto_init() {
 			}
 			}
 		}
 		}
 		file_medical_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
 		file_medical_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*IsClaimedReq); i {
+			switch v := v.(*ClaimResp); i {
 			case 0:
 			case 0:
 				return &v.state
 				return &v.state
 			case 1:
 			case 1:
@@ -2908,7 +2989,7 @@ func file_medical_proto_init() {
 			}
 			}
 		}
 		}
 		file_medical_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
 		file_medical_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*IsClaimedResp); i {
+			switch v := v.(*IsClaimedReq); i {
 			case 0:
 			case 0:
 				return &v.state
 				return &v.state
 			case 1:
 			case 1:
@@ -2920,7 +3001,7 @@ func file_medical_proto_init() {
 			}
 			}
 		}
 		}
 		file_medical_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
 		file_medical_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ClaimedReq); i {
+			switch v := v.(*IsClaimedResp); i {
 			case 0:
 			case 0:
 				return &v.state
 				return &v.state
 			case 1:
 			case 1:
@@ -2932,7 +3013,7 @@ func file_medical_proto_init() {
 			}
 			}
 		}
 		}
 		file_medical_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
 		file_medical_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetNewMsgReq); i {
+			switch v := v.(*ClaimedReq); i {
 			case 0:
 			case 0:
 				return &v.state
 				return &v.state
 			case 1:
 			case 1:
@@ -2944,7 +3025,7 @@ func file_medical_proto_init() {
 			}
 			}
 		}
 		}
 		file_medical_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
 		file_medical_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetNewMsgResp); i {
+			switch v := v.(*GetNewMsgReq); i {
 			case 0:
 			case 0:
 				return &v.state
 				return &v.state
 			case 1:
 			case 1:
@@ -2956,7 +3037,7 @@ func file_medical_proto_init() {
 			}
 			}
 		}
 		}
 		file_medical_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
 		file_medical_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*NewMsgList); i {
+			switch v := v.(*GetNewMsgResp); i {
 			case 0:
 			case 0:
 				return &v.state
 				return &v.state
 			case 1:
 			case 1:
@@ -2968,7 +3049,7 @@ func file_medical_proto_init() {
 			}
 			}
 		}
 		}
 		file_medical_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
 		file_medical_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*EntClaim); i {
+			switch v := v.(*NewMsgList); i {
 			case 0:
 			case 0:
 				return &v.state
 				return &v.state
 			case 1:
 			case 1:
@@ -2980,7 +3061,7 @@ func file_medical_proto_init() {
 			}
 			}
 		}
 		}
 		file_medical_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
 		file_medical_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*EntClaimListStruct); i {
+			switch v := v.(*EntClaim); i {
 			case 0:
 			case 0:
 				return &v.state
 				return &v.state
 			case 1:
 			case 1:
@@ -2992,7 +3073,7 @@ func file_medical_proto_init() {
 			}
 			}
 		}
 		}
 		file_medical_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
 		file_medical_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*EntClaimListResp); i {
+			switch v := v.(*EntClaimListStruct); i {
 			case 0:
 			case 0:
 				return &v.state
 				return &v.state
 			case 1:
 			case 1:
@@ -3004,6 +3085,18 @@ func file_medical_proto_init() {
 			}
 			}
 		}
 		}
 		file_medical_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
 		file_medical_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*EntClaimListResp); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_medical_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*IsClaimedResp_StatusRes); i {
 			switch v := v.(*IsClaimedResp_StatusRes); i {
 			case 0:
 			case 0:
 				return &v.state
 				return &v.state
@@ -3022,7 +3115,7 @@ func file_medical_proto_init() {
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_medical_proto_rawDesc,
 			RawDescriptor: file_medical_proto_rawDesc,
 			NumEnums:      0,
 			NumEnums:      0,
-			NumMessages:   30,
+			NumMessages:   31,
 			NumExtensions: 0,
 			NumExtensions: 0,
 			NumServices:   1,
 			NumServices:   1,
 		},
 		},

+ 11 - 11
rpc/medical/medical/medical_grpc.pb.go

@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
 // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
 // versions:
 // versions:
 // - protoc-gen-go-grpc v1.2.0
 // - protoc-gen-go-grpc v1.2.0
-// - protoc             v3.15.1
+// - protoc             v3.19.4
 // source: medical.proto
 // source: medical.proto
 
 
 package medical
 package medical
@@ -35,9 +35,9 @@ type MedicalClient interface {
 	//医疗机构画像
 	//医疗机构画像
 	Portrait(ctx context.Context, in *PortraitReq, opts ...grpc.CallOption) (*PortraitResp, error)
 	Portrait(ctx context.Context, in *PortraitReq, opts ...grpc.CallOption) (*PortraitResp, error)
 	// 认领(经销商/医疗机构)
 	// 认领(经销商/医疗机构)
-	Claim(ctx context.Context, in *ClaimReq, opts ...grpc.CallOption) (*CommonResp, error)
+	Claim(ctx context.Context, in *ClaimReq, opts ...grpc.CallOption) (*ClaimResp, error)
 	// 取消认领(经销商/医疗机构)
 	// 取消认领(经销商/医疗机构)
-	UnClaimed(ctx context.Context, in *UnclaimedReq, opts ...grpc.CallOption) (*CommonResp, error)
+	UnClaimed(ctx context.Context, in *UnclaimedReq, opts ...grpc.CallOption) (*ClaimResp, error)
 	// 是否认领(经销商/医疗机构)
 	// 是否认领(经销商/医疗机构)
 	IsClaimed(ctx context.Context, in *IsClaimedReq, opts ...grpc.CallOption) (*IsClaimedResp, error)
 	IsClaimed(ctx context.Context, in *IsClaimedReq, opts ...grpc.CallOption) (*IsClaimedResp, error)
 	// 我认领的经销商列表
 	// 我认领的经销商列表
@@ -110,8 +110,8 @@ func (c *medicalClient) Portrait(ctx context.Context, in *PortraitReq, opts ...g
 	return out, nil
 	return out, nil
 }
 }
 
 
-func (c *medicalClient) Claim(ctx context.Context, in *ClaimReq, opts ...grpc.CallOption) (*CommonResp, error) {
-	out := new(CommonResp)
+func (c *medicalClient) Claim(ctx context.Context, in *ClaimReq, opts ...grpc.CallOption) (*ClaimResp, error) {
+	out := new(ClaimResp)
 	err := c.cc.Invoke(ctx, "/medical.Medical/Claim", in, out, opts...)
 	err := c.cc.Invoke(ctx, "/medical.Medical/Claim", in, out, opts...)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
@@ -119,8 +119,8 @@ func (c *medicalClient) Claim(ctx context.Context, in *ClaimReq, opts ...grpc.Ca
 	return out, nil
 	return out, nil
 }
 }
 
 
-func (c *medicalClient) UnClaimed(ctx context.Context, in *UnclaimedReq, opts ...grpc.CallOption) (*CommonResp, error) {
-	out := new(CommonResp)
+func (c *medicalClient) UnClaimed(ctx context.Context, in *UnclaimedReq, opts ...grpc.CallOption) (*ClaimResp, error) {
+	out := new(ClaimResp)
 	err := c.cc.Invoke(ctx, "/medical.Medical/UnClaimed", in, out, opts...)
 	err := c.cc.Invoke(ctx, "/medical.Medical/UnClaimed", in, out, opts...)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
@@ -181,9 +181,9 @@ type MedicalServer interface {
 	//医疗机构画像
 	//医疗机构画像
 	Portrait(context.Context, *PortraitReq) (*PortraitResp, error)
 	Portrait(context.Context, *PortraitReq) (*PortraitResp, error)
 	// 认领(经销商/医疗机构)
 	// 认领(经销商/医疗机构)
-	Claim(context.Context, *ClaimReq) (*CommonResp, error)
+	Claim(context.Context, *ClaimReq) (*ClaimResp, error)
 	// 取消认领(经销商/医疗机构)
 	// 取消认领(经销商/医疗机构)
-	UnClaimed(context.Context, *UnclaimedReq) (*CommonResp, error)
+	UnClaimed(context.Context, *UnclaimedReq) (*ClaimResp, error)
 	// 是否认领(经销商/医疗机构)
 	// 是否认领(经销商/医疗机构)
 	IsClaimed(context.Context, *IsClaimedReq) (*IsClaimedResp, error)
 	IsClaimed(context.Context, *IsClaimedReq) (*IsClaimedResp, error)
 	// 我认领的经销商列表
 	// 我认领的经销商列表
@@ -217,10 +217,10 @@ func (UnimplementedMedicalServer) UserAuthInfo(context.Context, *CommonReq) (*Us
 func (UnimplementedMedicalServer) Portrait(context.Context, *PortraitReq) (*PortraitResp, error) {
 func (UnimplementedMedicalServer) Portrait(context.Context, *PortraitReq) (*PortraitResp, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method Portrait not implemented")
 	return nil, status.Errorf(codes.Unimplemented, "method Portrait not implemented")
 }
 }
-func (UnimplementedMedicalServer) Claim(context.Context, *ClaimReq) (*CommonResp, error) {
+func (UnimplementedMedicalServer) Claim(context.Context, *ClaimReq) (*ClaimResp, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method Claim not implemented")
 	return nil, status.Errorf(codes.Unimplemented, "method Claim not implemented")
 }
 }
-func (UnimplementedMedicalServer) UnClaimed(context.Context, *UnclaimedReq) (*CommonResp, error) {
+func (UnimplementedMedicalServer) UnClaimed(context.Context, *UnclaimedReq) (*ClaimResp, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method UnClaimed not implemented")
 	return nil, status.Errorf(codes.Unimplemented, "method UnClaimed not implemented")
 }
 }
 func (UnimplementedMedicalServer) IsClaimed(context.Context, *IsClaimedReq) (*IsClaimedResp, error) {
 func (UnimplementedMedicalServer) IsClaimed(context.Context, *IsClaimedReq) (*IsClaimedResp, error) {

+ 6 - 5
service/claim.go

@@ -20,11 +20,11 @@ func NewEntClaimSrv(conn *entity.Conn) *EntClaimService {
 }
 }
 
 
 // Claim 认领
 // Claim 认领
-func (e *EntClaimService) Claim(data *entity.EntClaim) bool {
+func (e *EntClaimService) Claim(data *entity.EntClaim) int64 {
 	if e.IsClaimed(data.UserId, data.AppId, data.EntId, data.Type) {
 	if e.IsClaimed(data.UserId, data.AppId, data.EntId, data.Type) {
-		return true
+		return 0
 	}
 	}
-	return e.BaseMysql.Insert(entity.TableDomainEntClaim, common.StructToMapMore(data)) > 0
+	return e.BaseMysql.Insert(entity.TableDomainEntClaim, common.StructToMapMore(data))
 }
 }
 
 
 // Unclaimed // 取消认领
 // Unclaimed // 取消认领
@@ -33,8 +33,9 @@ func (e *EntClaimService) Unclaimed(id, userId int) bool {
 		"id": id,
 		"id": id,
 	}
 	}
 	// 1. 查询该条数据
 	// 1. 查询该条数据
-	rs := e.BaseMysql.FindOne(entity.TableDomainEntClaim, query, "user_id", "")
-	if rs == nil || len(*rs) == 0 {
+	rs := e.BaseMysql.FindOne(entity.TableDomainEntClaim, query, "user_id,status", "")
+	if rs == nil || len(*rs) == 0 || common.IntAll((*rs)["status"]) != entity.StatusClaimed {
+
 		logx.Errorf("取消认领:无效的id %v", id)
 		logx.Errorf("取消认领:无效的id %v", id)
 		return false
 		return false
 	}
 	}

+ 7 - 8
service/claim_test.go

@@ -17,23 +17,21 @@ func TestEntClaimService_Claim(t *testing.T) {
 	tests := []struct {
 	tests := []struct {
 		name string
 		name string
 		args args
 		args args
-		want bool
 	}{
 	}{
 		{"认领医疗机构", args{
 		{"认领医疗机构", args{
 			data: &entity.EntClaim{UserId: 1, AppId: "10000", EntId: "1122", EntName: "877", Status: entity.StatusClaimed, Type: entity.TypeInstitution, CreateTime: "2022-08-19 15:08:00"},
 			data: &entity.EntClaim{UserId: 1, AppId: "10000", EntId: "1122", EntName: "877", Status: entity.StatusClaimed, Type: entity.TypeInstitution, CreateTime: "2022-08-19 15:08:00"},
-		}, true,
+		},
 		},
 		},
 		{"认领医疗机构-2", args{
 		{"认领医疗机构-2", args{
 			data: &entity.EntClaim{UserId: 2, AppId: "10000", EntId: "7", EntName: "8757", Status: entity.StatusClaimed, Type: entity.TypeDistributor, CreateTime: "2022-08-19 15:08:00"},
 			data: &entity.EntClaim{UserId: 2, AppId: "10000", EntId: "7", EntName: "8757", Status: entity.StatusClaimed, Type: entity.TypeDistributor, CreateTime: "2022-08-19 15:08:00"},
-		}, true,
+		},
 		},
 		},
 	}
 	}
 	for _, tt := range tests {
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 		t.Run(tt.name, func(t *testing.T) {
 
 
-			if got := EntClaimSrv.Claim(tt.args.data); got != tt.want {
-				t.Errorf("Claim() = %v, want %v", got, tt.want)
-			}
+			got := EntClaimSrv.Claim(tt.args.data)
+			t.Log(got)
 		})
 		})
 	}
 	}
 
 
@@ -173,6 +171,7 @@ func TestEntClaimService_GetInstitution(t *testing.T) {
 	}
 	}
 }
 }
 func TestName(t *testing.T) {
 func TestName(t *testing.T) {
-	s := encrypt.SE.Encode2Hex(common.ObjToString("90009"))
-	fmt.Print(s)
+	s := encrypt.SE.Decode4Hex(common.ObjToString("001d050b"))
+	//s1 := encrypt.SE.Encode2Hex(common.ObjToString("001d050b"))
+	fmt.Print(s, 2)
 }
 }

+ 9 - 9
test/api_test.http

@@ -1,7 +1,7 @@
 ### 认领
 ### 认领
-POST http://{{host}}:8888/domain/claim
+POST http://{{host}}/domain/claim
 Content-Type: application/json
 Content-Type: application/json
-#Cookie:
+Cookie: SESSIONID=16240cfcc75bc0fb879bc9ea90e44d06c158b7d8
 newUserId:22
 newUserId:22
 appId:10000
 appId:10000
 
 
@@ -16,14 +16,14 @@ client.test("Request executed successfully", function() {
 %}
 %}
 
 
 ### 取消认领
 ### 取消认领
-POST http://{{host}}:8888/domain/unclaimed
+POST http://{{host}}/domain/unclaimed
 Content-Type: application/json
 Content-Type: application/json
-#Cookie:
+Cookie:
 newUserId:22
 newUserId:22
 appId:10000
 appId:10000
 
 
 {
 {
-  "id":"4d5f405e5c" ,
+  "id":"4d5f405f53" ,
   "type": 1
   "type": 1
 }
 }
 > {%
 > {%
@@ -33,7 +33,7 @@ client.test("Request executed successfully", function() {
 %}
 %}
 
 
 ### 是否认领过
 ### 是否认领过
-POST http://{{host}}:8888/domain/isClaimed
+POST http://{{host}}/domain/isClaimed
 Content-Type: application/json
 Content-Type: application/json
 #Cookie:
 #Cookie:
 newUserId:22
 newUserId:22
@@ -51,9 +51,9 @@ client.test("Request executed successfully", function() {
 
 
 
 
 ### 我认领的经销商
 ### 我认领的经销商
-POST http://{{host}}:8888/domain/claim/distributor
+POST http://{{host}}/domain/claim/distributor
 Content-Type: application/json
 Content-Type: application/json
-#Cookie:
+Cookie: SESSIONID=16240cfcc75bc0fb879bc9ea90e44d06c158b7d8
 newUserId:22
 newUserId:22
 appId:10000
 appId:10000
 
 
@@ -66,7 +66,7 @@ client.test("Request executed successfully", function() {
 
 
 
 
 ### 我认领的医疗机构
 ### 我认领的医疗机构
-POST http://{{host}}:8888/domain/claim/institution
+POST http://{{host}}/domain/claim/institution
 Content-Type: application/json
 Content-Type: application/json
 #Cookie:
 #Cookie:
 newUserId:22
 newUserId:22

+ 8 - 3
test/http-client.env.json

@@ -1,5 +1,10 @@
 {
 {
   "dev": {
   "dev": {
-    "host": "127.0.0.1"
-  }
-}
+    "host": "127.0.0.1:8881"
+  },
+  "proxy240": {
+    "host": "192.168.3.240:8077"
+  },
+  "dev240": {
+    "host": "192.168.3.240:8881"
+  }}

+ 2 - 2
test/rpc_test.http

@@ -31,8 +31,8 @@ GRPC {{host}}:8080/medical.Medical/Claim
 GRPC {{host}}:8080/medical.Medical/UnClaimed
 GRPC {{host}}:8080/medical.Medical/UnClaimed
 
 
 {
 {
-  "UserId": 1,
-  "Id": 1,
+  "UserId": 22,
+  "Id": 120004,
   "AppId": "10000"
   "AppId": "10000"
 }
 }
 ### 是否认领
 ### 是否认领