Merge branch 'develop' of https://gitee.com/fusenpack/fusenapi into develop

This commit is contained in:
eson 2023-09-19 19:16:30 +08:00
commit fd4646ba11
3 changed files with 14 additions and 76 deletions

View File

@ -73,9 +73,9 @@ func (l *GetProductTemplateTagsLogic) GetProductTemplateTags(req *types.GetProdu
logx.Error(err) logx.Error(err)
return resp.SetStatusWithMessage(basic.CodeJsonErr, "failed to parse user metadata") return resp.SetStatusWithMessage(basic.CodeJsonErr, "failed to parse user metadata")
} }
var mapTemplateTag map[string][][]string var mapMaterialTemplateTag map[string][][]string
b, _ := json.Marshal(metaData["template_tag"]) b, _ := json.Marshal(metaData["template_tag"])
if err = json.Unmarshal(b, &mapTemplateTag); err != nil { if err = json.Unmarshal(b, &mapMaterialTemplateTag); err != nil {
logx.Error(err) logx.Error(err)
return resp.SetStatusWithMessage(basic.CodeJsonErr, "invalid format of metadata`s template_tag") return resp.SetStatusWithMessage(basic.CodeJsonErr, "invalid format of metadata`s template_tag")
} }
@ -90,12 +90,12 @@ func (l *GetProductTemplateTagsLogic) GetProductTemplateTags(req *types.GetProdu
} }
//设置选中 //设置选中
key := logoSelectInfo.LogoSelected.TemplateTagSelected.TemplateTag key := logoSelectInfo.LogoSelected.TemplateTagSelected.TemplateTag
if _, ok := mapTemplateTag[key]; ok { if _, ok := mapMaterialTemplateTag[key]; ok {
mapSelectColor[key] = logoSelectInfo.LogoSelected.TemplateTagSelected.SelectedIndex mapSelectColor[key] = logoSelectInfo.LogoSelected.TemplateTagSelected.SelectedIndex
} }
} }
var templateTagNameList []string var templateTagNameList []string
for templateTag, _ := range mapTemplateTag { for templateTag, _ := range mapMaterialTemplateTag {
templateTagNameList = append(templateTagNameList, templateTag) templateTagNameList = append(templateTagNameList, templateTag)
} }
productTemplateTags, err = l.svcCtx.AllModels.FsProductTemplateTags.GetListByTagNames(l.ctx, templateTagNameList, req.Limit, 1, "id DESC") productTemplateTags, err = l.svcCtx.AllModels.FsProductTemplateTags.GetListByTagNames(l.ctx, templateTagNameList, req.Limit, 1, "id DESC")
@ -127,11 +127,15 @@ func (l *GetProductTemplateTagsLogic) GetProductTemplateTags(req *types.GetProdu
colors := make([][]string, 0, 10) colors := make([][]string, 0, 10)
SelectedColorIndex := 0 SelectedColorIndex := 0
isDefaultTemplateTag := false isDefaultTemplateTag := false
if colorsSet, ok := mapTemplateTag[*templateInfo.TemplateTag]; ok { //查看用户素材中标签对应的颜色
if colorsSet, ok := mapMaterialTemplateTag[*templateInfo.TemplateTag]; ok {
//是不是选中的标签
if selectIndex, ok := mapSelectColor[*templateInfo.TemplateTag]; ok { if selectIndex, ok := mapSelectColor[*templateInfo.TemplateTag]; ok {
isDefaultTemplateTag = true isDefaultTemplateTag = true
//标签中选中的索引
SelectedColorIndex = selectIndex SelectedColorIndex = selectIndex
} }
//标签颜色
colors = colorsSet colors = colorsSet
} }
var templateTagGroups []interface{} var templateTagGroups []interface{}

View File

@ -110,17 +110,8 @@ func (w *wsConnectItem) renderImage(data []byte) {
//用户id赋值 //用户id赋值
renderImageData.RenderData.UserId = w.userId renderImageData.RenderData.UserId = w.userId
renderImageData.RenderData.GuestId = w.guestId renderImageData.RenderData.GuestId = w.guestId
var (
model3dInfo *gmodel.FsProductModel3d
productTemplate *gmodel.FsProductTemplateV2
productSize *gmodel.FsProductSize
)
//获取信息 //获取信息
if renderImageData.RenderData.ProductSizeId > 0 { productSize, productTemplate, model3dInfo, err := w.getProductRelateionInfo(&renderImageData)
productSize, productTemplate, model3dInfo, err = w.getProductRelateionInfoWithSizeId(&renderImageData)
} else {
productSize, productTemplate, model3dInfo, err = w.getProductRelateionInfoWithNoSizeId(&renderImageData)
}
if err != nil { if err != nil {
logx.Error(err) logx.Error(err)
return return
@ -190,11 +181,6 @@ func (w *wsConnectItem) renderImage(data []byte) {
} }
//发送合图完毕阶段消息 //发送合图完毕阶段消息
w.sendCombineImageStepResponseMessage(renderImageData.RenderId, combineImage, productSize.Id, model3dInfo.Id, productTemplate.Id, res.DiffTimeLogoCombine, res.DiffTimeUploadFile) w.sendCombineImageStepResponseMessage(renderImageData.RenderId, combineImage, productSize.Id, model3dInfo.Id, productTemplate.Id, res.DiffTimeLogoCombine, res.DiffTimeUploadFile)
//如果指定指定只返回刀版图
if renderImageData.OnlyReturnCombineImage {
logx.Info("云渲染传入only_return_combine_image = true则不走unity云渲染,只返回刀版图render_id:", renderImageData.RenderId)
return
}
//获取唯一id //获取唯一id
taskId := w.genRenderTaskId(combineImage, renderImageData, model3dInfo, productTemplate, element) taskId := w.genRenderTaskId(combineImage, renderImageData, model3dInfo, productTemplate, element)
//查询有没有缓存的资源,有就返回 //查询有没有缓存的资源,有就返回
@ -224,57 +210,8 @@ func (w *wsConnectItem) renderImage(data []byte) {
} }
} }
// 获取模板相关信息(指定尺寸)(尺寸 -> 模型 ->模板) // 获取模板相关信息
func (w *wsConnectItem) getProductRelateionInfoWithSizeId(renderImageData *websocket_data.RenderImageReqMsg) (productSize *gmodel.FsProductSize, productTemplate *gmodel.FsProductTemplateV2, model3d *gmodel.FsProductModel3d, err error) { func (w *wsConnectItem) getProductRelateionInfo(renderImageData *websocket_data.RenderImageReqMsg) (productSize *gmodel.FsProductSize, productTemplate *gmodel.FsProductTemplateV2, model3d *gmodel.FsProductModel3d, err error) {
productSize, err = w.logic.svcCtx.AllModels.FsProductSize.FindOneByIdProductId(w.logic.ctx, renderImageData.RenderData.ProductSizeId, renderImageData.RenderData.ProductId)
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
w.renderErrResponse(renderImageData.RenderId, renderImageData.RenderData.TemplateTag, "", "找不到产品的指定尺寸", renderImageData.RenderData.ProductId, w.userId, w.guestId, 0, 0, renderImageData.RenderData.ProductSizeId, 0)
logx.Error("product size is not found")
return
}
w.renderErrResponse(renderImageData.RenderId, renderImageData.RenderData.TemplateTag, "", "获取产品的指定尺寸失败", renderImageData.RenderData.ProductId, w.userId, w.guestId, 0, 0, renderImageData.RenderData.ProductSizeId, 0)
logx.Error("failed to get product size:", err)
return nil, nil, nil, err
}
//获取模型
model3d, err = w.logic.svcCtx.AllModels.FsProductModel3d.GetOneBySizeIdTag(w.logic.ctx, productSize.Id, constants.TAG_MODEL)
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
w.renderErrResponse(renderImageData.RenderId, renderImageData.RenderData.TemplateTag, "", "产品尺寸对应的模型不存在", renderImageData.RenderData.ProductId, w.userId, w.guestId, 0, 0, productSize.Id, 0)
logx.Error("product model is not found")
return nil, nil, nil, err
}
w.renderErrResponse(renderImageData.RenderId, renderImageData.RenderData.TemplateTag, "", "获取产品尺寸对应的模型失败", renderImageData.RenderData.ProductId, w.userId, w.guestId, 0, 0, productSize.Id, 0)
logx.Error("failed to get product model:", err)
return nil, nil, nil, err
}
//获取模板
productTemplate, err = w.logic.svcCtx.AllModels.FsProductTemplateV2.FindOneCloudRenderByProductIdModelIdTemplateTag(w.logic.ctx, renderImageData.RenderData.ProductId, model3d.Id, renderImageData.RenderData.TemplateTag)
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
w.renderErrResponse(renderImageData.RenderId, renderImageData.RenderData.TemplateTag, "", "找不到对应的模板", renderImageData.RenderData.ProductId, w.userId, w.guestId, 0, model3d.Id, productSize.Id, 0)
logx.Error("找不到对应的模板")
return nil, nil, nil, err
}
w.renderErrResponse(renderImageData.RenderId, renderImageData.RenderData.TemplateTag, "", "获取对应的模板失败", renderImageData.RenderData.ProductId, w.userId, w.guestId, 0, model3d.Id, productSize.Id, 0)
logx.Error("获取对应的模板失败:", err)
return nil, nil, nil, err
}
if *productTemplate.ElementModelId <= 0 {
w.renderErrResponse(renderImageData.RenderId, renderImageData.RenderData.TemplateTag, "", "模板未开启云渲染", renderImageData.RenderData.ProductId, w.userId, w.guestId, productTemplate.Id, model3d.Id, productSize.Id, 0)
return nil, nil, nil, errors.New("模板未开启云渲染")
}
if productTemplate.TemplateInfo == nil || *productTemplate.TemplateInfo == "" {
w.renderErrResponse(renderImageData.RenderId, renderImageData.RenderData.TemplateTag, "", "渲染模板的设计信息是空的", renderImageData.RenderData.ProductId, w.userId, w.guestId, productTemplate.Id, model3d.Id, productSize.Id, 0)
return nil, nil, nil, errors.New("渲染模板的设计信息是空的")
}
return
}
// 获取模板相关信息(不指定尺寸)
func (w *wsConnectItem) getProductRelateionInfoWithNoSizeId(renderImageData *websocket_data.RenderImageReqMsg) (productSize *gmodel.FsProductSize, productTemplate *gmodel.FsProductTemplateV2, model3d *gmodel.FsProductModel3d, err error) {
//指定尺寸(尺寸 -> 模型 ->模板)
//获取模板 //获取模板
productTemplate, err = w.logic.svcCtx.AllModels.FsProductTemplateV2.FindOneCloudRenderByProductIdTemplateTag(w.logic.ctx, renderImageData.RenderData.ProductId, renderImageData.RenderData.TemplateTag, "sort ASC") productTemplate, err = w.logic.svcCtx.AllModels.FsProductTemplateV2.FindOneCloudRenderByProductIdTemplateTag(w.logic.ctx, renderImageData.RenderData.ProductId, renderImageData.RenderData.TemplateTag, "sort ASC")
if err != nil { if err != nil {
@ -308,7 +245,6 @@ func (w *wsConnectItem) getProductRelateionInfoWithNoSizeId(renderImageData *web
w.renderErrResponse(renderImageData.RenderId, renderImageData.RenderData.TemplateTag, "", "获取对应尺寸失败", renderImageData.RenderData.ProductId, w.userId, w.guestId, productTemplate.Id, model3d.Id, 0, 0) w.renderErrResponse(renderImageData.RenderId, renderImageData.RenderData.TemplateTag, "", "获取对应尺寸失败", renderImageData.RenderData.ProductId, w.userId, w.guestId, productTemplate.Id, model3d.Id, 0, 0)
return nil, nil, nil, errors.New("获取对应尺寸失败") return nil, nil, nil, errors.New("获取对应尺寸失败")
} }
renderImageData.RenderData.ProductSizeId = productSize.Id
return return
} }

