132 lines
2.8 KiB
Go
132 lines
2.8 KiB
Go
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
|
|
}
|