Files
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

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
}