// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.11
// 	protoc        v7.34.1
// source: pb/plant.proto

package plant

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type CommonResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int64                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Msg           string                 `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CommonResp) Reset() {
	*x = CommonResp{}
	mi := &file_pb_plant_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CommonResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CommonResp) ProtoMessage() {}

func (x *CommonResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CommonResp.ProtoReflect.Descriptor instead.
func (*CommonResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{0}
}

func (x *CommonResp) GetCode() int64 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *CommonResp) GetMsg() string {
	if x != nil {
		return x.Msg
	}
	return ""
}

type IdReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IdReq) Reset() {
	*x = IdReq{}
	mi := &file_pb_plant_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *IdReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IdReq) ProtoMessage() {}

func (x *IdReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IdReq.ProtoReflect.Descriptor instead.
func (*IdReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{1}
}

func (x *IdReq) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

type IdsReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Ids           []string               `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IdsReq) Reset() {
	*x = IdsReq{}
	mi := &file_pb_plant_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *IdsReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IdsReq) ProtoMessage() {}

func (x *IdsReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IdsReq.ProtoReflect.Descriptor instead.
func (*IdsReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{2}
}

func (x *IdsReq) GetIds() []string {
	if x != nil {
		return x.Ids
	}
	return nil
}

type PageReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Current       int32                  `protobuf:"varint,1,opt,name=current,proto3" json:"current,omitempty"`
	PageSize      int32                  `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PageReq) Reset() {
	*x = PageReq{}
	mi := &file_pb_plant_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PageReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PageReq) ProtoMessage() {}

func (x *PageReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[3]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PageReq.ProtoReflect.Descriptor instead.
func (*PageReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{3}
}

func (x *PageReq) GetCurrent() int32 {
	if x != nil {
		return x.Current
	}
	return 0
}

func (x *PageReq) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

type PlantUserProfile struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	Id              string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	UserId          string                 `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId,omitempty"`
	NickName        string                 `protobuf:"bytes,3,opt,name=nickName,proto3" json:"nickName,omitempty"`
	AvatarId        string                 `protobuf:"bytes,4,opt,name=avatarId,proto3" json:"avatarId,omitempty"`
	LevelId         string                 `protobuf:"bytes,5,opt,name=levelId,proto3" json:"levelId,omitempty"`
	CurrentSunlight int64                  `protobuf:"varint,6,opt,name=currentSunlight,proto3" json:"currentSunlight,omitempty"`
	TotalSunlight   int64                  `protobuf:"varint,7,opt,name=totalSunlight,proto3" json:"totalSunlight,omitempty"`
	PlantCount      int64                  `protobuf:"varint,8,opt,name=plantCount,proto3" json:"plantCount,omitempty"`
	CareCount       int64                  `protobuf:"varint,9,opt,name=careCount,proto3" json:"careCount,omitempty"`
	PostCount       int64                  `protobuf:"varint,10,opt,name=postCount,proto3" json:"postCount,omitempty"`
	WaterCount      int64                  `protobuf:"varint,11,opt,name=waterCount,proto3" json:"waterCount,omitempty"`
	FertilizeCount  int64                  `protobuf:"varint,12,opt,name=fertilizeCount,proto3" json:"fertilizeCount,omitempty"`
	RepotCount      int64                  `protobuf:"varint,13,opt,name=repotCount,proto3" json:"repotCount,omitempty"`
	PruneCount      int64                  `protobuf:"varint,14,opt,name=pruneCount,proto3" json:"pruneCount,omitempty"`
	PhotoCount      int64                  `protobuf:"varint,15,opt,name=photoCount,proto3" json:"photoCount,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *PlantUserProfile) Reset() {
	*x = PlantUserProfile{}
	mi := &file_pb_plant_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PlantUserProfile) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PlantUserProfile) ProtoMessage() {}

func (x *PlantUserProfile) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[4]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PlantUserProfile.ProtoReflect.Descriptor instead.
func (*PlantUserProfile) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{4}
}

func (x *PlantUserProfile) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *PlantUserProfile) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *PlantUserProfile) GetNickName() string {
	if x != nil {
		return x.NickName
	}
	return ""
}

func (x *PlantUserProfile) GetAvatarId() string {
	if x != nil {
		return x.AvatarId
	}
	return ""
}

func (x *PlantUserProfile) GetLevelId() string {
	if x != nil {
		return x.LevelId
	}
	return ""
}

func (x *PlantUserProfile) GetCurrentSunlight() int64 {
	if x != nil {
		return x.CurrentSunlight
	}
	return 0
}

func (x *PlantUserProfile) GetTotalSunlight() int64 {
	if x != nil {
		return x.TotalSunlight
	}
	return 0
}

func (x *PlantUserProfile) GetPlantCount() int64 {
	if x != nil {
		return x.PlantCount
	}
	return 0
}

func (x *PlantUserProfile) GetCareCount() int64 {
	if x != nil {
		return x.CareCount
	}
	return 0
}

func (x *PlantUserProfile) GetPostCount() int64 {
	if x != nil {
		return x.PostCount
	}
	return 0
}

func (x *PlantUserProfile) GetWaterCount() int64 {
	if x != nil {
		return x.WaterCount
	}
	return 0
}

func (x *PlantUserProfile) GetFertilizeCount() int64 {
	if x != nil {
		return x.FertilizeCount
	}
	return 0
}

func (x *PlantUserProfile) GetRepotCount() int64 {
	if x != nil {
		return x.RepotCount
	}
	return 0
}

func (x *PlantUserProfile) GetPruneCount() int64 {
	if x != nil {
		return x.PruneCount
	}
	return 0
}

func (x *PlantUserProfile) GetPhotoCount() int64 {
	if x != nil {
		return x.PhotoCount
	}
	return 0
}

type GetProfileReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        string                 `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetProfileReq) Reset() {
	*x = GetProfileReq{}
	mi := &file_pb_plant_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetProfileReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetProfileReq) ProtoMessage() {}

func (x *GetProfileReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[5]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetProfileReq.ProtoReflect.Descriptor instead.
func (*GetProfileReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{5}
}

func (x *GetProfileReq) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

type UpdateProfileReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        string                 `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
	NickName      string                 `protobuf:"bytes,2,opt,name=nickName,proto3" json:"nickName,omitempty"`
	AvatarId      string                 `protobuf:"bytes,3,opt,name=avatarId,proto3" json:"avatarId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateProfileReq) Reset() {
	*x = UpdateProfileReq{}
	mi := &file_pb_plant_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateProfileReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateProfileReq) ProtoMessage() {}

func (x *UpdateProfileReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[6]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateProfileReq.ProtoReflect.Descriptor instead.
func (*UpdateProfileReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{6}
}

func (x *UpdateProfileReq) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *UpdateProfileReq) GetNickName() string {
	if x != nil {
		return x.NickName
	}
	return ""
}

func (x *UpdateProfileReq) GetAvatarId() string {
	if x != nil {
		return x.AvatarId
	}
	return ""
}

// 我的徽章
type UserBadgeInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	BadgeId       string                 `protobuf:"bytes,2,opt,name=badgeId,proto3" json:"badgeId,omitempty"`
	BadgeName     string                 `protobuf:"bytes,3,opt,name=badgeName,proto3" json:"badgeName,omitempty"`
	Dimension     string                 `protobuf:"bytes,4,opt,name=dimension,proto3" json:"dimension,omitempty"`
	Tier          int32                  `protobuf:"varint,5,opt,name=tier,proto3" json:"tier,omitempty"`
	AwardedAt     string                 `protobuf:"bytes,6,opt,name=awardedAt,proto3" json:"awardedAt,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UserBadgeInfo) Reset() {
	*x = UserBadgeInfo{}
	mi := &file_pb_plant_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UserBadgeInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UserBadgeInfo) ProtoMessage() {}

func (x *UserBadgeInfo) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[7]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UserBadgeInfo.ProtoReflect.Descriptor instead.
func (*UserBadgeInfo) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{7}
}

func (x *UserBadgeInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *UserBadgeInfo) GetBadgeId() string {
	if x != nil {
		return x.BadgeId
	}
	return ""
}

func (x *UserBadgeInfo) GetBadgeName() string {
	if x != nil {
		return x.BadgeName
	}
	return ""
}

func (x *UserBadgeInfo) GetDimension() string {
	if x != nil {
		return x.Dimension
	}
	return ""
}

func (x *UserBadgeInfo) GetTier() int32 {
	if x != nil {
		return x.Tier
	}
	return 0
}

func (x *UserBadgeInfo) GetAwardedAt() string {
	if x != nil {
		return x.AwardedAt
	}
	return ""
}

type UserBadgeListResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	List          []*UserBadgeInfo       `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UserBadgeListResp) Reset() {
	*x = UserBadgeListResp{}
	mi := &file_pb_plant_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UserBadgeListResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UserBadgeListResp) ProtoMessage() {}

func (x *UserBadgeListResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[8]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UserBadgeListResp.ProtoReflect.Descriptor instead.
func (*UserBadgeListResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{8}
}

func (x *UserBadgeListResp) GetList() []*UserBadgeInfo {
	if x != nil {
		return x.List
	}
	return nil
}

// 我的收藏
type UserStarInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	TargetId      string                 `protobuf:"bytes,2,opt,name=targetId,proto3" json:"targetId,omitempty"`
	Type          string                 `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"`
	CreatedAt     string                 `protobuf:"bytes,4,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UserStarInfo) Reset() {
	*x = UserStarInfo{}
	mi := &file_pb_plant_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UserStarInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UserStarInfo) ProtoMessage() {}

func (x *UserStarInfo) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[9]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UserStarInfo.ProtoReflect.Descriptor instead.
func (*UserStarInfo) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{9}
}

func (x *UserStarInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *UserStarInfo) GetTargetId() string {
	if x != nil {
		return x.TargetId
	}
	return ""
}

func (x *UserStarInfo) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *UserStarInfo) GetCreatedAt() string {
	if x != nil {
		return x.CreatedAt
	}
	return ""
}

type UserStarListResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	List          []*UserStarInfo        `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
	Total         int64                  `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UserStarListResp) Reset() {
	*x = UserStarListResp{}
	mi := &file_pb_plant_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UserStarListResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UserStarListResp) ProtoMessage() {}

func (x *UserStarListResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[10]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UserStarListResp.ProtoReflect.Descriptor instead.
func (*UserStarListResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{10}
}

func (x *UserStarListResp) GetList() []*UserStarInfo {
	if x != nil {
		return x.List
	}
	return nil
}

func (x *UserStarListResp) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

type PlantInfo struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	Id               string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	UserId           string                 `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId,omitempty"`
	Name             string                 `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
	PlantTime        string                 `protobuf:"bytes,4,opt,name=plantTime,proto3" json:"plantTime,omitempty"`
	Status           int32                  `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"`
	Placement        string                 `protobuf:"bytes,6,opt,name=placement,proto3" json:"placement,omitempty"`
	PotMaterial      string                 `protobuf:"bytes,7,opt,name=potMaterial,proto3" json:"potMaterial,omitempty"`
	PotSize          string                 `protobuf:"bytes,8,opt,name=potSize,proto3" json:"potSize,omitempty"`
	Sunlight         string                 `protobuf:"bytes,9,opt,name=sunlight,proto3" json:"sunlight,omitempty"`
	PlantingMaterial string                 `protobuf:"bytes,10,opt,name=plantingMaterial,proto3" json:"plantingMaterial,omitempty"`
	ImgIds           []string               `protobuf:"bytes,11,rep,name=imgIds,proto3" json:"imgIds,omitempty"`
	CreatedAt        int64                  `protobuf:"varint,12,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *PlantInfo) Reset() {
	*x = PlantInfo{}
	mi := &file_pb_plant_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PlantInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PlantInfo) ProtoMessage() {}

func (x *PlantInfo) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[11]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PlantInfo.ProtoReflect.Descriptor instead.
func (*PlantInfo) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{11}
}

func (x *PlantInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *PlantInfo) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *PlantInfo) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *PlantInfo) GetPlantTime() string {
	if x != nil {
		return x.PlantTime
	}
	return ""
}

func (x *PlantInfo) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *PlantInfo) GetPlacement() string {
	if x != nil {
		return x.Placement
	}
	return ""
}

func (x *PlantInfo) GetPotMaterial() string {
	if x != nil {
		return x.PotMaterial
	}
	return ""
}

func (x *PlantInfo) GetPotSize() string {
	if x != nil {
		return x.PotSize
	}
	return ""
}

func (x *PlantInfo) GetSunlight() string {
	if x != nil {
		return x.Sunlight
	}
	return ""
}

func (x *PlantInfo) GetPlantingMaterial() string {
	if x != nil {
		return x.PlantingMaterial
	}
	return ""
}

func (x *PlantInfo) GetImgIds() []string {
	if x != nil {
		return x.ImgIds
	}
	return nil
}

func (x *PlantInfo) GetCreatedAt() int64 {
	if x != nil {
		return x.CreatedAt
	}
	return 0
}

type CreatePlantReq struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	UserId           string                 `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
	Name             string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	PlantTime        string                 `protobuf:"bytes,3,opt,name=plantTime,proto3" json:"plantTime,omitempty"`
	Placement        string                 `protobuf:"bytes,4,opt,name=placement,proto3" json:"placement,omitempty"`
	PotMaterial      string                 `protobuf:"bytes,5,opt,name=potMaterial,proto3" json:"potMaterial,omitempty"`
	PotSize          string                 `protobuf:"bytes,6,opt,name=potSize,proto3" json:"potSize,omitempty"`
	Sunlight         string                 `protobuf:"bytes,7,opt,name=sunlight,proto3" json:"sunlight,omitempty"`
	PlantingMaterial string                 `protobuf:"bytes,8,opt,name=plantingMaterial,proto3" json:"plantingMaterial,omitempty"`
	ImgIds           []string               `protobuf:"bytes,9,rep,name=imgIds,proto3" json:"imgIds,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *CreatePlantReq) Reset() {
	*x = CreatePlantReq{}
	mi := &file_pb_plant_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreatePlantReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreatePlantReq) ProtoMessage() {}

func (x *CreatePlantReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[12]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreatePlantReq.ProtoReflect.Descriptor instead.
func (*CreatePlantReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{12}
}

func (x *CreatePlantReq) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *CreatePlantReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *CreatePlantReq) GetPlantTime() string {
	if x != nil {
		return x.PlantTime
	}
	return ""
}

func (x *CreatePlantReq) GetPlacement() string {
	if x != nil {
		return x.Placement
	}
	return ""
}

func (x *CreatePlantReq) GetPotMaterial() string {
	if x != nil {
		return x.PotMaterial
	}
	return ""
}

func (x *CreatePlantReq) GetPotSize() string {
	if x != nil {
		return x.PotSize
	}
	return ""
}

func (x *CreatePlantReq) GetSunlight() string {
	if x != nil {
		return x.Sunlight
	}
	return ""
}

func (x *CreatePlantReq) GetPlantingMaterial() string {
	if x != nil {
		return x.PlantingMaterial
	}
	return ""
}

func (x *CreatePlantReq) GetImgIds() []string {
	if x != nil {
		return x.ImgIds
	}
	return nil
}

type UpdatePlantReq struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	Id               string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Name             string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Status           int32                  `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"`
	Placement        string                 `protobuf:"bytes,4,opt,name=placement,proto3" json:"placement,omitempty"`
	PotMaterial      string                 `protobuf:"bytes,5,opt,name=potMaterial,proto3" json:"potMaterial,omitempty"`
	PotSize          string                 `protobuf:"bytes,6,opt,name=potSize,proto3" json:"potSize,omitempty"`
	Sunlight         string                 `protobuf:"bytes,7,opt,name=sunlight,proto3" json:"sunlight,omitempty"`
	PlantingMaterial string                 `protobuf:"bytes,8,opt,name=plantingMaterial,proto3" json:"plantingMaterial,omitempty"`
	ImgIds           []string               `protobuf:"bytes,9,rep,name=imgIds,proto3" json:"imgIds,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *UpdatePlantReq) Reset() {
	*x = UpdatePlantReq{}
	mi := &file_pb_plant_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdatePlantReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdatePlantReq) ProtoMessage() {}

func (x *UpdatePlantReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[13]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdatePlantReq.ProtoReflect.Descriptor instead.
func (*UpdatePlantReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{13}
}

func (x *UpdatePlantReq) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *UpdatePlantReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *UpdatePlantReq) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *UpdatePlantReq) GetPlacement() string {
	if x != nil {
		return x.Placement
	}
	return ""
}

func (x *UpdatePlantReq) GetPotMaterial() string {
	if x != nil {
		return x.PotMaterial
	}
	return ""
}

func (x *UpdatePlantReq) GetPotSize() string {
	if x != nil {
		return x.PotSize
	}
	return ""
}

func (x *UpdatePlantReq) GetSunlight() string {
	if x != nil {
		return x.Sunlight
	}
	return ""
}

func (x *UpdatePlantReq) GetPlantingMaterial() string {
	if x != nil {
		return x.PlantingMaterial
	}
	return ""
}

func (x *UpdatePlantReq) GetImgIds() []string {
	if x != nil {
		return x.ImgIds
	}
	return nil
}

type PlantListReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        string                 `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
	Current       int32                  `protobuf:"varint,2,opt,name=current,proto3" json:"current,omitempty"`
	PageSize      int32                  `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"`
	Name          string                 `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PlantListReq) Reset() {
	*x = PlantListReq{}
	mi := &file_pb_plant_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PlantListReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PlantListReq) ProtoMessage() {}

func (x *PlantListReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[14]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PlantListReq.ProtoReflect.Descriptor instead.
func (*PlantListReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{14}
}

func (x *PlantListReq) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *PlantListReq) GetCurrent() int32 {
	if x != nil {
		return x.Current
	}
	return 0
}

func (x *PlantListReq) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *PlantListReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

type PlantListResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	List          []*PlantInfo           `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
	Total         int64                  `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PlantListResp) Reset() {
	*x = PlantListResp{}
	mi := &file_pb_plant_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PlantListResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PlantListResp) ProtoMessage() {}

func (x *PlantListResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[15]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PlantListResp.ProtoReflect.Descriptor instead.
func (*PlantListResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{15}
}

func (x *PlantListResp) GetList() []*PlantInfo {
	if x != nil {
		return x.List
	}
	return nil
}

func (x *PlantListResp) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

type PlantDetailResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Plant         *PlantInfo             `protobuf:"bytes,1,opt,name=plant,proto3" json:"plant,omitempty"`
	CarePlans     []*CarePlanInfo        `protobuf:"bytes,2,rep,name=carePlans,proto3" json:"carePlans,omitempty"`
	GrowthRecords []*GrowthRecordInfo    `protobuf:"bytes,3,rep,name=growthRecords,proto3" json:"growthRecords,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PlantDetailResp) Reset() {
	*x = PlantDetailResp{}
	mi := &file_pb_plant_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PlantDetailResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PlantDetailResp) ProtoMessage() {}

func (x *PlantDetailResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[16]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PlantDetailResp.ProtoReflect.Descriptor instead.
func (*PlantDetailResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{16}
}

func (x *PlantDetailResp) GetPlant() *PlantInfo {
	if x != nil {
		return x.Plant
	}
	return nil
}

func (x *PlantDetailResp) GetCarePlans() []*CarePlanInfo {
	if x != nil {
		return x.CarePlans
	}
	return nil
}

func (x *PlantDetailResp) GetGrowthRecords() []*GrowthRecordInfo {
	if x != nil {
		return x.GrowthRecords
	}
	return nil
}

type CarePlanInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	PlantId       string                 `protobuf:"bytes,2,opt,name=plantId,proto3" json:"plantId,omitempty"`
	Name          string                 `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
	Icon          string                 `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"`
	TargetAction  string                 `protobuf:"bytes,5,opt,name=targetAction,proto3" json:"targetAction,omitempty"`
	Period        int32                  `protobuf:"varint,6,opt,name=period,proto3" json:"period,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CarePlanInfo) Reset() {
	*x = CarePlanInfo{}
	mi := &file_pb_plant_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CarePlanInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CarePlanInfo) ProtoMessage() {}

func (x *CarePlanInfo) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[17]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CarePlanInfo.ProtoReflect.Descriptor instead.
func (*CarePlanInfo) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{17}
}

func (x *CarePlanInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *CarePlanInfo) GetPlantId() string {
	if x != nil {
		return x.PlantId
	}
	return ""
}

func (x *CarePlanInfo) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *CarePlanInfo) GetIcon() string {
	if x != nil {
		return x.Icon
	}
	return ""
}

func (x *CarePlanInfo) GetTargetAction() string {
	if x != nil {
		return x.TargetAction
	}
	return ""
}

func (x *CarePlanInfo) GetPeriod() int32 {
	if x != nil {
		return x.Period
	}
	return 0
}

type AddCarePlanReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        string                 `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
	PlantId       string                 `protobuf:"bytes,2,opt,name=plantId,proto3" json:"plantId,omitempty"`
	Name          string                 `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
	Icon          string                 `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"`
	TargetAction  string                 `protobuf:"bytes,5,opt,name=targetAction,proto3" json:"targetAction,omitempty"`
	Period        int32                  `protobuf:"varint,6,opt,name=period,proto3" json:"period,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AddCarePlanReq) Reset() {
	*x = AddCarePlanReq{}
	mi := &file_pb_plant_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddCarePlanReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddCarePlanReq) ProtoMessage() {}

func (x *AddCarePlanReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[18]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AddCarePlanReq.ProtoReflect.Descriptor instead.
func (*AddCarePlanReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{18}
}

func (x *AddCarePlanReq) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *AddCarePlanReq) GetPlantId() string {
	if x != nil {
		return x.PlantId
	}
	return ""
}

func (x *AddCarePlanReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *AddCarePlanReq) GetIcon() string {
	if x != nil {
		return x.Icon
	}
	return ""
}

func (x *AddCarePlanReq) GetTargetAction() string {
	if x != nil {
		return x.TargetAction
	}
	return ""
}

func (x *AddCarePlanReq) GetPeriod() int32 {
	if x != nil {
		return x.Period
	}
	return 0
}

// 养护任务 status: 1=待完成 2=已完成 3=已过期
type CareTaskInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	PlantId       string                 `protobuf:"bytes,2,opt,name=plantId,proto3" json:"plantId,omitempty"`
	PlanId        string                 `protobuf:"bytes,3,opt,name=planId,proto3" json:"planId,omitempty"`
	Name          string                 `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
	Icon          string                 `protobuf:"bytes,5,opt,name=icon,proto3" json:"icon,omitempty"`
	TargetAction  string                 `protobuf:"bytes,6,opt,name=targetAction,proto3" json:"targetAction,omitempty"`
	DueDate       string                 `protobuf:"bytes,7,opt,name=dueDate,proto3" json:"dueDate,omitempty"`
	Status        int32                  `protobuf:"varint,8,opt,name=status,proto3" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CareTaskInfo) Reset() {
	*x = CareTaskInfo{}
	mi := &file_pb_plant_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CareTaskInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CareTaskInfo) ProtoMessage() {}

func (x *CareTaskInfo) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[19]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CareTaskInfo.ProtoReflect.Descriptor instead.
func (*CareTaskInfo) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{19}
}

func (x *CareTaskInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *CareTaskInfo) GetPlantId() string {
	if x != nil {
		return x.PlantId
	}
	return ""
}

func (x *CareTaskInfo) GetPlanId() string {
	if x != nil {
		return x.PlanId
	}
	return ""
}

func (x *CareTaskInfo) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *CareTaskInfo) GetIcon() string {
	if x != nil {
		return x.Icon
	}
	return ""
}

func (x *CareTaskInfo) GetTargetAction() string {
	if x != nil {
		return x.TargetAction
	}
	return ""
}

func (x *CareTaskInfo) GetDueDate() string {
	if x != nil {
		return x.DueDate
	}
	return ""
}

func (x *CareTaskInfo) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

type CareTaskListResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	List          []*CareTaskInfo        `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
	Total         int64                  `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CareTaskListResp) Reset() {
	*x = CareTaskListResp{}
	mi := &file_pb_plant_proto_msgTypes[20]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CareTaskListResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CareTaskListResp) ProtoMessage() {}

func (x *CareTaskListResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[20]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CareTaskListResp.ProtoReflect.Descriptor instead.
func (*CareTaskListResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{20}
}

func (x *CareTaskListResp) GetList() []*CareTaskInfo {
	if x != nil {
		return x.List
	}
	return nil
}

func (x *CareTaskListResp) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

type AddCareRecordReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        string                 `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
	PlantId       string                 `protobuf:"bytes,2,opt,name=plantId,proto3" json:"plantId,omitempty"`
	PlanId        string                 `protobuf:"bytes,3,opt,name=planId,proto3" json:"planId,omitempty"`
	Action        string                 `protobuf:"bytes,4,opt,name=action,proto3" json:"action,omitempty"`
	Note          string                 `protobuf:"bytes,5,opt,name=note,proto3" json:"note,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AddCareRecordReq) Reset() {
	*x = AddCareRecordReq{}
	mi := &file_pb_plant_proto_msgTypes[21]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddCareRecordReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddCareRecordReq) ProtoMessage() {}

func (x *AddCareRecordReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[21]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AddCareRecordReq.ProtoReflect.Descriptor instead.
func (*AddCareRecordReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{21}
}

func (x *AddCareRecordReq) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *AddCareRecordReq) GetPlantId() string {
	if x != nil {
		return x.PlantId
	}
	return ""
}

func (x *AddCareRecordReq) GetPlanId() string {
	if x != nil {
		return x.PlanId
	}
	return ""
}

func (x *AddCareRecordReq) GetAction() string {
	if x != nil {
		return x.Action
	}
	return ""
}

func (x *AddCareRecordReq) GetNote() string {
	if x != nil {
		return x.Note
	}
	return ""
}

type GrowthRecordInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	PlantId       string                 `protobuf:"bytes,2,opt,name=plantId,proto3" json:"plantId,omitempty"`
	Content       string                 `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
	CreatedAt     int64                  `protobuf:"varint,4,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GrowthRecordInfo) Reset() {
	*x = GrowthRecordInfo{}
	mi := &file_pb_plant_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GrowthRecordInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GrowthRecordInfo) ProtoMessage() {}

func (x *GrowthRecordInfo) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[22]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GrowthRecordInfo.ProtoReflect.Descriptor instead.
func (*GrowthRecordInfo) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{22}
}

func (x *GrowthRecordInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *GrowthRecordInfo) GetPlantId() string {
	if x != nil {
		return x.PlantId
	}
	return ""
}

func (x *GrowthRecordInfo) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *GrowthRecordInfo) GetCreatedAt() int64 {
	if x != nil {
		return x.CreatedAt
	}
	return 0
}

type AddGrowthRecordReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        string                 `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
	PlantId       string                 `protobuf:"bytes,2,opt,name=plantId,proto3" json:"plantId,omitempty"`
	Content       string                 `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
	ImgIds        []string               `protobuf:"bytes,4,rep,name=imgIds,proto3" json:"imgIds,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AddGrowthRecordReq) Reset() {
	*x = AddGrowthRecordReq{}
	mi := &file_pb_plant_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddGrowthRecordReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddGrowthRecordReq) ProtoMessage() {}

