Files
sundynix-micro-be/app/plant/api/internal/logic/myPlant/createPlantLogic.go
T
2026-05-23 13:55:05 +08:00

56 lines
1.5 KiB
Go

package myPlant
import (
"context"
"fmt"
"github.com/zeromicro/go-zero/core/logx"
"sundynix-micro-go/app/plant/api/internal/svc"
"sundynix-micro-go/app/plant/api/internal/types"
"sundynix-micro-go/app/plant/rpc/plant"
)
type CreatePlantLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
func NewCreatePlantLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreatePlantLogic {
return &CreatePlantLogic{Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx}
}
func (l *CreatePlantLogic) CreatePlant(req *types.CreatePlantReq) error {
userId := fmt.Sprintf("%v", l.ctx.Value("userId"))
imgIds := req.ImgIds
if len(imgIds) == 0 {
imgIds = req.OssIds
}
resp, err := l.svcCtx.PlantRpc.CreatePlant(l.ctx, &plant.CreatePlantReq{
UserId: userId, Name: req.Name, PlantTime: req.PlantTime, Placement: req.Placement,
PotMaterial: req.PotMaterial, PotSize: req.PotSize, Sunlight: req.Sunlight,
PlantingMaterial: req.PlantingMaterial, ImgIds: imgIds,
})
if err != nil {
return err
}
if resp == nil || resp.Msg == "" || resp.Msg == "ok" {
return nil
}
for _, planReq := range req.CarePlans {
if planReq.Name == "" || planReq.Period <= 0 {
continue
}
if _, err = l.svcCtx.PlantRpc.AddCarePlan(l.ctx, &plant.AddCarePlanReq{
UserId: userId,
PlantId: resp.Msg,
Name: planReq.Name,
Icon: planReq.Icon,
TargetAction: planReq.TargetAction,
Period: int32(planReq.Period),
}); err != nil {
return err
}
}
return nil
}