View File

@ -10,9 +10,8 @@ type DataTransferData struct {
// websocket接受要云渲染处理的数据 // websocket接受要云渲染处理的数据
type RenderImageReqMsg struct { type RenderImageReqMsg struct {
RenderId string `json:"render_id"` //渲染id RenderId string `json:"render_id"` //渲染id
OnlyReturnCombineImage bool `json:"only_return_combine_image"` //是否只返回刀版图 RenderData RenderData `json:"render_data"` //渲染主要参数
RenderData RenderData `json:"render_data"`
} }
type RenderData struct { type RenderData struct {
TemplateTag string `json:"template_tag"` //模板标签(必须) TemplateTag string `json:"template_tag"` //模板标签(必须)
@ -25,7 +24,6 @@ type RenderData struct {
Address string `json:"address"` //地址(可选) Address string `json:"address"` //地址(可选)
Phone string `json:"phone"` //电话(可选) Phone string `json:"phone"` //电话(可选)
Qrcode string `json:"qrcode"` //二维码(可选) Qrcode string `json:"qrcode"` //二维码(可选)
ProductSizeId int64 `json:"product_size_id"` //尺寸id(可选)
UserId int64 `json:"user_id"` //用户id(websocket连接建立再赋值) UserId int64 `json:"user_id"` //用户id(websocket连接建立再赋值)
GuestId int64 `json:"guest_id"` //游客id(websocket连接建立再赋值) GuestId int64 `json:"guest_id"` //游客id(websocket连接建立再赋值)
} }