func (x *AddGrowthRecordReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[23]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AddGrowthRecordReq.ProtoReflect.Descriptor instead.
func (*AddGrowthRecordReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{23}
}

func (x *AddGrowthRecordReq) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *AddGrowthRecordReq) GetPlantId() string {
	if x != nil {
		return x.PlantId
	}
	return ""
}

func (x *AddGrowthRecordReq) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *AddGrowthRecordReq) GetImgIds() []string {
	if x != nil {
		return x.ImgIds
	}
	return nil
}

type WikiInfo struct {
	state              protoimpl.MessageState `protogen:"open.v1"`
	Id                 string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Name               string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	LatinName          string                 `protobuf:"bytes,3,opt,name=latinName,proto3" json:"latinName,omitempty"`
	Aliases            string                 `protobuf:"bytes,4,opt,name=aliases,proto3" json:"aliases,omitempty"`
	Genus              string                 `protobuf:"bytes,5,opt,name=genus,proto3" json:"genus,omitempty"`
	Difficulty         int32                  `protobuf:"varint,6,opt,name=difficulty,proto3" json:"difficulty,omitempty"`
	IsHot              int32                  `protobuf:"varint,7,opt,name=isHot,proto3" json:"isHot,omitempty"`
	GrowthHabit        string                 `protobuf:"bytes,8,opt,name=growthHabit,proto3" json:"growthHabit,omitempty"`
	LightIntensity     string                 `protobuf:"bytes,9,opt,name=lightIntensity,proto3" json:"lightIntensity,omitempty"`
	OptimalTempPeriod  string                 `protobuf:"bytes,10,opt,name=optimalTempPeriod,proto3" json:"optimalTempPeriod,omitempty"`
	CreatedAt          int64                  `protobuf:"varint,11,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
	ClassId            string                 `protobuf:"bytes,12,opt,name=classId,proto3" json:"classId,omitempty"`
	DistributionArea   string                 `protobuf:"bytes,13,opt,name=distributionArea,proto3" json:"distributionArea,omitempty"`
	LifeCycle          string                 `protobuf:"bytes,14,opt,name=lifeCycle,proto3" json:"lifeCycle,omitempty"`
	ClassIds           []string               `protobuf:"bytes,15,rep,name=classIds,proto3" json:"classIds,omitempty"`
	OssIds             []string               `protobuf:"bytes,16,rep,name=ossIds,proto3" json:"ossIds,omitempty"`
	RelatedWikiIds     []string               `protobuf:"bytes,17,rep,name=relatedWikiIds,proto3" json:"relatedWikiIds,omitempty"`
	IsVectorSynced     bool                   `protobuf:"varint,18,opt,name=isVectorSynced,proto3" json:"isVectorSynced,omitempty"`
	IsStar             bool                   `protobuf:"varint,19,opt,name=isStar,proto3" json:"isStar,omitempty"`
	ReproductionMethod string                 `protobuf:"bytes,20,opt,name=reproductionMethod,proto3" json:"reproductionMethod,omitempty"`
	PestsDiseases      string                 `protobuf:"bytes,21,opt,name=pestsDiseases,proto3" json:"pestsDiseases,omitempty"`
	LightType          string                 `protobuf:"bytes,22,opt,name=lightType,proto3" json:"lightType,omitempty"`
	Stem               string                 `protobuf:"bytes,23,opt,name=stem,proto3" json:"stem,omitempty"`
	Fruit              string                 `protobuf:"bytes,24,opt,name=fruit,proto3" json:"fruit,omitempty"`
	FoliageType        string                 `protobuf:"bytes,25,opt,name=foliageType,proto3" json:"foliageType,omitempty"`
	FoliageColor       string                 `protobuf:"bytes,26,opt,name=foliageColor,proto3" json:"foliageColor,omitempty"`
	FoliageShape       string                 `protobuf:"bytes,27,opt,name=foliageShape,proto3" json:"foliageShape,omitempty"`
	Height             int32                  `protobuf:"varint,28,opt,name=height,proto3" json:"height,omitempty"`
	FloweringPeriod    string                 `protobuf:"bytes,29,opt,name=floweringPeriod,proto3" json:"floweringPeriod,omitempty"`
	FloweringColor     string                 `protobuf:"bytes,30,opt,name=floweringColor,proto3" json:"floweringColor,omitempty"`
	FloweringShape     string                 `protobuf:"bytes,31,opt,name=floweringShape,proto3" json:"floweringShape,omitempty"`
	FloweringDiameter  int32                  `protobuf:"varint,32,opt,name=floweringDiameter,proto3" json:"floweringDiameter,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *WikiInfo) Reset() {
	*x = WikiInfo{}
	mi := &file_pb_plant_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WikiInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WikiInfo) ProtoMessage() {}

func (x *WikiInfo) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[24]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WikiInfo.ProtoReflect.Descriptor instead.
func (*WikiInfo) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{24}
}

func (x *WikiInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *WikiInfo) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *WikiInfo) GetLatinName() string {
	if x != nil {
		return x.LatinName
	}
	return ""
}

func (x *WikiInfo) GetAliases() string {
	if x != nil {
		return x.Aliases
	}
	return ""
}

func (x *WikiInfo) GetGenus() string {
	if x != nil {
		return x.Genus
	}
	return ""
}

func (x *WikiInfo) GetDifficulty() int32 {
	if x != nil {
		return x.Difficulty
	}
	return 0
}

func (x *WikiInfo) GetIsHot() int32 {
	if x != nil {
		return x.IsHot
	}
	return 0
}

func (x *WikiInfo) GetGrowthHabit() string {
	if x != nil {
		return x.GrowthHabit
	}
	return ""
}

func (x *WikiInfo) GetLightIntensity() string {
	if x != nil {
		return x.LightIntensity
	}
	return ""
}

func (x *WikiInfo) GetOptimalTempPeriod() string {
	if x != nil {
		return x.OptimalTempPeriod
	}
	return ""
}

func (x *WikiInfo) GetCreatedAt() int64 {
	if x != nil {
		return x.CreatedAt
	}
	return 0
}

func (x *WikiInfo) GetClassId() string {
	if x != nil {
		return x.ClassId
	}
	return ""
}

func (x *WikiInfo) GetDistributionArea() string {
	if x != nil {
		return x.DistributionArea
	}
	return ""
}

func (x *WikiInfo) GetLifeCycle() string {
	if x != nil {
		return x.LifeCycle
	}
	return ""
}

func (x *WikiInfo) GetClassIds() []string {
	if x != nil {
		return x.ClassIds
	}
	return nil
}

func (x *WikiInfo) GetOssIds() []string {
	if x != nil {
		return x.OssIds
	}
	return nil
}

func (x *WikiInfo) GetRelatedWikiIds() []string {
	if x != nil {
		return x.RelatedWikiIds
	}
	return nil
}

func (x *WikiInfo) GetIsVectorSynced() bool {
	if x != nil {
		return x.IsVectorSynced
	}
	return false
}

func (x *WikiInfo) GetIsStar() bool {
	if x != nil {
		return x.IsStar
	}
	return false
}

func (x *WikiInfo) GetReproductionMethod() string {
	if x != nil {
		return x.ReproductionMethod
	}
	return ""
}

func (x *WikiInfo) GetPestsDiseases() string {
	if x != nil {
		return x.PestsDiseases
	}
	return ""
}

func (x *WikiInfo) GetLightType() string {
	if x != nil {
		return x.LightType
	}
	return ""
}

func (x *WikiInfo) GetStem() string {
	if x != nil {
		return x.Stem
	}
	return ""
}

func (x *WikiInfo) GetFruit() string {
	if x != nil {
		return x.Fruit
	}
	return ""
}

func (x *WikiInfo) GetFoliageType() string {
	if x != nil {
		return x.FoliageType
	}
	return ""
}

func (x *WikiInfo) GetFoliageColor() string {
	if x != nil {
		return x.FoliageColor
	}
	return ""
}

func (x *WikiInfo) GetFoliageShape() string {
	if x != nil {
		return x.FoliageShape
	}
	return ""
}

func (x *WikiInfo) GetHeight() int32 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *WikiInfo) GetFloweringPeriod() string {
	if x != nil {
		return x.FloweringPeriod
	}
	return ""
}

func (x *WikiInfo) GetFloweringColor() string {
	if x != nil {
		return x.FloweringColor
	}
	return ""
}

func (x *WikiInfo) GetFloweringShape() string {
	if x != nil {
		return x.FloweringShape
	}
	return ""
}

func (x *WikiInfo) GetFloweringDiameter() int32 {
	if x != nil {
		return x.FloweringDiameter
	}
	return 0
}

type WikiListReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Current       int32                  `protobuf:"varint,1,opt,name=current,proto3" json:"current,omitempty"`
	PageSize      int32                  `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"`
	Name          string                 `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
	ClassId       string                 `protobuf:"bytes,4,opt,name=classId,proto3" json:"classId,omitempty"`
	IsHot         int32                  `protobuf:"varint,5,opt,name=isHot,proto3" json:"isHot,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WikiListReq) Reset() {
	*x = WikiListReq{}
	mi := &file_pb_plant_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WikiListReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WikiListReq) ProtoMessage() {}

func (x *WikiListReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[25]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WikiListReq.ProtoReflect.Descriptor instead.
func (*WikiListReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{25}
}

func (x *WikiListReq) GetCurrent() int32 {
	if x != nil {
		return x.Current
	}
	return 0
}

func (x *WikiListReq) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *WikiListReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *WikiListReq) GetClassId() string {
	if x != nil {
		return x.ClassId
	}
	return ""
}

func (x *WikiListReq) GetIsHot() int32 {
	if x != nil {
		return x.IsHot
	}
	return 0
}

type WikiListResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	List          []*WikiInfo            `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
	Total         int64                  `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WikiListResp) Reset() {
	*x = WikiListResp{}
	mi := &file_pb_plant_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WikiListResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WikiListResp) ProtoMessage() {}

func (x *WikiListResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[26]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WikiListResp.ProtoReflect.Descriptor instead.
func (*WikiListResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{26}
}

func (x *WikiListResp) GetList() []*WikiInfo {
	if x != nil {
		return x.List
	}
	return nil
}

func (x *WikiListResp) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

type WikiDetailResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Wiki          *WikiInfo              `protobuf:"bytes,1,opt,name=wiki,proto3" json:"wiki,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WikiDetailResp) Reset() {
	*x = WikiDetailResp{}
	mi := &file_pb_plant_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WikiDetailResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WikiDetailResp) ProtoMessage() {}

func (x *WikiDetailResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[27]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WikiDetailResp.ProtoReflect.Descriptor instead.
func (*WikiDetailResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{27}
}

func (x *WikiDetailResp) GetWiki() *WikiInfo {
	if x != nil {
		return x.Wiki
	}
	return nil
}

type CreateWikiReq struct {
	state              protoimpl.MessageState `protogen:"open.v1"`
	Name               string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	LatinName          string                 `protobuf:"bytes,2,opt,name=latinName,proto3" json:"latinName,omitempty"`
	Aliases            string                 `protobuf:"bytes,3,opt,name=aliases,proto3" json:"aliases,omitempty"`
	Genus              string                 `protobuf:"bytes,4,opt,name=genus,proto3" json:"genus,omitempty"`
	Difficulty         int32                  `protobuf:"varint,5,opt,name=difficulty,proto3" json:"difficulty,omitempty"`
	IsHot              int32                  `protobuf:"varint,6,opt,name=isHot,proto3" json:"isHot,omitempty"`
	GrowthHabit        string                 `protobuf:"bytes,7,opt,name=growthHabit,proto3" json:"growthHabit,omitempty"`
	LightIntensity     string                 `protobuf:"bytes,8,opt,name=lightIntensity,proto3" json:"lightIntensity,omitempty"`
	OptimalTempPeriod  string                 `protobuf:"bytes,9,opt,name=optimalTempPeriod,proto3" json:"optimalTempPeriod,omitempty"`
	ClassId            string                 `protobuf:"bytes,10,opt,name=classId,proto3" json:"classId,omitempty"`
	DistributionArea   string                 `protobuf:"bytes,11,opt,name=distributionArea,proto3" json:"distributionArea,omitempty"`
	LifeCycle          string                 `protobuf:"bytes,12,opt,name=lifeCycle,proto3" json:"lifeCycle,omitempty"`
	ClassIds           []string               `protobuf:"bytes,13,rep,name=classIds,proto3" json:"classIds,omitempty"`
	OssIds             []string               `protobuf:"bytes,14,rep,name=ossIds,proto3" json:"ossIds,omitempty"`
	RelatedWikiIds     []string               `protobuf:"bytes,15,rep,name=relatedWikiIds,proto3" json:"relatedWikiIds,omitempty"`
	ReproductionMethod string                 `protobuf:"bytes,16,opt,name=reproductionMethod,proto3" json:"reproductionMethod,omitempty"`
	PestsDiseases      string                 `protobuf:"bytes,17,opt,name=pestsDiseases,proto3" json:"pestsDiseases,omitempty"`
	LightType          string                 `protobuf:"bytes,18,opt,name=lightType,proto3" json:"lightType,omitempty"`
	Stem               string                 `protobuf:"bytes,19,opt,name=stem,proto3" json:"stem,omitempty"`
	Fruit              string                 `protobuf:"bytes,20,opt,name=fruit,proto3" json:"fruit,omitempty"`
	FoliageType        string                 `protobuf:"bytes,21,opt,name=foliageType,proto3" json:"foliageType,omitempty"`
	FoliageColor       string                 `protobuf:"bytes,22,opt,name=foliageColor,proto3" json:"foliageColor,omitempty"`
	FoliageShape       string                 `protobuf:"bytes,23,opt,name=foliageShape,proto3" json:"foliageShape,omitempty"`
	Height             int32                  `protobuf:"varint,24,opt,name=height,proto3" json:"height,omitempty"`
	FloweringPeriod    string                 `protobuf:"bytes,25,opt,name=floweringPeriod,proto3" json:"floweringPeriod,omitempty"`
	FloweringColor     string                 `protobuf:"bytes,26,opt,name=floweringColor,proto3" json:"floweringColor,omitempty"`
	FloweringShape     string                 `protobuf:"bytes,27,opt,name=floweringShape,proto3" json:"floweringShape,omitempty"`
	FloweringDiameter  int32                  `protobuf:"varint,28,opt,name=floweringDiameter,proto3" json:"floweringDiameter,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *CreateWikiReq) Reset() {
	*x = CreateWikiReq{}
	mi := &file_pb_plant_proto_msgTypes[28]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateWikiReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateWikiReq) ProtoMessage() {}

func (x *CreateWikiReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[28]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateWikiReq.ProtoReflect.Descriptor instead.
func (*CreateWikiReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{28}
}

func (x *CreateWikiReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *CreateWikiReq) GetLatinName() string {
	if x != nil {
		return x.LatinName
	}
	return ""
}

func (x *CreateWikiReq) GetAliases() string {
	if x != nil {
		return x.Aliases
	}
	return ""
}

func (x *CreateWikiReq) GetGenus() string {
	if x != nil {
		return x.Genus
	}
	return ""
}

func (x *CreateWikiReq) GetDifficulty() int32 {
	if x != nil {
		return x.Difficulty
	}
	return 0
}

func (x *CreateWikiReq) GetIsHot() int32 {
	if x != nil {
		return x.IsHot
	}
	return 0
}

func (x *CreateWikiReq) GetGrowthHabit() string {
	if x != nil {
		return x.GrowthHabit
	}
	return ""
}

func (x *CreateWikiReq) GetLightIntensity() string {
	if x != nil {
		return x.LightIntensity
	}
	return ""
}

func (x *CreateWikiReq) GetOptimalTempPeriod() string {
	if x != nil {
		return x.OptimalTempPeriod
	}
	return ""
}

func (x *CreateWikiReq) GetClassId() string {
	if x != nil {
		return x.ClassId
	}
	return ""
}

func (x *CreateWikiReq) GetDistributionArea() string {
	if x != nil {
		return x.DistributionArea
	}
	return ""
}

func (x *CreateWikiReq) GetLifeCycle() string {
	if x != nil {
		return x.LifeCycle
	}
	return ""
}

func (x *CreateWikiReq) GetClassIds() []string {
	if x != nil {
		return x.ClassIds
	}
	return nil
}

func (x *CreateWikiReq) GetOssIds() []string {
	if x != nil {
		return x.OssIds
	}
	return nil
}

func (x *CreateWikiReq) GetRelatedWikiIds() []string {
	if x != nil {
		return x.RelatedWikiIds
	}
	return nil
}

func (x *CreateWikiReq) GetReproductionMethod() string {
	if x != nil {
		return x.ReproductionMethod
	}
	return ""
}

func (x *CreateWikiReq) GetPestsDiseases() string {
	if x != nil {
		return x.PestsDiseases
	}
	return ""
}

func (x *CreateWikiReq) GetLightType() string {
	if x != nil {
		return x.LightType
	}
	return ""
}

func (x *CreateWikiReq) GetStem() string {
	if x != nil {
		return x.Stem
	}
	return ""
}

func (x *CreateWikiReq) GetFruit() string {
	if x != nil {
		return x.Fruit
	}
	return ""
}

func (x *CreateWikiReq) GetFoliageType() string {
	if x != nil {
		return x.FoliageType
	}
	return ""
}

func (x *CreateWikiReq) GetFoliageColor() string {
	if x != nil {
		return x.FoliageColor
	}
	return ""
}

func (x *CreateWikiReq) GetFoliageShape() string {
	if x != nil {
		return x.FoliageShape
	}
	return ""
}

func (x *CreateWikiReq) GetHeight() int32 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *CreateWikiReq) GetFloweringPeriod() string {
	if x != nil {
		return x.FloweringPeriod
	}
	return ""
}

func (x *CreateWikiReq) GetFloweringColor() string {
	if x != nil {
		return x.FloweringColor
	}
	return ""
}

func (x *CreateWikiReq) GetFloweringShape() string {
	if x != nil {
		return x.FloweringShape
	}
	return ""
}

func (x *CreateWikiReq) GetFloweringDiameter() int32 {
	if x != nil {
		return x.FloweringDiameter
	}
	return 0
}

