From 13d91699f011f3ca3464303aa55339cbea55a84a Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Wed, 6 Sep 2023 14:35:42 +0800 Subject: [PATCH 1/4] fix --- .../logic/getproducttemplatetagslogic.go | 29 +++++++++++++++---- .../internal/types/types.go | 7 +++-- .../logic/getrecommandproductlistlogic.go | 24 +++------------ .../internal/logic/gettagproductlistlogic.go | 19 +++--------- .../homepagerecommendproductlistlogic.go | 19 +++--------- server_api/product-template-tag.api | 7 +++-- utils/s3url_to_s3id/s3url_to_s3id.go | 16 ++++++++++ 7 files changed, 60 insertions(+), 61 deletions(-) create mode 100644 utils/s3url_to_s3id/s3url_to_s3id.go diff --git a/server/product-template-tag/internal/logic/getproducttemplatetagslogic.go b/server/product-template-tag/internal/logic/getproducttemplatetagslogic.go index 38fcaf8b..b3f9fd90 100644 --- a/server/product-template-tag/internal/logic/getproducttemplatetagslogic.go +++ b/server/product-template-tag/internal/logic/getproducttemplatetagslogic.go @@ -7,7 +7,7 @@ import ( "fusenapi/model/gmodel" "fusenapi/utils/auth" "fusenapi/utils/basic" - + "fusenapi/utils/s3url_to_s3id" "gorm.io/gorm" "fusenapi/server/product-template-tag/internal/svc" @@ -99,13 +99,32 @@ func (l *GetProductTemplateTagsLogic) GetProductTemplateTags(req *types.GetProdu } } } - + //资源id集合 + resourceIds := make([]string, 0, 5) + for _, v := range productTemplateTags { + resourceIds = append(resourceIds, s3url_to_s3id.GetS3ResourceIdFormUrl(*v.Cover)) + } + //根据resourceUrls找到对应的元数据 + resourceMetadataList, err := l.svcCtx.AllModels.FsResource.FindAllByResourceIds(l.ctx, resourceIds) + if err != nil { + logx.Error(err) + return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "failed to get resource list") + } + mapResourceMetadata := make(map[string]map[string]interface{}) + for _, v := range resourceMetadataList { + var metadata map[string]interface{} + if v.Metadata != nil { + _ = json.Unmarshal([]byte(*v.Metadata), &metadata) + } + mapResourceMetadata[*v.ResourceUrl] = metadata + } list := make([]types.GetProductTemplateTagsRsp, 0, len(productTemplateTags)) for _, v := range productTemplateTags { list = append(list, types.GetProductTemplateTagsRsp{ - Id: v.Id, - TemplateTag: *v.TemplateTag, - Cover: *v.Cover, + Id: v.Id, + TemplateTag: *v.TemplateTag, + Cover: *v.Cover, + CoverMetadata: mapResourceMetadata[*v.Cover], }) } return resp.SetStatusWithMessage(basic.CodeOK, "success", list) diff --git a/server/product-template-tag/internal/types/types.go b/server/product-template-tag/internal/types/types.go index 60cb80ca..6c7f6950 100644 --- a/server/product-template-tag/internal/types/types.go +++ b/server/product-template-tag/internal/types/types.go @@ -10,9 +10,10 @@ type GetProductTemplateTagsReq struct { } type GetProductTemplateTagsRsp struct { - Id int64 `json:"id"` - TemplateTag string `json:"template_tag"` - Cover string `json:"cover"` + Id int64 `json:"id"` + TemplateTag string `json:"template_tag"` + Cover string `json:"cover"` + CoverMetadata interface{} `json:"cover_metadata"` } type Request struct { diff --git a/server/product/internal/logic/getrecommandproductlistlogic.go b/server/product/internal/logic/getrecommandproductlistlogic.go index 84020c11..a210a949 100644 --- a/server/product/internal/logic/getrecommandproductlistlogic.go +++ b/server/product/internal/logic/getrecommandproductlistlogic.go @@ -8,6 +8,7 @@ import ( "fusenapi/utils/basic" "fusenapi/utils/format" "fusenapi/utils/image" + "fusenapi/utils/s3url_to_s3id" "gorm.io/gorm" "sort" "strings" @@ -73,16 +74,8 @@ func (l *GetRecommandProductListLogic) GetRecommandProductList(req *types.GetRec ignoreProductIds = append(ignoreProductIds, v.Id) productIds = append(productIds, v.Id) mapRecommend[v.Id] = struct{}{} - coverSlice := strings.Split(*v.Cover, "/") - coverImgSlice := strings.Split(*v.CoverImg, "/") - lenCoverSlice := len(coverSlice) - lenCoverImgSlice := len(coverImgSlice) - if lenCoverSlice > 1 { - resourceIds = append(resourceIds, coverSlice[lenCoverSlice-1]) - } - if lenCoverImgSlice > 1 { - resourceIds = append(resourceIds, coverImgSlice[lenCoverImgSlice-1]) - } + resourceIds = append(resourceIds, s3url_to_s3id.GetS3ResourceIdFormUrl(*v.Cover)) + resourceIds = append(resourceIds, s3url_to_s3id.GetS3ResourceIdFormUrl(*v.CoverImg)) } //小于请求的数量则需要从产品表中随机填补上(不包含上面的产品) lenRecommendProduct := len(recommendProductList) @@ -139,11 +132,7 @@ func (l *GetRecommandProductListLogic) GetRecommandProductList(req *types.GetRec return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "failed to get product tag property") } for _, v := range productTagPropList { - coverSlice := strings.Split(*v.Cover, "/") - lenCoverSlice := len(coverSlice) - if lenCoverSlice > 1 { - resourceIds = append(resourceIds, coverSlice[lenCoverSlice-1]) - } + resourceIds = append(resourceIds, s3url_to_s3id.GetS3ResourceIdFormUrl(*v.Cover)) } //根据resourceUrls找到对应的元数据 resourceMetadataList, err := l.svcCtx.AllModels.FsResource.FindAllByResourceIds(l.ctx, resourceIds) @@ -161,11 +150,6 @@ func (l *GetRecommandProductListLogic) GetRecommandProductList(req *types.GetRec } mapTagProp := make(map[int64][]types.CoverDefaultItem) for _, v := range productTagPropList { - coverSlice := strings.Split(*v.Cover, "/") - lenCoverSlice := len(coverSlice) - if lenCoverSlice > 1 { - resourceIds = append(resourceIds, coverSlice[lenCoverSlice-1]) - } mapTagProp[*v.ProductId] = append(mapTagProp[*v.ProductId], types.CoverDefaultItem{ Tag: v.TemplateTag, Cover: *v.Cover, diff --git a/server/product/internal/logic/gettagproductlistlogic.go b/server/product/internal/logic/gettagproductlistlogic.go index 58e43266..ce6a865e 100644 --- a/server/product/internal/logic/gettagproductlistlogic.go +++ b/server/product/internal/logic/gettagproductlistlogic.go @@ -8,6 +8,7 @@ import ( "fusenapi/utils/basic" "fusenapi/utils/format" "fusenapi/utils/image" + "fusenapi/utils/s3url_to_s3id" "gorm.io/gorm" "sort" "strings" @@ -180,16 +181,8 @@ func (l *GetTagProductListLogic) getProductRelationInfo(req getProductRelationIn productIds := make([]int64, 0, len(productList)) for _, product := range productList { productIds = append(productIds, product.Id) - coverSlice := strings.Split(*product.Cover, "/") - coverImgSlice := strings.Split(*product.CoverImg, "/") - lenCoverSlice := len(coverSlice) - lenCoverImgSlice := len(coverImgSlice) - if lenCoverSlice > 1 { - resourceIds = append(resourceIds, coverSlice[lenCoverSlice-1]) - } - if lenCoverImgSlice > 1 { - resourceIds = append(resourceIds, coverImgSlice[lenCoverImgSlice-1]) - } + resourceIds = append(resourceIds, s3url_to_s3id.GetS3ResourceIdFormUrl(*product.Cover)) + resourceIds = append(resourceIds, s3url_to_s3id.GetS3ResourceIdFormUrl(*product.CoverImg)) } //获取商品可选配件 productOptionalPartList, err = l.svcCtx.AllModels.FsProductModel3d.GetGroupPartListByProductIds(l.ctx, productIds) @@ -213,11 +206,7 @@ func (l *GetTagProductListLogic) getProductRelationInfo(req getProductRelationIn return nil, errors.New("failed to get product tag property") } for _, v := range productTagPropList { - coverSlice := strings.Split(*v.Cover, "/") - lenCoverSlice := len(coverSlice) - if lenCoverSlice > 1 { - resourceIds = append(resourceIds, coverSlice[lenCoverSlice-1]) - } + resourceIds = append(resourceIds, s3url_to_s3id.GetS3ResourceIdFormUrl(*v.Cover)) } //根据resourceUrls找到对应的元数据 resourceMetadataList, err := l.svcCtx.AllModels.FsResource.FindAllByResourceIds(l.ctx, resourceIds) diff --git a/server/product/internal/logic/homepagerecommendproductlistlogic.go b/server/product/internal/logic/homepagerecommendproductlistlogic.go index aef9ef24..28a385c6 100644 --- a/server/product/internal/logic/homepagerecommendproductlistlogic.go +++ b/server/product/internal/logic/homepagerecommendproductlistlogic.go @@ -7,6 +7,7 @@ import ( "fusenapi/utils/auth" "fusenapi/utils/basic" "fusenapi/utils/format" + "fusenapi/utils/s3url_to_s3id" "gorm.io/gorm" "sort" "strings" @@ -95,16 +96,8 @@ func (l *HomePageRecommendProductListLogic) HomePageRecommendProductList(req *ty productIds := make([]int64, 0, len(recommendProductList)) for _, product := range recommendProductList { productIds = append(productIds, product.Id) - coverSlice := strings.Split(*product.Cover, "/") - coverImgSlice := strings.Split(*product.CoverImg, "/") - lenCoverSlice := len(coverSlice) - lenCoverImgSlice := len(coverImgSlice) - if lenCoverSlice > 1 { - resourceIds = append(resourceIds, coverSlice[lenCoverSlice-1]) - } - if lenCoverImgSlice > 1 { - resourceIds = append(resourceIds, coverImgSlice[lenCoverImgSlice-1]) - } + resourceIds = append(resourceIds, s3url_to_s3id.GetS3ResourceIdFormUrl(*product.Cover)) + resourceIds = append(resourceIds, s3url_to_s3id.GetS3ResourceIdFormUrl(*product.CoverImg)) } //获取商品可选配件 productOptionalPartList, err = l.svcCtx.AllModels.FsProductModel3d.GetGroupPartListByProductIds(l.ctx, productIds) @@ -172,11 +165,7 @@ func (l *HomePageRecommendProductListLogic) HomePageRecommendProductList(req *ty return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "failed to get product tag property") } for _, v := range productTagPropList { - coverSlice := strings.Split(*v.Cover, "/") - lenCoverSlice := len(coverSlice) - if lenCoverSlice > 1 { - resourceIds = append(resourceIds, coverSlice[lenCoverSlice-1]) - } + resourceIds = append(resourceIds, s3url_to_s3id.GetS3ResourceIdFormUrl(*v.Cover)) } //根据resourceUrls找到对应的元数据 resourceMetadataList, err := l.svcCtx.AllModels.FsResource.FindAllByResourceIds(l.ctx, resourceIds) diff --git a/server_api/product-template-tag.api b/server_api/product-template-tag.api index a565ee01..bdc513b7 100644 --- a/server_api/product-template-tag.api +++ b/server_api/product-template-tag.api @@ -20,7 +20,8 @@ type GetProductTemplateTagsReq { Limit int `form:"limit"` } type GetProductTemplateTagsRsp { - Id int64 `json:"id"` - TemplateTag string `json:"template_tag"` - Cover string `json:"cover"` + Id int64 `json:"id"` + TemplateTag string `json:"template_tag"` + Cover string `json:"cover"` + CoverMetadata interface{} `json:"cover_metadata"` } \ No newline at end of file diff --git a/utils/s3url_to_s3id/s3url_to_s3id.go b/utils/s3url_to_s3id/s3url_to_s3id.go new file mode 100644 index 00000000..2acf0175 --- /dev/null +++ b/utils/s3url_to_s3id/s3url_to_s3id.go @@ -0,0 +1,16 @@ +package s3url_to_s3id + +import "strings" + +// 通过url解析资源id +func GetS3ResourceIdFormUrl(s3Url string) string { + if !strings.Contains(s3Url, "http") { + return "" + } + s := strings.Split(s3Url, "/") + lens := len(s) + if lens <= 1 { + return "" + } + return s[lens-1] +} From 60f74f2297d7a159dd4cedf007f914a4bd300354 Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Wed, 6 Sep 2023 15:04:51 +0800 Subject: [PATCH 2/4] fix --- server/product/internal/logic/getrecommandproductlistlogic.go | 2 +- server/product/internal/logic/gettagproductlistlogic.go | 2 +- .../product/internal/logic/homepagerecommendproductlistlogic.go | 2 +- server/product/internal/types/types.go | 2 +- server_api/product.api | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/server/product/internal/logic/getrecommandproductlistlogic.go b/server/product/internal/logic/getrecommandproductlistlogic.go index a210a949..1adbd72a 100644 --- a/server/product/internal/logic/getrecommandproductlistlogic.go +++ b/server/product/internal/logic/getrecommandproductlistlogic.go @@ -151,7 +151,7 @@ func (l *GetRecommandProductListLogic) GetRecommandProductList(req *types.GetRec mapTagProp := make(map[int64][]types.CoverDefaultItem) for _, v := range productTagPropList { mapTagProp[*v.ProductId] = append(mapTagProp[*v.ProductId], types.CoverDefaultItem{ - Tag: v.TemplateTag, + TemplateTag: v.TemplateTag, Cover: *v.Cover, CoverMetadata: mapResourceMetadata[*v.Cover], }) diff --git a/server/product/internal/logic/gettagproductlistlogic.go b/server/product/internal/logic/gettagproductlistlogic.go index ce6a865e..dd376605 100644 --- a/server/product/internal/logic/gettagproductlistlogic.go +++ b/server/product/internal/logic/gettagproductlistlogic.go @@ -223,7 +223,7 @@ func (l *GetTagProductListLogic) getProductRelationInfo(req getProductRelationIn } for _, v := range productTagPropList { req.MapTagProp[*v.ProductId] = append(req.MapTagProp[*v.ProductId], types.CoverDefaultItem{ - Tag: v.TemplateTag, + TemplateTag: v.TemplateTag, Cover: *v.Cover, CoverMetadata: req.MapResourceMetadata[*v.Cover], }) diff --git a/server/product/internal/logic/homepagerecommendproductlistlogic.go b/server/product/internal/logic/homepagerecommendproductlistlogic.go index 28a385c6..10c3ca44 100644 --- a/server/product/internal/logic/homepagerecommendproductlistlogic.go +++ b/server/product/internal/logic/homepagerecommendproductlistlogic.go @@ -184,7 +184,7 @@ func (l *HomePageRecommendProductListLogic) HomePageRecommendProductList(req *ty mapTagProp := make(map[int64][]types.CoverDefaultItem) for _, v := range productTagPropList { mapTagProp[*v.ProductId] = append(mapTagProp[*v.ProductId], types.CoverDefaultItem{ - Tag: v.TemplateTag, + TemplateTag: v.TemplateTag, Cover: *v.Cover, CoverMetadata: mapResourceMetadata[*v.Cover], }) diff --git a/server/product/internal/types/types.go b/server/product/internal/types/types.go index b8eb9f46..dccd613b 100644 --- a/server/product/internal/types/types.go +++ b/server/product/internal/types/types.go @@ -284,7 +284,7 @@ type TagProduct struct { } type CoverDefaultItem struct { - Tag string `json:"tag"` + TemplateTag string `json:"tag"` Cover string `json:"cover"` CoverMetadata interface{} `json:"cover_metadata"` } diff --git a/server_api/product.api b/server_api/product.api index 44c92d52..054be734 100644 --- a/server_api/product.api +++ b/server_api/product.api @@ -333,7 +333,7 @@ type TagProduct { Recommended bool `json:"recommended"` } type CoverDefaultItem { - Tag string `json:"tag"` + TemplateTag string `json:"tag"` Cover string `json:"cover"` CoverMetadata interface{} `json:"cover_metadata"` } From 6d20c95f0b42949c392aab770a4dc3c6a93909c2 Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Wed, 6 Sep 2023 15:06:50 +0800 Subject: [PATCH 3/4] fix --- server/product/internal/types/types.go | 2 +- server_api/product.api | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/product/internal/types/types.go b/server/product/internal/types/types.go index dccd613b..ee0a001e 100644 --- a/server/product/internal/types/types.go +++ b/server/product/internal/types/types.go @@ -284,7 +284,7 @@ type TagProduct struct { } type CoverDefaultItem struct { - TemplateTag string `json:"tag"` + TemplateTag string `json:"template_tag"` Cover string `json:"cover"` CoverMetadata interface{} `json:"cover_metadata"` } diff --git a/server_api/product.api b/server_api/product.api index 054be734..bb95a9d9 100644 --- a/server_api/product.api +++ b/server_api/product.api @@ -333,7 +333,7 @@ type TagProduct { Recommended bool `json:"recommended"` } type CoverDefaultItem { - TemplateTag string `json:"tag"` + TemplateTag string `json:"template_tag"` Cover string `json:"cover"` CoverMetadata interface{} `json:"cover_metadata"` } From 4399c2c02edb0a896e57ce1b8331baa15e823468 Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Wed, 6 Sep 2023 15:24:51 +0800 Subject: [PATCH 4/4] fix --- server/home-user-auth/internal/types/types.go | 22 ++++---- server_api/home-user-auth.api | 56 +++++++++---------- 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/server/home-user-auth/internal/types/types.go b/server/home-user-auth/internal/types/types.go index 3288ff75..2ee68e06 100644 --- a/server/home-user-auth/internal/types/types.go +++ b/server/home-user-auth/internal/types/types.go @@ -121,17 +121,17 @@ type RequestBasicInfoForm struct { } type RequestAddAddress struct { - Id int64 `json:"id"` // address_id 地址id - IsDefault int64 `json:"is_default"` //是否默认 - Name string `json:"name"` //收货人 - FirstName string `json:"first_name"` //first_name - LastName string `json:"last_name"` //last_name - Mobile string `json:"mobile"` //手机 - ZipCode string `json:"zip_code"` //邮编 - Street string `json:"street"` //街道 - Suite string `json:"suite"` //房号 - City string `json:"city"` //城市 - State string `json:"state"` //州 + Id int64 `json:"id,optional"` // address_id 地址id + IsDefault int64 `json:"is_default"` //是否默认 + Name string `json:"name"` //收货人 + FirstName string `json:"first_name"` //first_name + LastName string `json:"last_name"` //last_name + Mobile string `json:"mobile"` //手机 + ZipCode string `json:"zip_code"` //邮编 + Street string `json:"street"` //街道 + Suite string `json:"suite"` //房号 + City string `json:"city"` //城市 + State string `json:"state"` //州 } type RequestOrderId struct { diff --git a/server_api/home-user-auth.api b/server_api/home-user-auth.api index 3f97c058..9a512adb 100644 --- a/server_api/home-user-auth.api +++ b/server_api/home-user-auth.api @@ -10,60 +10,60 @@ info ( import "basic.api" service home-user-auth { - + // @handler UserRegisterHandler // post /api/user/register(RequestUserRegister) returns (response); - + //用户字体 @handler UserFontsHandler get /api/user/fonts(request) returns (response); - + //获取用户类型 @handler UserGetTypeHandler get /api/user/get-type(request) returns (response); - + //保存用户基础信息 @handler UserSaveBasicInfoHandler post /api/user/basic-info(RequestBasicInfoForm) returns (response); - + //状态配置 @handler UserStatusConfigHandler get /api/user/status-config(request) returns (response); - + //基础信息 @handler UserBasicInfoHandler get /api/user/basic-info(request) returns (response); - + //地址列表 @handler UserAddressListHandler get /api/user/address-list(request) returns (response); - + //添加地址 @handler UserAddAddressHandler post /api/user/add-address(RequestAddAddress) returns (response); - + //联系服务 @handler UserContactServiceHandler post /api/user/contact-service (RequestContactService) returns (response); - + // @handler UserOderListHandler // get /api/user/order-list(RequestOrderId) returns (response); - + //删除订单 @handler UserOderDeleteHandler post /api/user/order-delete(RequestOrderId) returns (response); - + //订单列表 @handler UserOrderListHandler get /api/user/order-list (UserOrderListReq) returns (response); - + //删除订单 @handler UserOrderDeleteHandler get /api/user/order-delete (UserOrderDeleteReq) returns (response); - + //取消订单 @handler UserOrderCancelHandler get /api/user/order-cancel (UserOrderCancelReq) returns (response); - + // 用户logo列表 @handler UserLogoListHandler get /api/user/logo-list (UserLogoListReq) returns (response); - + // 再来一单 @handler UserAgainOrderHandler get /api/user/one-more-order (UserAgainOrderReq) returns (response); - + // 保存商户信息 @handler UserInfoSetHandler post /api/user/set_user_info (UserInfoSetReq) returns (response); @@ -197,17 +197,17 @@ type RequestBasicInfoForm { // RequestAddAddress 增加地址结构 type RequestAddAddress { - Id int64 `json:"id"` // address_id 地址id - IsDefault int64 `json:"is_default"` //是否默认 - Name string `json:"name"` //收货人 - FirstName string `json:"first_name"` //first_name - LastName string `json:"last_name"` //last_name - Mobile string `json:"mobile"` //手机 - ZipCode string `json:"zip_code"` //邮编 - Street string `json:"street"` //街道 - Suite string `json:"suite"` //房号 - City string `json:"city"` //城市 - State string `json:"state"` //州 + Id int64 `json:"id,optional"` // address_id 地址id + IsDefault int64 `json:"is_default"` //是否默认 + Name string `json:"name"` //收货人 + FirstName string `json:"first_name"` //first_name + LastName string `json:"last_name"` //last_name + Mobile string `json:"mobile"` //手机 + ZipCode string `json:"zip_code"` //邮编 + Street string `json:"street"` //街道 + Suite string `json:"suite"` //房号 + City string `json:"city"` //城市 + State string `json:"state"` //州 } // RequestOrderId 传入订单id的结构