Merge branch 'develop' of https://gitee.com/fusenpack/fusenapi into develop
This commit is contained in:
		
						commit
						7bcdea36ce
					
				@ -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 {
 | 
			
		||||
 | 
			
		||||
@ -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)
 | 
			
		||||
 | 
			
		||||
@ -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 {
 | 
			
		||||
 | 
			
		||||
@ -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,13 +150,8 @@ 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,
 | 
			
		||||
			TemplateTag:   v.TemplateTag,
 | 
			
		||||
			Cover:         *v.Cover,
 | 
			
		||||
			CoverMetadata: mapResourceMetadata[*v.Cover],
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
@ -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)
 | 
			
		||||
@ -234,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],
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
@ -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)
 | 
			
		||||
@ -195,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],
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
@ -284,7 +284,7 @@ type TagProduct struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type CoverDefaultItem struct {
 | 
			
		||||
	Tag           string      `json:"tag"`
 | 
			
		||||
	TemplateTag   string      `json:"template_tag"`
 | 
			
		||||
	Cover         string      `json:"cover"`
 | 
			
		||||
	CoverMetadata interface{} `json:"cover_metadata"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -13,34 +13,34 @@ 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);
 | 
			
		||||
	
 | 
			
		||||
@ -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的结构
 | 
			
		||||
 | 
			
		||||
@ -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"`
 | 
			
		||||
}
 | 
			
		||||
@ -333,7 +333,7 @@ type TagProduct {
 | 
			
		||||
	Recommended         bool               `json:"recommended"`
 | 
			
		||||
}
 | 
			
		||||
type CoverDefaultItem {
 | 
			
		||||
	Tag           string      `json:"tag"`
 | 
			
		||||
	TemplateTag   string      `json:"template_tag"`
 | 
			
		||||
	Cover         string      `json:"cover"`
 | 
			
		||||
	CoverMetadata interface{} `json:"cover_metadata"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										16
									
								
								utils/s3url_to_s3id/s3url_to_s3id.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								utils/s3url_to_s3id/s3url_to_s3id.go
									
									
									
									
									
										Normal file
									
								
							@ -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]
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user