type UpdateWikiReq struct {
	state              protoimpl.MessageState `protogen:"open.v1"`
	Id                 string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Name               string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	LatinName          string                 `protobuf:"bytes,3,opt,name=latinName,proto3" json:"latinName,omitempty"`
	Aliases            string                 `protobuf:"bytes,4,opt,name=aliases,proto3" json:"aliases,omitempty"`
	Genus              string                 `protobuf:"bytes,5,opt,name=genus,proto3" json:"genus,omitempty"`
	Difficulty         int32                  `protobuf:"varint,6,opt,name=difficulty,proto3" json:"difficulty,omitempty"`
	IsHot              int32                  `protobuf:"varint,7,opt,name=isHot,proto3" json:"isHot,omitempty"`
	GrowthHabit        string                 `protobuf:"bytes,8,opt,name=growthHabit,proto3" json:"growthHabit,omitempty"`
	LightIntensity     string                 `protobuf:"bytes,9,opt,name=lightIntensity,proto3" json:"lightIntensity,omitempty"`
	OptimalTempPeriod  string                 `protobuf:"bytes,10,opt,name=optimalTempPeriod,proto3" json:"optimalTempPeriod,omitempty"`
	ClassId            string                 `protobuf:"bytes,11,opt,name=classId,proto3" json:"classId,omitempty"`
	DistributionArea   string                 `protobuf:"bytes,12,opt,name=distributionArea,proto3" json:"distributionArea,omitempty"`
	LifeCycle          string                 `protobuf:"bytes,13,opt,name=lifeCycle,proto3" json:"lifeCycle,omitempty"`
	ClassIds           []string               `protobuf:"bytes,14,rep,name=classIds,proto3" json:"classIds,omitempty"`
	OssIds             []string               `protobuf:"bytes,15,rep,name=ossIds,proto3" json:"ossIds,omitempty"`
	RelatedWikiIds     []string               `protobuf:"bytes,16,rep,name=relatedWikiIds,proto3" json:"relatedWikiIds,omitempty"`
	ReproductionMethod string                 `protobuf:"bytes,17,opt,name=reproductionMethod,proto3" json:"reproductionMethod,omitempty"`
	PestsDiseases      string                 `protobuf:"bytes,18,opt,name=pestsDiseases,proto3" json:"pestsDiseases,omitempty"`
	LightType          string                 `protobuf:"bytes,19,opt,name=lightType,proto3" json:"lightType,omitempty"`
	Stem               string                 `protobuf:"bytes,20,opt,name=stem,proto3" json:"stem,omitempty"`
	Fruit              string                 `protobuf:"bytes,21,opt,name=fruit,proto3" json:"fruit,omitempty"`
	FoliageType        string                 `protobuf:"bytes,22,opt,name=foliageType,proto3" json:"foliageType,omitempty"`
	FoliageColor       string                 `protobuf:"bytes,23,opt,name=foliageColor,proto3" json:"foliageColor,omitempty"`
	FoliageShape       string                 `protobuf:"bytes,24,opt,name=foliageShape,proto3" json:"foliageShape,omitempty"`
	Height             int32                  `protobuf:"varint,25,opt,name=height,proto3" json:"height,omitempty"`
	FloweringPeriod    string                 `protobuf:"bytes,26,opt,name=floweringPeriod,proto3" json:"floweringPeriod,omitempty"`
	FloweringColor     string                 `protobuf:"bytes,27,opt,name=floweringColor,proto3" json:"floweringColor,omitempty"`
	FloweringShape     string                 `protobuf:"bytes,28,opt,name=floweringShape,proto3" json:"floweringShape,omitempty"`
	FloweringDiameter  int32                  `protobuf:"varint,29,opt,name=floweringDiameter,proto3" json:"floweringDiameter,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *UpdateWikiReq) Reset() {
	*x = UpdateWikiReq{}
	mi := &file_pb_plant_proto_msgTypes[29]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateWikiReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateWikiReq) ProtoMessage() {}

func (x *UpdateWikiReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[29]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateWikiReq.ProtoReflect.Descriptor instead.
func (*UpdateWikiReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{29}
}

func (x *UpdateWikiReq) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *UpdateWikiReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *UpdateWikiReq) GetLatinName() string {
	if x != nil {
		return x.LatinName
	}
	return ""
}

func (x *UpdateWikiReq) GetAliases() string {
	if x != nil {
		return x.Aliases
	}
	return ""
}

func (x *UpdateWikiReq) GetGenus() string {
	if x != nil {
		return x.Genus
	}
	return ""
}

func (x *UpdateWikiReq) GetDifficulty() int32 {
	if x != nil {
		return x.Difficulty
	}
	return 0
}

func (x *UpdateWikiReq) GetIsHot() int32 {
	if x != nil {
		return x.IsHot
	}
	return 0
}

func (x *UpdateWikiReq) GetGrowthHabit() string {
	if x != nil {
		return x.GrowthHabit
	}
	return ""
}

func (x *UpdateWikiReq) GetLightIntensity() string {
	if x != nil {
		return x.LightIntensity
	}
	return ""
}

func (x *UpdateWikiReq) GetOptimalTempPeriod() string {
	if x != nil {
		return x.OptimalTempPeriod
	}
	return ""
}

func (x *UpdateWikiReq) GetClassId() string {
	if x != nil {
		return x.ClassId
	}
	return ""
}

func (x *UpdateWikiReq) GetDistributionArea() string {
	if x != nil {
		return x.DistributionArea
	}
	return ""
}

func (x *UpdateWikiReq) GetLifeCycle() string {
	if x != nil {
		return x.LifeCycle
	}
	return ""
}

func (x *UpdateWikiReq) GetClassIds() []string {
	if x != nil {
		return x.ClassIds
	}
	return nil
}

func (x *UpdateWikiReq) GetOssIds() []string {
	if x != nil {
		return x.OssIds
	}
	return nil
}

func (x *UpdateWikiReq) GetRelatedWikiIds() []string {
	if x != nil {
		return x.RelatedWikiIds
	}
	return nil
}

func (x *UpdateWikiReq) GetReproductionMethod() string {
	if x != nil {
		return x.ReproductionMethod
	}
	return ""
}

func (x *UpdateWikiReq) GetPestsDiseases() string {
	if x != nil {
		return x.PestsDiseases
	}
	return ""
}

func (x *UpdateWikiReq) GetLightType() string {
	if x != nil {
		return x.LightType
	}
	return ""
}

func (x *UpdateWikiReq) GetStem() string {
	if x != nil {
		return x.Stem
	}
	return ""
}

func (x *UpdateWikiReq) GetFruit() string {
	if x != nil {
		return x.Fruit
	}
	return ""
}

func (x *UpdateWikiReq) GetFoliageType() string {
	if x != nil {
		return x.FoliageType
	}
	return ""
}

func (x *UpdateWikiReq) GetFoliageColor() string {
	if x != nil {
		return x.FoliageColor
	}
	return ""
}

func (x *UpdateWikiReq) GetFoliageShape() string {
	if x != nil {
		return x.FoliageShape
	}
	return ""
}

func (x *UpdateWikiReq) GetHeight() int32 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *UpdateWikiReq) GetFloweringPeriod() string {
	if x != nil {
		return x.FloweringPeriod
	}
	return ""
}

func (x *UpdateWikiReq) GetFloweringColor() string {
	if x != nil {
		return x.FloweringColor
	}
	return ""
}

func (x *UpdateWikiReq) GetFloweringShape() string {
	if x != nil {
		return x.FloweringShape
	}
	return ""
}

func (x *UpdateWikiReq) GetFloweringDiameter() int32 {
	if x != nil {
		return x.FloweringDiameter
	}
	return 0
}

type WikiClassInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	OssId         string                 `protobuf:"bytes,3,opt,name=ossId,proto3" json:"ossId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WikiClassInfo) Reset() {
	*x = WikiClassInfo{}
	mi := &file_pb_plant_proto_msgTypes[30]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WikiClassInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WikiClassInfo) ProtoMessage() {}

func (x *WikiClassInfo) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[30]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WikiClassInfo.ProtoReflect.Descriptor instead.
func (*WikiClassInfo) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{30}
}

func (x *WikiClassInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *WikiClassInfo) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *WikiClassInfo) GetOssId() string {
	if x != nil {
		return x.OssId
	}
	return ""
}

type WikiClassListResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	List          []*WikiClassInfo       `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WikiClassListResp) Reset() {
	*x = WikiClassListResp{}
	mi := &file_pb_plant_proto_msgTypes[31]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WikiClassListResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WikiClassListResp) ProtoMessage() {}

func (x *WikiClassListResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[31]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WikiClassListResp.ProtoReflect.Descriptor instead.
func (*WikiClassListResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{31}
}

func (x *WikiClassListResp) GetList() []*WikiClassInfo {
	if x != nil {
		return x.List
	}
	return nil
}

type CreateWikiClassReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Icon          string                 `protobuf:"bytes,2,opt,name=icon,proto3" json:"icon,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateWikiClassReq) Reset() {
	*x = CreateWikiClassReq{}
	mi := &file_pb_plant_proto_msgTypes[32]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateWikiClassReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateWikiClassReq) ProtoMessage() {}

func (x *CreateWikiClassReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[32]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateWikiClassReq.ProtoReflect.Descriptor instead.
func (*CreateWikiClassReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{32}
}

func (x *CreateWikiClassReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *CreateWikiClassReq) GetIcon() string {
	if x != nil {
		return x.Icon
	}
	return ""
}

type UpdateWikiClassReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Icon          string                 `protobuf:"bytes,3,opt,name=icon,proto3" json:"icon,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateWikiClassReq) Reset() {
	*x = UpdateWikiClassReq{}
	mi := &file_pb_plant_proto_msgTypes[33]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateWikiClassReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateWikiClassReq) ProtoMessage() {}

func (x *UpdateWikiClassReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[33]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateWikiClassReq.ProtoReflect.Descriptor instead.
func (*UpdateWikiClassReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{33}
}

func (x *UpdateWikiClassReq) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *UpdateWikiClassReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *UpdateWikiClassReq) GetIcon() string {
	if x != nil {
		return x.Icon
	}
	return ""
}

type ToggleStarReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        string                 `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
	TargetId      string                 `protobuf:"bytes,2,opt,name=targetId,proto3" json:"targetId,omitempty"`
	Type          string                 `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ToggleStarReq) Reset() {
	*x = ToggleStarReq{}
	mi := &file_pb_plant_proto_msgTypes[34]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ToggleStarReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ToggleStarReq) ProtoMessage() {}

func (x *ToggleStarReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[34]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ToggleStarReq.ProtoReflect.Descriptor instead.
func (*ToggleStarReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{34}
}

func (x *ToggleStarReq) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *ToggleStarReq) GetTargetId() string {
	if x != nil {
		return x.TargetId
	}
	return ""
}

func (x *ToggleStarReq) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

type ClassifyLogInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	UserId        string                 `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId,omitempty"`
	ImageUrl      string                 `protobuf:"bytes,3,opt,name=imageUrl,proto3" json:"imageUrl,omitempty"`
	Result        string                 `protobuf:"bytes,4,opt,name=result,proto3" json:"result,omitempty"`
	CreatedAt     string                 `protobuf:"bytes,5,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ClassifyLogInfo) Reset() {
	*x = ClassifyLogInfo{}
	mi := &file_pb_plant_proto_msgTypes[35]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ClassifyLogInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ClassifyLogInfo) ProtoMessage() {}

func (x *ClassifyLogInfo) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[35]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ClassifyLogInfo.ProtoReflect.Descriptor instead.
func (*ClassifyLogInfo) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{35}
}

func (x *ClassifyLogInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ClassifyLogInfo) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *ClassifyLogInfo) GetImageUrl() string {
	if x != nil {
		return x.ImageUrl
	}
	return ""
}

func (x *ClassifyLogInfo) GetResult() string {
	if x != nil {
		return x.Result
	}
	return ""
}

func (x *ClassifyLogInfo) GetCreatedAt() string {
	if x != nil {
		return x.CreatedAt
	}
	return ""
}

type ClassifyLogListResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	List          []*ClassifyLogInfo     `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
	Total         int64                  `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ClassifyLogListResp) Reset() {
	*x = ClassifyLogListResp{}
	mi := &file_pb_plant_proto_msgTypes[36]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ClassifyLogListResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ClassifyLogListResp) ProtoMessage() {}

func (x *ClassifyLogListResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[36]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ClassifyLogListResp.ProtoReflect.Descriptor instead.
func (*ClassifyLogListResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{36}
}

func (x *ClassifyLogListResp) GetList() []*ClassifyLogInfo {
	if x != nil {
		return x.List
	}
	return nil
}

func (x *ClassifyLogListResp) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

type PostInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	UserId        string                 `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId,omitempty"`
	Title         string                 `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
	Content       string                 `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"`
	ViewCount     int32                  `protobuf:"varint,5,opt,name=viewCount,proto3" json:"viewCount,omitempty"`
	CommentCount  int32                  `protobuf:"varint,6,opt,name=commentCount,proto3" json:"commentCount,omitempty"`
	LikeCount     int32                  `protobuf:"varint,7,opt,name=likeCount,proto3" json:"likeCount,omitempty"`
	StarCount     int32                  `protobuf:"varint,8,opt,name=starCount,proto3" json:"starCount,omitempty"`
	Location      string                 `protobuf:"bytes,9,opt,name=location,proto3" json:"location,omitempty"`
	CreatedAt     int64                  `protobuf:"varint,10,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
	TopicId       string                 `protobuf:"bytes,11,opt,name=topicId,proto3" json:"topicId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PostInfo) Reset() {
	*x = PostInfo{}
	mi := &file_pb_plant_proto_msgTypes[37]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PostInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PostInfo) ProtoMessage() {}

func (x *PostInfo) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[37]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PostInfo.ProtoReflect.Descriptor instead.
func (*PostInfo) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{37}
}

func (x *PostInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *PostInfo) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *PostInfo) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *PostInfo) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *PostInfo) GetViewCount() int32 {
	if x != nil {
		return x.ViewCount
	}
	return 0
}

func (x *PostInfo) GetCommentCount() int32 {
	if x != nil {
		return x.CommentCount
	}
	return 0
}

func (x *PostInfo) GetLikeCount() int32 {
	if x != nil {
		return x.LikeCount
	}
	return 0
}

func (x *PostInfo) GetStarCount() int32 {
	if x != nil {
		return x.StarCount
	}
	return 0
}

func (x *PostInfo) GetLocation() string {
	if x != nil {
		return x.Location
	}
	return ""
}

func (x *PostInfo) GetCreatedAt() int64 {
	if x != nil {
		return x.CreatedAt
	}
	return 0
}

func (x *PostInfo) GetTopicId() string {
	if x != nil {
		return x.TopicId
	}
	return ""
}

type CreatePostReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        string                 `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
	Title         string                 `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	Content       string                 `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
	Location      string                 `protobuf:"bytes,4,opt,name=location,proto3" json:"location,omitempty"`
	ImgIds        []string               `protobuf:"bytes,5,rep,name=imgIds,proto3" json:"imgIds,omitempty"`
	TopicId       string                 `protobuf:"bytes,6,opt,name=topicId,proto3" json:"topicId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreatePostReq) Reset() {
	*x = CreatePostReq{}
	mi := &file_pb_plant_proto_msgTypes[38]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreatePostReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreatePostReq) ProtoMessage() {}

func (x *CreatePostReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[38]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreatePostReq.ProtoReflect.Descriptor instead.
func (*CreatePostReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{38}
}

func (x *CreatePostReq) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *CreatePostReq) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *CreatePostReq) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *CreatePostReq) GetLocation() string {
	if x != nil {
		return x.Location
	}
	return ""
}

func (x *CreatePostReq) GetImgIds() []string {
	if x != nil {
		return x.ImgIds
	}
	return nil
}

func (x *CreatePostReq) GetTopicId() string {
	if x != nil {
		return x.TopicId
	}
	return ""
}

type PostListReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Current       int32                  `protobuf:"varint,1,opt,name=current,proto3" json:"current,omitempty"`
	PageSize      int32                  `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"`
	Keyword       string                 `protobuf:"bytes,3,opt,name=keyword,proto3" json:"keyword,omitempty"`
	TopicId       string                 `protobuf:"bytes,4,opt,name=topicId,proto3" json:"topicId,omitempty"`
	UserId        string                 `protobuf:"bytes,5,opt,name=userId,proto3" json:"userId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PostListReq) Reset() {
	*x = PostListReq{}
	mi := &file_pb_plant_proto_msgTypes[39]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PostListReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PostListReq) ProtoMessage() {}

func (x *PostListReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[39]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PostListReq.ProtoReflect.Descriptor instead.
func (*PostListReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{39}
}

func (x *PostListReq) GetCurrent() int32 {
	if x != nil {
		return x.Current
	}
	return 0
}

func (x *PostListReq) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *PostListReq) GetKeyword() string {
	if x != nil {
		return x.Keyword
	}
	return ""
}

func (x *PostListReq) GetTopicId() string {
	if x != nil {
		return x.TopicId
	}
	return ""
}

func (x *PostListReq) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

type PostListResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	List          []*PostInfo            `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
	Total         int64                  `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PostListResp) Reset() {
	*x = PostListResp{}
	mi := &file_pb_plant_proto_msgTypes[40]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PostListResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PostListResp) ProtoMessage() {}

func (x *PostListResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[40]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PostListResp.ProtoReflect.Descriptor instead.
func (*PostListResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{40}
}

func (x *PostListResp) GetList() []*PostInfo {
	if x != nil {
		return x.List
	}
	return nil
}

func (x *PostListResp) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

type PostDetailResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Post          *PostInfo              `protobuf:"bytes,1,opt,name=post,proto3" json:"post,omitempty"`
	Comments      []*PostCommentInfo     `protobuf:"bytes,2,rep,name=comments,proto3" json:"comments,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PostDetailResp) Reset() {
	*x = PostDetailResp{}
	mi := &file_pb_plant_proto_msgTypes[41]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PostDetailResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PostDetailResp) ProtoMessage() {}

func (x *PostDetailResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[41]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PostDetailResp.ProtoReflect.Descriptor instead.
func (*PostDetailResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{41}
}

func (x *PostDetailResp) GetPost() *PostInfo {
	if x != nil {
		return x.Post
	}
	return nil
}

func (x *PostDetailResp) GetComments() []*PostCommentInfo {
	if x != nil {
		return x.Comments
	}
	return nil
}

type PostCommentInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	UserId        string                 `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId,omitempty"`
	Content       string                 `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
	ParentId      string                 `protobuf:"bytes,4,opt,name=parentId,proto3" json:"parentId,omitempty"`
	CreatedAt     int64                  `protobuf:"varint,5,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PostCommentInfo) Reset() {
	*x = PostCommentInfo{}
	mi := &file_pb_plant_proto_msgTypes[42]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PostCommentInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PostCommentInfo) ProtoMessage() {}

func (x *PostCommentInfo) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[42]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PostCommentInfo.ProtoReflect.Descriptor instead.
func (*PostCommentInfo) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{42}
}

func (x *PostCommentInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *PostCommentInfo) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *PostCommentInfo) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *PostCommentInfo) GetParentId() string {
	if x != nil {
		return x.ParentId
	}
	return ""
}

func (x *PostCommentInfo) GetCreatedAt() int64 {
	if x != nil {
		return x.CreatedAt
	}
	return 0
}

type CommentPostReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        string                 `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
	PostId        string                 `protobuf:"bytes,2,opt,name=postId,proto3" json:"postId,omitempty"`
	Content       string                 `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
	ParentId      string                 `protobuf:"bytes,4,opt,name=parentId,proto3" json:"parentId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CommentPostReq) Reset() {
	*x = CommentPostReq{}
	mi := &file_pb_plant_proto_msgTypes[43]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CommentPostReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CommentPostReq) ProtoMessage() {}

func (x *CommentPostReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[43]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CommentPostReq.ProtoReflect.Descriptor instead.
func (*CommentPostReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{43}
}

func (x *CommentPostReq) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *CommentPostReq) GetPostId() string {
	if x != nil {
		return x.PostId
	}
	return ""
}

func (x *CommentPostReq) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *CommentPostReq) GetParentId() string {
	if x != nil {
		return x.ParentId
	}
	return ""
}

type LikePostReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        string                 `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
	PostId        string                 `protobuf:"bytes,2,opt,name=postId,proto3" json:"postId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LikePostReq) Reset() {
	*x = LikePostReq{}
	mi := &file_pb_plant_proto_msgTypes[44]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LikePostReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LikePostReq) ProtoMessage() {}

func (x *LikePostReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[44]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LikePostReq.ProtoReflect.Descriptor instead.
func (*LikePostReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{44}
}

func (x *LikePostReq) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *LikePostReq) GetPostId() string {
	if x != nil {
		return x.PostId
	}
	return ""
}

type TopicInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	PostCount     int32                  `protobuf:"varint,3,opt,name=postCount,proto3" json:"postCount,omitempty"`
	Icon          string                 `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"`
	Desc          string                 `protobuf:"bytes,5,opt,name=desc,proto3" json:"desc,omitempty"`
	Title         string                 `protobuf:"bytes,6,opt,name=title,proto3" json:"title,omitempty"`
	Remark        string                 `protobuf:"bytes,7,opt,name=remark,proto3" json:"remark,omitempty"`
	StartTime     string                 `protobuf:"bytes,8,opt,name=startTime,proto3" json:"startTime,omitempty"`
	EndTime       string                 `protobuf:"bytes,9,opt,name=endTime,proto3" json:"endTime,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TopicInfo) Reset() {
	*x = TopicInfo{}
	mi := &file_pb_plant_proto_msgTypes[45]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TopicInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TopicInfo) ProtoMessage() {}

func (x *TopicInfo) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[45]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TopicInfo.ProtoReflect.Descriptor instead.
func (*TopicInfo) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{45}
}

func (x *TopicInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *TopicInfo) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *TopicInfo) GetPostCount() int32 {
	if x != nil {
		return x.PostCount
	}
	return 0
}

func (x *TopicInfo) GetIcon() string {
	if x != nil {
		return x.Icon
	}
	return ""
}

func (x *TopicInfo) GetDesc() string {
	if x != nil {
		return x.Desc
	}
	return ""
}

func (x *TopicInfo) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *TopicInfo) GetRemark() string {
	if x != nil {
		return x.Remark
	}
	return ""
}

func (x *TopicInfo) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *TopicInfo) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

type TopicListResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	List          []*TopicInfo           `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TopicListResp) Reset() {
	*x = TopicListResp{}
	mi := &file_pb_plant_proto_msgTypes[46]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TopicListResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TopicListResp) ProtoMessage() {}

func (x *TopicListResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[46]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TopicListResp.ProtoReflect.Descriptor instead.
func (*TopicListResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{46}
}

func (x *TopicListResp) GetList() []*TopicInfo {
	if x != nil {
		return x.List
	}
	return nil
}

type CreateTopicReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Icon          string                 `protobuf:"bytes,2,opt,name=icon,proto3" json:"icon,omitempty"`
	Desc          string                 `protobuf:"bytes,3,opt,name=desc,proto3" json:"desc,omitempty"`
	Title         string                 `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"`
	Remark        string                 `protobuf:"bytes,5,opt,name=remark,proto3" json:"remark,omitempty"`
	StartTime     string                 `protobuf:"bytes,6,opt,name=startTime,proto3" json:"startTime,omitempty"`
	EndTime       string                 `protobuf:"bytes,7,opt,name=endTime,proto3" json:"endTime,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateTopicReq) Reset() {
	*x = CreateTopicReq{}
	mi := &file_pb_plant_proto_msgTypes[47]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateTopicReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateTopicReq) ProtoMessage() {}

func (x *CreateTopicReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[47]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateTopicReq.ProtoReflect.Descriptor instead.
func (*CreateTopicReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{47}
}

func (x *CreateTopicReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *CreateTopicReq) GetIcon() string {
	if x != nil {
		return x.Icon
	}
	return ""
}

func (x *CreateTopicReq) GetDesc() string {
	if x != nil {
		return x.Desc
	}
	return ""
}

func (x *CreateTopicReq) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *CreateTopicReq) GetRemark() string {
	if x != nil {
		return x.Remark
	}
	return ""
}

func (x *CreateTopicReq) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *CreateTopicReq) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

type UpdateTopicReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Icon          string                 `protobuf:"bytes,3,opt,name=icon,proto3" json:"icon,omitempty"`
	Desc          string                 `protobuf:"bytes,4,opt,name=desc,proto3" json:"desc,omitempty"`
	Title         string                 `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"`
	Remark        string                 `protobuf:"bytes,6,opt,name=remark,proto3" json:"remark,omitempty"`
	StartTime     string                 `protobuf:"bytes,7,opt,name=startTime,proto3" json:"startTime,omitempty"`
	EndTime       string                 `protobuf:"bytes,8,opt,name=endTime,proto3" json:"endTime,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateTopicReq) Reset() {
	*x = UpdateTopicReq{}
	mi := &file_pb_plant_proto_msgTypes[48]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateTopicReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateTopicReq) ProtoMessage() {}

func (x *UpdateTopicReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[48]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateTopicReq.ProtoReflect.Descriptor instead.
func (*UpdateTopicReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{48}
}

func (x *UpdateTopicReq) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *UpdateTopicReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *UpdateTopicReq) GetIcon() string {
	if x != nil {
		return x.Icon
	}
	return ""
}

func (x *UpdateTopicReq) GetDesc() string {
	if x != nil {
		return x.Desc
	}
	return ""
}

func (x *UpdateTopicReq) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *UpdateTopicReq) GetRemark() string {
	if x != nil {
		return x.Remark
	}
	return ""
}

func (x *UpdateTopicReq) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *UpdateTopicReq) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

type ExchangeItemInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Desc          string                 `protobuf:"bytes,3,opt,name=desc,proto3" json:"desc,omitempty"`
	ImgId         string                 `protobuf:"bytes,4,opt,name=imgId,proto3" json:"imgId,omitempty"`
	Cost          int64                  `protobuf:"varint,5,opt,name=cost,proto3" json:"cost,omitempty"`
	Stock         int32                  `protobuf:"varint,6,opt,name=stock,proto3" json:"stock,omitempty"`
	Status        int32                  `protobuf:"varint,7,opt,name=status,proto3" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExchangeItemInfo) Reset() {
	*x = ExchangeItemInfo{}
	mi := &file_pb_plant_proto_msgTypes[49]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ExchangeItemInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExchangeItemInfo) ProtoMessage() {}

