Merge branch 'develop' of gitee.com:fusenpack/fusenapi into develop
This commit is contained in:
		
						commit
						58d44a38a6
					
				@ -38,14 +38,14 @@ func FsBool(v bool) *bool {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// SubscriptionStatus 订阅状态
 | 
					// SubscriptionStatus 订阅状态
 | 
				
			||||||
type SubscriptionStatus struct {
 | 
					type SubscriptionStatus struct {
 | 
				
			||||||
	NotificationEmail *struct {
 | 
						NotificationEmail struct {
 | 
				
			||||||
		OrderUpdate bool `json:"order_update"`
 | 
							OrderUpdate bool `json:"order_update"`
 | 
				
			||||||
		Newseleter  bool `json:"newseleter"`
 | 
							Newseleter  bool `json:"newseleter"`
 | 
				
			||||||
	} `json:"notification_email"`
 | 
						} `json:"notification_email"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	NotificationPhone *struct {
 | 
						NotificationPhone struct {
 | 
				
			||||||
		OrderUpdate bool `json:"order_update"`
 | 
							// OrderUpdate bool `json:"order_update"`
 | 
				
			||||||
		Newseleter  bool `json:"newseleter"`
 | 
							Newseleter bool `json:"newseleter"`
 | 
				
			||||||
	} `json:"notification_phone"`
 | 
						} `json:"notification_phone"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -47,6 +47,10 @@ func (l *UserEmailRegisterLogic) UserEmailRegister(req *types.RequestEmailRegist
 | 
				
			|||||||
		return resp.SetStatus(basic.CodeOAuthEmailErr)
 | 
							return resp.SetStatus(basic.CodeOAuthEmailErr)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if len(req.Email) > 50 {
 | 
				
			||||||
 | 
							return resp.SetStatusWithMessage(basic.CodeOAuthEmailErr, "email len must < 50")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if !TimeLimit.Is(req.Email) {
 | 
						if !TimeLimit.Is(req.Email) {
 | 
				
			||||||
		return resp.SetStatus(basic.CodeEmailTimeShortErr)
 | 
							return resp.SetStatus(basic.CodeEmailTimeShortErr)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
@ -41,6 +41,10 @@ func (l *UserRegisterLogic) UserRegister(req *types.RequestUserRegister, userinf
 | 
				
			|||||||
		return resp.SetStatus(basic.CodeOAuthEmailErr)
 | 
							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)
 | 
						// _, err := l.svcCtx.AllModels.FsUser.FindUserByEmail(l.ctx, req.Email)
 | 
				
			||||||
	// if err == nil {
 | 
						// if err == nil {
 | 
				
			||||||
	// 	return resp.SetStatus(basic.CodeEmailExistsErr)
 | 
						// 	return resp.SetStatus(basic.CodeEmailExistsErr)
 | 
				
			||||||
 | 
				
			|||||||
@ -39,6 +39,10 @@ func (l *UserResetPasswordLogic) UserResetPassword(req *types.RequestUserResetPa
 | 
				
			|||||||
	// 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data)
 | 
						// 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data)
 | 
				
			||||||
	// userinfo 传入值时, 一定不为null
 | 
						// 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
 | 
						rt, err := l.svcCtx.ResetTokenManger.Decrypt(req.ResetToken) // ResetToken
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		logx.Error(err)
 | 
							logx.Error(err)
 | 
				
			||||||
 | 
				
			|||||||
@ -39,7 +39,7 @@ func (l *UserResetTokenLogic) UserResetToken(req *types.RequestUserResetToken, u
 | 
				
			|||||||
	user, err := l.svcCtx.AllModels.FsUser.FindUserByEmail(context.TODO(), req.Email)
 | 
						user, err := l.svcCtx.AllModels.FsUser.FindUserByEmail(context.TODO(), req.Email)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		logx.Error(err)
 | 
							logx.Error(err)
 | 
				
			||||||
		return resp.SetStatus(basic.CodeRequestParamsErr, err.Error())
 | 
							return resp.SetStatusWithMessage(basic.CodeRequestParamsErr, err.Error())
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	token := &auth.ResetToken{
 | 
						token := &auth.ResetToken{
 | 
				
			||||||
 | 
				
			|||||||
@ -113,10 +113,12 @@ func (l *GetTagProductListLogic) GetTagProductList(req *types.GetTagProductListR
 | 
				
			|||||||
	mapTagLevel := make(map[string]*types.TagItem)
 | 
						mapTagLevel := make(map[string]*types.TagItem)
 | 
				
			||||||
	//处理tags数据
 | 
						//处理tags数据
 | 
				
			||||||
	minLevel := 0 //层级最高层(即prefix层级路径最短)
 | 
						minLevel := 0 //层级最高层(即prefix层级路径最短)
 | 
				
			||||||
 | 
						mapTagProduct := make(map[int64]types.TagProduct)
 | 
				
			||||||
	if err = l.dealWithTagMenuData(dealWithTagMenuDataReq{
 | 
						if err = l.dealWithTagMenuData(dealWithTagMenuDataReq{
 | 
				
			||||||
		TagList:                     tagList,
 | 
							TagList:                     tagList,
 | 
				
			||||||
		WithProduct:                 req.WithProduct,
 | 
							WithProduct:                 req.WithProduct,
 | 
				
			||||||
		ProductList:                 productList,
 | 
							ProductList:                 productList,
 | 
				
			||||||
 | 
							MapTagProduct:               mapTagProduct,
 | 
				
			||||||
		MapTagProp:                  mapTagProp,
 | 
							MapTagProp:                  mapTagProp,
 | 
				
			||||||
		MapProductMinPrice:          mapProductMinPrice,
 | 
							MapProductMinPrice:          mapProductMinPrice,
 | 
				
			||||||
		MapProductTemplate:          mapProductTemplate,
 | 
							MapProductTemplate:          mapProductTemplate,
 | 
				
			||||||
@ -132,7 +134,7 @@ func (l *GetTagProductListLogic) GetTagProductList(req *types.GetTagProductListR
 | 
				
			|||||||
		return resp.SetStatusAddMessage(basic.CodeServiceErr, "failed to deal with tag data")
 | 
							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{
 | 
						return resp.SetStatusWithMessage(basic.CodeOK, "success", types.GetTagProductListRsp{
 | 
				
			||||||
		TotalCategoryProduct: TotalCategoryProduct,
 | 
							TotalCategoryProduct: TotalCategoryProduct,
 | 
				
			||||||
		TagList:              rspTagList,
 | 
							TagList:              rspTagList,
 | 
				
			||||||
@ -262,6 +264,7 @@ type dealWithTagMenuDataReq struct {
 | 
				
			|||||||
	TagList                     []gmodel.FsTags
 | 
						TagList                     []gmodel.FsTags
 | 
				
			||||||
	WithProduct                 bool
 | 
						WithProduct                 bool
 | 
				
			||||||
	ProductList                 []gmodel.FsProduct
 | 
						ProductList                 []gmodel.FsProduct
 | 
				
			||||||
 | 
						MapTagProduct               map[int64]types.TagProduct
 | 
				
			||||||
	MapTagProp                  map[int64][]types.CoverDefaultItem
 | 
						MapTagProp                  map[int64][]types.CoverDefaultItem
 | 
				
			||||||
	ProductTagPropList          []gmodel.FsProductTagProp
 | 
						ProductTagPropList          []gmodel.FsProductTagProp
 | 
				
			||||||
	MapProductMinPrice          map[int64]int64
 | 
						MapProductMinPrice          map[int64]int64
 | 
				
			||||||
@ -308,7 +311,8 @@ func (l *GetTagProductListLogic) dealWithTagMenuData(req dealWithTagMenuDataReq)
 | 
				
			|||||||
			})
 | 
								})
 | 
				
			||||||
			//tag中产品
 | 
								//tag中产品
 | 
				
			||||||
			for _, tmpProduct := range productListRsp {
 | 
								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{})
 | 
						mapTop := make(map[string]struct{})
 | 
				
			||||||
	//设置归属关系
 | 
						//设置归属关系
 | 
				
			||||||
	for prefix, tagItem := range mapTagLevel {
 | 
						for prefix, tagItem := range mapTagLevel {
 | 
				
			||||||
@ -341,16 +345,29 @@ func (l *GetTagProductListLogic) organizationLevelRelation(minLevel int, mapTagL
 | 
				
			|||||||
		})
 | 
							})
 | 
				
			||||||
		mapTagLevel[parentPrefix] = parent
 | 
							mapTagLevel[parentPrefix] = parent
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	//把子类的产品列表变成产品id列表并且把产品列表都放到最顶级父级中
 | 
						//顶层集子类产品于一身
 | 
				
			||||||
	for _, v := range mapTagLevel {
 | 
						for _, v := range mapTagLevel {
 | 
				
			||||||
		if _, ok := mapTop[v.LevelPrefix]; ok {
 | 
							if _, ok := mapTop[v.LevelPrefix]; !ok {
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		topPrefixSlic := strings.Split(v.LevelPrefix, "/")[:minLevel]
 | 
							//初始化
 | 
				
			||||||
		topPrefix := strings.Join(topPrefixSlic, "/")
 | 
							v.TagProductList = make([]interface{}, 0, 20)
 | 
				
			||||||
		for k, tmpProduct := range v.TagProductList {
 | 
							mapTypeId := make(map[int64]struct{})
 | 
				
			||||||
			v.TagProductList[k] = tmpProduct.(types.TagProduct).ProductId
 | 
							for _, v2 := range mapTagLevel {
 | 
				
			||||||
			mapTagLevel[topPrefix].TagProductList = append(mapTagLevel[topPrefix].TagProductList, tmpProduct)
 | 
								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)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	//最终值提取最高级别那一层出来
 | 
						//最终值提取最高级别那一层出来
 | 
				
			||||||
 | 
				
			|||||||
@ -118,7 +118,7 @@ func ValidateEmail(email string) bool {
 | 
				
			|||||||
// ValidatePassword checks if the provided password is strong enough.
 | 
					// ValidatePassword checks if the provided password is strong enough.
 | 
				
			||||||
// In this example, we just check if the password length is 8 or more.
 | 
					// In this example, we just check if the password length is 8 or more.
 | 
				
			||||||
func ValidatePassword(password string) bool {
 | 
					func ValidatePassword(password string) bool {
 | 
				
			||||||
	const minPasswordLength = 8
 | 
						const minPasswordLength = 30
 | 
				
			||||||
	return len(password) >= minPasswordLength
 | 
						return len(password) >= minPasswordLength
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -58,6 +58,7 @@ var (
 | 
				
			|||||||
	CodeEmailExistsErr    = &StatusResponse{5053, "email exists"}                               // email存在
 | 
						CodeEmailExistsErr    = &StatusResponse{5053, "email exists"}                               // email存在
 | 
				
			||||||
	CodeEmailTimeShortErr = &StatusResponse{5053, "email with the time of resend is too short"} // email重发的时间太短
 | 
						CodeEmailTimeShortErr = &StatusResponse{5053, "email with the time of resend is too short"} // email重发的时间太短
 | 
				
			||||||
	CodeResetPasswordErr  = &StatusResponse{5054, "reset password error"}                       // 无效密码
 | 
						CodeResetPasswordErr  = &StatusResponse{5054, "reset password error"}                       // 无效密码
 | 
				
			||||||
 | 
						CodeEmailErr          = &StatusResponse{5054, "email error"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	CodeSafeValueRangeErr = &StatusResponse{5040, "value not in range"}    // 值不在范围内
 | 
						CodeSafeValueRangeErr = &StatusResponse{5040, "value not in range"}    // 值不在范围内
 | 
				
			||||||
	CodeTemplateErr       = &StatusResponse{5040, "template parsed error"} // 模板解析错误
 | 
						CodeTemplateErr       = &StatusResponse{5040, "template parsed error"} // 模板解析错误
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user