You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1057 lines
42 KiB

package user
import (
"recook/internal/model/order"
"recook/internal/v2/model/recook/user"
"time"
"git.oa00.com/go/mysql"
"github.com/shopspring/decimal"
)
var IncomeLogic = &incomeLogic{}
type incomeLogic struct {
}
type MyIncome struct {
MonthExpect decimal.Decimal `json:"monthExpect"`
DayExpect decimal.Decimal `json:"dayExpect"`
LastMonthExpect decimal.Decimal `json:"lastMonthExpect"`
LastMonthIncome decimal.Decimal `json:"lastMonthIncome"`
}
type ProfitItem struct {
Count uint
Amount decimal.Decimal
}
type Profit struct {
ECount1 uint // 自购未到账数量
EAmount1 decimal.Decimal // 自购未到账金额
ECount2 uint // 分享未到账数量
EAmount2 decimal.Decimal // 分享未到账金额
ECount3 uint // 品牌补贴未到账数量
EAmount3 decimal.Decimal // 品牌补贴未到账金额
ECount4 uint // 开店铺贴未到账数量
EAmount4 decimal.Decimal // 开店补贴未到账金额
ECount5 uint // 店铺补贴未到账数量
EAmount5 decimal.Decimal // 店铺补贴未到账金额
ECount6 uint // 自购导购未到账数量
EAmount6 decimal.Decimal // 自购导购未到账金额
ECount7 uint // 批发收益未到账补贴
EAmount7 decimal.Decimal // 批发收益未到账金额
ECount9 uint // 批发收益未到账补贴
EAmount9 decimal.Decimal // 批发收益未到账金额
Count1 uint
Amount1 decimal.Decimal
Count2 uint
Amount2 decimal.Decimal
Count3 uint
Amount3 decimal.Decimal
Count4 uint
Amount4 decimal.Decimal
Count5 uint
Amount5 decimal.Decimal
Count6 uint
Amount6 decimal.Decimal
Count7 uint
Amount7 decimal.Decimal
Count9 uint
Amount9 decimal.Decimal
Count10 uint // 批发收益未到账补贴
Amount10 decimal.Decimal // 批发收益未到账金额
Total decimal.Decimal // 全部到账金额
ETotal decimal.Decimal // 全部未到账金额
YearSale decimal.Decimal
MonthSale decimal.Decimal
YearCount int
MonthCount int
TotalSale decimal.Decimal
}
type Person struct {
HeadImgUrl string `json:"head_img_url"`
Nickname string `json:"nickname"`
Phone string `json:"phone"`
WechatNo string `json:"wechat_no"`
RemarkName string `json:"remark_name"`
Count int `json:"count"`
Flag int `json:"flag"`
Amount decimal.Decimal `json:"amount"`
Level int `json:"level"`
}
func (i *incomeLogic) Team(userID uint, key string) (data []Person) {
if userID == 0 {
return
}
var self user.RecookUserInfoModel
mysql.Db.First(&self, "id = ?", userID)
if self.Level != 2 {
return
}
var u1 []user.RecookUserInfoModel
query := mysql.Db.Where("parent_id = ?", userID)
{
if key != "" {
query = query.Where("mobile = ?", key)
}
}
query.Preload("OrderList", "status = 4").Find(&u1)
for _, v := range u1 {
amount := decimal.Zero
for _, j := range v.OrderList {
amount = amount.Add(j.ActualTotalAmount)
}
data = append(data, Person{
HeadImgUrl: v.HeadImgUrl,
Nickname: v.Nickname,
Phone: v.Mobile,
WechatNo: v.WechatNo,
RemarkName: v.RemarkName,
Count: 1,
Amount: amount,
Level: v.Level,
})
}
return
}
func (i *incomeLogic) Profit(userID uint) (res Profit) {
var pr []order.Profit
mysql.Db.Find(&pr, "user_id = ? and status <> 1 and base > 0 and income > 0", userID)
var ods []order.Information
mysql.Db.Where("status in (1,4)").Where("order_type = 2").Where("user_id = ?", userID).Find(&ods)
now := time.Now()
yearStart := time.Date(now.Year(), 1, 1, 0, 0, 0, 0, time.Local)
yearEnd := yearStart.AddDate(1, 0, 0)
monthStart := time.Date(now.Year(), now.Month(), 1, 0, 0, 0, 0, time.Local)
monthEnd := monthStart.AddDate(0, 1, 0)
for _, v := range ods {
res.TotalSale = res.TotalSale.Add(v.ActualTotalAmount)
if v.CreatedAt.Time.Before(monthEnd) && v.CreatedAt.Time.After(monthStart) {
res.MonthCount += 1
res.MonthSale = res.MonthSale.Add(v.ActualTotalAmount)
}
if v.CreatedAt.Time.Before(yearEnd) && v.CreatedAt.Time.After(yearStart) {
res.YearCount += 1
res.YearSale = res.YearSale.Add(v.ActualTotalAmount)
}
}
for _, v := range pr {
switch v.Status {
case 0:
switch v.Type {
case order.Self:
res.ECount1 += 1
res.EAmount1 = res.EAmount1.Add(v.Income)
case order.Guide:
res.ECount2 += 1
res.EAmount2 = res.EAmount2.Add(v.Income)
case order.Brand:
res.ECount3 += 1
res.EAmount3 = res.EAmount3.Add(v.Income)
case order.Shop:
res.ECount4 += 1
res.EAmount4 = res.EAmount4.Add(v.Income)
case order.Company:
res.ECount5 += 1
res.EAmount5 = res.EAmount5.Add(v.Income)
case order.All, order.Share:
res.ECount6 += 1
res.EAmount6 = res.EAmount6.Add(v.Income)
case order.Sale:
res.ECount7 += 1
res.EAmount7 = res.EAmount7.Add(v.Income)
case order.Vip:
res.ECount9 += 1
res.EAmount9 = res.EAmount9.Add(v.Income)
}
res.ETotal = res.ETotal.Add(v.Income)
case 2:
switch v.Type {
case order.Self:
res.Count1 += 1
res.Amount1 = res.Amount1.Add(v.Income)
case order.Guide:
res.Count2 += 1
res.Amount2 = res.Amount2.Add(v.Income)
case order.Brand:
res.Count3 += 1
res.Amount3 = res.Amount3.Add(v.Income)
case order.Shop:
res.Count4 += 1
res.Amount4 = res.Amount4.Add(v.Income)
case order.Company:
res.Count5 += 1
res.Amount5 = res.Amount5.Add(v.Income)
case order.All, order.Share:
res.Count6 += 1
res.Amount6 = res.Amount6.Add(v.Income)
case order.Sale:
res.Count7 += 1
res.Amount7 = res.Amount9.Add(v.Income)
case order.Vip:
res.Count9 += 1
res.Amount9 = res.Amount9.Add(v.Income)
case order.Card:
res.Count10 += 1
res.Amount10 = res.Amount10.Add(v.Income)
}
res.Total = res.Total.Add(v.Income)
}
}
return
}
type Entry struct {
Name string `json:"name"`
Mobile string `json:"mobile"`
TypeStr string `json:"int"`
Amount decimal.Decimal `json:"amount"`
}
type EntryDate struct {
UserID uint `json:"-"`
Date string `json:"date"`
}
func (i *incomeLogic) ProfitCard(args EntryDate) (res []Entry) {
od := make([]order.Information, 0)
now, err := time.ParseInLocation("2006-01", args.Date, time.Local)
if err != nil {
return
}
next := now.AddDate(0, 1, 0)
mysql.Db.Preload("User").Preload("OrderSku.Sku").
Where("created_at between ? and ?", now, next).
Where("is_split = 1").
Where("status in ?", []uint{1, 4}).
Where("jcook_order_id = 0 or shama_order_id = 0").
Find(&od, "sharer_id = ? AND sharer_id != user_id", args.UserID)
for _, v := range od {
s := ""
switch v.OrderSku[0].Sku.EffectTime {
case 1:
s = "月卡"
case 3:
s = "季卡"
case 12:
s = "年卡"
}
res = append(res, Entry{
Name: v.User.Nickname,
Mobile: v.User.Mobile,
TypeStr: s,
Amount: v.ActualTotalAmount,
})
}
return
}
type PurchaseAccumulate struct {
PurchaseAmount decimal.Decimal `json:"purchaseAmount"`
PurchaseSalesVolume decimal.Decimal `json:"purchaseSalesVolume"`
PurchaseCount decimal.Decimal `json:"purchaseCount"`
}
// @Style 累计自购
func (i *incomeLogic) PurchaseAccumulate(userId uint) PurchaseAccumulate {
recookUserWalletModel := &user.RecookUserWalletModel{}
userWalletInfo := recookUserWalletModel.FindByUserId(userId)
return PurchaseAccumulate{
PurchaseAmount: userWalletInfo.PurchaseAmount,
PurchaseCount: userWalletInfo.PurchaseCount,
PurchaseSalesVolume: userWalletInfo.PurchaseSalesVolume,
}
}
type GuideAccumulate struct {
GuideAmount decimal.Decimal `json:"guideAmount"`
GuideCount decimal.Decimal `json:"guideCount"`
GuideSalesVolume decimal.Decimal `json:"guideSalesVolume"`
}
// @Style 累计自购
func (i *incomeLogic) GuideAccumulate(userId uint) GuideAccumulate {
recookUserWalletModel := &user.RecookUserWalletModel{}
userWalletInfo := recookUserWalletModel.FindByUserId(userId)
return GuideAccumulate{
GuideAmount: userWalletInfo.GuideAmount,
GuideCount: userWalletInfo.GuideCount,
GuideSalesVolume: userWalletInfo.GuideSalesVolume,
}
}
//
// @Style 获取一年的月度收益列表
//func (i *incomeLogic) MonthIncome(userId uint, year int) []user.RecookUserTeamIncomeModel {
// recookUserTeamIncomeModel := &user.RecookUserTeamIncomeModel{}
// return recookUserTeamIncomeModel.FindByUserIdYear(userId, year)
//}
// @Style 获取当月的每日收益列表
func (i *incomeLogic) DayIncome(userId uint, month int) []user.RecookUserDayIncomeModel {
recookUserDayIncomeModel := &user.RecookUserDayIncomeModel{}
return recookUserDayIncomeModel.FindByUserIdMonth(userId, month)
}
//
//type TeamIncome struct {
// TeamCount int `json:"teamCount"`
// TeamAmount decimal.Decimal `json:"teamAmount"`
// TeamSalesVolume decimal.Decimal `json:"teamSalesVolume"`
//}
//
////
////// @Style 团队收益
////func (i *incomeLogic) TeamIncome(userId uint) (result TeamIncome) {
//// recookUserWalletModel := &user.RecookUserWalletModel{}
//// userWallet := recookUserWalletModel.FindByUserId(userId)
////
//// recookUserTreeModel := &user.RecookUserTreeModel{}
//// userSqls := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 1)
////
//// recookUserRbacRoleModel := &user.RecookUserRbacRoleModel{}
//// roleSqls := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
//// user_role.DiamondLevelTwo,
//// user_role.DiamondLevelThree,
//// })
//// recookUserInfoModel := &user.RecookUserInfoModel{}
//// DiamondUsers := recookUserInfoModel.ListCount("id in ? and role_id in ?", userSqls, roleSqls)
////
//// count := recookUserTreeModel.UserCountWhere("root_id in (?)", DiamondUsers)
////
//// userCount := recookUserTreeModel.UserCount(userId)
////
//// result = TeamIncome{
//// TeamAmount: userWallet.TeamAmount,
//// TeamSalesVolume: userWallet.TeamSalesVolume,
//// TeamCount: userCount - count,
//// }
//// return
////}
//
//type RecommendIncome struct {
// RecommendCount int `json:"recommendCount"`
// RecommendAmount decimal.Decimal `json:"recommendAmount"`
// RecommendSalesVolume decimal.Decimal `json:"recommendSalesVolume"`
//}
//
////
////// @Style 推荐收益
////func (i *incomeLogic) RecommendIncome(userId uint) (result RecommendIncome) {
//// recookUserWalletModel := &user.RecookUserWalletModel{}
//// userWallet := recookUserWalletModel.FindByUserId(userId)
////
//// recookUserTreeModel := &user.RecookUserTreeModel{}
//// userSqls := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 1)
////
//// recookUserRbacRoleModel := &user.RecookUserRbacRoleModel{}
//// roleSqls := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
//// user_role.DiamondLevelTwo,
//// user_role.DiamondLevelThree,
//// })
////
//// recookUserInfoModel := &user.RecookUserInfoModel{}
//// DiamondUsers := recookUserInfoModel.ListCount("id in ? and role_id in ?", userSqls, roleSqls)
////
//// count := recookUserTreeModel.UserCountWhere("root_id in (?)", DiamondUsers)
////
//// rewardUserSqls := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 2)
//// rewardRoleSqls := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
//// user_role.DiamondLevelThree,
//// })
//// rewardUsers := recookUserInfoModel.ListCount("id in ? and role_id in ?", rewardUserSqls, rewardRoleSqls)
//// rewardCount := recookUserTreeModel.UserCountWhere("root_id in (?)", rewardUsers)
////
//// result = RecommendIncome{
//// RecommendAmount: userWallet.RecommendAmount,
//// RecommendSalesVolume: userWallet.RecommendSalesVolume,
//// RecommendCount: count - rewardCount,
//// }
//// return
////}
//
//type RewardIncome struct {
// RewardCount int `json:"rewardCount"`
// RewardAmount decimal.Decimal `json:"rewardAmount"`
// RewardSalesVolume decimal.Decimal `json:"rewardSalesVolume"`
//}
//
////
////// @Style 平台奖励收益
////func (i *incomeLogic) RewardIncome(userId uint) (result RewardIncome) {
//// recookUserWalletModel := &user.RecookUserWalletModel{}
//// userWallet := recookUserWalletModel.FindByUserId(userId)
////
//// recookUserTreeModel := &user.RecookUserTreeModel{}
//// userSqls := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 2)
////
//// recookUserRbacRoleModel := &user.RecookUserRbacRoleModel{}
//// roleSqls := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
//// user_role.DiamondLevelThree,
//// })
////
//// recookUserInfoModel := &user.RecookUserInfoModel{}
//// DiamondUsers := recookUserInfoModel.ListCount("id in ? and role_id in ?", userSqls, roleSqls)
////
//// count := recookUserTreeModel.UserCountWhere("root_id in (?)", DiamondUsers)
//// result = RewardIncome{
//// RewardAmount: userWallet.RewardAmount,
//// RewardSalesVolume: userWallet.RewardSalesVolume,
//// RewardCount: count,
//// }
//// return
////}
//
//type UserIncome struct {
// UserId uint `json:"userId"`
// HeadImgUrl string `json:"headImgUrl"`
// Nickname string `json:"nickname"`
// Phone string `json:"phone"`
// WechatNo string `json:"wechatNo"`
// RemarkName string `json:"remarkName"`
// Count int `json:"count"`
// Amount decimal.Decimal `json:"amount"`
// RoleLevel uint `json:"roleLevel"`
// OrderCount uint `json:"order_count"`
//}
//
//type MonthIncome struct {
// UserIncome []UserIncome `json:"userIncome"`
// Amount decimal.Decimal `json:"amount"`
// SalesVolume decimal.Decimal `json:"salesVolume"`
// Ratio decimal.Decimal `json:"ratio"`
// Count decimal.Decimal `json:"count"`
// OrderCount int `json:"order_count"`
// IsSettlement int
//}
//
////
////// @Style 团队月收益
////func (i *incomeLogic) TeamMonthIncome(userId uint, month int) (result MonthIncome) {
//// recookUserTeamIncomeModel := &user.RecookUserTeamIncomeModel{}
//// teamIncome := recookUserTeamIncomeModel.FindByUserIdAndDate(userId, month)
//// if teamIncome.Id > 0 {
//// result.Amount = teamIncome.TeamAmount
//// result.SalesVolume = teamIncome.TeamSalesVolume
//// result.Count = teamIncome.TeamCount
//// result.IsSettlement = teamIncome.IsSettlement
//// result.OrderCount = teamIncome.OrderCount
//// recookUserRbacRoleModel := &user.RecookUserRbacRoleModel{}
////
//// roleInfo := recookUserRbacRoleModel.FindById(teamIncome.RoleId)
//// result.Ratio = roleInfo.TeamRatio
////
//// recookUserTreeModel := &user.RecookUserTreeModel{}
//// userSqls := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 1, 0)
////
//// roleSqls := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
//// user_role.DiamondLevelTwo,
//// user_role.DiamondLevelThree,
//// })
////
//// recookUserInfoModel := &user.RecookUserInfoModel{}
//// recookUserInfoModel.GetDb().Table(recookUserInfoModel.TableName()+" userInfo").
//// Select([]string{
//// "userInfo.id as user_id,head_img_url,nickname,phone,wechat_no,remark_name",
//// "team_sales_volume as amount, team_count as `count`",
//// "role_level",
//// "team_count as order_count",
//// }).
//// Joins(fmt.Sprintf("join %s as teamIncome on userInfo.id = teamIncome.user_id and teamIncome.date = ?", recookUserTeamIncomeModel.TableName()), month).
//// Joins(fmt.Sprintf("join %s as userLevel on teamIncome.role_id = userLevel.id", recookUserRbacRoleModel.TableName())).
//// Where("userInfo.id in ? and teamIncome.role_id not in (?)", userSqls, roleSqls).
//// Find(&result.UserIncome)
//// }
//// return
////}
////
////// @Style 推荐月收益
////func (i *incomeLogic) RecommendMonthIncome(userId uint, month int) (result MonthIncome) {
//// recookUserTeamIncomeModel := &user.RecookUserTeamIncomeModel{}
//// teamIncome := recookUserTeamIncomeModel.FindByUserIdAndDate(userId, month)
//// if teamIncome.Id > 0 {
//// result.Amount = teamIncome.RecommendAmount
//// result.SalesVolume = teamIncome.RecommendSalesVolume
//// result.Count = teamIncome.RecommendCount
//// result.IsSettlement = teamIncome.IsSettlement
//// result.OrderCount = teamIncome.OrderCount
//// recookUserRbacRoleModel := &user.RecookUserRbacRoleModel{}
////
//// roleInfo := recookUserRbacRoleModel.FindById(teamIncome.RoleId)
//// result.Ratio = roleInfo.TeamRatio
////
//// recookUserTreeModel := &user.RecookUserTreeModel{}
//// userSqls := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 1)
////
//// roleSqls := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
//// user_role.DiamondLevelTwo,
//// user_role.DiamondLevelThree,
//// })
////
//// recookUserInfoModel := &user.RecookUserInfoModel{}
//// recookUserInfoModel.GetDb().Table(recookUserInfoModel.TableName()+" userInfo").
//// Select([]string{
//// "userInfo.id as user_id,head_img_url,nickname,phone,wechat_no,remark_name",
//// "team_sales_volume as amount, team_count as `count`",
//// "role_level",
//// "recommend_count as order_count",
//// }).
//// Joins(fmt.Sprintf("join %s as teamIncome on userInfo.id = teamIncome.user_id and teamIncome.date = ?", recookUserTeamIncomeModel.TableName()), month).
//// Joins(fmt.Sprintf("join %s as userLevel on teamIncome.role_id = userLevel.id", recookUserRbacRoleModel.TableName())).
//// Where("userInfo.id in ? and teamIncome.role_id in (?)", userSqls, roleSqls).
//// Find(&result.UserIncome)
//// }
//// return
////}
////
////// @Style 团队月收益
////func (i *incomeLogic) RewardMonthIncome(userId uint, month int) (result MonthIncome) {
//// recookUserTeamIncomeModel := &user.RecookUserTeamIncomeModel{}
//// teamIncome := recookUserTeamIncomeModel.FindByUserIdAndDate(userId, month)
//// if teamIncome.Id > 0 {
//// result.Amount = teamIncome.RewardAmount
//// result.SalesVolume = teamIncome.RewardSalesVolume
//// result.Count = teamIncome.RewardCount
//// result.IsSettlement = teamIncome.IsSettlement
//// result.OrderCount = teamIncome.OrderCount
//// recookUserRbacRoleModel := &user.RecookUserRbacRoleModel{}
////
//// roleInfo := recookUserRbacRoleModel.FindById(teamIncome.RoleId)
//// result.Ratio = roleInfo.RewardRatio
////
//// recookUserTreeModel := &user.RecookUserTreeModel{}
//// userSqls := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 2)
////
//// roleSqls := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
//// user_role.DiamondLevelThree,
//// })
////
//// recookUserInfoModel := &user.RecookUserInfoModel{}
//// recookUserInfoModel.GetDb().Table(recookUserInfoModel.TableName()+" userInfo").
//// Select([]string{
//// "userInfo.id as user_id,head_img_url,nickname,phone,wechat_no,remark_name",
//// "team_sales_volume as amount, team_count as `count`",
//// "role_level",
//// "reward_count as order_count",
//// }).
//// Joins(fmt.Sprintf("join %s as teamIncome on userInfo.id = teamIncome.user_id and teamIncome.date = ?", recookUserTeamIncomeModel.TableName()), month).
//// Joins(fmt.Sprintf("join %s as userLevel on teamIncome.role_id = userLevel.id", recookUserRbacRoleModel.TableName())).
//// Where("userInfo.id in ? and teamIncome.role_id in (?)", userSqls, roleSqls).
//// Find(&result.UserIncome)
//// }
//// return
////}
//
//type DayExpect struct {
// Count int `json:"count"`
// SalesVolume decimal.Decimal `json:"salesVolume"`
// Amount decimal.Decimal `json:"amount"`
//}
//
//type Expect struct {
// SalesVolume decimal.Decimal `json:"salesVolume"`
// Amount decimal.Decimal `json:"amount"`
// Ratio decimal.Decimal `json:"ratio"`
// Count int `json:"order_count"`
//}
//
//type DayIncomes struct {
// Purchase DayExpect `json:"purchase"`
// Guide DayExpect `json:"guide"`
// Team Expect `json:"team"`
// Recommend Expect `json:"recommend"`
// Reward Expect `json:"reward"`
//}
//
////// @Style 日收益信息
////func (i *incomeLogic) DayIncomes(userId uint, day int) (result DayIncomes) {
//// recookUserInfoModel := &user.RecookUserInfoModel{}
//// userInfo := recookUserInfoModel.FindById(userId)
////
//// recookUserRbacRoleModel := &user.RecookUserRbacRoleModel{}
//// roleInfo := recookUserRbacRoleModel.FindById(userInfo.RoleId)
////
//// recookUserDayExpectIncomeModel := &user.RecookUserDayExpectIncomeModel{}
//// dayInfo := recookUserDayExpectIncomeModel.FindByUserIdAndDate(userId, day)
////
//// result.Purchase.Count = dayInfo.PurchaseCount
//// result.Purchase.Amount = dayInfo.PurchaseAmount
//// result.Purchase.SalesVolume = dayInfo.PurchaseSalesVolume
//// result.Guide.Count = dayInfo.GuideCount
//// result.Guide.Amount = dayInfo.GuideAmount
//// result.Guide.SalesVolume = dayInfo.GuideSalesVolume
////
//// recookUserTreeModel := &user.RecookUserTreeModel{}
////
//// // 平台奖励收益
//// if !roleInfo.RewardRatio.IsZero() {
//// userSqls := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 2)
//// roleSqls := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
//// user_role.DiamondLevelThree,
//// })
//// recookUserDayExpectIncomeModel.GetDb().
//// Table(recookUserDayExpectIncomeModel.TableName()+" dayIncome").
//// Select("sum(amount) as sales_volume").
//// Joins(fmt.Sprintf("join %s userInfo on userInfo.id = dayIncome.user_id and dayIncome.day = ?", recookUserInfoModel.TableName()), day).
//// Where("userInfo.id in ? and userInfo.role_id in ?", userSqls, roleSqls).
//// First(&result.Reward)
//// result.Reward.Ratio = roleInfo.RewardRatio
//// result.Reward.Amount = result.Reward.SalesVolume.Mul(result.Reward.Ratio).Div(decimal.NewFromInt(100)).Truncate(2)
//// }
////
//// // 推荐收益
//// if !roleInfo.RecommendRatio.IsZero() {
//// userSqls := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 1)
//// roleSqls := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
//// user_role.DiamondLevelTwo,
//// user_role.DiamondLevelThree,
//// })
//// recookUserDayExpectIncomeModel.GetDb().
//// Table(recookUserDayExpectIncomeModel.TableName()+" dayIncome").
//// Select("sum(amount) as sales_volume").
//// Joins(fmt.Sprintf("join %s userInfo on userInfo.id = dayIncome.user_id and dayIncome.day = ?", recookUserInfoModel.TableName()), day).
//// Where("userInfo.id in ? and userInfo.role_id in ?", userSqls, roleSqls).
//// First(&result.Recommend)
//// result.Recommend.SalesVolume = result.Recommend.SalesVolume.Sub(result.Reward.SalesVolume)
//// result.Recommend.Ratio = roleInfo.RecommendRatio
//// result.Recommend.Amount = result.Recommend.SalesVolume.Mul(result.Recommend.Ratio).Div(decimal.NewFromInt(100)).Truncate(2)
//// }
////
//// // 团队收益
//// if !roleInfo.TeamRatio.IsZero() {
//// result.Team.SalesVolume = dayInfo.Amount.Sub(result.Recommend.SalesVolume).Sub(result.Reward.SalesVolume)
//// result.Team.Ratio = roleInfo.TeamRatio
//// result.Team.Amount = result.Team.SalesVolume.Mul(result.Team.Ratio).Div(decimal.NewFromInt(100)).Truncate(2)
//// }
//// return
////}
//
////// @Style 月收益信息
////func (i *incomeLogic) MonthIncomes(userId uint, month int) (result DayIncomes) {
//// recookUserTeamExpectIncomeModel := &user.RecookUserTeamExpectIncomeModel{}
//// monthInfo := recookUserTeamExpectIncomeModel.FindByUserIdAndDate(userId, month)
////
//// recookUserRbacRoleModel := &user.RecookUserRbacRoleModel{}
//// //roleInfo := recookUserRbacRoleModel.FindById(monthInfo.RoleId)
////
//// result.Purchase.Count = monthInfo.PurchaseCount
//// result.Purchase.Amount = monthInfo.PurchaseAmount
//// result.Purchase.SalesVolume = monthInfo.PurchaseSalesVolume
//// result.Guide.Count = monthInfo.GuideCount
//// result.Guide.Amount = monthInfo.GuideAmount
//// result.Guide.SalesVolume = monthInfo.GuideSalesVolume
////
//// recookUserTreeModel := &user.RecookUserTreeModel{}
////
//// recookUserInfoModel := &user.RecookUserInfoModel{}
//// // 平台奖励收益
//// if !roleInfo.RewardRatio.IsZero() {
//// userSqls := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 2)
//// roleSqls := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
//// user_role.DiamondLevelThree,
//// })
//// recookUserTeamExpectIncomeModel.GetDb().
//// Table(recookUserTeamExpectIncomeModel.TableName()+" teamIncome").
//// Select("sum(amount) as sales_volume").
//// Joins(fmt.Sprintf("join %s userInfo on userInfo.id = teamIncome.user_id and teamIncome.date = ?", recookUserInfoModel.TableName()), month).
//// Where("userInfo.id in ? and teamIncome.role_id in ?", userSqls, roleSqls).
//// First(&result.Reward)
//// result.Reward.Ratio = roleInfo.RewardRatio
//// result.Reward.Amount = result.Reward.SalesVolume.Mul(result.Reward.Ratio).Div(decimal.NewFromInt(100)).Truncate(2)
//// }
////
//// // 推荐收益
//// if !roleInfo.RecommendRatio.IsZero() {
//// userSqls := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 1)
//// roleSqls := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
//// user_role.DiamondLevelTwo,
//// user_role.DiamondLevelThree,
//// })
//// recookUserTeamExpectIncomeModel.GetDb().
//// Table(recookUserTeamExpectIncomeModel.TableName()+" teamIncome").
//// Select("sum(amount) as sales_volume").
//// Joins(fmt.Sprintf("join %s userInfo on userInfo.id = teamIncome.user_id and teamIncome.date = ?", recookUserInfoModel.TableName()), month).
//// Where("userInfo.id in ? and teamIncome.role_id in ?", userSqls, roleSqls).
//// First(&result.Recommend)
//// result.Recommend.SalesVolume = result.Recommend.SalesVolume.Sub(result.Reward.SalesVolume)
//// result.Recommend.Ratio = roleInfo.RecommendRatio
//// result.Recommend.Amount = result.Recommend.SalesVolume.Mul(result.Recommend.Ratio).Div(decimal.NewFromInt(100)).Truncate(2)
//// }
////
//// // 团队收益
//// if !roleInfo.TeamRatio.IsZero() {
//// result.Team.SalesVolume = monthInfo.Amount.Sub(result.Recommend.SalesVolume).Sub(result.Reward.SalesVolume)
//// result.Team.Ratio = roleInfo.TeamRatio
//// result.Team.Amount = result.Team.SalesVolume.Mul(result.Team.Ratio).Div(decimal.NewFromInt(100)).Truncate(2)
//// }
//// return
////}
//
//type DayExpects struct {
// Purchase DayExpect `json:"purchase"`
// Guide DayExpect `json:"guide"`
//}
//
//// @Style 日自购/导购预估收益
//func (i *incomeLogic) DayExpect(userId uint, day int) DayExpects {
// recookUserDayExpectIncomeModel := &user.RecookUserDayExpectIncomeModel{}
// dayExpectInfo := recookUserDayExpectIncomeModel.FindByUserIdAndDate(userId, day)
// return DayExpects{
// Purchase: DayExpect{
// Count: dayExpectInfo.PurchaseCount,
// SalesVolume: dayExpectInfo.PurchaseSalesVolume,
// Amount: dayExpectInfo.PurchaseAmount,
// },
// Guide: DayExpect{
// Count: dayExpectInfo.GuideCount,
// SalesVolume: dayExpectInfo.GuideSalesVolume,
// Amount: dayExpectInfo.GuideAmount,
// },
// }
//}
//
//type MonthExpects struct {
// Purchase DayExpect `json:"purchase"`
// Guide DayExpect `json:"guide"`
// PurchaseList []DayExpectItem `json:"purchaseList"`
// GuideList []DayExpectItem `json:"guideList"`
//}
//
//type DayExpectItem struct {
// Day int `json:"day"`
// DayExpect
//}
//
//// @Style 月自购/导购预估收益
//func (i *incomeLogic) MonthExpect(userId uint, month int) (result MonthExpects) {
// recookUserTeamExpectIncomeModel := &user.RecookUserTeamExpectIncomeModel{}
// monthExpectInfo := recookUserTeamExpectIncomeModel.FindByUserIdAndDate(userId, month)
//
// result = MonthExpects{
// Purchase: DayExpect{
// Count: monthExpectInfo.PurchaseCount,
// SalesVolume: monthExpectInfo.PurchaseSalesVolume,
// Amount: monthExpectInfo.PurchaseAmount,
// },
// Guide: DayExpect{
// Count: monthExpectInfo.GuideCount,
// SalesVolume: monthExpectInfo.GuideSalesVolume,
// Amount: monthExpectInfo.GuideAmount,
// },
// }
//
// recookUserDayExpectIncomeModel := &user.RecookUserDayExpectIncomeModel{}
// list := recookUserDayExpectIncomeModel.FindByUserIdInMonth(userId, month)
// for _, item := range list {
// result.PurchaseList = append(result.PurchaseList, DayExpectItem{
// Day: item.Day,
// DayExpect: DayExpect{
// Count: item.PurchaseCount,
// SalesVolume: item.PurchaseSalesVolume,
// Amount: item.PurchaseAmount,
// },
// })
// result.GuideList = append(result.GuideList, DayExpectItem{
// Day: item.Day,
// DayExpect: DayExpect{
// Count: item.GuideCount,
// SalesVolume: item.GuideSalesVolume,
// Amount: item.GuideAmount,
// },
// })
// }
// return
//}
//
//type ExpectTeam struct {
// Team Expect `json:"team"`
// Recommend Expect `json:"recommend"`
// Reward Expect `json:"reward"`
// TeamList []UserIncome `json:"teamList"`
// RecommendList []UserIncome `json:"recommendList"`
// RewardList []UserIncome `json:"rewardList"`
//}
//
//// @Style 日团队预估收益
//func (i *incomeLogic) DayExpectTeam(userId uint, day int) (result ExpectTeam) {
// recookUserInfoModel := &user.RecookUserInfoModel{}
// userInfo := recookUserInfoModel.FindById(userId)
//
// recookUserRbacRoleModel := &user.RecookUserRbacRoleModel{}
// roleInfo := recookUserRbacRoleModel.FindById(userInfo.RoleId)
//
// recookUserDayExpectIncomeModel := &user.RecookUserDayExpectIncomeModel{}
// recookUserTreeModel := &user.RecookUserTreeModel{}
//
// result.TeamList = make([]UserIncome, 0)
// result.RecommendList = make([]UserIncome, 0)
// result.RewardList = make([]UserIncome, 0)
//
// // 平台奖励收益
// if !roleInfo.RewardRatio.IsZero() {
// userSql := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 2)
// roleSql := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
// user_role.DiamondLevelThree,
// })
// recookUserDayExpectIncomeModel.GetDb().
// Table(recookUserDayExpectIncomeModel.TableName()+" dayIncome").
// Select("sum(amount) as sales_volume,sum(purchase_count + guide_amount) as count").
// Joins(fmt.Sprintf("join %s userInfo on userInfo.id = dayIncome.user_id and dayIncome.day = ?", recookUserInfoModel.TableName()), day).
// Where("userInfo.id in ? and userInfo.role_id in ?", userSql, roleSql).
// First(&result.Reward)
// result.Reward.Ratio = roleInfo.RewardRatio
// result.Reward.Amount = result.Reward.SalesVolume.Mul(result.Reward.Ratio).Div(decimal.NewFromInt(100)).Truncate(2)
//
// recookUserInfoModel.GetDb().Table(recookUserInfoModel.TableName()+" userInfo").
// Select([]string{
// "userInfo.id as user_id,head_img_url,nickname,phone,wechat_no,remark_name",
// "amount",
// "role_level",
// "count(userTree.user_id) as `count`",
// "count(dayIncome.purchase_count + dayIncome.guide_count) as `order_count`",
// }).
// Joins(fmt.Sprintf("join %s as dayIncome on userInfo.id = dayIncome.user_id and dayIncome.day = ?", recookUserDayExpectIncomeModel.TableName()), day).
// Joins(fmt.Sprintf("join %s as userLevel on userInfo.role_id = userLevel.id", recookUserRbacRoleModel.TableName())).
// Joins(fmt.Sprintf("join %s as userTree on userTree.root_id = userInfo.id", recookUserTreeModel.TableName())).
// Where("userInfo.id in ? and userInfo.role_id in (?)", userSql, roleSql).
// Group("userInfo.id").
// Find(&result.RewardList)
// }
//
// // 推荐收益
// if !roleInfo.RecommendRatio.IsZero() {
// userSql := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 1)
// roleSql := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
// user_role.DiamondLevelTwo,
// user_role.DiamondLevelThree,
// })
// recookUserDayExpectIncomeModel.GetDb().
// Table(recookUserDayExpectIncomeModel.TableName()+" dayIncome").
// Select("sum(amount) as sales_volume,sum(purchase_count + guide_amount) as count").
// Joins(fmt.Sprintf("join %s userInfo on userInfo.id = dayIncome.user_id and dayIncome.day = ?", recookUserInfoModel.TableName()), day).
// Where("userInfo.id in ? and userInfo.role_id in ?", userSql, roleSql).
// First(&result.Recommend)
// result.Recommend.SalesVolume = result.Recommend.SalesVolume.Sub(result.Reward.SalesVolume)
// result.Recommend.Ratio = roleInfo.RecommendRatio
// result.Recommend.Amount = result.Recommend.SalesVolume.Mul(result.Recommend.Ratio).Div(decimal.NewFromInt(100)).Truncate(2)
//
// recookUserInfoModel.GetDb().Table(recookUserInfoModel.TableName()+" userInfo").
// Select([]string{
// "userInfo.id as user_id,head_img_url,nickname,phone,wechat_no,remark_name",
// "amount",
// "role_level",
// "count(userTree.user_id) as `count`",
// "count(dayIncome.purchase_count + dayIncome.guide_count) as `order_count`",
// }).
// Joins(fmt.Sprintf("join %s as dayIncome on userInfo.id = dayIncome.user_id and dayIncome.day = ?", recookUserDayExpectIncomeModel.TableName()), day).
// Joins(fmt.Sprintf("join %s as userLevel on userInfo.role_id = userLevel.id", recookUserRbacRoleModel.TableName())).
// Joins(fmt.Sprintf("join %s as userTree on userTree.root_id = userInfo.id", recookUserTreeModel.TableName())).
// Where("userInfo.id in ? and userInfo.role_id in (?)", userSql, roleSql).
// Group("userInfo.id").
// Find(&result.RecommendList)
//
// if len(result.RecommendList) > 0 {
// rewardUserSqls := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 2)
// rewardRoleSqls := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
// user_role.DiamondLevelThree,
// })
// res := make([]rewardInfo, 0)
// recookUserInfoModel.GetDb().Table(recookUserInfoModel.TableName()+" userInfo").
// Select([]string{
// "userTreeInfo.root_id",
// "count(userTree.user_id) as `count`",
// }).
// Joins(fmt.Sprintf("join %s as userLevel on userInfo.role_id = userLevel.id", recookUserRbacRoleModel.TableName())).
// Joins(fmt.Sprintf("join %s as userTreeInfo on userTreeInfo.user_id = userInfo.id and userTreeInfo.depth = 1", recookUserTreeModel.TableName())).
// Joins(fmt.Sprintf("join %s as userTree on userTree.root_id = userInfo.id", recookUserTreeModel.TableName())).
// Where("userInfo.id in ? and userInfo.role_id in (?) ", rewardUserSqls, rewardRoleSqls).
// Group("userInfo.id").
// Find(&res)
// mapReward := map[uint]int{}
// for _, item := range res {
// mapReward[item.RootId] += item.Count
// }
//
// for index, item := range result.RecommendList {
// result.RecommendList[index].Count = item.Count - mapReward[item.UserId]
// }
// }
// }
//
// // 团队收益
// if !roleInfo.TeamRatio.IsZero() {
// userSqls := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 0, 1)
// roleSqls := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
// user_role.DiamondLevelTwo,
// user_role.DiamondLevelThree,
// })
// dayInfo := recookUserDayExpectIncomeModel.FindByUserIdAndDate(userId, day)
// if dayInfo.Amount.GreaterThan(decimal.NewFromInt(0)) {
// result.Team.SalesVolume = dayInfo.Amount.Sub(result.Recommend.SalesVolume).Sub(result.Reward.SalesVolume)
// result.Team.Ratio = roleInfo.TeamRatio
// result.Team.Amount = result.Team.SalesVolume.Mul(result.Team.Ratio).Div(decimal.NewFromInt(100)).Truncate(2)
// result.Team.Count = dayInfo.PurchaseCount + dayInfo.GuideCount
// recookUserInfoModel.GetDb().Table(recookUserInfoModel.TableName()+" userInfo").
// Select([]string{
// "userInfo.id as user_id,head_img_url,nickname,phone,wechat_no,remark_name",
// "amount",
// "role_level",
// "count(userTree.user_id) as `count`",
// "count(dayIncome.purchase_count + dayIncome.guide_count) as `order_count`",
// }).
// Joins(fmt.Sprintf("join %s as dayIncome on userInfo.id = dayIncome.user_id and dayIncome.day = ?", recookUserDayExpectIncomeModel.TableName()), day).
// Joins(fmt.Sprintf("join %s as userLevel on userInfo.role_id = userLevel.id", recookUserRbacRoleModel.TableName())).
// Joins(fmt.Sprintf("join %s as userTree on userTree.root_id = userInfo.id", recookUserTreeModel.TableName())).
// Where("userInfo.id in ? and userInfo.role_id not in (?)", userSqls, roleSqls).
// Group("userInfo.id").
// Find(&result.TeamList)
// }
// }
// return
//}
//
//// @Style 月团队预估收益
//func (i *incomeLogic) MonthExpectTeam(userId uint, month int) (result ExpectTeam) {
// recookUserInfoModel := &user.RecookUserInfoModel{}
// userInfo := recookUserInfoModel.FindById(userId)
//
// recookUserRbacRoleModel := &user.RecookUserRbacRoleModel{}
// roleInfo := recookUserRbacRoleModel.FindById(userInfo.RoleId)
//
// recookUserTeamExpectIncomeModel := &user.RecookUserTeamExpectIncomeModel{}
// recookUserTreeModel := &user.RecookUserTreeModel{}
//
// // 平台奖励收益
// if !roleInfo.RewardRatio.IsZero() {
// userSqls := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 2)
// roleSqls := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
// user_role.DiamondLevelThree,
// })
// recookUserTeamExpectIncomeModel.GetDb().
// Table(recookUserTeamExpectIncomeModel.TableName()+" teamIncome").
// Select("sum(amount) as sales_volume").
// Joins(fmt.Sprintf("join %s userInfo on userInfo.id = teamIncome.user_id and teamIncome.date = ?", recookUserInfoModel.TableName()), month).
// Where("userInfo.id in ? and userInfo.role_id in ?", userSqls, roleSqls).
// First(&result.Reward)
// result.Reward.Ratio = roleInfo.RewardRatio
// result.Reward.Amount = result.Reward.SalesVolume.Mul(result.Reward.Ratio).Div(decimal.NewFromInt(100)).Truncate(2)
//
// recookUserInfoModel.GetDb().Table(recookUserInfoModel.TableName()+" userInfo").
// Select([]string{
// "userInfo.id as user_id,head_img_url,nickname,phone,wechat_no,remark_name",
// "amount",
// "role_level",
// "count(userTree.user_id) as `count`",
// }).
// Joins(fmt.Sprintf("join %s as teamIncome on userInfo.id = teamIncome.user_id and teamIncome.date = ?", recookUserTeamExpectIncomeModel.TableName()), month).
// Joins(fmt.Sprintf("join %s as userLevel on userInfo.role_id = userLevel.id", recookUserRbacRoleModel.TableName())).
// Joins(fmt.Sprintf("join %s as userTree on userTree.root_id = userInfo.id", recookUserTreeModel.TableName())).
// Where("userInfo.id in ? and userInfo.role_id in (?)", userSqls, roleSqls).
// Group("userInfo.id").
// Find(&result.RewardList)
// }
//
// // 推荐收益
// if !roleInfo.RecommendRatio.IsZero() {
// userSqls := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 1)
// roleSqls := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
// user_role.DiamondLevelTwo,
// user_role.DiamondLevelThree,
// })
// recookUserTeamExpectIncomeModel.GetDb().
// Table(recookUserTeamExpectIncomeModel.TableName()+" teamIncome").
// Select("sum(amount) as sales_volume").
// Joins(fmt.Sprintf("join %s userInfo on userInfo.id = teamIncome.user_id and teamIncome.date = ?", recookUserInfoModel.TableName()), month).
// Where("userInfo.id in ? and userInfo.role_id in ?", userSqls, roleSqls).
// First(&result.Recommend)
// result.Recommend.SalesVolume = result.Recommend.SalesVolume.Sub(result.Reward.SalesVolume)
// result.Recommend.Ratio = roleInfo.RecommendRatio
// result.Recommend.Amount = result.Recommend.SalesVolume.Mul(result.Recommend.Ratio).Div(decimal.NewFromInt(100)).Truncate(2)
//
// recookUserInfoModel.GetDb().Table(recookUserInfoModel.TableName()+" userInfo").
// Select([]string{
// "userInfo.id as user_id,head_img_url,nickname,phone,wechat_no,remark_name",
// "amount",
// "role_level",
// "count(userTree.user_id) as `count`",
// }).
// Joins(fmt.Sprintf("join %s as teamIncome on userInfo.id = teamIncome.user_id and teamIncome.date = ?", recookUserTeamExpectIncomeModel.TableName()), month).
// Joins(fmt.Sprintf("join %s as userLevel on userInfo.role_id = userLevel.id", recookUserRbacRoleModel.TableName())).
// Joins(fmt.Sprintf("join %s as userTree on userTree.root_id = userInfo.id", recookUserTreeModel.TableName())).
// Where("userInfo.id in ? and userInfo.role_id in (?)", userSqls, roleSqls).
// Group("userInfo.id").
// Find(&result.RecommendList)
//
// if len(result.RecommendList) > 0 {
// rewardUserSqls := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 2)
// rewardRoleSqls := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
// user_role.DiamondLevelThree,
// })
// res := []rewardInfo{}
// recookUserInfoModel.GetDb().Table(recookUserInfoModel.TableName()+" userInfo").
// Select([]string{
// "userTreeInfo.root_id",
// "count(userTree.user_id) as `count`",
// }).
// Joins(fmt.Sprintf("join %s as userLevel on userInfo.role_id = userLevel.id", recookUserRbacRoleModel.TableName())).
// Joins(fmt.Sprintf("join %s as userTreeInfo on userTreeInfo.user_id = userInfo.id and userTreeInfo.depth = 1", recookUserTreeModel.TableName())).
// Joins(fmt.Sprintf("join %s as userTree on userTree.root_id = userInfo.id", recookUserTreeModel.TableName())).
// Where("userInfo.id in ? and userInfo.role_id in (?) ", rewardUserSqls, rewardRoleSqls).
// Group("userInfo.id").
// Find(&res)
// mapReward := map[uint]int{}
// for _, item := range res {
// mapReward[item.RootId] += item.Count
// }
//
// for index, item := range result.RecommendList {
// result.RecommendList[index].Count = item.Count - mapReward[item.UserId]
// }
// }
// }
//
// // 团队收益
// if !roleInfo.TeamRatio.IsZero() {
// teamInfo := recookUserTeamExpectIncomeModel.FindByUserIdAndDate(userId, month)
//
// userSqls := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 1)
// roleSqls := recookUserRbacRoleModel.GetByRoleIdsSql([]uint{
// user_role.DiamondLevelTwo,
// user_role.DiamondLevelThree,
// })
//
// result.Team.SalesVolume = teamInfo.Amount.Sub(result.Recommend.SalesVolume).Sub(result.Reward.SalesVolume)
// result.Team.Ratio = roleInfo.TeamRatio
// result.Team.Amount = result.Team.SalesVolume.Mul(result.Team.Ratio).Div(decimal.NewFromInt(100)).Truncate(2)
//
// recookUserInfoModel.GetDb().Table(recookUserInfoModel.TableName()+" userInfo").
// Select([]string{
// "userInfo.id as user_id,head_img_url,nickname,phone,wechat_no,remark_name",
// "amount",
// "role_level",
// "count(userTree.user_id) as `count`",
// }).
// Joins(fmt.Sprintf("join %s as teamIncome on userInfo.id = teamIncome.user_id and teamIncome.date = ?", recookUserTeamExpectIncomeModel.TableName()), month).
// Joins(fmt.Sprintf("join %s as userLevel on userInfo.role_id = userLevel.id", recookUserRbacRoleModel.TableName())).
// Joins(fmt.Sprintf("join %s as userTree on userTree.root_id = userInfo.id", recookUserTreeModel.TableName())).
// Where("userInfo.id in ? and userInfo.role_id not in (?)", userSqls, roleSqls).
// Group("userInfo.id").
// Find(&result.TeamList)
//
// }
// return
//}