func (x *ExchangeItemInfo) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[49]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ExchangeItemInfo.ProtoReflect.Descriptor instead.
func (*ExchangeItemInfo) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{49}
}

func (x *ExchangeItemInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ExchangeItemInfo) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *ExchangeItemInfo) GetDesc() string {
	if x != nil {
		return x.Desc
	}
	return ""
}

func (x *ExchangeItemInfo) GetImgId() string {
	if x != nil {
		return x.ImgId
	}
	return ""
}

func (x *ExchangeItemInfo) GetCost() int64 {
	if x != nil {
		return x.Cost
	}
	return 0
}

func (x *ExchangeItemInfo) GetStock() int32 {
	if x != nil {
		return x.Stock
	}
	return 0
}

func (x *ExchangeItemInfo) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

type ExchangeItemListReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Current       int32                  `protobuf:"varint,1,opt,name=current,proto3" json:"current,omitempty"`
	PageSize      int32                  `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"`
	Status        int32                  `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExchangeItemListReq) Reset() {
	*x = ExchangeItemListReq{}
	mi := &file_pb_plant_proto_msgTypes[50]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ExchangeItemListReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExchangeItemListReq) ProtoMessage() {}

func (x *ExchangeItemListReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[50]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ExchangeItemListReq.ProtoReflect.Descriptor instead.
func (*ExchangeItemListReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{50}
}

func (x *ExchangeItemListReq) GetCurrent() int32 {
	if x != nil {
		return x.Current
	}
	return 0
}

func (x *ExchangeItemListReq) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *ExchangeItemListReq) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

type ExchangeItemListResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	List          []*ExchangeItemInfo    `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
	Total         int64                  `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExchangeItemListResp) Reset() {
	*x = ExchangeItemListResp{}
	mi := &file_pb_plant_proto_msgTypes[51]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ExchangeItemListResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExchangeItemListResp) ProtoMessage() {}

func (x *ExchangeItemListResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[51]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ExchangeItemListResp.ProtoReflect.Descriptor instead.
func (*ExchangeItemListResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{51}
}

func (x *ExchangeItemListResp) GetList() []*ExchangeItemInfo {
	if x != nil {
		return x.List
	}
	return nil
}

func (x *ExchangeItemListResp) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

type CreateExchangeOrderReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        string                 `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
	ItemId        string                 `protobuf:"bytes,2,opt,name=itemId,proto3" json:"itemId,omitempty"`
	Quantity      int32                  `protobuf:"varint,3,opt,name=quantity,proto3" json:"quantity,omitempty"`
	RecipientName string                 `protobuf:"bytes,4,opt,name=recipientName,proto3" json:"recipientName,omitempty"`
	Phone         string                 `protobuf:"bytes,5,opt,name=phone,proto3" json:"phone,omitempty"`
	Address       string                 `protobuf:"bytes,6,opt,name=address,proto3" json:"address,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateExchangeOrderReq) Reset() {
	*x = CreateExchangeOrderReq{}
	mi := &file_pb_plant_proto_msgTypes[52]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateExchangeOrderReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateExchangeOrderReq) ProtoMessage() {}

func (x *CreateExchangeOrderReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[52]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateExchangeOrderReq.ProtoReflect.Descriptor instead.
func (*CreateExchangeOrderReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{52}
}

func (x *CreateExchangeOrderReq) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *CreateExchangeOrderReq) GetItemId() string {
	if x != nil {
		return x.ItemId
	}
	return ""
}

func (x *CreateExchangeOrderReq) GetQuantity() int32 {
	if x != nil {
		return x.Quantity
	}
	return 0
}

func (x *CreateExchangeOrderReq) GetRecipientName() string {
	if x != nil {
		return x.RecipientName
	}
	return ""
}

func (x *CreateExchangeOrderReq) GetPhone() string {
	if x != nil {
		return x.Phone
	}
	return ""
}

func (x *CreateExchangeOrderReq) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

type CreateExchangeItemReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Desc          string                 `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"`
	ImgId         string                 `protobuf:"bytes,3,opt,name=imgId,proto3" json:"imgId,omitempty"`
	Cost          int64                  `protobuf:"varint,4,opt,name=cost,proto3" json:"cost,omitempty"`
	Stock         int32                  `protobuf:"varint,5,opt,name=stock,proto3" json:"stock,omitempty"`
	Type          string                 `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty"`
	CostSunlight  int64                  `protobuf:"varint,7,opt,name=costSunlight,proto3" json:"costSunlight,omitempty"`
	LimitPerUser  int32                  `protobuf:"varint,8,opt,name=limitPerUser,proto3" json:"limitPerUser,omitempty"`
	Sort          int32                  `protobuf:"varint,9,opt,name=sort,proto3" json:"sort,omitempty"`
	StartTime     string                 `protobuf:"bytes,10,opt,name=startTime,proto3" json:"startTime,omitempty"`
	EndTime       string                 `protobuf:"bytes,11,opt,name=endTime,proto3" json:"endTime,omitempty"`
	ImageId       string                 `protobuf:"bytes,12,opt,name=imageId,proto3" json:"imageId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateExchangeItemReq) Reset() {
	*x = CreateExchangeItemReq{}
	mi := &file_pb_plant_proto_msgTypes[53]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateExchangeItemReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateExchangeItemReq) ProtoMessage() {}

func (x *CreateExchangeItemReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[53]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateExchangeItemReq.ProtoReflect.Descriptor instead.
func (*CreateExchangeItemReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{53}
}

func (x *CreateExchangeItemReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *CreateExchangeItemReq) GetDesc() string {
	if x != nil {
		return x.Desc
	}
	return ""
}

func (x *CreateExchangeItemReq) GetImgId() string {
	if x != nil {
		return x.ImgId
	}
	return ""
}

func (x *CreateExchangeItemReq) GetCost() int64 {
	if x != nil {
		return x.Cost
	}
	return 0
}

func (x *CreateExchangeItemReq) GetStock() int32 {
	if x != nil {
		return x.Stock
	}
	return 0
}

func (x *CreateExchangeItemReq) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *CreateExchangeItemReq) GetCostSunlight() int64 {
	if x != nil {
		return x.CostSunlight
	}
	return 0
}

func (x *CreateExchangeItemReq) GetLimitPerUser() int32 {
	if x != nil {
		return x.LimitPerUser
	}
	return 0
}

func (x *CreateExchangeItemReq) GetSort() int32 {
	if x != nil {
		return x.Sort
	}
	return 0
}

func (x *CreateExchangeItemReq) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *CreateExchangeItemReq) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

func (x *CreateExchangeItemReq) GetImageId() string {
	if x != nil {
		return x.ImageId
	}
	return ""
}

type UpdateExchangeItemReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Desc          string                 `protobuf:"bytes,3,opt,name=desc,proto3" json:"desc,omitempty"`
	ImgId         string                 `protobuf:"bytes,4,opt,name=imgId,proto3" json:"imgId,omitempty"`
	Cost          int64                  `protobuf:"varint,5,opt,name=cost,proto3" json:"cost,omitempty"`
	Stock         int32                  `protobuf:"varint,6,opt,name=stock,proto3" json:"stock,omitempty"`
	Status        int32                  `protobuf:"varint,7,opt,name=status,proto3" json:"status,omitempty"`
	Type          string                 `protobuf:"bytes,8,opt,name=type,proto3" json:"type,omitempty"`
	CostSunlight  int64                  `protobuf:"varint,9,opt,name=costSunlight,proto3" json:"costSunlight,omitempty"`
	LimitPerUser  int32                  `protobuf:"varint,10,opt,name=limitPerUser,proto3" json:"limitPerUser,omitempty"`
	Sort          int32                  `protobuf:"varint,11,opt,name=sort,proto3" json:"sort,omitempty"`
	StartTime     string                 `protobuf:"bytes,12,opt,name=startTime,proto3" json:"startTime,omitempty"`
	EndTime       string                 `protobuf:"bytes,13,opt,name=endTime,proto3" json:"endTime,omitempty"`
	ImageId       string                 `protobuf:"bytes,14,opt,name=imageId,proto3" json:"imageId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateExchangeItemReq) Reset() {
	*x = UpdateExchangeItemReq{}
	mi := &file_pb_plant_proto_msgTypes[54]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateExchangeItemReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateExchangeItemReq) ProtoMessage() {}

func (x *UpdateExchangeItemReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[54]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateExchangeItemReq.ProtoReflect.Descriptor instead.
func (*UpdateExchangeItemReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{54}
}

func (x *UpdateExchangeItemReq) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *UpdateExchangeItemReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *UpdateExchangeItemReq) GetDesc() string {
	if x != nil {
		return x.Desc
	}
	return ""
}

func (x *UpdateExchangeItemReq) GetImgId() string {
	if x != nil {
		return x.ImgId
	}
	return ""
}

func (x *UpdateExchangeItemReq) GetCost() int64 {
	if x != nil {
		return x.Cost
	}
	return 0
}

func (x *UpdateExchangeItemReq) GetStock() int32 {
	if x != nil {
		return x.Stock
	}
	return 0
}

func (x *UpdateExchangeItemReq) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *UpdateExchangeItemReq) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *UpdateExchangeItemReq) GetCostSunlight() int64 {
	if x != nil {
		return x.CostSunlight
	}
	return 0
}

func (x *UpdateExchangeItemReq) GetLimitPerUser() int32 {
	if x != nil {
		return x.LimitPerUser
	}
	return 0
}

func (x *UpdateExchangeItemReq) GetSort() int32 {
	if x != nil {
		return x.Sort
	}
	return 0
}

func (x *UpdateExchangeItemReq) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *UpdateExchangeItemReq) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

func (x *UpdateExchangeItemReq) GetImageId() string {
	if x != nil {
		return x.ImageId
	}
	return ""
}

type ExchangeOrderInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	UserId        string                 `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId,omitempty"`
	ItemId        string                 `protobuf:"bytes,3,opt,name=itemId,proto3" json:"itemId,omitempty"`
	ItemName      string                 `protobuf:"bytes,4,opt,name=itemName,proto3" json:"itemName,omitempty"`
	Cost          int64                  `protobuf:"varint,5,opt,name=cost,proto3" json:"cost,omitempty"`
	Status        int32                  `protobuf:"varint,6,opt,name=status,proto3" json:"status,omitempty"`
	Address       string                 `protobuf:"bytes,7,opt,name=address,proto3" json:"address,omitempty"`
	CreatedAt     string                 `protobuf:"bytes,8,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
	Quantity      int32                  `protobuf:"varint,9,opt,name=quantity,proto3" json:"quantity,omitempty"`
	ItemType      string                 `protobuf:"bytes,10,opt,name=itemType,proto3" json:"itemType,omitempty"`
	RecipientName string                 `protobuf:"bytes,11,opt,name=recipientName,proto3" json:"recipientName,omitempty"`
	Phone         string                 `protobuf:"bytes,12,opt,name=phone,proto3" json:"phone,omitempty"`
	TrackingNo    string                 `protobuf:"bytes,13,opt,name=trackingNo,proto3" json:"trackingNo,omitempty"`
	Remark        string                 `protobuf:"bytes,14,opt,name=remark,proto3" json:"remark,omitempty"`
	CompletedAt   string                 `protobuf:"bytes,15,opt,name=completedAt,proto3" json:"completedAt,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExchangeOrderInfo) Reset() {
	*x = ExchangeOrderInfo{}
	mi := &file_pb_plant_proto_msgTypes[55]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ExchangeOrderInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExchangeOrderInfo) ProtoMessage() {}

func (x *ExchangeOrderInfo) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[55]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ExchangeOrderInfo.ProtoReflect.Descriptor instead.
func (*ExchangeOrderInfo) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{55}
}

func (x *ExchangeOrderInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ExchangeOrderInfo) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *ExchangeOrderInfo) GetItemId() string {
	if x != nil {
		return x.ItemId
	}
	return ""
}

func (x *ExchangeOrderInfo) GetItemName() string {
	if x != nil {
		return x.ItemName
	}
	return ""
}

func (x *ExchangeOrderInfo) GetCost() int64 {
	if x != nil {
		return x.Cost
	}
	return 0
}

func (x *ExchangeOrderInfo) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *ExchangeOrderInfo) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *ExchangeOrderInfo) GetCreatedAt() string {
	if x != nil {
		return x.CreatedAt
	}
	return ""
}

func (x *ExchangeOrderInfo) GetQuantity() int32 {
	if x != nil {
		return x.Quantity
	}
	return 0
}

func (x *ExchangeOrderInfo) GetItemType() string {
	if x != nil {
		return x.ItemType
	}
	return ""
}

func (x *ExchangeOrderInfo) GetRecipientName() string {
	if x != nil {
		return x.RecipientName
	}
	return ""
}

func (x *ExchangeOrderInfo) GetPhone() string {
	if x != nil {
		return x.Phone
	}
	return ""
}

func (x *ExchangeOrderInfo) GetTrackingNo() string {
	if x != nil {
		return x.TrackingNo
	}
	return ""
}

func (x *ExchangeOrderInfo) GetRemark() string {
	if x != nil {
		return x.Remark
	}
	return ""
}

func (x *ExchangeOrderInfo) GetCompletedAt() string {
	if x != nil {
		return x.CompletedAt
	}
	return ""
}

type ExchangeOrderListReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Current       int32                  `protobuf:"varint,1,opt,name=current,proto3" json:"current,omitempty"`
	PageSize      int32                  `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"`
	UserId        string                 `protobuf:"bytes,3,opt,name=userId,proto3" json:"userId,omitempty"`
	Status        int32                  `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExchangeOrderListReq) Reset() {
	*x = ExchangeOrderListReq{}
	mi := &file_pb_plant_proto_msgTypes[56]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ExchangeOrderListReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExchangeOrderListReq) ProtoMessage() {}

func (x *ExchangeOrderListReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[56]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ExchangeOrderListReq.ProtoReflect.Descriptor instead.
func (*ExchangeOrderListReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{56}
}

func (x *ExchangeOrderListReq) GetCurrent() int32 {
	if x != nil {
		return x.Current
	}
	return 0
}

func (x *ExchangeOrderListReq) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *ExchangeOrderListReq) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *ExchangeOrderListReq) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

type ExchangeOrderListResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	List          []*ExchangeOrderInfo   `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
	Total         int64                  `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExchangeOrderListResp) Reset() {
	*x = ExchangeOrderListResp{}
	mi := &file_pb_plant_proto_msgTypes[57]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ExchangeOrderListResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExchangeOrderListResp) ProtoMessage() {}

func (x *ExchangeOrderListResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[57]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ExchangeOrderListResp.ProtoReflect.Descriptor instead.
func (*ExchangeOrderListResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{57}
}

func (x *ExchangeOrderListResp) GetList() []*ExchangeOrderInfo {
	if x != nil {
		return x.List
	}
	return nil
}

func (x *ExchangeOrderListResp) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

type UpdateExchangeOrderReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Status        int32                  `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
	TrackingNo    string                 `protobuf:"bytes,3,opt,name=trackingNo,proto3" json:"trackingNo,omitempty"`
	Remark        string                 `protobuf:"bytes,4,opt,name=remark,proto3" json:"remark,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateExchangeOrderReq) Reset() {
	*x = UpdateExchangeOrderReq{}
	mi := &file_pb_plant_proto_msgTypes[58]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateExchangeOrderReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateExchangeOrderReq) ProtoMessage() {}

func (x *UpdateExchangeOrderReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[58]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateExchangeOrderReq.ProtoReflect.Descriptor instead.
func (*UpdateExchangeOrderReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{58}
}

func (x *UpdateExchangeOrderReq) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *UpdateExchangeOrderReq) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *UpdateExchangeOrderReq) GetTrackingNo() string {
	if x != nil {
		return x.TrackingNo
	}
	return ""
}

func (x *UpdateExchangeOrderReq) GetRemark() string {
	if x != nil {
		return x.Remark
	}
	return ""
}

type MediaCheckCallbackReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	TraceId       string                 `protobuf:"bytes,1,opt,name=traceId,proto3" json:"traceId,omitempty"`
	PostId        string                 `protobuf:"bytes,2,opt,name=postId,proto3" json:"postId,omitempty"`
	OssId         string                 `protobuf:"bytes,3,opt,name=ossId,proto3" json:"ossId,omitempty"`
	UserId        string                 `protobuf:"bytes,4,opt,name=userId,proto3" json:"userId,omitempty"`
	Status        int32                  `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"`
	Type          int32                  `protobuf:"varint,6,opt,name=type,proto3" json:"type,omitempty"`
	ErrMsg        string                 `protobuf:"bytes,7,opt,name=errMsg,proto3" json:"errMsg,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MediaCheckCallbackReq) Reset() {
	*x = MediaCheckCallbackReq{}
	mi := &file_pb_plant_proto_msgTypes[59]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *MediaCheckCallbackReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MediaCheckCallbackReq) ProtoMessage() {}

func (x *MediaCheckCallbackReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[59]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MediaCheckCallbackReq.ProtoReflect.Descriptor instead.
func (*MediaCheckCallbackReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{59}
}

func (x *MediaCheckCallbackReq) GetTraceId() string {
	if x != nil {
		return x.TraceId
	}
	return ""
}

func (x *MediaCheckCallbackReq) GetPostId() string {
	if x != nil {
		return x.PostId
	}
	return ""
}

func (x *MediaCheckCallbackReq) GetOssId() string {
	if x != nil {
		return x.OssId
	}
	return ""
}

func (x *MediaCheckCallbackReq) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *MediaCheckCallbackReq) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *MediaCheckCallbackReq) GetType() int32 {
	if x != nil {
		return x.Type
	}
	return 0
}

func (x *MediaCheckCallbackReq) GetErrMsg() string {
	if x != nil {
		return x.ErrMsg
	}
	return ""
}

type SaveAiChatHistoryReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        string                 `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
	Question      string                 `protobuf:"bytes,2,opt,name=question,proto3" json:"question,omitempty"`
	Answer        string                 `protobuf:"bytes,3,opt,name=answer,proto3" json:"answer,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SaveAiChatHistoryReq) Reset() {
	*x = SaveAiChatHistoryReq{}
	mi := &file_pb_plant_proto_msgTypes[60]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SaveAiChatHistoryReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SaveAiChatHistoryReq) ProtoMessage() {}

func (x *SaveAiChatHistoryReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[60]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SaveAiChatHistoryReq.ProtoReflect.Descriptor instead.
func (*SaveAiChatHistoryReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{60}
}

func (x *SaveAiChatHistoryReq) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *SaveAiChatHistoryReq) GetQuestion() string {
	if x != nil {
		return x.Question
	}
	return ""
}

func (x *SaveAiChatHistoryReq) GetAnswer() string {
	if x != nil {
		return x.Answer
	}
	return ""
}

type SyncWikiVectorReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	WikiId        string                 `protobuf:"bytes,1,opt,name=wikiId,proto3" json:"wikiId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SyncWikiVectorReq) Reset() {
	*x = SyncWikiVectorReq{}
	mi := &file_pb_plant_proto_msgTypes[61]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SyncWikiVectorReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SyncWikiVectorReq) ProtoMessage() {}

func (x *SyncWikiVectorReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[61]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SyncWikiVectorReq.ProtoReflect.Descriptor instead.
func (*SyncWikiVectorReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{61}
}

func (x *SyncWikiVectorReq) GetWikiId() string {
	if x != nil {
		return x.WikiId
	}
	return ""
}

type LevelConfigInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Level         int32                  `protobuf:"varint,2,opt,name=level,proto3" json:"level,omitempty"`
	Title         string                 `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
	MinSunlight   int64                  `protobuf:"varint,4,opt,name=minSunlight,proto3" json:"minSunlight,omitempty"`
	Perks         string                 `protobuf:"bytes,5,opt,name=perks,proto3" json:"perks,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LevelConfigInfo) Reset() {
	*x = LevelConfigInfo{}
	mi := &file_pb_plant_proto_msgTypes[62]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LevelConfigInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LevelConfigInfo) ProtoMessage() {}

func (x *LevelConfigInfo) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[62]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LevelConfigInfo.ProtoReflect.Descriptor instead.
func (*LevelConfigInfo) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{62}
}

func (x *LevelConfigInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *LevelConfigInfo) GetLevel() int32 {
	if x != nil {
		return x.Level
	}
	return 0
}

func (x *LevelConfigInfo) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *LevelConfigInfo) GetMinSunlight() int64 {
	if x != nil {
		return x.MinSunlight
	}
	return 0
}

func (x *LevelConfigInfo) GetPerks() string {
	if x != nil {
		return x.Perks
	}
	return ""
}

type LevelConfigListResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	List          []*LevelConfigInfo     `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LevelConfigListResp) Reset() {
	*x = LevelConfigListResp{}
	mi := &file_pb_plant_proto_msgTypes[63]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LevelConfigListResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LevelConfigListResp) ProtoMessage() {}

func (x *LevelConfigListResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[63]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LevelConfigListResp.ProtoReflect.Descriptor instead.
func (*LevelConfigListResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{63}
}

func (x *LevelConfigListResp) GetList() []*LevelConfigInfo {
	if x != nil {
		return x.List
	}
	return nil
}

type CreateLevelConfigReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Level         int32                  `protobuf:"varint,1,opt,name=level,proto3" json:"level,omitempty"`
	Title         string                 `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	MinSunlight   int64                  `protobuf:"varint,3,opt,name=minSunlight,proto3" json:"minSunlight,omitempty"`
	Perks         string                 `protobuf:"bytes,4,opt,name=perks,proto3" json:"perks,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateLevelConfigReq) Reset() {
	*x = CreateLevelConfigReq{}
	mi := &file_pb_plant_proto_msgTypes[64]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateLevelConfigReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateLevelConfigReq) ProtoMessage() {}

func (x *CreateLevelConfigReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[64]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateLevelConfigReq.ProtoReflect.Descriptor instead.
func (*CreateLevelConfigReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{64}
}

func (x *CreateLevelConfigReq) GetLevel() int32 {
	if x != nil {
		return x.Level
	}
	return 0
}

func (x *CreateLevelConfigReq) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *CreateLevelConfigReq) GetMinSunlight() int64 {
	if x != nil {
		return x.MinSunlight
	}
	return 0
}

func (x *CreateLevelConfigReq) GetPerks() string {
	if x != nil {
		return x.Perks
	}
	return ""
}

type UpdateLevelConfigReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Level         int32                  `protobuf:"varint,2,opt,name=level,proto3" json:"level,omitempty"`
	Title         string                 `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
	MinSunlight   int64                  `protobuf:"varint,4,opt,name=minSunlight,proto3" json:"minSunlight,omitempty"`
	Perks         string                 `protobuf:"bytes,5,opt,name=perks,proto3" json:"perks,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateLevelConfigReq) Reset() {
	*x = UpdateLevelConfigReq{}
	mi := &file_pb_plant_proto_msgTypes[65]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateLevelConfigReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateLevelConfigReq) ProtoMessage() {}

func (x *UpdateLevelConfigReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[65]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateLevelConfigReq.ProtoReflect.Descriptor instead.
func (*UpdateLevelConfigReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{65}
}

func (x *UpdateLevelConfigReq) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *UpdateLevelConfigReq) GetLevel() int32 {
	if x != nil {
		return x.Level
	}
	return 0
}

func (x *UpdateLevelConfigReq) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *UpdateLevelConfigReq) GetMinSunlight() int64 {
	if x != nil {
		return x.MinSunlight
	}
	return 0
}

func (x *UpdateLevelConfigReq) GetPerks() string {
	if x != nil {
		return x.Perks
	}
	return ""
}

type BadgeConfigInfo struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	Id             string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Name           string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Description    string                 `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	Dimension      string                 `protobuf:"bytes,4,opt,name=dimension,proto3" json:"dimension,omitempty"`
	GroupId        string                 `protobuf:"bytes,5,opt,name=groupId,proto3" json:"groupId,omitempty"`
	Tier           int32                  `protobuf:"varint,6,opt,name=tier,proto3" json:"tier,omitempty"`
	TargetAction   string                 `protobuf:"bytes,7,opt,name=targetAction,proto3" json:"targetAction,omitempty"`
	Threshold      int64                  `protobuf:"varint,8,opt,name=threshold,proto3" json:"threshold,omitempty"`
	RewardSunlight int64                  `protobuf:"varint,9,opt,name=rewardSunlight,proto3" json:"rewardSunlight,omitempty"`
	IconId         string                 `protobuf:"bytes,10,opt,name=iconId,proto3" json:"iconId,omitempty"`
	Sort           int32                  `protobuf:"varint,11,opt,name=sort,proto3" json:"sort,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *BadgeConfigInfo) Reset() {
	*x = BadgeConfigInfo{}
	mi := &file_pb_plant_proto_msgTypes[66]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BadgeConfigInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BadgeConfigInfo) ProtoMessage() {}

func (x *BadgeConfigInfo) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[66]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BadgeConfigInfo.ProtoReflect.Descriptor instead.
func (*BadgeConfigInfo) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{66}
}

func (x *BadgeConfigInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *BadgeConfigInfo) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *BadgeConfigInfo) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

func (x *BadgeConfigInfo) GetDimension() string {
	if x != nil {
		return x.Dimension
	}
	return ""
}

func (x *BadgeConfigInfo) GetGroupId() string {
	if x != nil {
		return x.GroupId
	}
	return ""
}

func (x *BadgeConfigInfo) GetTier() int32 {
	if x != nil {
		return x.Tier
	}
	return 0
}

func (x *BadgeConfigInfo) GetTargetAction() string {
	if x != nil {
		return x.TargetAction
	}
	return ""
}

func (x *BadgeConfigInfo) GetThreshold() int64 {
	if x != nil {
		return x.Threshold
	}
	return 0
}

func (x *BadgeConfigInfo) GetRewardSunlight() int64 {
	if x != nil {
		return x.RewardSunlight
	}
	return 0
}

func (x *BadgeConfigInfo) GetIconId() string {
	if x != nil {
		return x.IconId
	}
	return ""
}

func (x *BadgeConfigInfo) GetSort() int32 {
	if x != nil {
		return x.Sort
	}
	return 0
}

type BadgeConfigListReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Current       int32                  `protobuf:"varint,1,opt,name=current,proto3" json:"current,omitempty"`
	PageSize      int32                  `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"`
	Dimension     string                 `protobuf:"bytes,3,opt,name=dimension,proto3" json:"dimension,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BadgeConfigListReq) Reset() {
	*x = BadgeConfigListReq{}
	mi := &file_pb_plant_proto_msgTypes[67]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BadgeConfigListReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BadgeConfigListReq) ProtoMessage() {}

func (x *BadgeConfigListReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[67]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BadgeConfigListReq.ProtoReflect.Descriptor instead.
func (*BadgeConfigListReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{67}
}

func (x *BadgeConfigListReq) GetCurrent() int32 {
	if x != nil {
		return x.Current
	}
	return 0
}

func (x *BadgeConfigListReq) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *BadgeConfigListReq) GetDimension() string {
	if x != nil {
		return x.Dimension
	}
	return ""
}

type BadgeConfigListResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	List          []*BadgeConfigInfo     `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
	Total         int64                  `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BadgeConfigListResp) Reset() {
	*x = BadgeConfigListResp{}
	mi := &file_pb_plant_proto_msgTypes[68]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BadgeConfigListResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BadgeConfigListResp) ProtoMessage() {}

func (x *BadgeConfigListResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[68]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BadgeConfigListResp.ProtoReflect.Descriptor instead.
func (*BadgeConfigListResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{68}
}

func (x *BadgeConfigListResp) GetList() []*BadgeConfigInfo {
	if x != nil {
		return x.List
	}
	return nil
}

func (x *BadgeConfigListResp) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

type CreateBadgeConfigReq struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	Name           string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Description    string                 `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
	Dimension      string                 `protobuf:"bytes,3,opt,name=dimension,proto3" json:"dimension,omitempty"`
	GroupId        string                 `protobuf:"bytes,4,opt,name=groupId,proto3" json:"groupId,omitempty"`
	Tier           int32                  `protobuf:"varint,5,opt,name=tier,proto3" json:"tier,omitempty"`
	TargetAction   string                 `protobuf:"bytes,6,opt,name=targetAction,proto3" json:"targetAction,omitempty"`
	Threshold      int64                  `protobuf:"varint,7,opt,name=threshold,proto3" json:"threshold,omitempty"`
	RewardSunlight int64                  `protobuf:"varint,8,opt,name=rewardSunlight,proto3" json:"rewardSunlight,omitempty"`
	IconId         string                 `protobuf:"bytes,9,opt,name=iconId,proto3" json:"iconId,omitempty"`
	Sort           int32                  `protobuf:"varint,10,opt,name=sort,proto3" json:"sort,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *CreateBadgeConfigReq) Reset() {
	*x = CreateBadgeConfigReq{}
	mi := &file_pb_plant_proto_msgTypes[69]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateBadgeConfigReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateBadgeConfigReq) ProtoMessage() {}

func (x *CreateBadgeConfigReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[69]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateBadgeConfigReq.ProtoReflect.Descriptor instead.
func (*CreateBadgeConfigReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{69}
}

func (x *CreateBadgeConfigReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *CreateBadgeConfigReq) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

func (x *CreateBadgeConfigReq) GetDimension() string {
	if x != nil {
		return x.Dimension
	}
	return ""
}

func (x *CreateBadgeConfigReq) GetGroupId() string {
	if x != nil {
		return x.GroupId
	}
	return ""
}

func (x *CreateBadgeConfigReq) GetTier() int32 {
	if x != nil {
		return x.Tier
	}
	return 0
}

func (x *CreateBadgeConfigReq) GetTargetAction() string {
	if x != nil {
		return x.TargetAction
	}
	return ""
}

func (x *CreateBadgeConfigReq) GetThreshold() int64 {
	if x != nil {
		return x.Threshold
	}
	return 0
}

func (x *CreateBadgeConfigReq) GetRewardSunlight() int64 {
	if x != nil {
		return x.RewardSunlight
	}
	return 0
}

func (x *CreateBadgeConfigReq) GetIconId() string {
	if x != nil {
		return x.IconId
	}
	return ""
}

func (x *CreateBadgeConfigReq) GetSort() int32 {
	if x != nil {
		return x.Sort
	}
	return 0
}

type UpdateBadgeConfigReq struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	Id             string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Name           string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Description    string                 `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	Dimension      string                 `protobuf:"bytes,4,opt,name=dimension,proto3" json:"dimension,omitempty"`
	GroupId        string                 `protobuf:"bytes,5,opt,name=groupId,proto3" json:"groupId,omitempty"`
	Tier           int32                  `protobuf:"varint,6,opt,name=tier,proto3" json:"tier,omitempty"`
	TargetAction   string                 `protobuf:"bytes,7,opt,name=targetAction,proto3" json:"targetAction,omitempty"`
	Threshold      int64                  `protobuf:"varint,8,opt,name=threshold,proto3" json:"threshold,omitempty"`
	RewardSunlight int64                  `protobuf:"varint,9,opt,name=rewardSunlight,proto3" json:"rewardSunlight,omitempty"`
	IconId         string                 `protobuf:"bytes,10,opt,name=iconId,proto3" json:"iconId,omitempty"`
	Sort           int32                  `protobuf:"varint,11,opt,name=sort,proto3" json:"sort,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *UpdateBadgeConfigReq) Reset() {
	*x = UpdateBadgeConfigReq{}
	mi := &file_pb_plant_proto_msgTypes[70]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateBadgeConfigReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateBadgeConfigReq) ProtoMessage() {}

func (x *UpdateBadgeConfigReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[70]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateBadgeConfigReq.ProtoReflect.Descriptor instead.
func (*UpdateBadgeConfigReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{70}
}

func (x *UpdateBadgeConfigReq) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *UpdateBadgeConfigReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *UpdateBadgeConfigReq) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

func (x *UpdateBadgeConfigReq) GetDimension() string {
	if x != nil {
		return x.Dimension
	}
	return ""
}

func (x *UpdateBadgeConfigReq) GetGroupId() string {
	if x != nil {
		return x.GroupId
	}
	return ""
}

func (x *UpdateBadgeConfigReq) GetTier() int32 {
	if x != nil {
		return x.Tier
	}
	return 0
}

func (x *UpdateBadgeConfigReq) GetTargetAction() string {
	if x != nil {
		return x.TargetAction
	}
	return ""
}

func (x *UpdateBadgeConfigReq) GetThreshold() int64 {
	if x != nil {
		return x.Threshold
	}
	return 0
}

func (x *UpdateBadgeConfigReq) GetRewardSunlight() int64 {
	if x != nil {
		return x.RewardSunlight
	}
	return 0
}

func (x *UpdateBadgeConfigReq) GetIconId() string {
	if x != nil {
		return x.IconId
	}
	return ""
}

func (x *UpdateBadgeConfigReq) GetSort() int32 {
	if x != nil {
		return x.Sort
	}
	return 0
}

type CompleteTaskReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        string                 `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
	TaskId        string                 `protobuf:"bytes,2,opt,name=taskId,proto3" json:"taskId,omitempty"`
	Remark        string                 `protobuf:"bytes,3,opt,name=remark,proto3" json:"remark,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CompleteTaskReq) Reset() {
	*x = CompleteTaskReq{}
	mi := &file_pb_plant_proto_msgTypes[71]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CompleteTaskReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CompleteTaskReq) ProtoMessage() {}

func (x *CompleteTaskReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[71]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CompleteTaskReq.ProtoReflect.Descriptor instead.
func (*CompleteTaskReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{71}
}

func (x *CompleteTaskReq) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *CompleteTaskReq) GetTaskId() string {
	if x != nil {
		return x.TaskId
	}
	return ""
}

func (x *CompleteTaskReq) GetRemark() string {
	if x != nil {
		return x.Remark
	}
	return ""
}

type TaskCompletionResult struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	IsLevelUp      bool                   `protobuf:"varint,1,opt,name=isLevelUp,proto3" json:"isLevelUp,omitempty"`
	CurrentLevel   *LevelConfigInfo       `protobuf:"bytes,2,opt,name=currentLevel,proto3" json:"currentLevel,omitempty"`
	IsGetBadge     bool                   `protobuf:"varint,3,opt,name=isGetBadge,proto3" json:"isGetBadge,omitempty"`
	NewBadge       *BadgeConfigInfo       `protobuf:"bytes,4,opt,name=newBadge,proto3" json:"newBadge,omitempty"`
	RewardSunlight int64                  `protobuf:"varint,5,opt,name=rewardSunlight,proto3" json:"rewardSunlight,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *TaskCompletionResult) Reset() {
	*x = TaskCompletionResult{}
	mi := &file_pb_plant_proto_msgTypes[72]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TaskCompletionResult) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TaskCompletionResult) ProtoMessage() {}

func (x *TaskCompletionResult) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[72]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TaskCompletionResult.ProtoReflect.Descriptor instead.
func (*TaskCompletionResult) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{72}
}

func (x *TaskCompletionResult) GetIsLevelUp() bool {
	if x != nil {
		return x.IsLevelUp
	}
	return false
}

func (x *TaskCompletionResult) GetCurrentLevel() *LevelConfigInfo {
	if x != nil {
		return x.CurrentLevel
	}
	return nil
}

func (x *TaskCompletionResult) GetIsGetBadge() bool {
	if x != nil {
		return x.IsGetBadge
	}
	return false
}

func (x *TaskCompletionResult) GetNewBadge() *BadgeConfigInfo {
	if x != nil {
		return x.NewBadge
	}
	return nil
}

func (x *TaskCompletionResult) GetRewardSunlight() int64 {
	if x != nil {
		return x.RewardSunlight
	}
	return 0
}

type BadgeGroupInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	GroupId       string                 `protobuf:"bytes,1,opt,name=groupId,proto3" json:"groupId,omitempty"`
	Dimension     string                 `protobuf:"bytes,2,opt,name=dimension,proto3" json:"dimension,omitempty"`
	Badges        []*BadgeConfigInfo     `protobuf:"bytes,3,rep,name=badges,proto3" json:"badges,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BadgeGroupInfo) Reset() {
	*x = BadgeGroupInfo{}
	mi := &file_pb_plant_proto_msgTypes[73]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BadgeGroupInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BadgeGroupInfo) ProtoMessage() {}

func (x *BadgeGroupInfo) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[73]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BadgeGroupInfo.ProtoReflect.Descriptor instead.
func (*BadgeGroupInfo) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{73}
}

func (x *BadgeGroupInfo) GetGroupId() string {
	if x != nil {
		return x.GroupId
	}
	return ""
}

func (x *BadgeGroupInfo) GetDimension() string {
	if x != nil {
		return x.Dimension
	}
	return ""
}

func (x *BadgeGroupInfo) GetBadges() []*BadgeConfigInfo {
	if x != nil {
		return x.Badges
	}
	return nil
}

type BadgeConfigTreeResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Groups        []*BadgeGroupInfo      `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BadgeConfigTreeResp) Reset() {
	*x = BadgeConfigTreeResp{}
	mi := &file_pb_plant_proto_msgTypes[74]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BadgeConfigTreeResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BadgeConfigTreeResp) ProtoMessage() {}

func (x *BadgeConfigTreeResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[74]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BadgeConfigTreeResp.ProtoReflect.Descriptor instead.
func (*BadgeConfigTreeResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{74}
}

func (x *BadgeConfigTreeResp) GetGroups() []*BadgeGroupInfo {
	if x != nil {
		return x.Groups
	}
	return nil
}

type AiQuotaResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Remaining     int64                  `protobuf:"varint,1,opt,name=remaining,proto3" json:"remaining,omitempty"`
	Total         int64                  `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	Used          int64                  `protobuf:"varint,3,opt,name=used,proto3" json:"used,omitempty"`
	Limit         int64                  `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AiQuotaResp) Reset() {
	*x = AiQuotaResp{}
	mi := &file_pb_plant_proto_msgTypes[75]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AiQuotaResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AiQuotaResp) ProtoMessage() {}

func (x *AiQuotaResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[75]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AiQuotaResp.ProtoReflect.Descriptor instead.
func (*AiQuotaResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{75}
}

func (x *AiQuotaResp) GetRemaining() int64 {
	if x != nil {
		return x.Remaining
	}
	return 0
}

func (x *AiQuotaResp) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *AiQuotaResp) GetUsed() int64 {
	if x != nil {
		return x.Used
	}
	return 0
}

func (x *AiQuotaResp) GetLimit() int64 {
	if x != nil {
		return x.Limit
	}
	return 0
}

type AiChatHistoryInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	UserId        string                 `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId,omitempty"`
	Question      string                 `protobuf:"bytes,3,opt,name=question,proto3" json:"question,omitempty"`
	Answer        string                 `protobuf:"bytes,4,opt,name=answer,proto3" json:"answer,omitempty"`
	CreatedAt     string                 `protobuf:"bytes,5,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AiChatHistoryInfo) Reset() {
	*x = AiChatHistoryInfo{}
	mi := &file_pb_plant_proto_msgTypes[76]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AiChatHistoryInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AiChatHistoryInfo) ProtoMessage() {}

func (x *AiChatHistoryInfo) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[76]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AiChatHistoryInfo.ProtoReflect.Descriptor instead.
func (*AiChatHistoryInfo) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{76}
}

func (x *AiChatHistoryInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *AiChatHistoryInfo) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *AiChatHistoryInfo) GetQuestion() string {
	if x != nil {
		return x.Question
	}
	return ""
}

func (x *AiChatHistoryInfo) GetAnswer() string {
	if x != nil {
		return x.Answer
	}
	return ""
}

func (x *AiChatHistoryInfo) GetCreatedAt() string {
	if x != nil {
		return x.CreatedAt
	}
	return ""
}

type AiChatHistoryReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        string                 `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
	Current       int32                  `protobuf:"varint,2,opt,name=current,proto3" json:"current,omitempty"`
	PageSize      int32                  `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AiChatHistoryReq) Reset() {
	*x = AiChatHistoryReq{}
	mi := &file_pb_plant_proto_msgTypes[77]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AiChatHistoryReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AiChatHistoryReq) ProtoMessage() {}

func (x *AiChatHistoryReq) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[77]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AiChatHistoryReq.ProtoReflect.Descriptor instead.
func (*AiChatHistoryReq) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{77}
}

func (x *AiChatHistoryReq) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *AiChatHistoryReq) GetCurrent() int32 {
	if x != nil {
		return x.Current
	}
	return 0
}

func (x *AiChatHistoryReq) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

type AiChatHistoryResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	List          []*AiChatHistoryInfo   `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
	Total         int64                  `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AiChatHistoryResp) Reset() {
	*x = AiChatHistoryResp{}
	mi := &file_pb_plant_proto_msgTypes[78]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AiChatHistoryResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AiChatHistoryResp) ProtoMessage() {}

func (x *AiChatHistoryResp) ProtoReflect() protoreflect.Message {
	mi := &file_pb_plant_proto_msgTypes[78]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AiChatHistoryResp.ProtoReflect.Descriptor instead.
func (*AiChatHistoryResp) Descriptor() ([]byte, []int) {
	return file_pb_plant_proto_rawDescGZIP(), []int{78}
}

func (x *AiChatHistoryResp) GetList() []*AiChatHistoryInfo {
	if x != nil {
		return x.List
	}
	return nil
}

func (x *AiChatHistoryResp) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

var File_pb_plant_proto protoreflect.FileDescriptor

const file_pb_plant_proto_rawDesc = "" +
	"\n" +
	"\x0epb/plant.proto\x12\x05plant\"2\n" +
	"\n" +
	"CommonResp\x12\x12\n" +
	"\x04code\x18\x01 \x01(\x03R\x04code\x12\x10\n" +
	"\x03msg\x18\x02 \x01(\tR\x03msg\"\x17\n" +
	"\x05IdReq\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\"\x1a\n" +
	"\x06IdsReq\x12\x10\n" +
	"\x03ids\x18\x01 \x03(\tR\x03ids\"?\n" +
	"\aPageReq\x12\x18\n" +
	"\acurrent\x18\x01 \x01(\x05R\acurrent\x12\x1a\n" +
	"\bpageSize\x18\x02 \x01(\x05R\bpageSize\"\xe0\x03\n" +
	"\x10PlantUserProfile\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
	"\x06userId\x18\x02 \x01(\tR\x06userId\x12\x1a\n" +
	"\bnickName\x18\x03 \x01(\tR\bnickName\x12\x1a\n" +
	"\bavatarId\x18\x04 \x01(\tR\bavatarId\x12\x18\n" +
	"\alevelId\x18\x05 \x01(\tR\alevelId\x12(\n" +
	"\x0fcurrentSunlight\x18\x06 \x01(\x03R\x0fcurrentSunlight\x12$\n" +
	"\rtotalSunlight\x18\a \x01(\x03R\rtotalSunlight\x12\x1e\n" +
	"\n" +
	"plantCount\x18\b \x01(\x03R\n" +
	"plantCount\x12\x1c\n" +
	"\tcareCount\x18\t \x01(\x03R\tcareCount\x12\x1c\n" +
	"\tpostCount\x18\n" +
	" \x01(\x03R\tpostCount\x12\x1e\n" +
	"\n" +
	"waterCount\x18\v \x01(\x03R\n" +
	"waterCount\x12&\n" +
	"\x0efertilizeCount\x18\f \x01(\x03R\x0efertilizeCount\x12\x1e\n" +
	"\n" +
	"repotCount\x18\r \x01(\x03R\n" +
	"repotCount\x12\x1e\n" +
	"\n" +
	"pruneCount\x18\x0e \x01(\x03R\n" +
	"pruneCount\x12\x1e\n" +
	"\n" +
	"photoCount\x18\x0f \x01(\x03R\n" +
	"photoCount\"'\n" +
	"\rGetProfileReq\x12\x16\n" +
	"\x06userId\x18\x01 \x01(\tR\x06userId\"b\n" +
	"\x10UpdateProfileReq\x12\x16\n" +
	"\x06userId\x18\x01 \x01(\tR\x06userId\x12\x1a\n" +
	"\bnickName\x18\x02 \x01(\tR\bnickName\x12\x1a\n" +
	"\bavatarId\x18\x03 \x01(\tR\bavatarId\"\xa7\x01\n" +
	"\rUserBadgeInfo\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x18\n" +
	"\abadgeId\x18\x02 \x01(\tR\abadgeId\x12\x1c\n" +
	"\tbadgeName\x18\x03 \x01(\tR\tbadgeName\x12\x1c\n" +
	"\tdimension\x18\x04 \x01(\tR\tdimension\x12\x12\n" +
	"\x04tier\x18\x05 \x01(\x05R\x04tier\x12\x1c\n" +
	"\tawardedAt\x18\x06 \x01(\tR\tawardedAt\"=\n" +
	"\x11UserBadgeListResp\x12(\n" +
	"\x04list\x18\x01 \x03(\v2\x14.plant.UserBadgeInfoR\x04list\"l\n" +
	"\fUserStarInfo\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1a\n" +
	"\btargetId\x18\x02 \x01(\tR\btargetId\x12\x12\n" +
	"\x04type\x18\x03 \x01(\tR\x04type\x12\x1c\n" +
	"\tcreatedAt\x18\x04 \x01(\tR\tcreatedAt\"Q\n" +
	"\x10UserStarListResp\x12'\n" +
	"\x04list\x18\x01 \x03(\v2\x13.plant.UserStarInfoR\x04list\x12\x14\n" +
	"\x05total\x18\x02 \x01(\x03R\x05total\"\xd5\x02\n" +
	"\tPlantInfo\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
	"\x06userId\x18\x02 \x01(\tR\x06userId\x12\x12\n" +
	"\x04name\x18\x03 \x01(\tR\x04name\x12\x1c\n" +
	"\tplantTime\x18\x04 \x01(\tR\tplantTime\x12\x16\n" +
	"\x06status\x18\x05 \x01(\x05R\x06status\x12\x1c\n" +
	"\tplacement\x18\x06 \x01(\tR\tplacement\x12 \n" +
	"\vpotMaterial\x18\a \x01(\tR\vpotMaterial\x12\x18\n" +
	"\apotSize\x18\b \x01(\tR\apotSize\x12\x1a\n" +
	"\bsunlight\x18\t \x01(\tR\bsunlight\x12*\n" +
	"\x10plantingMaterial\x18\n" +
	" \x01(\tR\x10plantingMaterial\x12\x16\n" +
	"\x06imgIds\x18\v \x03(\tR\x06imgIds\x12\x1c\n" +
	"\tcreatedAt\x18\f \x01(\x03R\tcreatedAt\"\x94\x02\n" +
	"\x0eCreatePlantReq\x12\x16\n" +
	"\x06userId\x18\x01 \x01(\tR\x06userId\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12\x1c\n" +
	"\tplantTime\x18\x03 \x01(\tR\tplantTime\x12\x1c\n" +
	"\tplacement\x18\x04 \x01(\tR\tplacement\x12 \n" +
	"\vpotMaterial\x18\x05 \x01(\tR\vpotMaterial\x12\x18\n" +
	"\apotSize\x18\x06 \x01(\tR\apotSize\x12\x1a\n" +
	"\bsunlight\x18\a \x01(\tR\bsunlight\x12*\n" +
	"\x10plantingMaterial\x18\b \x01(\tR\x10plantingMaterial\x12\x16\n" +
	"\x06imgIds\x18\t \x03(\tR\x06imgIds\"\x86\x02\n" +
	"\x0eUpdatePlantReq\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12\x16\n" +
	"\x06status\x18\x03 \x01(\x05R\x06status\x12\x1c\n" +
	"\tplacement\x18\x04 \x01(\tR\tplacement\x12 \n" +
	"\vpotMaterial\x18\x05 \x01(\tR\vpotMaterial\x12\x18\n" +
	"\apotSize\x18\x06 \x01(\tR\apotSize\x12\x1a\n" +
	"\bsunlight\x18\a \x01(\tR\bsunlight\x12*\n" +
	"\x10plantingMaterial\x18\b \x01(\tR\x10plantingMaterial\x12\x16\n" +
	"\x06imgIds\x18\t \x03(\tR\x06imgIds\"p\n" +
	"\fPlantListReq\x12\x16\n" +
	"\x06userId\x18\x01 \x01(\tR\x06userId\x12\x18\n" +
	"\acurrent\x18\x02 \x01(\x05R\acurrent\x12\x1a\n" +
	"\bpageSize\x18\x03 \x01(\x05R\bpageSize\x12\x12\n" +
	"\x04name\x18\x04 \x01(\tR\x04name\"K\n" +
	"\rPlantListResp\x12$\n" +
	"\x04list\x18\x01 \x03(\v2\x10.plant.PlantInfoR\x04list\x12\x14\n" +
	"\x05total\x18\x02 \x01(\x03R\x05total\"\xab\x01\n" +
	"\x0fPlantDetailResp\x12&\n" +
	"\x05plant\x18\x01 \x01(\v2\x10.plant.PlantInfoR\x05plant\x121\n" +
	"\tcarePlans\x18\x02 \x03(\v2\x13.plant.CarePlanInfoR\tcarePlans\x12=\n" +
	"\rgrowthRecords\x18\x03 \x03(\v2\x17.plant.GrowthRecordInfoR\rgrowthRecords\"\x9c\x01\n" +
	"\fCarePlanInfo\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x18\n" +
	"\aplantId\x18\x02 \x01(\tR\aplantId\x12\x12\n" +
	"\x04name\x18\x03 \x01(\tR\x04name\x12\x12\n" +
	"\x04icon\x18\x04 \x01(\tR\x04icon\x12\"\n" +
	"\ftargetAction\x18\x05 \x01(\tR\ftargetAction\x12\x16\n" +
	"\x06period\x18\x06 \x01(\x05R\x06period\"\xa6\x01\n" +
	"\x0eAddCarePlanReq\x12\x16\n" +
	"\x06userId\x18\x01 \x01(\tR\x06userId\x12\x18\n" +
	"\aplantId\x18\x02 \x01(\tR\aplantId\x12\x12\n" +
	"\x04name\x18\x03 \x01(\tR\x04name\x12\x12\n" +
	"\x04icon\x18\x04 \x01(\tR\x04icon\x12\"\n" +
	"\ftargetAction\x18\x05 \x01(\tR\ftargetAction\x12\x16\n" +
	"\x06period\x18\x06 \x01(\x05R\x06period\"\xce\x01\n" +
	"\fCareTaskInfo\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x18\n" +
	"\aplantId\x18\x02 \x01(\tR\aplantId\x12\x16\n" +
	"\x06planId\x18\x03 \x01(\tR\x06planId\x12\x12\n" +
	"\x04name\x18\x04 \x01(\tR\x04name\x12\x12\n" +
	"\x04icon\x18\x05 \x01(\tR\x04icon\x12\"\n" +
	"\ftargetAction\x18\x06 \x01(\tR\ftargetAction\x12\x18\n" +
	"\adueDate\x18\a \x01(\tR\adueDate\x12\x16\n" +
	"\x06status\x18\b \x01(\x05R\x06status\"Q\n" +
	"\x10CareTaskListResp\x12'\n" +
	"\x04list\x18\x01 \x03(\v2\x13.plant.CareTaskInfoR\x04list\x12\x14\n" +
	"\x05total\x18\x02 \x01(\x03R\x05total\"\x88\x01\n" +
	"\x10AddCareRecordReq\x12\x16\n" +
	"\x06userId\x18\x01 \x01(\tR\x06userId\x12\x18\n" +
	"\aplantId\x18\x02 \x01(\tR\aplantId\x12\x16\n" +
	"\x06planId\x18\x03 \x01(\tR\x06planId\x12\x16\n" +
	"\x06action\x18\x04 \x01(\tR\x06action\x12\x12\n" +
	"\x04note\x18\x05 \x01(\tR\x04note\"t\n" +
	"\x10GrowthRecordInfo\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x18\n" +
	"\aplantId\x18\x02 \x01(\tR\aplantId\x12\x18\n" +
	"\acontent\x18\x03 \x01(\tR\acontent\x12\x1c\n" +
	"\tcreatedAt\x18\x04 \x01(\x03R\tcreatedAt\"x\n" +
	"\x12AddGrowthRecordReq\x12\x16\n" +
	"\x06userId\x18\x01 \x01(\tR\x06userId\x12\x18\n" +
	"\aplantId\x18\x02 \x01(\tR\aplantId\x12\x18\n" +
	"\acontent\x18\x03 \x01(\tR\acontent\x12\x16\n" +
	"\x06imgIds\x18\x04 \x03(\tR\x06imgIds\"\x90\b\n" +
	"\bWikiInfo\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12\x1c\n" +
	"\tlatinName\x18\x03 \x01(\tR\tlatinName\x12\x18\n" +
	"\aaliases\x18\x04 \x01(\tR\aaliases\x12\x14\n" +
	"\x05genus\x18\x05 \x01(\tR\x05genus\x12\x1e\n" +
	"\n" +
	"difficulty\x18\x06 \x01(\x05R\n" +
	"difficulty\x12\x14\n" +
	"\x05isHot\x18\a \x01(\x05R\x05isHot\x12 \n" +
	"\vgrowthHabit\x18\b \x01(\tR\vgrowthHabit\x12&\n" +
	"\x0elightIntensity\x18\t \x01(\tR\x0elightIntensity\x12,\n" +
	"\x11optimalTempPeriod\x18\n" +
	" \x01(\tR\x11optimalTempPeriod\x12\x1c\n" +
	"\tcreatedAt\x18\v \x01(\x03R\tcreatedAt\x12\x18\n" +
	"\aclassId\x18\f \x01(\tR\aclassId\x12*\n" +
	"\x10distributionArea\x18\r \x01(\tR\x10distributionArea\x12\x1c\n" +
	"\tlifeCycle\x18\x0e \x01(\tR\tlifeCycle\x12\x1a\n" +
	"\bclassIds\x18\x0f \x03(\tR\bclassIds\x12\x16\n" +
	"\x06ossIds\x18\x10 \x03(\tR\x06ossIds\x12&\n" +
	"\x0erelatedWikiIds\x18\x11 \x03(\tR\x0erelatedWikiIds\x12&\n" +
	"\x0eisVectorSynced\x18\x12 \x01(\bR\x0eisVectorSynced\x12\x16\n" +
	"\x06isStar\x18\x13 \x01(\bR\x06isStar\x12.\n" +
	"\x12reproductionMethod\x18\x14 \x01(\tR\x12reproductionMethod\x12$\n" +
	"\rpestsDiseases\x18\x15 \x01(\tR\rpestsDiseases\x12\x1c\n" +
	"\tlightType\x18\x16 \x01(\tR\tlightType\x12\x12\n" +
	"\x04stem\x18\x17 \x01(\tR\x04stem\x12\x14\n" +
	"\x05fruit\x18\x18 \x01(\tR\x05fruit\x12 \n" +
	"\vfoliageType\x18\x19 \x01(\tR\vfoliageType\x12\"\n" +
	"\ffoliageColor\x18\x1a \x01(\tR\ffoliageColor\x12\"\n" +
	"\ffoliageShape\x18\x1b \x01(\tR\ffoliageShape\x12\x16\n" +
	"\x06height\x18\x1c \x01(\x05R\x06height\x12(\n" +
	"\x0ffloweringPeriod\x18\x1d \x01(\tR\x0ffloweringPeriod\x12&\n" +
	"\x0efloweringColor\x18\x1e \x01(\tR\x0efloweringColor\x12&\n" +
	"\x0efloweringShape\x18\x1f \x01(\tR\x0efloweringShape\x12,\n" +
	"\x11floweringDiameter\x18  \x01(\x05R\x11floweringDiameter\"\x87\x01\n" +
	"\vWikiListReq\x12\x18\n" +
	"\acurrent\x18\x01 \x01(\x05R\acurrent\x12\x1a\n" +
	"\bpageSize\x18\x02 \x01(\x05R\bpageSize\x12\x12\n" +
	"\x04name\x18\x03 \x01(\tR\x04name\x12\x18\n" +
	"\aclassId\x18\x04 \x01(\tR\aclassId\x12\x14\n" +
	"\x05isHot\x18\x05 \x01(\x05R\x05isHot\"I\n" +
	"\fWikiListResp\x12#\n" +
	"\x04list\x18\x01 \x03(\v2\x0f.plant.WikiInfoR\x04list\x12\x14\n" +
	"\x05total\x18\x02 \x01(\x03R\x05total\"5\n" +
	"\x0eWikiDetailResp\x12#\n" +
	"\x04wiki\x18\x01 \x01(\v2\x0f.plant.WikiInfoR\x04wiki\"\xa7\a\n" +
	"\rCreateWikiReq\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" +
	"\tlatinName\x18\x02 \x01(\tR\tlatinName\x12\x18\n" +
	"\aaliases\x18\x03 \x01(\tR\aaliases\x12\x14\n" +
	"\x05genus\x18\x04 \x01(\tR\x05genus\x12\x1e\n" +
	"\n" +
	"difficulty\x18\x05 \x01(\x05R\n" +
	"difficulty\x12\x14\n" +
	"\x05isHot\x18\x06 \x01(\x05R\x05isHot\x12 \n" +
	"\vgrowthHabit\x18\a \x01(\tR\vgrowthHabit\x12&\n" +
	"\x0elightIntensity\x18\b \x01(\tR\x0elightIntensity\x12,\n" +
	"\x11optimalTempPeriod\x18\t \x01(\tR\x11optimalTempPeriod\x12\x18\n" +
	"\aclassId\x18\n" +
	" \x01(\tR\aclassId\x12*\n" +
	"\x10distributionArea\x18\v \x01(\tR\x10distributionArea\x12\x1c\n" +
	"\tlifeCycle\x18\f \x01(\tR\tlifeCycle\x12\x1a\n" +
	"\bclassIds\x18\r \x03(\tR\bclassIds\x12\x16\n" +
	"\x06ossIds\x18\x0e \x03(\tR\x06ossIds\x12&\n" +
	"\x0erelatedWikiIds\x18\x0f \x03(\tR\x0erelatedWikiIds\x12.\n" +
	"\x12reproductionMethod\x18\x10 \x01(\tR\x12reproductionMethod\x12$\n" +
	"\rpestsDiseases\x18\x11 \x01(\tR\rpestsDiseases\x12\x1c\n" +
	"\tlightType\x18\x12 \x01(\tR\tlightType\x12\x12\n" +
	"\x04stem\x18\x13 \x01(\tR\x04stem\x12\x14\n" +
	"\x05fruit\x18\x14 \x01(\tR\x05fruit\x12 \n" +
	"\vfoliageType\x18\x15 \x01(\tR\vfoliageType\x12\"\n" +
	"\ffoliageColor\x18\x16 \x01(\tR\ffoliageColor\x12\"\n" +
	"\ffoliageShape\x18\x17 \x01(\tR\ffoliageShape\x12\x16\n" +
	"\x06height\x18\x18 \x01(\x05R\x06height\x12(\n" +
	"\x0ffloweringPeriod\x18\x19 \x01(\tR\x0ffloweringPeriod\x12&\n" +
	"\x0efloweringColor\x18\x1a \x01(\tR\x0efloweringColor\x12&\n" +
	"\x0efloweringShape\x18\x1b \x01(\tR\x0efloweringShape\x12,\n" +
	"\x11floweringDiameter\x18\x1c \x01(\x05R\x11floweringDiameter\"\xb7\a\n" +
	"\rUpdateWikiReq\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12\x1c\n" +
	"\tlatinName\x18\x03 \x01(\tR\tlatinName\x12\x18\n" +
	"\aaliases\x18\x04 \x01(\tR\aaliases\x12\x14\n" +
	"\x05genus\x18\x05 \x01(\tR\x05genus\x12\x1e\n" +
	"\n" +
	"difficulty\x18\x06 \x01(\x05R\n" +
	"difficulty\x12\x14\n" +
	"\x05isHot\x18\a \x01(\x05R\x05isHot\x12 \n" +
	"\vgrowthHabit\x18\b \x01(\tR\vgrowthHabit\x12&\n" +
	"\x0elightIntensity\x18\t \x01(\tR\x0elightIntensity\x12,\n" +
	"\x11optimalTempPeriod\x18\n" +
	" \x01(\tR\x11optimalTempPeriod\x12\x18\n" +
	"\aclassId\x18\v \x01(\tR\aclassId\x12*\n" +
	"\x10distributionArea\x18\f \x01(\tR\x10distributionArea\x12\x1c\n" +
	"\tlifeCycle\x18\r \x01(\tR\tlifeCycle\x12\x1a\n" +
	"\bclassIds\x18\x0e \x03(\tR\bclassIds\x12\x16\n" +
	"\x06ossIds\x18\x0f \x03(\tR\x06ossIds\x12&\n" +
	"\x0erelatedWikiIds\x18\x10 \x03(\tR\x0erelatedWikiIds\x12.\n" +
	"\x12reproductionMethod\x18\x11 \x01(\tR\x12reproductionMethod\x12$\n" +
	"\rpestsDiseases\x18\x12 \x01(\tR\rpestsDiseases\x12\x1c\n" +
	"\tlightType\x18\x13 \x01(\tR\tlightType\x12\x12\n" +
	"\x04stem\x18\x14 \x01(\tR\x04stem\x12\x14\n" +
	"\x05fruit\x18\x15 \x01(\tR\x05fruit\x12 \n" +
	"\vfoliageType\x18\x16 \x01(\tR\vfoliageType\x12\"\n" +
	"\ffoliageColor\x18\x17 \x01(\tR\ffoliageColor\x12\"\n" +
	"\ffoliageShape\x18\x18 \x01(\tR\ffoliageShape\x12\x16\n" +
	"\x06height\x18\x19 \x01(\x05R\x06height\x12(\n" +
	"\x0ffloweringPeriod\x18\x1a \x01(\tR\x0ffloweringPeriod\x12&\n" +
	"\x0efloweringColor\x18\x1b \x01(\tR\x0efloweringColor\x12&\n" +
	"\x0efloweringShape\x18\x1c \x01(\tR\x0efloweringShape\x12,\n" +
	"\x11floweringDiameter\x18\x1d \x01(\x05R\x11floweringDiameter\"I\n" +
	"\rWikiClassInfo\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n" +
	"\x05ossId\x18\x03 \x01(\tR\x05ossId\"=\n" +
	"\x11WikiClassListResp\x12(\n" +
	"\x04list\x18\x01 \x03(\v2\x14.plant.WikiClassInfoR\x04list\"<\n" +
	"\x12CreateWikiClassReq\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" +
	"\x04icon\x18\x02 \x01(\tR\x04icon\"L\n" +
	"\x12UpdateWikiClassReq\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n" +
	"\x04icon\x18\x03 \x01(\tR\x04icon\"W\n" +
	"\rToggleStarReq\x12\x16\n" +
	"\x06userId\x18\x01 \x01(\tR\x06userId\x12\x1a\n" +
	"\btargetId\x18\x02 \x01(\tR\btargetId\x12\x12\n" +
	"\x04type\x18\x03 \x01(\tR\x04type\"\x8b\x01\n" +
	"\x0fClassifyLogInfo\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
	"\x06userId\x18\x02 \x01(\tR\x06userId\x12\x1a\n" +
	"\bimageUrl\x18\x03 \x01(\tR\bimageUrl\x12\x16\n" +
	"\x06result\x18\x04 \x01(\tR\x06result\x12\x1c\n" +
	"\tcreatedAt\x18\x05 \x01(\tR\tcreatedAt\"W\n" +
	"\x13ClassifyLogListResp\x12*\n" +
	"\x04list\x18\x01 \x03(\v2\x16.plant.ClassifyLogInfoR\x04list\x12\x14\n" +
	"\x05total\x18\x02 \x01(\x03R\x05total\"\xb4\x02\n" +
	"\bPostInfo\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
	"\x06userId\x18\x02 \x01(\tR\x06userId\x12\x14\n" +
	"\x05title\x18\x03 \x01(\tR\x05title\x12\x18\n" +
	"\acontent\x18\x04 \x01(\tR\acontent\x12\x1c\n" +
	"\tviewCount\x18\x05 \x01(\x05R\tviewCount\x12\"\n" +
	"\fcommentCount\x18\x06 \x01(\x05R\fcommentCount\x12\x1c\n" +
	"\tlikeCount\x18\a \x01(\x05R\tlikeCount\x12\x1c\n" +
	"\tstarCount\x18\b \x01(\x05R\tstarCount\x12\x1a\n" +
	"\blocation\x18\t \x01(\tR\blocation\x12\x1c\n" +
	"\tcreatedAt\x18\n" +
	" \x01(\x03R\tcreatedAt\x12\x18\n" +
	"\atopicId\x18\v \x01(\tR\atopicId\"\xa5\x01\n" +
	"\rCreatePostReq\x12\x16\n" +
	"\x06userId\x18\x01 \x01(\tR\x06userId\x12\x14\n" +
	"\x05title\x18\x02 \x01(\tR\x05title\x12\x18\n" +
	"\acontent\x18\x03 \x01(\tR\acontent\x12\x1a\n" +
	"\blocation\x18\x04 \x01(\tR\blocation\x12\x16\n" +
	"\x06imgIds\x18\x05 \x03(\tR\x06imgIds\x12\x18\n" +
	"\atopicId\x18\x06 \x01(\tR\atopicId\"\x8f\x01\n" +
	"\vPostListReq\x12\x18\n" +
	"\acurrent\x18\x01 \x01(\x05R\acurrent\x12\x1a\n" +
	"\bpageSize\x18\x02 \x01(\x05R\bpageSize\x12\x18\n" +
	"\akeyword\x18\x03 \x01(\tR\akeyword\x12\x18\n" +
	"\atopicId\x18\x04 \x01(\tR\atopicId\x12\x16\n" +
	"\x06userId\x18\x05 \x01(\tR\x06userId\"I\n" +
	"\fPostListResp\x12#\n" +
	"\x04list\x18\x01 \x03(\v2\x0f.plant.PostInfoR\x04list\x12\x14\n" +
	"\x05total\x18\x02 \x01(\x03R\x05total\"i\n" +
	"\x0ePostDetailResp\x12#\n" +
	"\x04post\x18\x01 \x01(\v2\x0f.plant.PostInfoR\x04post\x122\n" +
	"\bcomments\x18\x02 \x03(\v2\x16.plant.PostCommentInfoR\bcomments\"\x8d\x01\n" +
	"\x0fPostCommentInfo\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
	"\x06userId\x18\x02 \x01(\tR\x06userId\x12\x18\n" +
	"\acontent\x18\x03 \x01(\tR\acontent\x12\x1a\n" +
	"\bparentId\x18\x04 \x01(\tR\bparentId\x12\x1c\n" +
	"\tcreatedAt\x18\x05 \x01(\x03R\tcreatedAt\"v\n" +
	"\x0eCommentPostReq\x12\x16\n" +
	"\x06userId\x18\x01 \x01(\tR\x06userId\x12\x16\n" +
	"\x06postId\x18\x02 \x01(\tR\x06postId\x12\x18\n" +
	"\acontent\x18\x03 \x01(\tR\acontent\x12\x1a\n" +
	"\bparentId\x18\x04 \x01(\tR\bparentId\"=\n" +
	"\vLikePostReq\x12\x16\n" +
	"\x06userId\x18\x01 \x01(\tR\x06userId\x12\x16\n" +
	"\x06postId\x18\x02 \x01(\tR\x06postId\"\xdb\x01\n" +
	"\tTopicInfo\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12\x1c\n" +
	"\tpostCount\x18\x03 \x01(\x05R\tpostCount\x12\x12\n" +
	"\x04icon\x18\x04 \x01(\tR\x04icon\x12\x12\n" +
	"\x04desc\x18\x05 \x01(\tR\x04desc\x12\x14\n" +
	"\x05title\x18\x06 \x01(\tR\x05title\x12\x16\n" +
	"\x06remark\x18\a \x01(\tR\x06remark\x12\x1c\n" +
	"\tstartTime\x18\b \x01(\tR\tstartTime\x12\x18\n" +
	"\aendTime\x18\t \x01(\tR\aendTime\"5\n" +
	"\rTopicListResp\x12$\n" +
	"\x04list\x18\x01 \x03(\v2\x10.plant.TopicInfoR\x04list\"\xb2\x01\n" +
	"\x0eCreateTopicReq\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" +
	"\x04icon\x18\x02 \x01(\tR\x04icon\x12\x12\n" +
	"\x04desc\x18\x03 \x01(\tR\x04desc\x12\x14\n" +
	"\x05title\x18\x04 \x01(\tR\x05title\x12\x16\n" +
	"\x06remark\x18\x05 \x01(\tR\x06remark\x12\x1c\n" +
	"\tstartTime\x18\x06 \x01(\tR\tstartTime\x12\x18\n" +
	"\aendTime\x18\a \x01(\tR\aendTime\"\xc2\x01\n" +
	"\x0eUpdateTopicReq\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n" +
	"\x04icon\x18\x03 \x01(\tR\x04icon\x12\x12\n" +
	"\x04desc\x18\x04 \x01(\tR\x04desc\x12\x14\n" +
	"\x05title\x18\x05 \x01(\tR\x05title\x12\x16\n" +
	"\x06remark\x18\x06 \x01(\tR\x06remark\x12\x1c\n" +
	"\tstartTime\x18\a \x01(\tR\tstartTime\x12\x18\n" +
	"\aendTime\x18\b \x01(\tR\aendTime\"\xa2\x01\n" +
	"\x10ExchangeItemInfo\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n" +
	"\x04desc\x18\x03 \x01(\tR\x04desc\x12\x14\n" +
	"\x05imgId\x18\x04 \x01(\tR\x05imgId\x12\x12\n" +
	"\x04cost\x18\x05 \x01(\x03R\x04cost\x12\x14\n" +
	"\x05stock\x18\x06 \x01(\x05R\x05stock\x12\x16\n" +
	"\x06status\x18\a \x01(\x05R\x06status\"c\n" +
	"\x13ExchangeItemListReq\x12\x18\n" +
	"\acurrent\x18\x01 \x01(\x05R\acurrent\x12\x1a\n" +
	"\bpageSize\x18\x02 \x01(\x05R\bpageSize\x12\x16\n" +
	"\x06status\x18\x03 \x01(\x05R\x06status\"Y\n" +
	"\x14ExchangeItemListResp\x12+\n" +
	"\x04list\x18\x01 \x03(\v2\x17.plant.ExchangeItemInfoR\x04list\x12\x14\n" +
	"\x05total\x18\x02 \x01(\x03R\x05total\"\xba\x01\n" +
	"\x16CreateExchangeOrderReq\x12\x16\n" +
	"\x06userId\x18\x01 \x01(\tR\x06userId\x12\x16\n" +
	"\x06itemId\x18\x02 \x01(\tR\x06itemId\x12\x1a\n" +
	"\bquantity\x18\x03 \x01(\x05R\bquantity\x12$\n" +
	"\rrecipientName\x18\x04 \x01(\tR\rrecipientName\x12\x14\n" +
	"\x05phone\x18\x05 \x01(\tR\x05phone\x12\x18\n" +
	"\aaddress\x18\x06 \x01(\tR\aaddress\"\xc1\x02\n" +
	"\x15CreateExchangeItemReq\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" +
	"\x04desc\x18\x02 \x01(\tR\x04desc\x12\x14\n" +
	"\x05imgId\x18\x03 \x01(\tR\x05imgId\x12\x12\n" +
	"\x04cost\x18\x04 \x01(\x03R\x04cost\x12\x14\n" +
	"\x05stock\x18\x05 \x01(\x05R\x05stock\x12\x12\n" +
	"\x04type\x18\x06 \x01(\tR\x04type\x12\"\n" +
	"\fcostSunlight\x18\a \x01(\x03R\fcostSunlight\x12\"\n" +
	"\flimitPerUser\x18\b \x01(\x05R\flimitPerUser\x12\x12\n" +
	"\x04sort\x18\t \x01(\x05R\x04sort\x12\x1c\n" +
	"\tstartTime\x18\n" +
	" \x01(\tR\tstartTime\x12\x18\n" +
	"\aendTime\x18\v \x01(\tR\aendTime\x12\x18\n" +
	"\aimageId\x18\f \x01(\tR\aimageId\"\xe9\x02\n" +
	"\x15UpdateExchangeItemReq\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n" +
	"\x04desc\x18\x03 \x01(\tR\x04desc\x12\x14\n" +
	"\x05imgId\x18\x04 \x01(\tR\x05imgId\x12\x12\n" +
	"\x04cost\x18\x05 \x01(\x03R\x04cost\x12\x14\n" +
	"\x05stock\x18\x06 \x01(\x05R\x05stock\x12\x16\n" +
	"\x06status\x18\a \x01(\x05R\x06status\x12\x12\n" +
	"\x04type\x18\b \x01(\tR\x04type\x12\"\n" +
	"\fcostSunlight\x18\t \x01(\x03R\fcostSunlight\x12\"\n" +
	"\flimitPerUser\x18\n" +
	" \x01(\x05R\flimitPerUser\x12\x12\n" +
	"\x04sort\x18\v \x01(\x05R\x04sort\x12\x1c\n" +
	"\tstartTime\x18\f \x01(\tR\tstartTime\x12\x18\n" +
	"\aendTime\x18\r \x01(\tR\aendTime\x12\x18\n" +
	"\aimageId\x18\x0e \x01(\tR\aimageId\"\xa1\x03\n" +
	"\x11ExchangeOrderInfo\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
	"\x06userId\x18\x02 \x01(\tR\x06userId\x12\x16\n" +
	"\x06itemId\x18\x03 \x01(\tR\x06itemId\x12\x1a\n" +
	"\bitemName\x18\x04 \x01(\tR\bitemName\x12\x12\n" +
	"\x04cost\x18\x05 \x01(\x03R\x04cost\x12\x16\n" +
	"\x06status\x18\x06 \x01(\x05R\x06status\x12\x18\n" +
	"\aaddress\x18\a \x01(\tR\aaddress\x12\x1c\n" +
	"\tcreatedAt\x18\b \x01(\tR\tcreatedAt\x12\x1a\n" +
	"\bquantity\x18\t \x01(\x05R\bquantity\x12\x1a\n" +
	"\bitemType\x18\n" +
	" \x01(\tR\bitemType\x12$\n" +
	"\rrecipientName\x18\v \x01(\tR\rrecipientName\x12\x14\n" +
	"\x05phone\x18\f \x01(\tR\x05phone\x12\x1e\n" +
	"\n" +
	"trackingNo\x18\r \x01(\tR\n" +
	"trackingNo\x12\x16\n" +
	"\x06remark\x18\x0e \x01(\tR\x06remark\x12 \n" +
	"\vcompletedAt\x18\x0f \x01(\tR\vcompletedAt\"|\n" +
	"\x14ExchangeOrderListReq\x12\x18\n" +
	"\acurrent\x18\x01 \x01(\x05R\acurrent\x12\x1a\n" +
	"\bpageSize\x18\x02 \x01(\x05R\bpageSize\x12\x16\n" +
	"\x06userId\x18\x03 \x01(\tR\x06userId\x12\x16\n" +
	"\x06status\x18\x04 \x01(\x05R\x06status\"[\n" +
	"\x15ExchangeOrderListResp\x12,\n" +
	"\x04list\x18\x01 \x03(\v2\x18.plant.ExchangeOrderInfoR\x04list\x12\x14\n" +
	"\x05total\x18\x02 \x01(\x03R\x05total\"x\n" +
	"\x16UpdateExchangeOrderReq\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
	"\x06status\x18\x02 \x01(\x05R\x06status\x12\x1e\n" +
	"\n" +
	"trackingNo\x18\x03 \x01(\tR\n" +
	"trackingNo\x12\x16\n" +
	"\x06remark\x18\x04 \x01(\tR\x06remark\"\xbb\x01\n" +
	"\x15MediaCheckCallbackReq\x12\x18\n" +
	"\atraceId\x18\x01 \x01(\tR\atraceId\x12\x16\n" +
	"\x06postId\x18\x02 \x01(\tR\x06postId\x12\x14\n" +
	"\x05ossId\x18\x03 \x01(\tR\x05ossId\x12\x16\n" +
	"\x06userId\x18\x04 \x01(\tR\x06userId\x12\x16\n" +
	"\x06status\x18\x05 \x01(\x05R\x06status\x12\x12\n" +
	"\x04type\x18\x06 \x01(\x05R\x04type\x12\x16\n" +
	"\x06errMsg\x18\a \x01(\tR\x06errMsg\"b\n" +
	"\x14SaveAiChatHistoryReq\x12\x16\n" +
	"\x06userId\x18\x01 \x01(\tR\x06userId\x12\x1a\n" +
	"\bquestion\x18\x02 \x01(\tR\bquestion\x12\x16\n" +
	"\x06answer\x18\x03 \x01(\tR\x06answer\"+\n" +
	"\x11SyncWikiVectorReq\x12\x16\n" +
	"\x06wikiId\x18\x01 \x01(\tR\x06wikiId\"\x85\x01\n" +
	"\x0fLevelConfigInfo\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" +
	"\x05level\x18\x02 \x01(\x05R\x05level\x12\x14\n" +
	"\x05title\x18\x03 \x01(\tR\x05title\x12 \n" +
	"\vminSunlight\x18\x04 \x01(\x03R\vminSunlight\x12\x14\n" +
	"\x05perks\x18\x05 \x01(\tR\x05perks\"A\n" +
	"\x13LevelConfigListResp\x12*\n" +
	"\x04list\x18\x01 \x03(\v2\x16.plant.LevelConfigInfoR\x04list\"z\n" +
	"\x14CreateLevelConfigReq\x12\x14\n" +
	"\x05level\x18\x01 \x01(\x05R\x05level\x12\x14\n" +
	"\x05title\x18\x02 \x01(\tR\x05title\x12 \n" +
	"\vminSunlight\x18\x03 \x01(\x03R\vminSunlight\x12\x14\n" +
	"\x05perks\x18\x04 \x01(\tR\x05perks\"\x8a\x01\n" +
	"\x14UpdateLevelConfigReq\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" +
	"\x05level\x18\x02 \x01(\x05R\x05level\x12\x14\n" +
	"\x05title\x18\x03 \x01(\tR\x05title\x12 \n" +
	"\vminSunlight\x18\x04 \x01(\x03R\vminSunlight\x12\x14\n" +
	"\x05perks\x18\x05 \x01(\tR\x05perks\"\xb9\x02\n" +
	"\x0fBadgeConfigInfo\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12 \n" +
	"\vdescription\x18\x03 \x01(\tR\vdescription\x12\x1c\n" +
	"\tdimension\x18\x04 \x01(\tR\tdimension\x12\x18\n" +
	"\agroupId\x18\x05 \x01(\tR\agroupId\x12\x12\n" +
	"\x04tier\x18\x06 \x01(\x05R\x04tier\x12\"\n" +
	"\ftargetAction\x18\a \x01(\tR\ftargetAction\x12\x1c\n" +
	"\tthreshold\x18\b \x01(\x03R\tthreshold\x12&\n" +
	"\x0erewardSunlight\x18\t \x01(\x03R\x0erewardSunlight\x12\x16\n" +
	"\x06iconId\x18\n" +
	" \x01(\tR\x06iconId\x12\x12\n" +
	"\x04sort\x18\v \x01(\x05R\x04sort\"h\n" +
	"\x12BadgeConfigListReq\x12\x18\n" +
	"\acurrent\x18\x01 \x01(\x05R\acurrent\x12\x1a\n" +
	"\bpageSize\x18\x02 \x01(\x05R\bpageSize\x12\x1c\n" +
	"\tdimension\x18\x03 \x01(\tR\tdimension\"W\n" +
	"\x13BadgeConfigListResp\x12*\n" +
	"\x04list\x18\x01 \x03(\v2\x16.plant.BadgeConfigInfoR\x04list\x12\x14\n" +
	"\x05total\x18\x02 \x01(\x03R\x05total\"\xae\x02\n" +
	"\x14CreateBadgeConfigReq\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12 \n" +
	"\vdescription\x18\x02 \x01(\tR\vdescription\x12\x1c\n" +
	"\tdimension\x18\x03 \x01(\tR\tdimension\x12\x18\n" +
	"\agroupId\x18\x04 \x01(\tR\agroupId\x12\x12\n" +
	"\x04tier\x18\x05 \x01(\x05R\x04tier\x12\"\n" +
	"\ftargetAction\x18\x06 \x01(\tR\ftargetAction\x12\x1c\n" +
	"\tthreshold\x18\a \x01(\x03R\tthreshold\x12&\n" +
	"\x0erewardSunlight\x18\b \x01(\x03R\x0erewardSunlight\x12\x16\n" +
	"\x06iconId\x18\t \x01(\tR\x06iconId\x12\x12\n" +
	"\x04sort\x18\n" +
	" \x01(\x05R\x04sort\"\xbe\x02\n" +
	"\x14UpdateBadgeConfigReq\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12 \n" +
	"\vdescription\x18\x03 \x01(\tR\vdescription\x12\x1c\n" +
	"\tdimension\x18\x04 \x01(\tR\tdimension\x12\x18\n" +
	"\agroupId\x18\x05 \x01(\tR\agroupId\x12\x12\n" +
	"\x04tier\x18\x06 \x01(\x05R\x04tier\x12\"\n" +
	"\ftargetAction\x18\a \x01(\tR\ftargetAction\x12\x1c\n" +
	"\tthreshold\x18\b \x01(\x03R\tthreshold\x12&\n" +
	"\x0erewardSunlight\x18\t \x01(\x03R\x0erewardSunlight\x12\x16\n" +
	"\x06iconId\x18\n" +
	" \x01(\tR\x06iconId\x12\x12\n" +
	"\x04sort\x18\v \x01(\x05R\x04sort\"Y\n" +
	"\x0fCompleteTaskReq\x12\x16\n" +
	"\x06userId\x18\x01 \x01(\tR\x06userId\x12\x16\n" +
	"\x06taskId\x18\x02 \x01(\tR\x06taskId\x12\x16\n" +
	"\x06remark\x18\x03 \x01(\tR\x06remark\"\xec\x01\n" +
	"\x14TaskCompletionResult\x12\x1c\n" +
	"\tisLevelUp\x18\x01 \x01(\bR\tisLevelUp\x12:\n" +
	"\fcurrentLevel\x18\x02 \x01(\v2\x16.plant.LevelConfigInfoR\fcurrentLevel\x12\x1e\n" +
	"\n" +
	"isGetBadge\x18\x03 \x01(\bR\n" +
	"isGetBadge\x122\n" +
	"\bnewBadge\x18\x04 \x01(\v2\x16.plant.BadgeConfigInfoR\bnewBadge\x12&\n" +
	"\x0erewardSunlight\x18\x05 \x01(\x03R\x0erewardSunlight\"x\n" +
	"\x0eBadgeGroupInfo\x12\x18\n" +
	"\agroupId\x18\x01 \x01(\tR\agroupId\x12\x1c\n" +
	"\tdimension\x18\x02 \x01(\tR\tdimension\x12.\n" +
	"\x06badges\x18\x03 \x03(\v2\x16.plant.BadgeConfigInfoR\x06badges\"D\n" +
	"\x13BadgeConfigTreeResp\x12-\n" +
	"\x06groups\x18\x01 \x03(\v2\x15.plant.BadgeGroupInfoR\x06groups\"k\n" +
	"\vAiQuotaResp\x12\x1c\n" +
	"\tremaining\x18\x01 \x01(\x03R\tremaining\x12\x14\n" +
	"\x05total\x18\x02 \x01(\x03R\x05total\x12\x12\n" +
	"\x04used\x18\x03 \x01(\x03R\x04used\x12\x14\n" +
	"\x05limit\x18\x04 \x01(\x03R\x05limit\"\x8d\x01\n" +
	"\x11AiChatHistoryInfo\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
	"\x06userId\x18\x02 \x01(\tR\x06userId\x12\x1a\n" +
	"\bquestion\x18\x03 \x01(\tR\bquestion\x12\x16\n" +
	"\x06answer\x18\x04 \x01(\tR\x06answer\x12\x1c\n" +
	"\tcreatedAt\x18\x05 \x01(\tR\tcreatedAt\"`\n" +
	"\x10AiChatHistoryReq\x12\x16\n" +
	"\x06userId\x18\x01 \x01(\tR\x06userId\x12\x18\n" +
	"\acurrent\x18\x02 \x01(\x05R\acurrent\x12\x1a\n" +
	"\bpageSize\x18\x03 \x01(\x05R\bpageSize\"W\n" +
	"\x11AiChatHistoryResp\x12,\n" +
	"\x04list\x18\x01 \x03(\v2\x18.plant.AiChatHistoryInfoR\x04list\x12\x14\n" +
	"\x05total\x18\x02 \x01(\x03R\x05total2\x9c!\n" +
	"\fPlantService\x12?\n" +
	"\x0eGetUserProfile\x12\x14.plant.GetProfileReq\x1a\x17.plant.PlantUserProfile\x12?\n" +
	"\x11UpdateUserProfile\x12\x17.plant.UpdateProfileReq\x1a\x11.plant.CommonResp\x12=\n" +
	"\vGetMyBadges\x12\x14.plant.GetProfileReq\x1a\x18.plant.UserBadgeListResp\x12;\n" +
	"\n" +
	"GetMyStars\x12\x14.plant.GetProfileReq\x1a\x17.plant.UserStarListResp\x127\n" +
	"\vCreatePlant\x12\x15.plant.CreatePlantReq\x1a\x11.plant.CommonResp\x127\n" +
	"\vUpdatePlant\x12\x15.plant.UpdatePlantReq\x1a\x11.plant.CommonResp\x12/\n" +
	"\vDeletePlant\x12\r.plant.IdsReq\x1a\x11.plant.CommonResp\x129\n" +
	"\fGetPlantList\x12\x13.plant.PlantListReq\x1a\x14.plant.PlantListResp\x126\n" +
	"\x0eGetPlantDetail\x12\f.plant.IdReq\x1a\x16.plant.PlantDetailResp\x127\n" +
	"\vAddCarePlan\x12\x15.plant.AddCarePlanReq\x1a\x11.plant.CommonResp\x122\n" +
	"\x0eDeleteCarePlan\x12\r.plant.IdsReq\x1a\x11.plant.CommonResp\x12A\n" +
	"\x10GetTodayTaskList\x12\x14.plant.GetProfileReq\x1a\x17.plant.CareTaskListResp\x12C\n" +
	"\fCompleteTask\x12\x16.plant.CompleteTaskReq\x1a\x1b.plant.TaskCompletionResult\x12;\n" +
	"\rAddCareRecord\x12\x17.plant.AddCareRecordReq\x1a\x11.plant.CommonResp\x12?\n" +
	"\x0fAddGrowthRecord\x12\x19.plant.AddGrowthRecordReq\x1a\x11.plant.CommonResp\x126\n" +
	"\vGetWikiList\x12\x12.plant.WikiListReq\x1a\x13.plant.WikiListResp\x124\n" +
	"\rGetWikiDetail\x12\f.plant.IdReq\x1a\x15.plant.WikiDetailResp\x125\n" +
	"\n" +
	"CreateWiki\x12\x14.plant.CreateWikiReq\x1a\x11.plant.CommonResp\x125\n" +
	"\n" +
	"UpdateWiki\x12\x14.plant.UpdateWikiReq\x1a\x11.plant.CommonResp\x12.\n" +
	"\n" +
	"DeleteWiki\x12\r.plant.IdsReq\x1a\x11.plant.CommonResp\x12=\n" +
	"\x0eSyncWikiVector\x12\x18.plant.SyncWikiVectorReq\x1a\x11.plant.CommonResp\x12?\n" +
	"\x10DeleteWikiVector\x12\x18.plant.SyncWikiVectorReq\x1a\x11.plant.CommonResp\x126\n" +
	"\x11SyncAllWikiVector\x12\x0e.plant.PageReq\x1a\x11.plant.CommonResp\x12:\n" +
	"\x10GetWikiClassList\x12\f.plant.IdReq\x1a\x18.plant.WikiClassListResp\x12?\n" +
	"\x0fCreateWikiClass\x12\x19.plant.CreateWikiClassReq\x1a\x11.plant.CommonResp\x12?\n" +
	"\x0fUpdateWikiClass\x12\x19.plant.UpdateWikiClassReq\x1a\x11.plant.CommonResp\x123\n" +
	"\x0fDeleteWikiClass\x12\r.plant.IdsReq\x1a\x11.plant.CommonResp\x129\n" +
	"\x0eToggleWikiStar\x12\x14.plant.ToggleStarReq\x1a\x11.plant.CommonResp\x12D\n" +
	"\x10GetMyClassifyLog\x12\x14.plant.GetProfileReq\x1a\x1a.plant.ClassifyLogListResp\x125\n" +
	"\x11DeleteClassifyLog\x12\r.plant.IdsReq\x1a\x11.plant.CommonResp\x125\n" +
	"\n" +
	"CreatePost\x12\x14.plant.CreatePostReq\x1a\x11.plant.CommonResp\x12.\n" +
	"\n" +
	"DeletePost\x12\r.plant.IdsReq\x1a\x11.plant.CommonResp\x126\n" +
	"\vGetPostList\x12\x12.plant.PostListReq\x1a\x13.plant.PostListResp\x124\n" +
	"\rGetPostDetail\x12\f.plant.IdReq\x1a\x15.plant.PostDetailResp\x127\n" +
	"\vCommentPost\x12\x15.plant.CommentPostReq\x1a\x11.plant.CommonResp\x121\n" +
	"\bLikePost\x12\x12.plant.LikePostReq\x1a\x11.plant.CommonResp\x121\n" +
	"\bStarPost\x12\x12.plant.LikePostReq\x1a\x11.plant.CommonResp\x12E\n" +
	"\x12MediaCheckCallback\x12\x1c.plant.MediaCheckCallbackReq\x1a\x11.plant.CommonResp\x122\n" +
	"\fGetTopicList\x12\f.plant.IdReq\x1a\x14.plant.TopicListResp\x120\n" +
	"\x0eGetTopicDetail\x12\f.plant.IdReq\x1a\x10.plant.TopicInfo\x127\n" +
	"\vCreateTopic\x12\x15.plant.CreateTopicReq\x1a\x11.plant.CommonResp\x127\n" +
	"\vUpdateTopic\x12\x15.plant.UpdateTopicReq\x1a\x11.plant.CommonResp\x12/\n" +
	"\vDeleteTopic\x12\r.plant.IdsReq\x1a\x11.plant.CommonResp\x12N\n" +
	"\x13GetExchangeItemList\x12\x1a.plant.ExchangeItemListReq\x1a\x1b.plant.ExchangeItemListResp\x12>\n" +
	"\x15GetExchangeItemDetail\x12\f.plant.IdReq\x1a\x17.plant.ExchangeItemInfo\x12E\n" +
	"\x12CreateExchangeItem\x12\x1c.plant.CreateExchangeItemReq\x1a\x11.plant.CommonResp\x12E\n" +
	"\x12UpdateExchangeItem\x12\x1c.plant.UpdateExchangeItemReq\x1a\x11.plant.CommonResp\x126\n" +
	"\x12DeleteExchangeItem\x12\r.plant.IdsReq\x1a\x11.plant.CommonResp\x12G\n" +
	"\x13CreateExchangeOrder\x12\x1d.plant.CreateExchangeOrderReq\x1a\x11.plant.CommonResp\x12P\n" +
	"\x13GetMyExchangeOrders\x12\x1b.plant.ExchangeOrderListReq\x1a\x1c.plant.ExchangeOrderListResp\x12Q\n" +
	"\x14GetExchangeOrderList\x12\x1b.plant.ExchangeOrderListReq\x1a\x1c.plant.ExchangeOrderListResp\x12G\n" +
	"\x13UpdateExchangeOrder\x12\x1d.plant.UpdateExchangeOrderReq\x1a\x11.plant.CommonResp\x12@\n" +
	"\x12GetLevelConfigList\x12\x0e.plant.PageReq\x1a\x1a.plant.LevelConfigListResp\x12<\n" +
	"\x14GetLevelConfigDetail\x12\f.plant.IdReq\x1a\x16.plant.LevelConfigInfo\x12C\n" +
	"\x11CreateLevelConfig\x12\x1b.plant.CreateLevelConfigReq\x1a\x11.plant.CommonResp\x12C\n" +
	"\x11UpdateLevelConfig\x12\x1b.plant.UpdateLevelConfigReq\x1a\x11.plant.CommonResp\x125\n" +
	"\x11DeleteLevelConfig\x12\r.plant.IdsReq\x1a\x11.plant.CommonResp\x12K\n" +
	"\x12GetBadgeConfigList\x12\x19.plant.BadgeConfigListReq\x1a\x1a.plant.BadgeConfigListResp\x12<\n" +
	"\x14GetBadgeConfigDetail\x12\f.plant.IdReq\x1a\x16.plant.BadgeConfigInfo\x12>\n" +
	"\x12GetBadgeConfigTree\x12\f.plant.IdReq\x1a\x1a.plant.BadgeConfigTreeResp\x12C\n" +
	"\x11CreateBadgeConfig\x12\x1b.plant.CreateBadgeConfigReq\x1a\x11.plant.CommonResp\x12C\n" +
	"\x11UpdateBadgeConfig\x12\x1b.plant.UpdateBadgeConfigReq\x1a\x11.plant.CommonResp\x125\n" +
	"\x11DeleteBadgeConfig\x12\r.plant.IdsReq\x1a\x11.plant.CommonResp\x128\n" +
	"\x12GetWikiClassDetail\x12\f.plant.IdReq\x1a\x14.plant.WikiClassInfo\x12E\n" +
	"\x10GetAiChatHistory\x12\x17.plant.AiChatHistoryReq\x1a\x18.plant.AiChatHistoryResp\x12C\n" +
	"\x11SaveAiChatHistory\x12\x1b.plant.SaveAiChatHistoryReq\x1a\x11.plant.CommonResp\x127\n" +
	"\x13DeleteAiChatHistory\x12\r.plant.IdsReq\x1a\x11.plant.CommonResp\x12=\n" +
	"\x12ClearAiChatHistory\x12\x14.plant.GetProfileReq\x1a\x11.plant.CommonResp\x12:\n" +
	"\x0eGetAiChatQuota\x12\x14.plant.GetProfileReq\x1a\x12.plant.AiQuotaRespB\tZ\a./plantb\x06proto3"

