package proxyser import ( "strconv" "91porn-server/models/v/proxyincomemod" "91porn-server/models/v/proxymod" "91porn-server/models/v/usermod" ) var PerformanceConvRat = []int64{100, 25, 15, 10} // FindTotalIncome 查询总收益web func FindTotalIncome(uid uint64) (res map[string]interface{}, err error) { u, err := usermod.FindUserByUID(uid) if err != nil || u == nil { return } lv1, lv2, lv3, lv4, total, err := proxyincomemod.FindAllIncome(uid) res = make(map[string]interface{}) res["uid"] = u.UID res["promotionCode"] = u.PromCode res["lv1"] = lv1 res["lv2"] = lv2 res["lv3"] = lv3 res["lv4"] = lv4 res["total"] = total res["withdraw"] = 0 res["withdrawCount"] = 0 return } func invitationWebResHelp(uid uint64, uids []uint64, lv int, ic chan []proxymod.InvitationWebRes, flagChan chan int) { invLv, _ := proxymod.GetInveNextDetails(uids) if len(invLv) <= 0 { flagChan <- lv - 1 return } data := make([]proxymod.InvitationWebRes, len(invLv)) for i, v := range invLv { data[i] = proxymod.InvitationWebRes{ UID: uid, IID: v.Invitee, Lv: lv, CreatedAt: v.CreatedAt, } } ic <- data if lv == 4 { flagChan <- lv } } // GetInveUsers 获取下级代理 func GetInveUsers(uid uint64) (i interface{}, err error) { m := make(map[string]interface{}) var MaxLv int = 4 flagChan := make(chan int) invResChan := make(chan []proxymod.InvitationWebRes, MaxLv) tmp := []uint64{uid} for i := 1; i <= MaxLv; i++ { if len(tmp) <= 0 { break } uids := tmp go invitationWebResHelp(uid, uids, i, invResChan, flagChan) uids, total, err := proxymod.GetInveNext(tmp) if err != nil || len(uids) <= 0 { break } m["totalLv"+strconv.Itoa(i)] = total tmp = uids } rcvSize, ok := <-flagChan if !ok { return } data := make([]proxymod.InvitationWebRes, 0, rcvSize) for i := 1; i <= rcvSize; i++ { res, ok := <-invResChan if !ok { break } if len(res) > 0 { data = append(data, res...) } } m["list"] = data i = m return } // GetInvrDetails 获取上级代理 func GetInvrDetails(uid uint64) ([]proxymod.InvitationWebRes, error) { invs, err := proxymod.GetInvrDetails(uid, 4) if err != nil { return []proxymod.InvitationWebRes{}, err } invsLen := len(invs) if invsLen == 0 { return []proxymod.InvitationWebRes{}, nil } data := make([]proxymod.InvitationWebRes, invsLen) i := 0 for k, v := range invs { data[i] = proxymod.InvitationWebRes{ UID: uid, IID: v.UID, Lv: k + 1, CreatedAt: v.CreatedAt, } i++ } return data, nil } // GetInvr 获取上级代理信息 func GetInvr(uid uint64) (ivt uint64, code string, err error) { ivt, err = proxymod.GetInvrLv1(uid) if err != nil { return } u, err := usermod.FindUserByUID(ivt) if err != nil { return } if u != nil { code = u.PromCode } return }