func HandleCashBackDataTag(m member.IMember, order *order.Order, c promotion.ICashBackPromotion, memberRep member.IMemberRep) { data := c.GetDataTag() var level int = 0 for k, _ := range data { if strings.HasPrefix(k, "G") { if l, err := strconv.Atoi(k[1:]); err == nil && l > level { level = l } } } //log.Println("[ Back][ Level] - ",level) cashBack3R(level, m, order, c, memberRep) }
func cashBack3R(level int, m member.IMember, order *order.Order, c promotion.ICashBackPromotion, memberRep member.IMemberRep) { dt := c.GetDataTag() var cm member.IMember = m var pm member.IMember = m // fmt.Println("------ START BACK ------") var backFunc = func(m member.IMember, parentM member.IMember, fee int) { // fmt.Println("---------[ back ]",parentM.GetValue().Name,fee) backCashForMember(m, order, fee, parentM.Profile().GetProfile().Name) } var i int = 0 for true { rl := cm.GetRelation() // fmt.Println("-------- BACK - ID - ",rl.InvitationMemberId) if rl == nil || rl.RefereesId == 0 { break } cm = memberRep.GetMember(rl.RefereesId) // fmt.Println("-------- BACK ",cm == nil) if m == nil { break } if fee, err := strconv.Atoi(dt[fmt.Sprintf("G%d", i)]); err == nil { //log.Println("[ Back][ Cash] - ",i," back ",fee) backFunc(cm, pm, fee) } pm = cm i++ if i >= level { break } } }