Files
sundynix-micro-be/app/plant/rpc/pb/plant.proto
T
2026-04-27 00:02:18 +08:00

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);
}