329 lines
8.3 KiB
Protocol Buffer
329 lines
8.3 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package plant;
|
|
|
|
option go_package = "./plant";
|
|
|
|
// ========== 用户Profile ==========
|
|
message UserProfile {
|
|
string id = 1;
|
|
string userId = 2;
|
|
string nickName = 3;
|
|
string avatarId = 4;
|
|
string levelId = 5;
|
|
int64 currentSunlight = 6;
|
|
int64 totalSunlight = 7;
|
|
int64 plantCount = 8;
|
|
int64 careCount = 9;
|
|
int64 postCount = 10;
|
|
int64 waterCount = 11;
|
|
int64 fertilizeCount = 12;
|
|
int64 repotCount = 13;
|
|
int64 pruneCount = 14;
|
|
int64 photoCount = 15;
|
|
}
|
|
|
|
message GetUserProfileReq { string userId = 1; }
|
|
message GetUserProfileResp { UserProfile profile = 1; }
|
|
message UpdateUserProfileReq {
|
|
string userId = 1;
|
|
string nickName = 2;
|
|
string avatarId = 3;
|
|
}
|
|
message UpdateUserProfileResp {}
|
|
message IncrUserCounterReq {
|
|
string userId = 1;
|
|
string field = 2; // care_count, water_count, etc.
|
|
int64 delta = 3;
|
|
}
|
|
message IncrUserCounterResp {}
|
|
|
|
// ========== 我的植物 ==========
|
|
message PlantInfo {
|
|
string id = 1;
|
|
string userId = 2;
|
|
string name = 3;
|
|
string plantTime = 4;
|
|
int32 status = 5;
|
|
string placement = 6;
|
|
string potMaterial = 7;
|
|
string potSize = 8;
|
|
string sunlight = 9;
|
|
string plantingMaterial = 10;
|
|
repeated string imgIds = 11;
|
|
int64 createdAt = 12;
|
|
}
|
|
|
|
message CreatePlantReq {
|
|
string userId = 1;
|
|
string name = 2;
|
|
string plantTime = 3;
|
|
string placement = 4;
|
|
string potMaterial = 5;
|
|
string potSize = 6;
|
|
string sunlight = 7;
|
|
string plantingMaterial = 8;
|
|
repeated string imgIds = 9;
|
|
}
|
|
message CreatePlantResp { string id = 1; }
|
|
|
|
message UpdatePlantReq {
|
|
string id = 1;
|
|
string name = 2;
|
|
int32 status = 3;
|
|
string placement = 4;
|
|
string potMaterial = 5;
|
|
string potSize = 6;
|
|
string sunlight = 7;
|
|
string plantingMaterial = 8;
|
|
}
|
|
message UpdatePlantResp {}
|
|
|
|
message DeletePlantReq { repeated string ids = 1; }
|
|
message DeletePlantResp {}
|
|
|
|
message GetPlantListReq {
|
|
string userId = 1;
|
|
int32 current = 2;
|
|
int32 pageSize = 3;
|
|
string name = 4;
|
|
}
|
|
message GetPlantListResp {
|
|
repeated PlantInfo list = 1;
|
|
int64 total = 2;
|
|
}
|
|
|
|
message GetPlantDetailReq { string id = 1; }
|
|
message GetPlantDetailResp { PlantInfo plant = 1; }
|
|
|
|
// ========== 养护 ==========
|
|
message CarePlanInfo {
|
|
string id = 1;
|
|
string userId = 2;
|
|
string plantId = 3;
|
|
string name = 4;
|
|
string icon = 5;
|
|
string targetAction = 6;
|
|
int32 period = 7;
|
|
}
|
|
|
|
message AddCarePlanReq {
|
|
string userId = 1;
|
|
string plantId = 2;
|
|
string name = 3;
|
|
string icon = 4;
|
|
string targetAction = 5;
|
|
int32 period = 6;
|
|
}
|
|
message AddCarePlanResp { string id = 1; }
|
|
|
|
message AddCareRecordReq {
|
|
string userId = 1;
|
|
string plantId = 2;
|
|
string planId = 3;
|
|
string action = 4;
|
|
string note = 5;
|
|
}
|
|
message AddCareRecordResp {}
|
|
|
|
message AddGrowthRecordReq {
|
|
string userId = 1;
|
|
string plantId = 2;
|
|
string content = 3;
|
|
repeated string imgIds = 4;
|
|
}
|
|
message AddGrowthRecordResp {}
|
|
|
|
// ========== 百科 ==========
|
|
message WikiInfo {
|
|
string id = 1;
|
|
string name = 2;
|
|
string latinName = 3;
|
|
string aliases = 4;
|
|
string genus = 5;
|
|
int32 difficulty = 6;
|
|
int32 isHot = 7;
|
|
int64 createdAt = 8;
|
|
}
|
|
|
|
message GetWikiListReq {
|
|
int32 current = 1;
|
|
int32 pageSize = 2;
|
|
string name = 3;
|
|
string classId = 4;
|
|
int32 isHot = 5;
|
|
}
|
|
message GetWikiListResp {
|
|
repeated WikiInfo list = 1;
|
|
int64 total = 2;
|
|
}
|
|
|
|
message GetWikiDetailReq { string id = 1; }
|
|
message GetWikiDetailResp { WikiInfo wiki = 1; }
|
|
|
|
message WikiClassInfo {
|
|
string id = 1;
|
|
string name = 2;
|
|
string ossId = 3;
|
|
}
|
|
message GetWikiClassListResp { repeated WikiClassInfo list = 1; }
|
|
message CreateWikiClassReq { string name = 1; string ossId = 2; }
|
|
message CreateWikiClassResp { string id = 1; }
|
|
|
|
message ToggleStarReq {
|
|
string userId = 1;
|
|
string targetId = 2;
|
|
string type = 3;
|
|
}
|
|
message ToggleStarResp { bool starred = 1; }
|
|
|
|
// ========== 社区 ==========
|
|
message PostInfo {
|
|
string id = 1;
|
|
string userId = 2;
|
|
string title = 3;
|
|
string content = 4;
|
|
int32 viewCount = 5;
|
|
int32 commentCount = 6;
|
|
int32 likeCount = 7;
|
|
int32 starCount = 8;
|
|
string location = 9;
|
|
int64 createdAt = 10;
|
|
}
|
|
|
|
message CreatePostReq {
|
|
string userId = 1;
|
|
string title = 2;
|
|
string content = 3;
|
|
string location = 4;
|
|
repeated string imgIds = 5;
|
|
string topicId = 6;
|
|
}
|
|
message CreatePostResp { string id = 1; }
|
|
|
|
message GetPostListReq {
|
|
int32 current = 1;
|
|
int32 pageSize = 2;
|
|
string keyword = 3;
|
|
string topicId = 4;
|
|
}
|
|
message GetPostListResp {
|
|
repeated PostInfo list = 1;
|
|
int64 total = 2;
|
|
}
|
|
|
|
message GetPostDetailReq { string id = 1; }
|
|
message GetPostDetailResp { PostInfo post = 1; }
|
|
|
|
message DeletePostReq { repeated string ids = 1; }
|
|
message DeletePostResp {}
|
|
|
|
message CommentPostReq {
|
|
string userId = 1;
|
|
string postId = 2;
|
|
string content = 3;
|
|
string parentId = 4;
|
|
}
|
|
message CommentPostResp {}
|
|
|
|
message LikePostReq {
|
|
string userId = 1;
|
|
string postId = 2;
|
|
}
|
|
message LikePostResp { bool liked = 1; }
|
|
|
|
// ========== 话题 ==========
|
|
message TopicInfo {
|
|
string id = 1;
|
|
string name = 2;
|
|
int32 postCount = 3;
|
|
}
|
|
message GetTopicListResp { repeated TopicInfo list = 1; }
|
|
message CreateTopicReq { string name = 1; }
|
|
message CreateTopicResp { string id = 1; }
|
|
message DeleteTopicReq { repeated string ids = 1; }
|
|
message DeleteTopicResp {}
|
|
|
|
// ========== 配置 ==========
|
|
message LevelConfigInfo {
|
|
string id = 1;
|
|
int32 level = 2;
|
|
string title = 3;
|
|
int64 minSunlight = 4;
|
|
string perks = 5;
|
|
}
|
|
message GetLevelConfigListReq { int32 current = 1; int32 pageSize = 2; }
|
|
message GetLevelConfigListResp { repeated LevelConfigInfo list = 1; int64 total = 2; }
|
|
|
|
message BadgeConfigInfo {
|
|
string id = 1;
|
|
string name = 2;
|
|
string description = 3;
|
|
string dimension = 4;
|
|
string groupId = 5;
|
|
int32 tier = 6;
|
|
string targetAction = 7;
|
|
int64 threshold = 8;
|
|
int64 rewardSunlight = 9;
|
|
}
|
|
message GetBadgeConfigListReq { int32 current = 1; int32 pageSize = 2; string dimension = 3; }
|
|
message GetBadgeConfigListResp { repeated BadgeConfigInfo list = 1; int64 total = 2; }
|
|
|
|
// ========== 兑换 ==========
|
|
message ExchangeItemInfo {
|
|
string id = 1;
|
|
string name = 2;
|
|
string desc = 3;
|
|
int64 cost = 4;
|
|
int32 stock = 5;
|
|
}
|
|
message GetExchangeItemListReq { int32 current = 1; int32 pageSize = 2; }
|
|
message GetExchangeItemListResp { repeated ExchangeItemInfo list = 1; int64 total = 2; }
|
|
|
|
message CreateExchangeOrderReq { string userId = 1; string itemId = 2; }
|
|
message CreateExchangeOrderResp { string id = 1; }
|
|
|
|
// ========== 通用 ==========
|
|
message Empty {}
|
|
|
|
// ========== 服务定义 ==========
|
|
service PlantService {
|
|
// 用户Profile
|
|
rpc GetUserProfile(GetUserProfileReq) returns (GetUserProfileResp);
|
|
rpc UpdateUserProfile(UpdateUserProfileReq) returns (UpdateUserProfileResp);
|
|
rpc IncrUserCounter(IncrUserCounterReq) returns (IncrUserCounterResp);
|
|
// 植物
|
|
rpc CreatePlant(CreatePlantReq) returns (CreatePlantResp);
|
|
rpc UpdatePlant(UpdatePlantReq) returns (UpdatePlantResp);
|
|
rpc DeletePlant(DeletePlantReq) returns (DeletePlantResp);
|
|
rpc GetPlantList(GetPlantListReq) returns (GetPlantListResp);
|
|
rpc GetPlantDetail(GetPlantDetailReq) returns (GetPlantDetailResp);
|
|
// 养护
|
|
rpc AddCarePlan(AddCarePlanReq) returns (AddCarePlanResp);
|
|
rpc AddCareRecord(AddCareRecordReq) returns (AddCareRecordResp);
|
|
rpc AddGrowthRecord(AddGrowthRecordReq) returns (AddGrowthRecordResp);
|
|
// 百科
|
|
rpc GetWikiList(GetWikiListReq) returns (GetWikiListResp);
|
|
rpc GetWikiDetail(GetWikiDetailReq) returns (GetWikiDetailResp);
|
|
rpc GetWikiClassList(Empty) returns (GetWikiClassListResp);
|
|
rpc CreateWikiClass(CreateWikiClassReq) returns (CreateWikiClassResp);
|
|
rpc ToggleStar(ToggleStarReq) returns (ToggleStarResp);
|
|
// 社区
|
|
rpc CreatePost(CreatePostReq) returns (CreatePostResp);
|
|
rpc GetPostList(GetPostListReq) returns (GetPostListResp);
|
|
rpc GetPostDetail(GetPostDetailReq) returns (GetPostDetailResp);
|
|
rpc DeletePost(DeletePostReq) returns (DeletePostResp);
|
|
rpc CommentPost(CommentPostReq) returns (CommentPostResp);
|
|
rpc LikePost(LikePostReq) returns (LikePostResp);
|
|
// 话题
|
|
rpc GetTopicList(Empty) returns (GetTopicListResp);
|
|
rpc CreateTopic(CreateTopicReq) returns (CreateTopicResp);
|
|
rpc DeleteTopic(DeleteTopicReq) returns (DeleteTopicResp);
|
|
// 配置
|
|
rpc GetLevelConfigList(GetLevelConfigListReq) returns (GetLevelConfigListResp);
|
|
rpc GetBadgeConfigList(GetBadgeConfigListReq) returns (GetBadgeConfigListResp);
|
|
// 兑换
|
|
rpc GetExchangeItemList(GetExchangeItemListReq) returns (GetExchangeItemListResp);
|
|
rpc CreateExchangeOrder(CreateExchangeOrderReq) returns (CreateExchangeOrderResp);
|
|
}
|