From 49cc50ff4e7191199736e660eb7ddd2ed685bf32 Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Mon, 18 Sep 2023 15:57:36 +0800 Subject: [PATCH 1/3] fix --- .../logic/getproducttemplatetagslogic.go | 50 +++++++++---------- .../internal/types/types.go | 19 +++++-- server_api/product-template-tag.api | 17 +++++-- 3 files changed, 50 insertions(+), 36 deletions(-) diff --git a/server/product-template-tag/internal/logic/getproducttemplatetagslogic.go b/server/product-template-tag/internal/logic/getproducttemplatetagslogic.go index c0384d90..6563272a 100644 --- a/server/product-template-tag/internal/logic/getproducttemplatetagslogic.go +++ b/server/product-template-tag/internal/logic/getproducttemplatetagslogic.go @@ -54,33 +54,31 @@ func (l *GetProductTemplateTagsLogic) GetProductTemplateTags(req *types.GetProdu logx.Error(err) return } - var colors interface{} + var colors map[string][]types.ColorsItem if logoInfo.Metadata == nil || *logoInfo.Metadata == "" { - // 返回固定模板A1a - productTemplateTags, err = l.svcCtx.AllModels.FsProductTemplateTags.GetListByTagNames(l.ctx, []string{"A1"}, req.Limit, 1, "`id` DESC") - if err != nil { - logx.Error(err) - return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "failed to get template tags") - } - } else { - //解析元数据 - var metaData map[string]interface{} - if err = json.Unmarshal([]byte(*logoInfo.Metadata), &metaData); err != nil { - logx.Error(err) - return resp.SetStatusWithMessage(basic.CodeJsonErr, "failed to parse user metadata") - } - colors = metaData["colors"] - var templateTagNameList []string - b, _ := json.Marshal(metaData["template_tagid"]) - if err = json.Unmarshal(b, &templateTagNameList); err != nil { - logx.Error(err) - return resp.SetStatusWithMessage(basic.CodeJsonErr, "invalid format of metadata`s template_tagid") - } - productTemplateTags, err = l.svcCtx.AllModels.FsProductTemplateTags.GetListByTagNames(l.ctx, templateTagNameList, req.Limit, 1, "id DESC") - if err != nil { - logx.Error(err) - return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "failed to get template tags") - } + return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "logo info`s metadata is not set") + } + //解析元数据 + var metaData map[string]interface{} + if err = json.Unmarshal([]byte(*logoInfo.Metadata), &metaData); err != nil { + logx.Error(err) + return resp.SetStatusWithMessage(basic.CodeJsonErr, "failed to parse user metadata") + } + b, _ := json.Marshal(metaData["colors"]) + if err = json.Unmarshal(b, &colors); err != nil { + logx.Error(err) + return resp.SetStatusWithMessage(basic.CodeJsonErr, "invalid format of metadata`s colors") + } + var templateTagNameList []string + b, _ = json.Marshal(metaData["template_tagid"]) + if err = json.Unmarshal(b, &templateTagNameList); err != nil { + logx.Error(err) + return resp.SetStatusWithMessage(basic.CodeJsonErr, "invalid format of metadata`s template_tagid") + } + productTemplateTags, err = l.svcCtx.AllModels.FsProductTemplateTags.GetListByTagNames(l.ctx, templateTagNameList, req.Limit, 1, "id DESC") + if err != nil { + logx.Error(err) + return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "failed to get template tags") } //资源id集合 resourceIds := make([]string, 0, 5) diff --git a/server/product-template-tag/internal/types/types.go b/server/product-template-tag/internal/types/types.go index e81cb040..eeca764b 100644 --- a/server/product-template-tag/internal/types/types.go +++ b/server/product-template-tag/internal/types/types.go @@ -10,11 +10,20 @@ type GetProductTemplateTagsReq struct { } type GetProductTemplateTagsRsp struct { - Id int64 `json:"id"` - TemplateTag string `json:"template_tag"` - Cover string `json:"cover"` - CoverMetadata interface{} `json:"cover_metadata"` - Colors interface{} `json:"colors"` + Id int64 `json:"id"` + TemplateTag string `json:"template_tag"` + Cover string `json:"cover"` + CoverMetadata interface{} `json:"cover_metadata"` + Colors map[string][]ColorsItem `json:"colors"` +} + +type ColorsItem struct { + Color []ColorItem `json:"color"` +} + +type ColorItem struct { + Value string `json:"value"` + Selected bool `json:"selected"` } type Request struct { diff --git a/server_api/product-template-tag.api b/server_api/product-template-tag.api index d663e109..94d2d35e 100644 --- a/server_api/product-template-tag.api +++ b/server_api/product-template-tag.api @@ -20,9 +20,16 @@ type GetProductTemplateTagsReq { Limit int `form:"limit"` } type GetProductTemplateTagsRsp { - Id int64 `json:"id"` - TemplateTag string `json:"template_tag"` - Cover string `json:"cover"` - CoverMetadata interface{} `json:"cover_metadata"` - Colors interface{} `json:"colors"` + Id int64 `json:"id"` + TemplateTag string `json:"template_tag"` + Cover string `json:"cover"` + CoverMetadata interface{} `json:"cover_metadata"` + Colors map[string][]ColorsItem `json:"colors"` +} +type ColorsItem { + Color []ColorItem `json:"color"` +} +type ColorItem { + Value string `json:"value"` + Selected bool `json:"selected"` } \ No newline at end of file From 49785df983771f7068df30bac834e1840e3cb80f Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Mon, 18 Sep 2023 17:53:05 +0800 Subject: [PATCH 2/3] fix --- .../logic/getproducttemplatetagslogic.go | 38 +++++++++++++++---- .../internal/types/types.go | 18 ++++----- server_api/product-template-tag.api | 17 ++++----- service/repositories/image_handle.go | 16 +++++--- 4 files changed, 56 insertions(+), 33 deletions(-) diff --git a/server/product-template-tag/internal/logic/getproducttemplatetagslogic.go b/server/product-template-tag/internal/logic/getproducttemplatetagslogic.go index 6563272a..fd123c82 100644 --- a/server/product-template-tag/internal/logic/getproducttemplatetagslogic.go +++ b/server/product-template-tag/internal/logic/getproducttemplatetagslogic.go @@ -36,6 +36,16 @@ func NewGetProductTemplateTagsLogic(ctx context.Context, svcCtx *svc.ServiceCont // func (l *GetProductTemplateTagsLogic) AfterLogic(w http.ResponseWriter, r *http.Request, resp *basic.Response) { // // httpx.OkJsonCtx(r.Context(), w, resp) // } +type logoSelect struct { + LogoSelected struct { + LogoSelectedId int `json:"logo_selected_id"` + TemplateTagSelected struct { + TemplateTag string `json:"template_tag"` + Color [][]string `json:"color"` + SelectedIndex int `json:"selected_index"` + } `json:"template_tag_selected"` + } `json:"logo_selected"` +} func (l *GetProductTemplateTagsLogic) GetProductTemplateTags(req *types.GetProductTemplateTagsReq, userinfo *auth.UserInfo) (resp *basic.Response) { if req.Limit <= 0 || req.Limit > 100 { @@ -54,7 +64,6 @@ func (l *GetProductTemplateTagsLogic) GetProductTemplateTags(req *types.GetProdu logx.Error(err) return } - var colors map[string][]types.ColorsItem if logoInfo.Metadata == nil || *logoInfo.Metadata == "" { return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "logo info`s metadata is not set") } @@ -64,16 +73,29 @@ func (l *GetProductTemplateTagsLogic) GetProductTemplateTags(req *types.GetProdu logx.Error(err) return resp.SetStatusWithMessage(basic.CodeJsonErr, "failed to parse user metadata") } - b, _ := json.Marshal(metaData["colors"]) - if err = json.Unmarshal(b, &colors); err != nil { + var mapTemplateTag map[string][]types.ColorsItem + b, _ := json.Marshal(metaData["template_tag"]) + if err = json.Unmarshal(b, &mapTemplateTag); err != nil { logx.Error(err) return resp.SetStatusWithMessage(basic.CodeJsonErr, "invalid format of metadata`s colors") } + //获取选中的颜色数据 + if logoInfo.UserInfoMetadata != nil && *logoInfo.UserInfoMetadata != "" { + var logoSelectInfo logoSelect + if err = json.Unmarshal([]byte(*logoInfo.UserInfoMetadata), &logoSelectInfo); err != nil { + logx.Error(err) + return resp.SetStatusWithMessage(basic.CodeJsonErr, "failed to parse user info metadata") + } + //设置选中 + key := logoSelectInfo.LogoSelected.TemplateTagSelected.TemplateTag + index := logoSelectInfo.LogoSelected.TemplateTagSelected.SelectedIndex + if _, ok := mapTemplateTag[key]; ok { + mapTemplateTag[key][index].Selected = true + } + } var templateTagNameList []string - b, _ = json.Marshal(metaData["template_tagid"]) - if err = json.Unmarshal(b, &templateTagNameList); err != nil { - logx.Error(err) - return resp.SetStatusWithMessage(basic.CodeJsonErr, "invalid format of metadata`s template_tagid") + for templateTag, _ := range mapTemplateTag { + templateTagNameList = append(templateTagNameList, templateTag) } productTemplateTags, err = l.svcCtx.AllModels.FsProductTemplateTags.GetListByTagNames(l.ctx, templateTagNameList, req.Limit, 1, "id DESC") if err != nil { @@ -101,6 +123,8 @@ func (l *GetProductTemplateTagsLogic) GetProductTemplateTags(req *types.GetProdu } list := make([]types.GetProductTemplateTagsRsp, 0, len(productTemplateTags)) for _, v := range productTemplateTags { + colors := make([]types.ColorsItem, 0, 10) + colors = append(colors, mapTemplateTag[*v.TemplateTag]...) list = append(list, types.GetProductTemplateTagsRsp{ Id: v.Id, TemplateTag: *v.TemplateTag, diff --git a/server/product-template-tag/internal/types/types.go b/server/product-template-tag/internal/types/types.go index eeca764b..574a34c6 100644 --- a/server/product-template-tag/internal/types/types.go +++ b/server/product-template-tag/internal/types/types.go @@ -10,20 +10,16 @@ type GetProductTemplateTagsReq struct { } type GetProductTemplateTagsRsp struct { - Id int64 `json:"id"` - TemplateTag string `json:"template_tag"` - Cover string `json:"cover"` - CoverMetadata interface{} `json:"cover_metadata"` - Colors map[string][]ColorsItem `json:"colors"` + Id int64 `json:"id"` + TemplateTag string `json:"template_tag"` + Cover string `json:"cover"` + CoverMetadata interface{} `json:"cover_metadata"` + Colors []ColorsItem `json:"colors"` } type ColorsItem struct { - Color []ColorItem `json:"color"` -} - -type ColorItem struct { - Value string `json:"value"` - Selected bool `json:"selected"` + Color []string `json:"color"` + Selected bool `json:"selected"` } type Request struct { diff --git a/server_api/product-template-tag.api b/server_api/product-template-tag.api index 94d2d35e..30329047 100644 --- a/server_api/product-template-tag.api +++ b/server_api/product-template-tag.api @@ -20,16 +20,13 @@ type GetProductTemplateTagsReq { Limit int `form:"limit"` } type GetProductTemplateTagsRsp { - Id int64 `json:"id"` - TemplateTag string `json:"template_tag"` - Cover string `json:"cover"` - CoverMetadata interface{} `json:"cover_metadata"` - Colors map[string][]ColorsItem `json:"colors"` + Id int64 `json:"id"` + TemplateTag string `json:"template_tag"` + Cover string `json:"cover"` + CoverMetadata interface{} `json:"cover_metadata"` + Colors []ColorsItem `json:"colors"` } type ColorsItem { - Color []ColorItem `json:"color"` -} -type ColorItem { - Value string `json:"value"` - Selected bool `json:"selected"` + Color []string `json:"color"` + Selected bool `json:"selected"` } \ No newline at end of file diff --git a/service/repositories/image_handle.go b/service/repositories/image_handle.go index a18c70de..c47f600d 100644 --- a/service/repositories/image_handle.go +++ b/service/repositories/image_handle.go @@ -54,15 +54,16 @@ type ( GuestId int64 `json:"guest_id"` } LogoInfoRes struct { - Metadata *string `json:"metadata"` - LogoUrl *string `json:"logo_url"` + Metadata *string `json:"metadata"` + LogoUrl *string `json:"logo_url"` + UserInfoMetadata *string `json:"user_info_metadata"` } ) func (l *defaultImageHandle) LogoInfo(ctx context.Context, in *LogoInfoReq) (*LogoInfoRes, error) { var metadata *string var logoUrl *string - + var userInfoMetadata *string // 更新用户信息 var module = "profile" userInfoGorm := l.MysqlConn.Where("module = ?", module) @@ -82,6 +83,10 @@ func (l *defaultImageHandle) LogoInfo(ctx context.Context, in *LogoInfoReq) (*Lo return nil, err } } + if userInfo.Id != 0 { + tmp := string(*userInfo.Metadata) + userInfoMetadata = &tmp + } var userMaterialInfo gmodel.FsUserMaterial userMaterialModel := gmodel.NewFsUserMaterialModel(l.MysqlConn) @@ -134,8 +139,9 @@ func (l *defaultImageHandle) LogoInfo(ctx context.Context, in *LogoInfoReq) (*Lo logoUrl = userMaterialInfo.ResourceUrl } return &LogoInfoRes{ - Metadata: metadata, - LogoUrl: logoUrl, + Metadata: metadata, + LogoUrl: logoUrl, + UserInfoMetadata: userInfoMetadata, }, nil } From c12c24d03bf7afae4d4e5ade8b1e97f3c8a37791 Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Mon, 18 Sep 2023 18:18:30 +0800 Subject: [PATCH 3/3] fix --- .../logic/getproducttemplatetagslogic.go | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/server/product-template-tag/internal/logic/getproducttemplatetagslogic.go b/server/product-template-tag/internal/logic/getproducttemplatetagslogic.go index fd123c82..c76f2048 100644 --- a/server/product-template-tag/internal/logic/getproducttemplatetagslogic.go +++ b/server/product-template-tag/internal/logic/getproducttemplatetagslogic.go @@ -48,6 +48,7 @@ type logoSelect struct { } func (l *GetProductTemplateTagsLogic) GetProductTemplateTags(req *types.GetProductTemplateTagsReq, userinfo *auth.UserInfo) (resp *basic.Response) { + userinfo.UserId = 127 if req.Limit <= 0 || req.Limit > 100 { req.Limit = 5 } @@ -73,13 +74,14 @@ func (l *GetProductTemplateTagsLogic) GetProductTemplateTags(req *types.GetProdu logx.Error(err) return resp.SetStatusWithMessage(basic.CodeJsonErr, "failed to parse user metadata") } - var mapTemplateTag map[string][]types.ColorsItem + var mapTemplateTag map[string][][]string b, _ := json.Marshal(metaData["template_tag"]) if err = json.Unmarshal(b, &mapTemplateTag); err != nil { logx.Error(err) - return resp.SetStatusWithMessage(basic.CodeJsonErr, "invalid format of metadata`s colors") + return resp.SetStatusWithMessage(basic.CodeJsonErr, "invalid format of metadata`s template_tag") } //获取选中的颜色数据 + mapSelectColor := make(map[string]int) //key是模板标签val是选中的索引 if logoInfo.UserInfoMetadata != nil && *logoInfo.UserInfoMetadata != "" { var logoSelectInfo logoSelect if err = json.Unmarshal([]byte(*logoInfo.UserInfoMetadata), &logoSelectInfo); err != nil { @@ -88,9 +90,8 @@ func (l *GetProductTemplateTagsLogic) GetProductTemplateTags(req *types.GetProdu } //设置选中 key := logoSelectInfo.LogoSelected.TemplateTagSelected.TemplateTag - index := logoSelectInfo.LogoSelected.TemplateTagSelected.SelectedIndex if _, ok := mapTemplateTag[key]; ok { - mapTemplateTag[key][index].Selected = true + mapSelectColor[key] = logoSelectInfo.LogoSelected.TemplateTagSelected.SelectedIndex } } var templateTagNameList []string @@ -122,14 +123,25 @@ func (l *GetProductTemplateTagsLogic) GetProductTemplateTags(req *types.GetProdu mapResourceMetadata[*v.ResourceUrl] = metadata } list := make([]types.GetProductTemplateTagsRsp, 0, len(productTemplateTags)) - for _, v := range productTemplateTags { + for _, templateInfo := range productTemplateTags { colors := make([]types.ColorsItem, 0, 10) - colors = append(colors, mapTemplateTag[*v.TemplateTag]...) + for index, v := range mapTemplateTag[*templateInfo.TemplateTag] { + selected := false + if selectIndex, ok := mapSelectColor[*templateInfo.TemplateTag]; ok { + if index == selectIndex { + selected = true + } + } + colors = append(colors, types.ColorsItem{ + Color: v, + Selected: selected, + }) + } list = append(list, types.GetProductTemplateTagsRsp{ - Id: v.Id, - TemplateTag: *v.TemplateTag, - Cover: *v.Cover, - CoverMetadata: mapResourceMetadata[*v.Cover], + Id: templateInfo.Id, + TemplateTag: *templateInfo.TemplateTag, + Cover: *templateInfo.Cover, + CoverMetadata: mapResourceMetadata[*templateInfo.Cover], Colors: colors, }) }