var (
	file_pb_plant_proto_rawDescOnce sync.Once
	file_pb_plant_proto_rawDescData []byte
)

func file_pb_plant_proto_rawDescGZIP() []byte {
	file_pb_plant_proto_rawDescOnce.Do(func() {
		file_pb_plant_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_pb_plant_proto_rawDesc), len(file_pb_plant_proto_rawDesc)))
	})
	return file_pb_plant_proto_rawDescData
}

var file_pb_plant_proto_msgTypes = make([]protoimpl.MessageInfo, 79)
var file_pb_plant_proto_goTypes = []any{
	(*CommonResp)(nil),             // 0: plant.CommonResp
	(*IdReq)(nil),                  // 1: plant.IdReq
	(*IdsReq)(nil),                 // 2: plant.IdsReq
	(*PageReq)(nil),                // 3: plant.PageReq
	(*PlantUserProfile)(nil),       // 4: plant.PlantUserProfile
	(*GetProfileReq)(nil),          // 5: plant.GetProfileReq
	(*UpdateProfileReq)(nil),       // 6: plant.UpdateProfileReq
	(*UserBadgeInfo)(nil),          // 7: plant.UserBadgeInfo
	(*UserBadgeListResp)(nil),      // 8: plant.UserBadgeListResp
	(*UserStarInfo)(nil),           // 9: plant.UserStarInfo
	(*UserStarListResp)(nil),       // 10: plant.UserStarListResp
	(*PlantInfo)(nil),              // 11: plant.PlantInfo
	(*CreatePlantReq)(nil),         // 12: plant.CreatePlantReq
	(*UpdatePlantReq)(nil),         // 13: plant.UpdatePlantReq
	(*PlantListReq)(nil),           // 14: plant.PlantListReq
	(*PlantListResp)(nil),          // 15: plant.PlantListResp
	(*PlantDetailResp)(nil),        // 16: plant.PlantDetailResp
	(*CarePlanInfo)(nil),           // 17: plant.CarePlanInfo
	(*AddCarePlanReq)(nil),         // 18: plant.AddCarePlanReq
	(*CareTaskInfo)(nil),           // 19: plant.CareTaskInfo
	(*CareTaskListResp)(nil),       // 20: plant.CareTaskListResp
	(*AddCareRecordReq)(nil),       // 21: plant.AddCareRecordReq
	(*GrowthRecordInfo)(nil),       // 22: plant.GrowthRecordInfo
	(*AddGrowthRecordReq)(nil),     // 23: plant.AddGrowthRecordReq
	(*WikiInfo)(nil),               // 24: plant.WikiInfo
	(*WikiListReq)(nil),            // 25: plant.WikiListReq
	(*WikiListResp)(nil),           // 26: plant.WikiListResp
	(*WikiDetailResp)(nil),         // 27: plant.WikiDetailResp
	(*CreateWikiReq)(nil),          // 28: plant.CreateWikiReq
	(*UpdateWikiReq)(nil),          // 29: plant.UpdateWikiReq
	(*WikiClassInfo)(nil),          // 30: plant.WikiClassInfo
	(*WikiClassListResp)(nil),      // 31: plant.WikiClassListResp
	(*CreateWikiClassReq)(nil),     // 32: plant.CreateWikiClassReq
	(*UpdateWikiClassReq)(nil),     // 33: plant.UpdateWikiClassReq
	(*ToggleStarReq)(nil),          // 34: plant.ToggleStarReq
	(*ClassifyLogInfo)(nil),        // 35: plant.ClassifyLogInfo
	(*ClassifyLogListResp)(nil),    // 36: plant.ClassifyLogListResp
	(*PostInfo)(nil),               // 37: plant.PostInfo
	(*CreatePostReq)(nil),          // 38: plant.CreatePostReq
	(*PostListReq)(nil),            // 39: plant.PostListReq
	(*PostListResp)(nil),           // 40: plant.PostListResp
	(*PostDetailResp)(nil),         // 41: plant.PostDetailResp
	(*PostCommentInfo)(nil),        // 42: plant.PostCommentInfo
	(*CommentPostReq)(nil),         // 43: plant.CommentPostReq
	(*LikePostReq)(nil),            // 44: plant.LikePostReq
	(*TopicInfo)(nil),              // 45: plant.TopicInfo
	(*TopicListResp)(nil),          // 46: plant.TopicListResp
	(*CreateTopicReq)(nil),         // 47: plant.CreateTopicReq
	(*UpdateTopicReq)(nil),         // 48: plant.UpdateTopicReq
	(*ExchangeItemInfo)(nil),       // 49: plant.ExchangeItemInfo
	(*ExchangeItemListReq)(nil),    // 50: plant.ExchangeItemListReq
	(*ExchangeItemListResp)(nil),   // 51: plant.ExchangeItemListResp
	(*CreateExchangeOrderReq)(nil), // 52: plant.CreateExchangeOrderReq
	(*CreateExchangeItemReq)(nil),  // 53: plant.CreateExchangeItemReq
	(*UpdateExchangeItemReq)(nil),  // 54: plant.UpdateExchangeItemReq
	(*ExchangeOrderInfo)(nil),      // 55: plant.ExchangeOrderInfo
	(*ExchangeOrderListReq)(nil),   // 56: plant.ExchangeOrderListReq
	(*ExchangeOrderListResp)(nil),  // 57: plant.ExchangeOrderListResp
	(*UpdateExchangeOrderReq)(nil), // 58: plant.UpdateExchangeOrderReq
	(*MediaCheckCallbackReq)(nil),  // 59: plant.MediaCheckCallbackReq
	(*SaveAiChatHistoryReq)(nil),   // 60: plant.SaveAiChatHistoryReq
	(*SyncWikiVectorReq)(nil),      // 61: plant.SyncWikiVectorReq
	(*LevelConfigInfo)(nil),        // 62: plant.LevelConfigInfo
	(*LevelConfigListResp)(nil),    // 63: plant.LevelConfigListResp
	(*CreateLevelConfigReq)(nil),   // 64: plant.CreateLevelConfigReq
	(*UpdateLevelConfigReq)(nil),   // 65: plant.UpdateLevelConfigReq
	(*BadgeConfigInfo)(nil),        // 66: plant.BadgeConfigInfo
	(*BadgeConfigListReq)(nil),     // 67: plant.BadgeConfigListReq
	(*BadgeConfigListResp)(nil),    // 68: plant.BadgeConfigListResp
	(*CreateBadgeConfigReq)(nil),   // 69: plant.CreateBadgeConfigReq
	(*UpdateBadgeConfigReq)(nil),   // 70: plant.UpdateBadgeConfigReq
	(*CompleteTaskReq)(nil),        // 71: plant.CompleteTaskReq
	(*TaskCompletionResult)(nil),   // 72: plant.TaskCompletionResult
	(*BadgeGroupInfo)(nil),         // 73: plant.BadgeGroupInfo
	(*BadgeConfigTreeResp)(nil),    // 74: plant.BadgeConfigTreeResp
	(*AiQuotaResp)(nil),            // 75: plant.AiQuotaResp
	(*AiChatHistoryInfo)(nil),      // 76: plant.AiChatHistoryInfo
	(*AiChatHistoryReq)(nil),       // 77: plant.AiChatHistoryReq
	(*AiChatHistoryResp)(nil),      // 78: plant.AiChatHistoryResp
}
var file_pb_plant_proto_depIdxs = []int32{
	7,  // 0: plant.UserBadgeListResp.list:type_name -> plant.UserBadgeInfo
	9,  // 1: plant.UserStarListResp.list:type_name -> plant.UserStarInfo
	11, // 2: plant.PlantListResp.list:type_name -> plant.PlantInfo
	11, // 3: plant.PlantDetailResp.plant:type_name -> plant.PlantInfo
	17, // 4: plant.PlantDetailResp.carePlans:type_name -> plant.CarePlanInfo
	22, // 5: plant.PlantDetailResp.growthRecords:type_name -> plant.GrowthRecordInfo
	19, // 6: plant.CareTaskListResp.list:type_name -> plant.CareTaskInfo
	24, // 7: plant.WikiListResp.list:type_name -> plant.WikiInfo
	24, // 8: plant.WikiDetailResp.wiki:type_name -> plant.WikiInfo
	30, // 9: plant.WikiClassListResp.list:type_name -> plant.WikiClassInfo
	35, // 10: plant.ClassifyLogListResp.list:type_name -> plant.ClassifyLogInfo
	37, // 11: plant.PostListResp.list:type_name -> plant.PostInfo
	37, // 12: plant.PostDetailResp.post:type_name -> plant.PostInfo
	42, // 13: plant.PostDetailResp.comments:type_name -> plant.PostCommentInfo
	45, // 14: plant.TopicListResp.list:type_name -> plant.TopicInfo
	49, // 15: plant.ExchangeItemListResp.list:type_name -> plant.ExchangeItemInfo
	55, // 16: plant.ExchangeOrderListResp.list:type_name -> plant.ExchangeOrderInfo
	62, // 17: plant.LevelConfigListResp.list:type_name -> plant.LevelConfigInfo
	66, // 18: plant.BadgeConfigListResp.list:type_name -> plant.BadgeConfigInfo
	62, // 19: plant.TaskCompletionResult.currentLevel:type_name -> plant.LevelConfigInfo
	66, // 20: plant.TaskCompletionResult.newBadge:type_name -> plant.BadgeConfigInfo
	66, // 21: plant.BadgeGroupInfo.badges:type_name -> plant.BadgeConfigInfo
	73, // 22: plant.BadgeConfigTreeResp.groups:type_name -> plant.BadgeGroupInfo
	76, // 23: plant.AiChatHistoryResp.list:type_name -> plant.AiChatHistoryInfo
	5,  // 24: plant.PlantService.GetUserProfile:input_type -> plant.GetProfileReq
	6,  // 25: plant.PlantService.UpdateUserProfile:input_type -> plant.UpdateProfileReq
	5,  // 26: plant.PlantService.GetMyBadges:input_type -> plant.GetProfileReq
	5,  // 27: plant.PlantService.GetMyStars:input_type -> plant.GetProfileReq
	12, // 28: plant.PlantService.CreatePlant:input_type -> plant.CreatePlantReq
	13, // 29: plant.PlantService.UpdatePlant:input_type -> plant.UpdatePlantReq
	2,  // 30: plant.PlantService.DeletePlant:input_type -> plant.IdsReq
	14, // 31: plant.PlantService.GetPlantList:input_type -> plant.PlantListReq
	1,  // 32: plant.PlantService.GetPlantDetail:input_type -> plant.IdReq
	18, // 33: plant.PlantService.AddCarePlan:input_type -> plant.AddCarePlanReq
	2,  // 34: plant.PlantService.DeleteCarePlan:input_type -> plant.IdsReq
	5,  // 35: plant.PlantService.GetTodayTaskList:input_type -> plant.GetProfileReq
	71, // 36: plant.PlantService.CompleteTask:input_type -> plant.CompleteTaskReq
	21, // 37: plant.PlantService.AddCareRecord:input_type -> plant.AddCareRecordReq
	23, // 38: plant.PlantService.AddGrowthRecord:input_type -> plant.AddGrowthRecordReq
	25, // 39: plant.PlantService.GetWikiList:input_type -> plant.WikiListReq
	1,  // 40: plant.PlantService.GetWikiDetail:input_type -> plant.IdReq
	28, // 41: plant.PlantService.CreateWiki:input_type -> plant.CreateWikiReq
	29, // 42: plant.PlantService.UpdateWiki:input_type -> plant.UpdateWikiReq
	2,  // 43: plant.PlantService.DeleteWiki:input_type -> plant.IdsReq
	61, // 44: plant.PlantService.SyncWikiVector:input_type -> plant.SyncWikiVectorReq
	61, // 45: plant.PlantService.DeleteWikiVector:input_type -> plant.SyncWikiVectorReq
	3,  // 46: plant.PlantService.SyncAllWikiVector:input_type -> plant.PageReq
	1,  // 47: plant.PlantService.GetWikiClassList:input_type -> plant.IdReq
	32, // 48: plant.PlantService.CreateWikiClass:input_type -> plant.CreateWikiClassReq
	33, // 49: plant.PlantService.UpdateWikiClass:input_type -> plant.UpdateWikiClassReq
	2,  // 50: plant.PlantService.DeleteWikiClass:input_type -> plant.IdsReq
	34, // 51: plant.PlantService.ToggleWikiStar:input_type -> plant.ToggleStarReq
	5,  // 52: plant.PlantService.GetMyClassifyLog:input_type -> plant.GetProfileReq
	2,  // 53: plant.PlantService.DeleteClassifyLog:input_type -> plant.IdsReq
	38, // 54: plant.PlantService.CreatePost:input_type -> plant.CreatePostReq
	2,  // 55: plant.PlantService.DeletePost:input_type -> plant.IdsReq
	39, // 56: plant.PlantService.GetPostList:input_type -> plant.PostListReq
	1,  // 57: plant.PlantService.GetPostDetail:input_type -> plant.IdReq
	43, // 58: plant.PlantService.CommentPost:input_type -> plant.CommentPostReq
	44, // 59: plant.PlantService.LikePost:input_type -> plant.LikePostReq
	44, // 60: plant.PlantService.StarPost:input_type -> plant.LikePostReq
	59, // 61: plant.PlantService.MediaCheckCallback:input_type -> plant.MediaCheckCallbackReq
	1,  // 62: plant.PlantService.GetTopicList:input_type -> plant.IdReq
	1,  // 63: plant.PlantService.GetTopicDetail:input_type -> plant.IdReq
	47, // 64: plant.PlantService.CreateTopic:input_type -> plant.CreateTopicReq
	48, // 65: plant.PlantService.UpdateTopic:input_type -> plant.UpdateTopicReq
	2,  // 66: plant.PlantService.DeleteTopic:input_type -> plant.IdsReq
	50, // 67: plant.PlantService.GetExchangeItemList:input_type -> plant.ExchangeItemListReq
	1,  // 68: plant.PlantService.GetExchangeItemDetail:input_type -> plant.IdReq
	53, // 69: plant.PlantService.CreateExchangeItem:input_type -> plant.CreateExchangeItemReq
	54, // 70: plant.PlantService.UpdateExchangeItem:input_type -> plant.UpdateExchangeItemReq
	2,  // 71: plant.PlantService.DeleteExchangeItem:input_type -> plant.IdsReq
	52, // 72: plant.PlantService.CreateExchangeOrder:input_type -> plant.CreateExchangeOrderReq
	56, // 73: plant.PlantService.GetMyExchangeOrders:input_type -> plant.ExchangeOrderListReq
	56, // 74: plant.PlantService.GetExchangeOrderList:input_type -> plant.ExchangeOrderListReq
	58, // 75: plant.PlantService.UpdateExchangeOrder:input_type -> plant.UpdateExchangeOrderReq
	3,  // 76: plant.PlantService.GetLevelConfigList:input_type -> plant.PageReq
	1,  // 77: plant.PlantService.GetLevelConfigDetail:input_type -> plant.IdReq
	64, // 78: plant.PlantService.CreateLevelConfig:input_type -> plant.CreateLevelConfigReq
	65, // 79: plant.PlantService.UpdateLevelConfig:input_type -> plant.UpdateLevelConfigReq
	2,  // 80: plant.PlantService.DeleteLevelConfig:input_type -> plant.IdsReq
	67, // 81: plant.PlantService.GetBadgeConfigList:input_type -> plant.BadgeConfigListReq
	1,  // 82: plant.PlantService.GetBadgeConfigDetail:input_type -> plant.IdReq
	1,  // 83: plant.PlantService.GetBadgeConfigTree:input_type -> plant.IdReq
	69, // 84: plant.PlantService.CreateBadgeConfig:input_type -> plant.CreateBadgeConfigReq
	70, // 85: plant.PlantService.UpdateBadgeConfig:input_type -> plant.UpdateBadgeConfigReq
	2,  // 86: plant.PlantService.DeleteBadgeConfig:input_type -> plant.IdsReq
	1,  // 87: plant.PlantService.GetWikiClassDetail:input_type -> plant.IdReq
	77, // 88: plant.PlantService.GetAiChatHistory:input_type -> plant.AiChatHistoryReq
	60, // 89: plant.PlantService.SaveAiChatHistory:input_type -> plant.SaveAiChatHistoryReq
	2,  // 90: plant.PlantService.DeleteAiChatHistory:input_type -> plant.IdsReq
	5,  // 91: plant.PlantService.ClearAiChatHistory:input_type -> plant.GetProfileReq
	5,  // 92: plant.PlantService.GetAiChatQuota:input_type -> plant.GetProfileReq
	4,  // 93: plant.PlantService.GetUserProfile:output_type -> plant.PlantUserProfile
	0,  // 94: plant.PlantService.UpdateUserProfile:output_type -> plant.CommonResp
	8,  // 95: plant.PlantService.GetMyBadges:output_type -> plant.UserBadgeListResp
	10, // 96: plant.PlantService.GetMyStars:output_type -> plant.UserStarListResp
	0,  // 97: plant.PlantService.CreatePlant:output_type -> plant.CommonResp
	0,  // 98: plant.PlantService.UpdatePlant:output_type -> plant.CommonResp
	0,  // 99: plant.PlantService.DeletePlant:output_type -> plant.CommonResp
	15, // 100: plant.PlantService.GetPlantList:output_type -> plant.PlantListResp
	16, // 101: plant.PlantService.GetPlantDetail:output_type -> plant.PlantDetailResp
	0,  // 102: plant.PlantService.AddCarePlan:output_type -> plant.CommonResp
	0,  // 103: plant.PlantService.DeleteCarePlan:output_type -> plant.CommonResp
	20, // 104: plant.PlantService.GetTodayTaskList:output_type -> plant.CareTaskListResp
	72, // 105: plant.PlantService.CompleteTask:output_type -> plant.TaskCompletionResult
	0,  // 106: plant.PlantService.AddCareRecord:output_type -> plant.CommonResp
	0,  // 107: plant.PlantService.AddGrowthRecord:output_type -> plant.CommonResp
	26, // 108: plant.PlantService.GetWikiList:output_type -> plant.WikiListResp
	27, // 109: plant.PlantService.GetWikiDetail:output_type -> plant.WikiDetailResp
	0,  // 110: plant.PlantService.CreateWiki:output_type -> plant.CommonResp
	0,  // 111: plant.PlantService.UpdateWiki:output_type -> plant.CommonResp
	0,  // 112: plant.PlantService.DeleteWiki:output_type -> plant.CommonResp
	0,  // 113: plant.PlantService.SyncWikiVector:output_type -> plant.CommonResp
	0,  // 114: plant.PlantService.DeleteWikiVector:output_type -> plant.CommonResp
	0,  // 115: plant.PlantService.SyncAllWikiVector:output_type -> plant.CommonResp
	31, // 116: plant.PlantService.GetWikiClassList:output_type -> plant.WikiClassListResp
	0,  // 117: plant.PlantService.CreateWikiClass:output_type -> plant.CommonResp
	0,  // 118: plant.PlantService.UpdateWikiClass:output_type -> plant.CommonResp
	0,  // 119: plant.PlantService.DeleteWikiClass:output_type -> plant.CommonResp
	0,  // 120: plant.PlantService.ToggleWikiStar:output_type -> plant.CommonResp
	36, // 121: plant.PlantService.GetMyClassifyLog:output_type -> plant.ClassifyLogListResp
	0,  // 122: plant.PlantService.DeleteClassifyLog:output_type -> plant.CommonResp
	0,  // 123: plant.PlantService.CreatePost:output_type -> plant.CommonResp
	0,  // 124: plant.PlantService.DeletePost:output_type -> plant.CommonResp
	40, // 125: plant.PlantService.GetPostList:output_type -> plant.PostListResp
	41, // 126: plant.PlantService.GetPostDetail:output_type -> plant.PostDetailResp
	0,  // 127: plant.PlantService.CommentPost:output_type -> plant.CommonResp
	0,  // 128: plant.PlantService.LikePost:output_type -> plant.CommonResp
	0,  // 129: plant.PlantService.StarPost:output_type -> plant.CommonResp
	0,  // 130: plant.PlantService.MediaCheckCallback:output_type -> plant.CommonResp
	46, // 131: plant.PlantService.GetTopicList:output_type -> plant.TopicListResp
	45, // 132: plant.PlantService.GetTopicDetail:output_type -> plant.TopicInfo
	0,  // 133: plant.PlantService.CreateTopic:output_type -> plant.CommonResp
	0,  // 134: plant.PlantService.UpdateTopic:output_type -> plant.CommonResp
	0,  // 135: plant.PlantService.DeleteTopic:output_type -> plant.CommonResp
	51, // 136: plant.PlantService.GetExchangeItemList:output_type -> plant.ExchangeItemListResp
	49, // 137: plant.PlantService.GetExchangeItemDetail:output_type -> plant.ExchangeItemInfo
	0,  // 138: plant.PlantService.CreateExchangeItem:output_type -> plant.CommonResp
	0,  // 139: plant.PlantService.UpdateExchangeItem:output_type -> plant.CommonResp
	0,  // 140: plant.PlantService.DeleteExchangeItem:output_type -> plant.CommonResp
	0,  // 141: plant.PlantService.CreateExchangeOrder:output_type -> plant.CommonResp
	57, // 142: plant.PlantService.GetMyExchangeOrders:output_type -> plant.ExchangeOrderListResp
	57, // 143: plant.PlantService.GetExchangeOrderList:output_type -> plant.ExchangeOrderListResp
	0,  // 144: plant.PlantService.UpdateExchangeOrder:output_type -> plant.CommonResp
	63, // 145: plant.PlantService.GetLevelConfigList:output_type -> plant.LevelConfigListResp
	62, // 146: plant.PlantService.GetLevelConfigDetail:output_type -> plant.LevelConfigInfo
	0,  // 147: plant.PlantService.CreateLevelConfig:output_type -> plant.CommonResp
	0,  // 148: plant.PlantService.UpdateLevelConfig:output_type -> plant.CommonResp
	0,  // 149: plant.PlantService.DeleteLevelConfig:output_type -> plant.CommonResp
	68, // 150: plant.PlantService.GetBadgeConfigList:output_type -> plant.BadgeConfigListResp
	66, // 151: plant.PlantService.GetBadgeConfigDetail:output_type -> plant.BadgeConfigInfo
	74, // 152: plant.PlantService.GetBadgeConfigTree:output_type -> plant.BadgeConfigTreeResp
	0,  // 153: plant.PlantService.CreateBadgeConfig:output_type -> plant.CommonResp
	0,  // 154: plant.PlantService.UpdateBadgeConfig:output_type -> plant.CommonResp
	0,  // 155: plant.PlantService.DeleteBadgeConfig:output_type -> plant.CommonResp
	30, // 156: plant.PlantService.GetWikiClassDetail:output_type -> plant.WikiClassInfo
	78, // 157: plant.PlantService.GetAiChatHistory:output_type -> plant.AiChatHistoryResp
	0,  // 158: plant.PlantService.SaveAiChatHistory:output_type -> plant.CommonResp
	0,  // 159: plant.PlantService.DeleteAiChatHistory:output_type -> plant.CommonResp
	0,  // 160: plant.PlantService.ClearAiChatHistory:output_type -> plant.CommonResp
	75, // 161: plant.PlantService.GetAiChatQuota:output_type -> plant.AiQuotaResp
	93, // [93:162] is the sub-list for method output_type
	24, // [24:93] is the sub-list for method input_type
	24, // [24:24] is the sub-list for extension type_name
	24, // [24:24] is the sub-list for extension extendee
	0,  // [0:24] is the sub-list for field type_name
}

func init() { file_pb_plant_proto_init() }
func file_pb_plant_proto_init() {
	if File_pb_plant_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_pb_plant_proto_rawDesc), len(file_pb_plant_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   79,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_pb_plant_proto_goTypes,
		DependencyIndexes: file_pb_plant_proto_depIdxs,
		MessageInfos:      file_pb_plant_proto_msgTypes,
	}.Build()
	File_pb_plant_proto = out.File
	file_pb_plant_proto_goTypes = nil
	file_pb_plant_proto_depIdxs = nil
}
