diff --git a/model/gmodel/var.go b/model/gmodel/var.go index 9f603ae5..fca355d3 100644 --- a/model/gmodel/var.go +++ b/model/gmodel/var.go @@ -38,14 +38,14 @@ func FsBool(v bool) *bool { // SubscriptionStatus 订阅状态 type SubscriptionStatus struct { - NotificationEmail *struct { + NotificationEmail struct { OrderUpdate bool `json:"order_update"` Newseleter bool `json:"newseleter"` } `json:"notification_email"` - NotificationPhone *struct { - OrderUpdate bool `json:"order_update"` - Newseleter bool `json:"newseleter"` + NotificationPhone struct { + // OrderUpdate bool `json:"order_update"` + Newseleter bool `json:"newseleter"` } `json:"notification_phone"` } diff --git a/server/auth/internal/logic/useremailregisterlogic.go b/server/auth/internal/logic/useremailregisterlogic.go index 60e66a2c..edc2d10c 100644 --- a/server/auth/internal/logic/useremailregisterlogic.go +++ b/server/auth/internal/logic/useremailregisterlogic.go @@ -47,6 +47,10 @@ func (l *UserEmailRegisterLogic) UserEmailRegister(req *types.RequestEmailRegist return resp.SetStatus(basic.CodeOAuthEmailErr) } + if len(req.Email) > 50 { + return resp.SetStatusWithMessage(basic.CodeOAuthEmailErr, "email len must < 50") + } + if !TimeLimit.Is(req.Email) { return resp.SetStatus(basic.CodeEmailTimeShortErr) } diff --git a/server/auth/internal/logic/userregisterlogic.go b/server/auth/internal/logic/userregisterlogic.go index d9ed3fa3..45f0d73c 100644 --- a/server/auth/internal/logic/userregisterlogic.go +++ b/server/auth/internal/logic/userregisterlogic.go @@ -41,6 +41,10 @@ func (l *UserRegisterLogic) UserRegister(req *types.RequestUserRegister, userinf return resp.SetStatus(basic.CodeOAuthEmailErr) } + if len(req.Email) > 50 { + return resp.SetStatusWithMessage(basic.CodeOAuthEmailErr, "email len must < 50") + } + // _, err := l.svcCtx.AllModels.FsUser.FindUserByEmail(l.ctx, req.Email) // if err == nil { // return resp.SetStatus(basic.CodeEmailExistsErr) diff --git a/server/auth/internal/logic/userresetpasswordlogic.go b/server/auth/internal/logic/userresetpasswordlogic.go index aa9ab591..cc7a55a2 100644 --- a/server/auth/internal/logic/userresetpasswordlogic.go +++ b/server/auth/internal/logic/userresetpasswordlogic.go @@ -39,6 +39,10 @@ func (l *UserResetPasswordLogic) UserResetPassword(req *types.RequestUserResetPa // 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data) // userinfo 传入值时, 一定不为null + if len(req.NewPassword) > 30 { + return resp.SetStatusWithMessage(basic.CodePasswordErr, "password len must < 30") + } + rt, err := l.svcCtx.ResetTokenManger.Decrypt(req.ResetToken) // ResetToken if err != nil { logx.Error(err) diff --git a/server/auth/internal/logic/userresettokenlogic.go b/server/auth/internal/logic/userresettokenlogic.go index b7150b9a..61ab8fdb 100644 --- a/server/auth/internal/logic/userresettokenlogic.go +++ b/server/auth/internal/logic/userresettokenlogic.go @@ -39,7 +39,7 @@ func (l *UserResetTokenLogic) UserResetToken(req *types.RequestUserResetToken, u user, err := l.svcCtx.AllModels.FsUser.FindUserByEmail(context.TODO(), req.Email) if err != nil { logx.Error(err) - return resp.SetStatus(basic.CodeRequestParamsErr, err.Error()) + return resp.SetStatusWithMessage(basic.CodeRequestParamsErr, err.Error()) } token := &auth.ResetToken{ diff --git a/server/product/internal/logic/gettagproductlistlogic.go b/server/product/internal/logic/gettagproductlistlogic.go index afb6c5aa..ef025139 100644 --- a/server/product/internal/logic/gettagproductlistlogic.go +++ b/server/product/internal/logic/gettagproductlistlogic.go @@ -113,10 +113,12 @@ func (l *GetTagProductListLogic) GetTagProductList(req *types.GetTagProductListR mapTagLevel := make(map[string]*types.TagItem) //处理tags数据 minLevel := 0 //层级最高层(即prefix层级路径最短) + mapTagProduct := make(map[int64]types.TagProduct) if err = l.dealWithTagMenuData(dealWithTagMenuDataReq{ TagList: tagList, WithProduct: req.WithProduct, ProductList: productList, + MapTagProduct: mapTagProduct, MapTagProp: mapTagProp, MapProductMinPrice: mapProductMinPrice, MapProductTemplate: mapProductTemplate, @@ -132,7 +134,7 @@ func (l *GetTagProductListLogic) GetTagProductList(req *types.GetTagProductListR return resp.SetStatusAddMessage(basic.CodeServiceErr, "failed to deal with tag data") } //组装等级从属关系 - rspTagList, TotalCategoryProduct := l.organizationLevelRelation(minLevel, mapTagLevel) + rspTagList, TotalCategoryProduct := l.organizationLevelRelation(minLevel, mapTagLevel, productList, mapTagProduct) return resp.SetStatusWithMessage(basic.CodeOK, "success", types.GetTagProductListRsp{ TotalCategoryProduct: TotalCategoryProduct, TagList: rspTagList, @@ -262,6 +264,7 @@ type dealWithTagMenuDataReq struct { TagList []gmodel.FsTags WithProduct bool ProductList []gmodel.FsProduct + MapTagProduct map[int64]types.TagProduct MapTagProp map[int64][]types.CoverDefaultItem ProductTagPropList []gmodel.FsProductTagProp MapProductMinPrice map[int64]int64 @@ -308,7 +311,8 @@ func (l *GetTagProductListLogic) dealWithTagMenuData(req dealWithTagMenuDataReq) }) //tag中产品 for _, tmpProduct := range productListRsp { - tagTem.TagProductList = append(tagTem.TagProductList, tmpProduct) + tagTem.TagProductList = append(tagTem.TagProductList, tmpProduct.ProductId) + req.MapTagProduct[tmpProduct.ProductId] = tmpProduct } } //加入分类 @@ -318,7 +322,7 @@ func (l *GetTagProductListLogic) dealWithTagMenuData(req dealWithTagMenuDataReq) } // 组织等级从属关系 -func (l *GetTagProductListLogic) organizationLevelRelation(minLevel int, mapTagLevel map[string]*types.TagItem) (rspTagList []types.TagItem, productCount int) { +func (l *GetTagProductListLogic) organizationLevelRelation(minLevel int, mapTagLevel map[string]*types.TagItem, productList []gmodel.FsProduct, mapTagProduct map[int64]types.TagProduct) (rspTagList []types.TagItem, productCount int) { mapTop := make(map[string]struct{}) //设置归属关系 for prefix, tagItem := range mapTagLevel { @@ -341,16 +345,29 @@ func (l *GetTagProductListLogic) organizationLevelRelation(minLevel int, mapTagL }) mapTagLevel[parentPrefix] = parent } - //把子类的产品列表变成产品id列表并且把产品列表都放到最顶级父级中 + //顶层集子类产品于一身 for _, v := range mapTagLevel { - if _, ok := mapTop[v.LevelPrefix]; ok { + if _, ok := mapTop[v.LevelPrefix]; !ok { continue } - topPrefixSlic := strings.Split(v.LevelPrefix, "/")[:minLevel] - topPrefix := strings.Join(topPrefixSlic, "/") - for k, tmpProduct := range v.TagProductList { - v.TagProductList[k] = tmpProduct.(types.TagProduct).ProductId - mapTagLevel[topPrefix].TagProductList = append(mapTagLevel[topPrefix].TagProductList, tmpProduct) + //初始化 + v.TagProductList = make([]interface{}, 0, 20) + mapTypeId := make(map[int64]struct{}) + for _, v2 := range mapTagLevel { + if strings.Contains(v2.LevelPrefix, v.LevelPrefix) { + mapTypeId[v2.TypeId] = struct{}{} + } + } + for _, p := range productList { + _, ok := mapTypeId[*p.Type] + if !ok { + continue + } + tagProduct, ok := mapTagProduct[p.Id] + if !ok { + continue + } + v.TagProductList = append(v.TagProductList, tagProduct) } } //最终值提取最高级别那一层出来 diff --git a/utils/auth/register.go b/utils/auth/register.go index dec96fb2..3531a3be 100644 --- a/utils/auth/register.go +++ b/utils/auth/register.go @@ -118,7 +118,7 @@ func ValidateEmail(email string) bool { // ValidatePassword checks if the provided password is strong enough. // In this example, we just check if the password length is 8 or more. func ValidatePassword(password string) bool { - const minPasswordLength = 8 + const minPasswordLength = 30 return len(password) >= minPasswordLength } diff --git a/utils/basic/basic.go b/utils/basic/basic.go index 8ce30032..3621d6bb 100644 --- a/utils/basic/basic.go +++ b/utils/basic/basic.go @@ -58,6 +58,7 @@ var ( CodeEmailExistsErr = &StatusResponse{5053, "email exists"} // email存在 CodeEmailTimeShortErr = &StatusResponse{5053, "email with the time of resend is too short"} // email重发的时间太短 CodeResetPasswordErr = &StatusResponse{5054, "reset password error"} // 无效密码 + CodeEmailErr = &StatusResponse{5054, "email error"} CodeSafeValueRangeErr = &StatusResponse{5040, "value not in range"} // 值不在范围内 CodeTemplateErr = &StatusResponse{5040, "template parsed error"} // 模板解析错误