feat: minilogin改造

This commit is contained in:
Blizzard
2026-05-24 23:04:09 +08:00
parent 076ed1509b
commit da02247794
36 changed files with 3523 additions and 11653 deletions
+1
View File
@@ -7,4 +7,5 @@ type Config struct {
DB struct {
DataSource string
}
SystemRpc zrpc.RpcClientConf
}
@@ -0,0 +1,31 @@
package logic
import (
"context"
"sundynix-micro-go/app/plant/rpc/internal/svc"
"sundynix-micro-go/app/plant/rpc/plant"
"github.com/zeromicro/go-zero/core/logx"
)
type CreateBannerLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewCreateBannerLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateBannerLogic {
return &CreateBannerLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// Banner
func (l *CreateBannerLogic) CreateBanner(in *plant.CreateBannerReq) (*plant.CommonResp, error) {
// todo: add your logic here and delete this line
return &plant.CommonResp{}, nil
}
@@ -0,0 +1,30 @@
package logic
import (
"context"
"sundynix-micro-go/app/plant/rpc/internal/svc"
"sundynix-micro-go/app/plant/rpc/plant"
"github.com/zeromicro/go-zero/core/logx"
)
type DeleteBannerLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewDeleteBannerLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteBannerLogic {
return &DeleteBannerLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *DeleteBannerLogic) DeleteBanner(in *plant.IdsReq) (*plant.CommonResp, error) {
// todo: add your logic here and delete this line
return &plant.CommonResp{}, nil
}
@@ -0,0 +1,136 @@
package logic
import (
"context"
"errors"
"fmt"
plantModel "sundynix-micro-go/app/plant/model"
"sundynix-micro-go/app/plant/rpc/internal/svc"
"sundynix-micro-go/app/plant/rpc/plant"
sysPb "sundynix-micro-go/app/system/rpc/system"
"github.com/zeromicro/go-zero/core/logx"
"gorm.io/gorm"
)
type FindOrCreateUserByOpenIdLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewFindOrCreateUserByOpenIdLogic(ctx context.Context, svcCtx *svc.ServiceContext) *FindOrCreateUserByOpenIdLogic {
return &FindOrCreateUserByOpenIdLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *FindOrCreateUserByOpenIdLogic) FindOrCreateUserByOpenId(in *plant.FindOrCreateUserByOpenIdReq) (*plant.PlantUserProfile, error) {
if in.OpenId == "" {
return nil, fmt.Errorf("openid 不能为空")
}
// 1. 根据 mini_open_id 查询植物用户扩展表
var profile plantModel.UserProfile
err := l.svcCtx.DB.Where("mini_open_id = ?", in.OpenId).First(&profile).Error
if err == nil {
// 1.1 用户已存在:如果 session_key 发生变化则进行更新
if in.SessionKey != "" && (in.SessionKey != profile.SessionKey || in.UnionId != profile.UnionID || in.SaOpenId != profile.SaOpenID) {
l.svcCtx.DB.Model(&profile).Updates(map[string]interface{}{
"session_key": in.SessionKey,
"union_id": in.UnionId,
"sa_open_id": in.SaOpenId,
})
}
return profileToProto(&profile), nil
}
// 2. 用户不存在:分步创建(先 System RPC 创建基础用户,再本地创建扩展用户)
if !errors.Is(err, gorm.ErrRecordNotFound) {
l.Errorf("[FindOrCreateUserByOpenId] 查询扩展表失败: openid=%s, err=%v", in.OpenId, err)
return nil, fmt.Errorf("系统繁忙,请稍后再试")
}
// 2.1 调用 System RPC 创建基础用户(遵守服务边界,不直接写 system 表)
createResp, err := l.svcCtx.SystemRpc.CreateUser(l.ctx, &sysPb.CreateUserReq{
ClientId: in.ClientId,
NickName: "园艺新手",
})
if err != nil {
l.Errorf("[FindOrCreateUserByOpenId] 调用 System RPC 创建基础用户失败: err=%v", err)
return nil, fmt.Errorf("注册用户失败")
}
userId := createResp.User.Id
l.Infof("[FindOrCreateUserByOpenId] ✅ System 基础用户创建成功: userId=%s", userId)
// 2.2 自动匹配初始等级 ID (获取首个等级,一般是 Level 1)
var firstLevel plantModel.LevelConfig
levelErr := l.svcCtx.DB.Order("level asc").First(&firstLevel).Error
levelID := ""
if levelErr == nil {
levelID = firstLevel.ID
}
// 2.3 本地事务创建应用专属扩展表
profile = plantModel.UserProfile{
UserID: userId,
MiniOpenID: in.OpenId,
SessionKey: in.SessionKey,
UnionID: in.UnionId,
SaOpenID: in.SaOpenId,
NickName: "园艺新手",
LevelID: levelID,
CurrentSunlight: 0,
TotalSunlight: 0,
}
if err = l.svcCtx.DB.Create(&profile).Error; err != nil {
l.Errorf("[FindOrCreateUserByOpenId] 创建用户扩展表失败: err=%v", err)
// 2.4 补偿回滚:删除已创建的 System 基础用户,避免孤儿记录
_, delErr := l.svcCtx.SystemRpc.DeleteUser(l.ctx, &sysPb.DeleteUserReq{
Ids: []string{userId},
})
if delErr != nil {
l.Errorf("[FindOrCreateUserByOpenId] ⚠️ 补偿删除基础用户失败: userId=%s, err=%v", userId, delErr)
// 即使补偿失败也返回原始错误,孤儿记录可通过后台定期清理
} else {
l.Infof("[FindOrCreateUserByOpenId] 补偿删除基础用户成功: userId=%s", userId)
}
return nil, fmt.Errorf("注册应用扩展失败")
}
l.Infof("[FindOrCreateUserByOpenId] ✅ 成功创建游客账户: userId=%s, openid=%s", userId, in.OpenId)
return profileToProto(&profile), nil
}
// profileToProto 将 model 转为 proto 响应
func profileToProto(p *plantModel.UserProfile) *plant.PlantUserProfile {
return &plant.PlantUserProfile{
Id: p.ID,
UserId: p.UserID,
NickName: p.NickName,
AvatarId: p.AvatarID,
LevelId: p.LevelID,
CurrentSunlight: p.CurrentSunlight,
TotalSunlight: p.TotalSunlight,
PlantCount: p.PlantCount,
CareCount: p.CareCount,
PostCount: p.PostCount,
WaterCount: p.WaterCount,
FertilizeCount: p.FertilizeCount,
RepotCount: p.RepotCount,
PruneCount: p.PruneCount,
PhotoCount: p.PhotoCount,
MiniOpenId: p.MiniOpenID,
SessionKey: p.SessionKey,
UnionId: p.UnionID,
SaOpenId: p.SaOpenID,
}
}
@@ -0,0 +1,30 @@
package logic
import (
"context"
"sundynix-micro-go/app/plant/rpc/internal/svc"
"sundynix-micro-go/app/plant/rpc/plant"
"github.com/zeromicro/go-zero/core/logx"
)
type GetActiveBannerListLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewGetActiveBannerListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetActiveBannerListLogic {
return &GetActiveBannerListLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *GetActiveBannerListLogic) GetActiveBannerList(in *plant.PageReq) (*plant.BannerListResp, error) {
// todo: add your logic here and delete this line
return &plant.BannerListResp{}, nil
}
@@ -0,0 +1,30 @@
package logic
import (
"context"
"sundynix-micro-go/app/plant/rpc/internal/svc"
"sundynix-micro-go/app/plant/rpc/plant"
"github.com/zeromicro/go-zero/core/logx"
)
type GetBannerListLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewGetBannerListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetBannerListLogic {
return &GetBannerListLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *GetBannerListLogic) GetBannerList(in *plant.BannerListReq) (*plant.BannerListResp, error) {
// todo: add your logic here and delete this line
return &plant.BannerListResp{}, nil
}
@@ -0,0 +1,31 @@
package logic
import (
"context"
"sundynix-micro-go/app/plant/rpc/internal/svc"
"sundynix-micro-go/app/plant/rpc/plant"
"github.com/zeromicro/go-zero/core/logx"
)
type QuickCareLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewQuickCareLogic(ctx context.Context, svcCtx *svc.ServiceContext) *QuickCareLogic {
return &QuickCareLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 快捷养护
func (l *QuickCareLogic) QuickCare(in *plant.QuickCareReq) (*plant.CommonResp, error) {
// todo: add your logic here and delete this line
return &plant.CommonResp{}, nil
}
@@ -0,0 +1,30 @@
package logic
import (
"context"
"sundynix-micro-go/app/plant/rpc/internal/svc"
"sundynix-micro-go/app/plant/rpc/plant"
"github.com/zeromicro/go-zero/core/logx"
)
type UpdateBannerLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewUpdateBannerLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateBannerLogic {
return &UpdateBannerLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *UpdateBannerLogic) UpdateBanner(in *plant.UpdateBannerReq) (*plant.CommonResp, error) {
// todo: add your logic here and delete this line
return &plant.CommonResp{}, nil
}
@@ -18,244 +18,399 @@ type PlantServiceServer struct {
}
func NewPlantServiceServer(svcCtx *svc.ServiceContext) *PlantServiceServer {
return &PlantServiceServer{svcCtx: svcCtx}
return &PlantServiceServer{
svcCtx: svcCtx,
}
}
// ---- 用户Profile ----
// 用户Profile
func (s *PlantServiceServer) GetUserProfile(ctx context.Context, in *plant.GetProfileReq) (*plant.PlantUserProfile, error) {
return logic.NewGetUserProfileLogic(ctx, s.svcCtx).GetUserProfile(in)
l := logic.NewGetUserProfileLogic(ctx, s.svcCtx)
return l.GetUserProfile(in)
}
func (s *PlantServiceServer) FindOrCreateUserByOpenId(ctx context.Context, in *plant.FindOrCreateUserByOpenIdReq) (*plant.PlantUserProfile, error) {
l := logic.NewFindOrCreateUserByOpenIdLogic(ctx, s.svcCtx)
return l.FindOrCreateUserByOpenId(in)
}
func (s *PlantServiceServer) UpdateUserProfile(ctx context.Context, in *plant.UpdateProfileReq) (*plant.CommonResp, error) {
return logic.NewUpdateUserProfileLogic(ctx, s.svcCtx).UpdateUserProfile(in)
l := logic.NewUpdateUserProfileLogic(ctx, s.svcCtx)
return l.UpdateUserProfile(in)
}
func (s *PlantServiceServer) GetMyBadges(ctx context.Context, in *plant.GetProfileReq) (*plant.UserBadgeListResp, error) {
return logic.NewGetMyBadgesLogic(ctx, s.svcCtx).GetMyBadges(in)
l := logic.NewGetMyBadgesLogic(ctx, s.svcCtx)
return l.GetMyBadges(in)
}
func (s *PlantServiceServer) GetMyStars(ctx context.Context, in *plant.GetProfileReq) (*plant.UserStarListResp, error) {
return logic.NewGetMyStarsLogic(ctx, s.svcCtx).GetMyStars(in)
l := logic.NewGetMyStarsLogic(ctx, s.svcCtx)
return l.GetMyStars(in)
}
// ---- 我的植物 ----
// 我的植物
func (s *PlantServiceServer) CreatePlant(ctx context.Context, in *plant.CreatePlantReq) (*plant.CommonResp, error) {
return logic.NewCreatePlantLogic(ctx, s.svcCtx).CreatePlant(in)
l := logic.NewCreatePlantLogic(ctx, s.svcCtx)
return l.CreatePlant(in)
}
func (s *PlantServiceServer) UpdatePlant(ctx context.Context, in *plant.UpdatePlantReq) (*plant.CommonResp, error) {
return logic.NewUpdatePlantLogic(ctx, s.svcCtx).UpdatePlant(in)
l := logic.NewUpdatePlantLogic(ctx, s.svcCtx)
return l.UpdatePlant(in)
}
func (s *PlantServiceServer) DeletePlant(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
return logic.NewDeletePlantLogic(ctx, s.svcCtx).DeletePlant(in)
l := logic.NewDeletePlantLogic(ctx, s.svcCtx)
return l.DeletePlant(in)
}
func (s *PlantServiceServer) GetPlantList(ctx context.Context, in *plant.PlantListReq) (*plant.PlantListResp, error) {
return logic.NewGetPlantListLogic(ctx, s.svcCtx).GetPlantList(in)
l := logic.NewGetPlantListLogic(ctx, s.svcCtx)
return l.GetPlantList(in)
}
func (s *PlantServiceServer) GetPlantDetail(ctx context.Context, in *plant.IdReq) (*plant.PlantDetailResp, error) {
return logic.NewGetPlantDetailLogic(ctx, s.svcCtx).GetPlantDetail(in)
l := logic.NewGetPlantDetailLogic(ctx, s.svcCtx)
return l.GetPlantDetail(in)
}
// ---- 养护 ----
// 养护
func (s *PlantServiceServer) AddCarePlan(ctx context.Context, in *plant.AddCarePlanReq) (*plant.CommonResp, error) {
return logic.NewAddCarePlanLogic(ctx, s.svcCtx).AddCarePlan(in)
l := logic.NewAddCarePlanLogic(ctx, s.svcCtx)
return l.AddCarePlan(in)
}
func (s *PlantServiceServer) DeleteCarePlan(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
return logic.NewDeleteCarePlanLogic(ctx, s.svcCtx).DeleteCarePlan(in)
l := logic.NewDeleteCarePlanLogic(ctx, s.svcCtx)
return l.DeleteCarePlan(in)
}
func (s *PlantServiceServer) GetTodayTaskList(ctx context.Context, in *plant.GetProfileReq) (*plant.CareTaskListResp, error) {
return logic.NewGetTodayTaskListLogic(ctx, s.svcCtx).GetTodayTaskList(in)
}
func (s *PlantServiceServer) AddCareRecord(ctx context.Context, in *plant.AddCareRecordReq) (*plant.CommonResp, error) {
return logic.NewAddCareRecordLogic(ctx, s.svcCtx).AddCareRecord(in)
}
func (s *PlantServiceServer) AddGrowthRecord(ctx context.Context, in *plant.AddGrowthRecordReq) (*plant.CommonResp, error) {
return logic.NewAddGrowthRecordLogic(ctx, s.svcCtx).AddGrowthRecord(in)
l := logic.NewGetTodayTaskListLogic(ctx, s.svcCtx)
return l.GetTodayTaskList(in)
}
// ---- 百科 ----
func (s *PlantServiceServer) GetWikiList(ctx context.Context, in *plant.WikiListReq) (*plant.WikiListResp, error) {
return logic.NewGetWikiListLogic(ctx, s.svcCtx).GetWikiList(in)
}
func (s *PlantServiceServer) GetWikiDetail(ctx context.Context, in *plant.IdReq) (*plant.WikiDetailResp, error) {
return logic.NewGetWikiDetailLogic(ctx, s.svcCtx).GetWikiDetail(in)
}
func (s *PlantServiceServer) CreateWiki(ctx context.Context, in *plant.CreateWikiReq) (*plant.CommonResp, error) {
return logic.NewCreateWikiLogic(ctx, s.svcCtx).CreateWiki(in)
}
func (s *PlantServiceServer) UpdateWiki(ctx context.Context, in *plant.UpdateWikiReq) (*plant.CommonResp, error) {
return logic.NewUpdateWikiLogic(ctx, s.svcCtx).UpdateWiki(in)
}
func (s *PlantServiceServer) DeleteWiki(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
return logic.NewDeleteWikiLogic(ctx, s.svcCtx).DeleteWiki(in)
}
func (s *PlantServiceServer) SyncWikiVector(ctx context.Context, in *plant.SyncWikiVectorReq) (*plant.CommonResp, error) {
return logic.NewSyncWikiVectorLogic(ctx, s.svcCtx).SyncWikiVector(in)
}
func (s *PlantServiceServer) DeleteWikiVector(ctx context.Context, in *plant.SyncWikiVectorReq) (*plant.CommonResp, error) {
return logic.NewDeleteWikiVectorLogic(ctx, s.svcCtx).DeleteWikiVector(in)
}
func (s *PlantServiceServer) SyncAllWikiVector(ctx context.Context, in *plant.PageReq) (*plant.CommonResp, error) {
return logic.NewSyncAllWikiVectorLogic(ctx, s.svcCtx).SyncAllWikiVector(in)
}
func (s *PlantServiceServer) GetWikiClassList(ctx context.Context, in *plant.IdReq) (*plant.WikiClassListResp, error) {
return logic.NewGetWikiClassListLogic(ctx, s.svcCtx).GetWikiClassList(in)
}
func (s *PlantServiceServer) CreateWikiClass(ctx context.Context, in *plant.CreateWikiClassReq) (*plant.CommonResp, error) {
return logic.NewCreateWikiClassLogic(ctx, s.svcCtx).CreateWikiClass(in)
}
func (s *PlantServiceServer) UpdateWikiClass(ctx context.Context, in *plant.UpdateWikiClassReq) (*plant.CommonResp, error) {
return logic.NewUpdateWikiClassLogic(ctx, s.svcCtx).UpdateWikiClass(in)
}
func (s *PlantServiceServer) DeleteWikiClass(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
return logic.NewDeleteWikiClassLogic(ctx, s.svcCtx).DeleteWikiClass(in)
}
func (s *PlantServiceServer) ToggleWikiStar(ctx context.Context, in *plant.ToggleStarReq) (*plant.CommonResp, error) {
return logic.NewToggleWikiStarLogic(ctx, s.svcCtx).ToggleWikiStar(in)
}
// ---- OCR ----
func (s *PlantServiceServer) GetMyClassifyLog(ctx context.Context, in *plant.GetProfileReq) (*plant.ClassifyLogListResp, error) {
return logic.NewGetMyClassifyLogLogic(ctx, s.svcCtx).GetMyClassifyLog(in)
}
func (s *PlantServiceServer) DeleteClassifyLog(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
return logic.NewDeleteClassifyLogLogic(ctx, s.svcCtx).DeleteClassifyLog(in)
}
// ---- 社区 ----
func (s *PlantServiceServer) CreatePost(ctx context.Context, in *plant.CreatePostReq) (*plant.CommonResp, error) {
return logic.NewCreatePostLogic(ctx, s.svcCtx).CreatePost(in)
}
func (s *PlantServiceServer) DeletePost(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
return logic.NewDeletePostLogic(ctx, s.svcCtx).DeletePost(in)
}
func (s *PlantServiceServer) GetPostList(ctx context.Context, in *plant.PostListReq) (*plant.PostListResp, error) {
return logic.NewGetPostListLogic(ctx, s.svcCtx).GetPostList(in)
}
func (s *PlantServiceServer) GetPostDetail(ctx context.Context, in *plant.IdReq) (*plant.PostDetailResp, error) {
return logic.NewGetPostDetailLogic(ctx, s.svcCtx).GetPostDetail(in)
}
func (s *PlantServiceServer) CommentPost(ctx context.Context, in *plant.CommentPostReq) (*plant.CommonResp, error) {
return logic.NewCommentPostLogic(ctx, s.svcCtx).CommentPost(in)
}
func (s *PlantServiceServer) LikePost(ctx context.Context, in *plant.LikePostReq) (*plant.CommonResp, error) {
return logic.NewLikePostLogic(ctx, s.svcCtx).LikePost(in)
}
func (s *PlantServiceServer) StarPost(ctx context.Context, in *plant.LikePostReq) (*plant.CommonResp, error) {
return logic.NewStarPostLogic(ctx, s.svcCtx).StarPost(in)
}
func (s *PlantServiceServer) MediaCheckCallback(ctx context.Context, in *plant.MediaCheckCallbackReq) (*plant.CommonResp, error) {
return logic.NewMediaCheckCallbackLogic(ctx, s.svcCtx).MediaCheckCallback(in)
}
// ---- 话题 ----
func (s *PlantServiceServer) GetTopicList(ctx context.Context, in *plant.IdReq) (*plant.TopicListResp, error) {
return logic.NewGetTopicListLogic(ctx, s.svcCtx).GetTopicList(in)
}
func (s *PlantServiceServer) GetTopicDetail(ctx context.Context, in *plant.IdReq) (*plant.TopicInfo, error) {
return logic.NewGetTopicDetailLogic(ctx, s.svcCtx).GetTopicDetail(in)
}
func (s *PlantServiceServer) CreateTopic(ctx context.Context, in *plant.CreateTopicReq) (*plant.CommonResp, error) {
return logic.NewCreateTopicLogic(ctx, s.svcCtx).CreateTopic(in)
}
func (s *PlantServiceServer) UpdateTopic(ctx context.Context, in *plant.UpdateTopicReq) (*plant.CommonResp, error) {
return logic.NewUpdateTopicLogic(ctx, s.svcCtx).UpdateTopic(in)
}
func (s *PlantServiceServer) DeleteTopic(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
return logic.NewDeleteTopicLogic(ctx, s.svcCtx).DeleteTopic(in)
}
// ---- 兑换 ----
func (s *PlantServiceServer) GetExchangeItemList(ctx context.Context, in *plant.ExchangeItemListReq) (*plant.ExchangeItemListResp, error) {
return logic.NewGetExchangeItemListLogic(ctx, s.svcCtx).GetExchangeItemList(in)
}
func (s *PlantServiceServer) CreateExchangeItem(ctx context.Context, in *plant.CreateExchangeItemReq) (*plant.CommonResp, error) {
return logic.NewCreateExchangeItemLogic(ctx, s.svcCtx).CreateExchangeItem(in)
}
func (s *PlantServiceServer) UpdateExchangeItem(ctx context.Context, in *plant.UpdateExchangeItemReq) (*plant.CommonResp, error) {
return logic.NewUpdateExchangeItemLogic(ctx, s.svcCtx).UpdateExchangeItem(in)
}
func (s *PlantServiceServer) DeleteExchangeItem(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
return logic.NewDeleteExchangeItemLogic(ctx, s.svcCtx).DeleteExchangeItem(in)
}
func (s *PlantServiceServer) CreateExchangeOrder(ctx context.Context, in *plant.CreateExchangeOrderReq) (*plant.CommonResp, error) {
return logic.NewCreateExchangeOrderLogic(ctx, s.svcCtx).CreateExchangeOrder(in)
}
func (s *PlantServiceServer) GetMyExchangeOrders(ctx context.Context, in *plant.ExchangeOrderListReq) (*plant.ExchangeOrderListResp, error) {
return logic.NewGetMyExchangeOrdersLogic(ctx, s.svcCtx).GetMyExchangeOrders(in)
}
func (s *PlantServiceServer) GetExchangeOrderList(ctx context.Context, in *plant.ExchangeOrderListReq) (*plant.ExchangeOrderListResp, error) {
return logic.NewGetExchangeOrderListLogic(ctx, s.svcCtx).GetExchangeOrderList(in)
}
func (s *PlantServiceServer) UpdateExchangeOrder(ctx context.Context, in *plant.UpdateExchangeOrderReq) (*plant.CommonResp, error) {
return logic.NewUpdateExchangeOrderLogic(ctx, s.svcCtx).UpdateExchangeOrder(in)
}
// ---- 配置 ----
func (s *PlantServiceServer) GetLevelConfigList(ctx context.Context, in *plant.PageReq) (*plant.LevelConfigListResp, error) {
return logic.NewGetLevelConfigListLogic(ctx, s.svcCtx).GetLevelConfigList(in)
}
func (s *PlantServiceServer) CreateLevelConfig(ctx context.Context, in *plant.CreateLevelConfigReq) (*plant.CommonResp, error) {
return logic.NewCreateLevelConfigLogic(ctx, s.svcCtx).CreateLevelConfig(in)
}
func (s *PlantServiceServer) UpdateLevelConfig(ctx context.Context, in *plant.UpdateLevelConfigReq) (*plant.CommonResp, error) {
return logic.NewUpdateLevelConfigLogic(ctx, s.svcCtx).UpdateLevelConfig(in)
}
func (s *PlantServiceServer) DeleteLevelConfig(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
return logic.NewDeleteLevelConfigLogic(ctx, s.svcCtx).DeleteLevelConfig(in)
}
func (s *PlantServiceServer) GetBadgeConfigList(ctx context.Context, in *plant.BadgeConfigListReq) (*plant.BadgeConfigListResp, error) {
return logic.NewGetBadgeConfigListLogic(ctx, s.svcCtx).GetBadgeConfigList(in)
}
func (s *PlantServiceServer) GetBadgeConfigDetail(ctx context.Context, in *plant.IdReq) (*plant.BadgeConfigInfo, error) {
return logic.NewGetBadgeConfigDetailLogic(ctx, s.svcCtx).GetBadgeConfigDetail(in)
}
func (s *PlantServiceServer) CreateBadgeConfig(ctx context.Context, in *plant.CreateBadgeConfigReq) (*plant.CommonResp, error) {
return logic.NewCreateBadgeConfigLogic(ctx, s.svcCtx).CreateBadgeConfig(in)
}
func (s *PlantServiceServer) UpdateBadgeConfig(ctx context.Context, in *plant.UpdateBadgeConfigReq) (*plant.CommonResp, error) {
return logic.NewUpdateBadgeConfigLogic(ctx, s.svcCtx).UpdateBadgeConfig(in)
}
func (s *PlantServiceServer) DeleteBadgeConfig(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
return logic.NewDeleteBadgeConfigLogic(ctx, s.svcCtx).DeleteBadgeConfig(in)
}
// ---- AI ----
func (s *PlantServiceServer) DeleteAiChatHistory(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
return logic.NewDeleteAiChatHistoryLogic(ctx, s.svcCtx).DeleteAiChatHistory(in)
}
func (s *PlantServiceServer) SaveAiChatHistory(ctx context.Context, in *plant.SaveAiChatHistoryReq) (*plant.CommonResp, error) {
return logic.NewSaveAiChatHistoryLogic(ctx, s.svcCtx).SaveAiChatHistory(in)
}
func (s *PlantServiceServer) ClearAiChatHistory(ctx context.Context, in *plant.GetProfileReq) (*plant.CommonResp, error) {
return logic.NewClearAiChatHistoryLogic(ctx, s.svcCtx).ClearAiChatHistory(in)
}
func (s *PlantServiceServer) GetAiChatQuota(ctx context.Context, in *plant.GetProfileReq) (*plant.AiQuotaResp, error) {
return logic.NewGetAiChatQuotaLogic(ctx, s.svcCtx).GetAiChatQuota(in)
}
// ---- 完成任务 ----
func (s *PlantServiceServer) CompleteTask(ctx context.Context, in *plant.CompleteTaskReq) (*plant.TaskCompletionResult, error) {
return logic.NewCompleteTaskLogic(ctx, s.svcCtx).CompleteTask(in)
l := logic.NewCompleteTaskLogic(ctx, s.svcCtx)
return l.CompleteTask(in)
}
func (s *PlantServiceServer) AddCareRecord(ctx context.Context, in *plant.AddCareRecordReq) (*plant.CommonResp, error) {
l := logic.NewAddCareRecordLogic(ctx, s.svcCtx)
return l.AddCareRecord(in)
}
func (s *PlantServiceServer) AddGrowthRecord(ctx context.Context, in *plant.AddGrowthRecordReq) (*plant.CommonResp, error) {
l := logic.NewAddGrowthRecordLogic(ctx, s.svcCtx)
return l.AddGrowthRecord(in)
}
// 百科
func (s *PlantServiceServer) GetWikiList(ctx context.Context, in *plant.WikiListReq) (*plant.WikiListResp, error) {
l := logic.NewGetWikiListLogic(ctx, s.svcCtx)
return l.GetWikiList(in)
}
func (s *PlantServiceServer) GetWikiDetail(ctx context.Context, in *plant.IdReq) (*plant.WikiDetailResp, error) {
l := logic.NewGetWikiDetailLogic(ctx, s.svcCtx)
return l.GetWikiDetail(in)
}
func (s *PlantServiceServer) CreateWiki(ctx context.Context, in *plant.CreateWikiReq) (*plant.CommonResp, error) {
l := logic.NewCreateWikiLogic(ctx, s.svcCtx)
return l.CreateWiki(in)
}
func (s *PlantServiceServer) UpdateWiki(ctx context.Context, in *plant.UpdateWikiReq) (*plant.CommonResp, error) {
l := logic.NewUpdateWikiLogic(ctx, s.svcCtx)
return l.UpdateWiki(in)
}
func (s *PlantServiceServer) DeleteWiki(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
l := logic.NewDeleteWikiLogic(ctx, s.svcCtx)
return l.DeleteWiki(in)
}
func (s *PlantServiceServer) SyncWikiVector(ctx context.Context, in *plant.SyncWikiVectorReq) (*plant.CommonResp, error) {
l := logic.NewSyncWikiVectorLogic(ctx, s.svcCtx)
return l.SyncWikiVector(in)
}
func (s *PlantServiceServer) DeleteWikiVector(ctx context.Context, in *plant.SyncWikiVectorReq) (*plant.CommonResp, error) {
l := logic.NewDeleteWikiVectorLogic(ctx, s.svcCtx)
return l.DeleteWikiVector(in)
}
func (s *PlantServiceServer) SyncAllWikiVector(ctx context.Context, in *plant.PageReq) (*plant.CommonResp, error) {
l := logic.NewSyncAllWikiVectorLogic(ctx, s.svcCtx)
return l.SyncAllWikiVector(in)
}
func (s *PlantServiceServer) GetWikiClassList(ctx context.Context, in *plant.IdReq) (*plant.WikiClassListResp, error) {
l := logic.NewGetWikiClassListLogic(ctx, s.svcCtx)
return l.GetWikiClassList(in)
}
func (s *PlantServiceServer) CreateWikiClass(ctx context.Context, in *plant.CreateWikiClassReq) (*plant.CommonResp, error) {
l := logic.NewCreateWikiClassLogic(ctx, s.svcCtx)
return l.CreateWikiClass(in)
}
func (s *PlantServiceServer) UpdateWikiClass(ctx context.Context, in *plant.UpdateWikiClassReq) (*plant.CommonResp, error) {
l := logic.NewUpdateWikiClassLogic(ctx, s.svcCtx)
return l.UpdateWikiClass(in)
}
func (s *PlantServiceServer) DeleteWikiClass(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
l := logic.NewDeleteWikiClassLogic(ctx, s.svcCtx)
return l.DeleteWikiClass(in)
}
func (s *PlantServiceServer) ToggleWikiStar(ctx context.Context, in *plant.ToggleStarReq) (*plant.CommonResp, error) {
l := logic.NewToggleWikiStarLogic(ctx, s.svcCtx)
return l.ToggleWikiStar(in)
}
// OCR
func (s *PlantServiceServer) GetMyClassifyLog(ctx context.Context, in *plant.GetProfileReq) (*plant.ClassifyLogListResp, error) {
l := logic.NewGetMyClassifyLogLogic(ctx, s.svcCtx)
return l.GetMyClassifyLog(in)
}
func (s *PlantServiceServer) DeleteClassifyLog(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
l := logic.NewDeleteClassifyLogLogic(ctx, s.svcCtx)
return l.DeleteClassifyLog(in)
}
// 社区
func (s *PlantServiceServer) CreatePost(ctx context.Context, in *plant.CreatePostReq) (*plant.CommonResp, error) {
l := logic.NewCreatePostLogic(ctx, s.svcCtx)
return l.CreatePost(in)
}
func (s *PlantServiceServer) DeletePost(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
l := logic.NewDeletePostLogic(ctx, s.svcCtx)
return l.DeletePost(in)
}
func (s *PlantServiceServer) GetPostList(ctx context.Context, in *plant.PostListReq) (*plant.PostListResp, error) {
l := logic.NewGetPostListLogic(ctx, s.svcCtx)
return l.GetPostList(in)
}
func (s *PlantServiceServer) GetPostDetail(ctx context.Context, in *plant.IdReq) (*plant.PostDetailResp, error) {
l := logic.NewGetPostDetailLogic(ctx, s.svcCtx)
return l.GetPostDetail(in)
}
func (s *PlantServiceServer) CommentPost(ctx context.Context, in *plant.CommentPostReq) (*plant.CommonResp, error) {
l := logic.NewCommentPostLogic(ctx, s.svcCtx)
return l.CommentPost(in)
}
func (s *PlantServiceServer) LikePost(ctx context.Context, in *plant.LikePostReq) (*plant.CommonResp, error) {
l := logic.NewLikePostLogic(ctx, s.svcCtx)
return l.LikePost(in)
}
func (s *PlantServiceServer) StarPost(ctx context.Context, in *plant.LikePostReq) (*plant.CommonResp, error) {
l := logic.NewStarPostLogic(ctx, s.svcCtx)
return l.StarPost(in)
}
func (s *PlantServiceServer) MediaCheckCallback(ctx context.Context, in *plant.MediaCheckCallbackReq) (*plant.CommonResp, error) {
l := logic.NewMediaCheckCallbackLogic(ctx, s.svcCtx)
return l.MediaCheckCallback(in)
}
// 话题
func (s *PlantServiceServer) GetTopicList(ctx context.Context, in *plant.IdReq) (*plant.TopicListResp, error) {
l := logic.NewGetTopicListLogic(ctx, s.svcCtx)
return l.GetTopicList(in)
}
func (s *PlantServiceServer) GetTopicDetail(ctx context.Context, in *plant.IdReq) (*plant.TopicInfo, error) {
l := logic.NewGetTopicDetailLogic(ctx, s.svcCtx)
return l.GetTopicDetail(in)
}
func (s *PlantServiceServer) CreateTopic(ctx context.Context, in *plant.CreateTopicReq) (*plant.CommonResp, error) {
l := logic.NewCreateTopicLogic(ctx, s.svcCtx)
return l.CreateTopic(in)
}
func (s *PlantServiceServer) UpdateTopic(ctx context.Context, in *plant.UpdateTopicReq) (*plant.CommonResp, error) {
l := logic.NewUpdateTopicLogic(ctx, s.svcCtx)
return l.UpdateTopic(in)
}
func (s *PlantServiceServer) DeleteTopic(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
l := logic.NewDeleteTopicLogic(ctx, s.svcCtx)
return l.DeleteTopic(in)
}
// 兑换
func (s *PlantServiceServer) GetExchangeItemList(ctx context.Context, in *plant.ExchangeItemListReq) (*plant.ExchangeItemListResp, error) {
l := logic.NewGetExchangeItemListLogic(ctx, s.svcCtx)
return l.GetExchangeItemList(in)
}
// ---- 兑换详情 ----
func (s *PlantServiceServer) GetExchangeItemDetail(ctx context.Context, in *plant.IdReq) (*plant.ExchangeItemInfo, error) {
return logic.NewGetExchangeItemDetailLogic(ctx, s.svcCtx).GetExchangeItemDetail(in)
l := logic.NewGetExchangeItemDetailLogic(ctx, s.svcCtx)
return l.GetExchangeItemDetail(in)
}
// ---- 百科分类详情 ----
func (s *PlantServiceServer) GetWikiClassDetail(ctx context.Context, in *plant.IdReq) (*plant.WikiClassInfo, error) {
return logic.NewGetWikiClassDetailLogic(ctx, s.svcCtx).GetWikiClassDetail(in)
func (s *PlantServiceServer) CreateExchangeItem(ctx context.Context, in *plant.CreateExchangeItemReq) (*plant.CommonResp, error) {
l := logic.NewCreateExchangeItemLogic(ctx, s.svcCtx)
return l.CreateExchangeItem(in)
}
func (s *PlantServiceServer) UpdateExchangeItem(ctx context.Context, in *plant.UpdateExchangeItemReq) (*plant.CommonResp, error) {
l := logic.NewUpdateExchangeItemLogic(ctx, s.svcCtx)
return l.UpdateExchangeItem(in)
}
func (s *PlantServiceServer) DeleteExchangeItem(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
l := logic.NewDeleteExchangeItemLogic(ctx, s.svcCtx)
return l.DeleteExchangeItem(in)
}
func (s *PlantServiceServer) CreateExchangeOrder(ctx context.Context, in *plant.CreateExchangeOrderReq) (*plant.CommonResp, error) {
l := logic.NewCreateExchangeOrderLogic(ctx, s.svcCtx)
return l.CreateExchangeOrder(in)
}
func (s *PlantServiceServer) GetMyExchangeOrders(ctx context.Context, in *plant.ExchangeOrderListReq) (*plant.ExchangeOrderListResp, error) {
l := logic.NewGetMyExchangeOrdersLogic(ctx, s.svcCtx)
return l.GetMyExchangeOrders(in)
}
func (s *PlantServiceServer) GetExchangeOrderList(ctx context.Context, in *plant.ExchangeOrderListReq) (*plant.ExchangeOrderListResp, error) {
l := logic.NewGetExchangeOrderListLogic(ctx, s.svcCtx)
return l.GetExchangeOrderList(in)
}
func (s *PlantServiceServer) UpdateExchangeOrder(ctx context.Context, in *plant.UpdateExchangeOrderReq) (*plant.CommonResp, error) {
l := logic.NewUpdateExchangeOrderLogic(ctx, s.svcCtx)
return l.UpdateExchangeOrder(in)
}
// 配置
func (s *PlantServiceServer) GetLevelConfigList(ctx context.Context, in *plant.PageReq) (*plant.LevelConfigListResp, error) {
l := logic.NewGetLevelConfigListLogic(ctx, s.svcCtx)
return l.GetLevelConfigList(in)
}
// ---- 等级配置详情 ----
func (s *PlantServiceServer) GetLevelConfigDetail(ctx context.Context, in *plant.IdReq) (*plant.LevelConfigInfo, error) {
return logic.NewGetLevelConfigDetailLogic(ctx, s.svcCtx).GetLevelConfigDetail(in)
l := logic.NewGetLevelConfigDetailLogic(ctx, s.svcCtx)
return l.GetLevelConfigDetail(in)
}
func (s *PlantServiceServer) CreateLevelConfig(ctx context.Context, in *plant.CreateLevelConfigReq) (*plant.CommonResp, error) {
l := logic.NewCreateLevelConfigLogic(ctx, s.svcCtx)
return l.CreateLevelConfig(in)
}
func (s *PlantServiceServer) UpdateLevelConfig(ctx context.Context, in *plant.UpdateLevelConfigReq) (*plant.CommonResp, error) {
l := logic.NewUpdateLevelConfigLogic(ctx, s.svcCtx)
return l.UpdateLevelConfig(in)
}
func (s *PlantServiceServer) DeleteLevelConfig(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
l := logic.NewDeleteLevelConfigLogic(ctx, s.svcCtx)
return l.DeleteLevelConfig(in)
}
func (s *PlantServiceServer) GetBadgeConfigList(ctx context.Context, in *plant.BadgeConfigListReq) (*plant.BadgeConfigListResp, error) {
l := logic.NewGetBadgeConfigListLogic(ctx, s.svcCtx)
return l.GetBadgeConfigList(in)
}
func (s *PlantServiceServer) GetBadgeConfigDetail(ctx context.Context, in *plant.IdReq) (*plant.BadgeConfigInfo, error) {
l := logic.NewGetBadgeConfigDetailLogic(ctx, s.svcCtx)
return l.GetBadgeConfigDetail(in)
}
// ---- 徽章配置树 ----
func (s *PlantServiceServer) GetBadgeConfigTree(ctx context.Context, in *plant.IdReq) (*plant.BadgeConfigTreeResp, error) {
return logic.NewGetBadgeConfigTreeLogic(ctx, s.svcCtx).GetBadgeConfigTree(in)
l := logic.NewGetBadgeConfigTreeLogic(ctx, s.svcCtx)
return l.GetBadgeConfigTree(in)
}
// ---- AI 历史 ----
func (s *PlantServiceServer) GetAiChatHistory(ctx context.Context, in *plant.AiChatHistoryReq) (*plant.AiChatHistoryResp, error) {
return logic.NewGetAiChatHistoryLogic(ctx, s.svcCtx).GetAiChatHistory(in)
func (s *PlantServiceServer) CreateBadgeConfig(ctx context.Context, in *plant.CreateBadgeConfigReq) (*plant.CommonResp, error) {
l := logic.NewCreateBadgeConfigLogic(ctx, s.svcCtx)
return l.CreateBadgeConfig(in)
}
func (s *PlantServiceServer) UpdateBadgeConfig(ctx context.Context, in *plant.UpdateBadgeConfigReq) (*plant.CommonResp, error) {
l := logic.NewUpdateBadgeConfigLogic(ctx, s.svcCtx)
return l.UpdateBadgeConfig(in)
}
func (s *PlantServiceServer) DeleteBadgeConfig(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
l := logic.NewDeleteBadgeConfigLogic(ctx, s.svcCtx)
return l.DeleteBadgeConfig(in)
}
func (s *PlantServiceServer) GetWikiClassDetail(ctx context.Context, in *plant.IdReq) (*plant.WikiClassInfo, error) {
l := logic.NewGetWikiClassDetailLogic(ctx, s.svcCtx)
return l.GetWikiClassDetail(in)
}
// AI
func (s *PlantServiceServer) GetAiChatHistory(ctx context.Context, in *plant.AiChatHistoryReq) (*plant.AiChatHistoryResp, error) {
l := logic.NewGetAiChatHistoryLogic(ctx, s.svcCtx)
return l.GetAiChatHistory(in)
}
func (s *PlantServiceServer) SaveAiChatHistory(ctx context.Context, in *plant.SaveAiChatHistoryReq) (*plant.CommonResp, error) {
l := logic.NewSaveAiChatHistoryLogic(ctx, s.svcCtx)
return l.SaveAiChatHistory(in)
}
func (s *PlantServiceServer) DeleteAiChatHistory(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
l := logic.NewDeleteAiChatHistoryLogic(ctx, s.svcCtx)
return l.DeleteAiChatHistory(in)
}
func (s *PlantServiceServer) ClearAiChatHistory(ctx context.Context, in *plant.GetProfileReq) (*plant.CommonResp, error) {
l := logic.NewClearAiChatHistoryLogic(ctx, s.svcCtx)
return l.ClearAiChatHistory(in)
}
func (s *PlantServiceServer) GetAiChatQuota(ctx context.Context, in *plant.GetProfileReq) (*plant.AiQuotaResp, error) {
l := logic.NewGetAiChatQuotaLogic(ctx, s.svcCtx)
return l.GetAiChatQuota(in)
}
// 快捷养护
func (s *PlantServiceServer) QuickCare(ctx context.Context, in *plant.QuickCareReq) (*plant.CommonResp, error) {
l := logic.NewQuickCareLogic(ctx, s.svcCtx)
return l.QuickCare(in)
}
// Banner
func (s *PlantServiceServer) CreateBanner(ctx context.Context, in *plant.CreateBannerReq) (*plant.CommonResp, error) {
l := logic.NewCreateBannerLogic(ctx, s.svcCtx)
return l.CreateBanner(in)
}
func (s *PlantServiceServer) UpdateBanner(ctx context.Context, in *plant.UpdateBannerReq) (*plant.CommonResp, error) {
l := logic.NewUpdateBannerLogic(ctx, s.svcCtx)
return l.UpdateBanner(in)
}
func (s *PlantServiceServer) DeleteBanner(ctx context.Context, in *plant.IdsReq) (*plant.CommonResp, error) {
l := logic.NewDeleteBannerLogic(ctx, s.svcCtx)
return l.DeleteBanner(in)
}
func (s *PlantServiceServer) GetBannerList(ctx context.Context, in *plant.BannerListReq) (*plant.BannerListResp, error) {
l := logic.NewGetBannerListLogic(ctx, s.svcCtx)
return l.GetBannerList(in)
}
func (s *PlantServiceServer) GetActiveBannerList(ctx context.Context, in *plant.PageReq) (*plant.BannerListResp, error) {
l := logic.NewGetActiveBannerListLogic(ctx, s.svcCtx)
return l.GetActiveBannerList(in)
}
+10 -3
View File
@@ -3,15 +3,18 @@ package svc
import (
plantModel "sundynix-micro-go/app/plant/model"
"sundynix-micro-go/app/plant/rpc/internal/config"
"sundynix-micro-go/app/system/rpc/systemservice"
"github.com/zeromicro/go-zero/core/logx"
"github.com/zeromicro/go-zero/zrpc"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type ServiceContext struct {
Config config.Config
DB *gorm.DB
Config config.Config
DB *gorm.DB
SystemRpc systemservice.SystemService
}
func NewServiceContext(c config.Config) *ServiceContext {
@@ -55,5 +58,9 @@ func NewServiceContext(c config.Config) *ServiceContext {
logx.Errorf("数据库迁移失败: %v", err)
}
return &ServiceContext{Config: c, DB: db}
// 初始化 System RPC 客户端
sysRpc := systemservice.NewSystemService(zrpc.MustNewClient(c.SystemRpc))
logx.Info("[plant-rpc] ✅ SystemRpc 已连接")
return &ServiceContext{Config: c, DB: db, SystemRpc: sysRpc}
}