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.
1111 lines
47 KiB
1111 lines
47 KiB
package user
|
|
|
|
import (
|
|
"recook/internal/model/order"
|
|
"recook/internal/v2/model/recook/user"
|
|
|
|
"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
|
|
|
|
Count1 uint
|
|
Amount1 decimal.Decimal
|
|
Count2 uint
|
|
Amount2 decimal.Decimal
|
|
Count3 uint
|
|
Amount3 decimal.Decimal
|
|
Count4 uint
|
|
Amount4 decimal.Decimal
|
|
|
|
Total decimal.Decimal
|
|
ETotal decimal.Decimal
|
|
}
|
|
|
|
type Person struct {
|
|
HeadImgUrl string
|
|
Nickname string
|
|
Phone string
|
|
WechatNo string
|
|
RemarkName string
|
|
Count int
|
|
Flag int
|
|
Amount decimal.Decimal
|
|
}
|
|
|
|
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: len(v.OrderList),
|
|
Amount: amount,
|
|
})
|
|
}
|
|
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)
|
|
for _, v := range pr {
|
|
switch v.Status {
|
|
case 0:
|
|
switch v.Type {
|
|
case 1:
|
|
res.ECount1 += 1
|
|
res.EAmount1 = res.EAmount1.Add(v.Income)
|
|
case 2:
|
|
res.ECount2 += 1
|
|
res.EAmount2 = res.EAmount2.Add(v.Income)
|
|
case 3:
|
|
res.ECount3 += 1
|
|
res.EAmount3 = res.EAmount3.Add(v.Income)
|
|
case 4:
|
|
res.ECount4 += 1
|
|
res.EAmount4 = res.EAmount4.Add(v.Income)
|
|
}
|
|
res.ETotal = res.ETotal.Add(v.Income)
|
|
case 2:
|
|
switch v.Type {
|
|
case 1:
|
|
res.Count1 += 1
|
|
res.Amount1 = res.EAmount1.Add(v.Income)
|
|
case 2:
|
|
res.Count2 += 1
|
|
res.Amount2 = res.EAmount2.Add(v.Income)
|
|
case 3:
|
|
res.Count3 += 1
|
|
res.Amount3 = res.EAmount3.Add(v.Income)
|
|
case 4:
|
|
res.Count4 += 1
|
|
res.Amount4 = res.EAmount4.Add(v.Income)
|
|
}
|
|
res.Total = res.ETotal.Add(v.Income)
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
//
|
|
//// @Style 会员收益
|
|
////func (i *incomeLogic) Income(userId uint) MyIncome {
|
|
//// recookUserInfoModel := &user.RecookUserInfoModel{}
|
|
//// userInfo := recookUserInfoModel.FindById(userId)
|
|
////
|
|
//// recookUserRbacRoleModel := &user.RecookUserRbacRoleModel{}
|
|
//// roleInfo := recookUserRbacRoleModel.FindById(userInfo.RoleId)
|
|
//// now := time.Now()
|
|
//// month, _ := strconv.Atoi(now.Format("200601"))
|
|
//// day, _ := strconv.Atoi(now.Format("20060102"))
|
|
//// lastMonth, _ := strconv.Atoi(now.AddDate(0, -1, 0).Format("200601"))
|
|
//// return MyIncome{
|
|
//// MonthExpect: i.GetByMonth(userId, month).Truncate(2),
|
|
//// DayExpect: i.GetByDay(userId, day, roleInfo.RoleLevel).Truncate(2),
|
|
//// LastMonthExpect: i.GetByMonth(userId, lastMonth).Truncate(2),
|
|
//// LastMonthIncome: i.GetMonthIncome(userId, lastMonth).Truncate(2),
|
|
//// }
|
|
////}
|
|
//
|
|
//// @Style 获取月份预估收益
|
|
////func (i *incomeLogic) GetByMonth(userId uint, date int) decimal.Decimal {
|
|
//// recookUserTeamExpectIncomeModel := &user.RecookUserTeamExpectIncomeModel{}
|
|
//// expectInfo := recookUserTeamExpectIncomeModel.FindByUserIdAndDate(userId, date)
|
|
////
|
|
//// recookUserRbacRoleModel := &user.RecookUserRbacRoleModel{}
|
|
//// //roleInfo := recookUserRbacRoleModel.FindById(expectInfo.RoleId)
|
|
//// switch roleInfo.RoleLevel {
|
|
//// case user_role.DiamondLevel:
|
|
//// // 钻一团队销售额3% + 钻二团队销售额1% + 钻三团队销售额1%
|
|
//// recookUserTreeModel := &user.RecookUserTreeModel{}
|
|
////
|
|
//// // 钻二
|
|
//// twoUserIdsSql := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 1)
|
|
//// // 获取所有钻二uid子查询
|
|
//// diamondTwoIdsSql := i.getRoleLevelUserIdsSql(user_role.DiamondLevelTwo, twoUserIdsSql)
|
|
//// // 统计钻二收益
|
|
//// twoSumInfo := recookUserTeamExpectIncomeModel.GetTeamAmoutSum("date = ? and user_id in (?)", date, diamondTwoIdsSql)
|
|
////
|
|
//// // 钻三
|
|
//// threeUserIdsSql := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 2)
|
|
//// // 获取所有钻二uid子查询
|
|
//// diamondThreeIdsSql := i.getRoleLevelUserIdsSql(user_role.DiamondLevelThree, threeUserIdsSql)
|
|
//// // 统计钻二收益
|
|
//// threeSumInfo := recookUserTeamExpectIncomeModel.GetTeamAmoutSum("date = ? and user_id in (?)", date, diamondThreeIdsSql)
|
|
////
|
|
//// return expectInfo.PurchaseAmount.Add(expectInfo.GuideAmount).Add(expectInfo.Amount.Mul(decimal.NewFromFloat32(0.03))).Add(twoSumInfo.Amount.Mul(decimal.NewFromFloat32(0.01))).Add(threeSumInfo.Amount.Mul(decimal.NewFromFloat32(0.01)))
|
|
////
|
|
//// case user_role.DiamondLevelTwo:
|
|
//// // 钻二团队销售额3% + 钻三团队销售额1%
|
|
//// recookUserTreeModel := &user.RecookUserTreeModel{}
|
|
//// userIdsSql := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 1)
|
|
////
|
|
//// // 获取所有钻三uid子查询
|
|
//// diamondThreeIdsSql := i.getRoleLevelUserIdsSql(user_role.DiamondLevelThree, userIdsSql)
|
|
////
|
|
//// // 统计钻三收益
|
|
//// sumInfo := recookUserTeamExpectIncomeModel.GetTeamAmoutSum("date = ? and user_id in (?)", date, diamondThreeIdsSql)
|
|
////
|
|
//// return expectInfo.PurchaseAmount.Add(expectInfo.GuideAmount).Add(expectInfo.Amount.Mul(decimal.NewFromFloat32(0.03))).Add(sumInfo.Amount.Mul(decimal.NewFromFloat32(0.01)))
|
|
//// case user_role.DiamondLevelThree:
|
|
//// // 钻三团队销售额3%
|
|
//// return expectInfo.PurchaseAmount.Add(expectInfo.GuideAmount).Add(expectInfo.Amount.Mul(decimal.NewFromFloat32(0.03)))
|
|
//// case user_role.GoldLevel:
|
|
//// // 白银团队销售额2%
|
|
//// return expectInfo.PurchaseAmount.Add(expectInfo.GuideAmount).Add(expectInfo.Amount.Mul(decimal.NewFromFloat32(0.02)))
|
|
//// case user_role.SilverLevel:
|
|
//// // 白银团队销售额1%
|
|
//// return expectInfo.PurchaseAmount.Add(expectInfo.GuideAmount).Add(expectInfo.Amount.Mul(decimal.NewFromFloat32(0.01)))
|
|
//// case user_role.MasterLevel:
|
|
//// // 店主拥有导购,自购收益
|
|
//// return expectInfo.PurchaseAmount.Add(expectInfo.GuideAmount)
|
|
//// default:
|
|
//// // 其他角色
|
|
//// return decimal.Zero
|
|
//// }
|
|
////}
|
|
////
|
|
////// @Style 获取日预估收益
|
|
////func (i *incomeLogic) GetByDay(userId uint, day, roleLevel int) decimal.Decimal {
|
|
//// recookUserDayExpectIncomeModel := &user.RecookUserDayExpectIncomeModel{}
|
|
//// expectInfo := recookUserDayExpectIncomeModel.FindByUserIdAndDate(userId, day)
|
|
//// switch roleLevel {
|
|
//// case user_role.DiamondLevel:
|
|
//// // 钻一团队销售额3% + 钻二团队销售额1% + 钻三团队销售额1%
|
|
//// recookUserTreeModel := &user.RecookUserTreeModel{}
|
|
////
|
|
//// // 钻二
|
|
//// twoUserIdsSql := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 1)
|
|
//// // 获取所有钻二uid子查询
|
|
//// diamondTwoIdsSql := i.getRoleLevelUserIdsSql(user_role.DiamondLevelTwo, twoUserIdsSql)
|
|
//// // 统计钻二收益
|
|
//// twoSumInfo := recookUserDayExpectIncomeModel.GetTeamAmoutSum("day = ? and user_id in (?)", day, diamondTwoIdsSql)
|
|
////
|
|
//// // 钻三
|
|
//// threeUserIdsSql := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 2)
|
|
//// // 获取所有钻二uid子查询
|
|
//// diamondThreeIdsSql := i.getRoleLevelUserIdsSql(user_role.DiamondLevelThree, threeUserIdsSql)
|
|
//// // 统计钻二收益
|
|
//// threeSumInfo := recookUserDayExpectIncomeModel.GetTeamAmoutSum("day = ? and user_id in (?)", day, diamondThreeIdsSql)
|
|
////
|
|
//// return expectInfo.PurchaseAmount.Add(expectInfo.GuideAmount).Add(expectInfo.Amount.Mul(decimal.NewFromFloat32(0.03))).Add(twoSumInfo.Amount.Mul(decimal.NewFromFloat32(0.01))).Add(threeSumInfo.Amount.Mul(decimal.NewFromFloat32(0.01)))
|
|
////
|
|
//// case user_role.DiamondLevelTwo:
|
|
//// // 钻二团队销售额3% + 钻三团队销售额1%
|
|
//// recookUserTreeModel := &user.RecookUserTreeModel{}
|
|
//// userIdsSql := recookUserTreeModel.GetByRootIdAndDepthSql(userId, 1)
|
|
////
|
|
//// // 获取所有钻三uid子查询
|
|
//// diamondThreeIdsSql := i.getRoleLevelUserIdsSql(user_role.DiamondLevelThree, userIdsSql)
|
|
////
|
|
//// // 统计钻三收益
|
|
//// sumInfo := recookUserDayExpectIncomeModel.GetTeamAmoutSum("day = ? and user_id in (?)", day, diamondThreeIdsSql)
|
|
////
|
|
//// return expectInfo.PurchaseAmount.Add(expectInfo.GuideAmount).Add(expectInfo.Amount.Mul(decimal.NewFromFloat32(0.03))).Add(sumInfo.Amount.Mul(decimal.NewFromFloat32(0.01)))
|
|
//// case user_role.DiamondLevelThree:
|
|
//// // 钻三团队销售额3%
|
|
//// return expectInfo.PurchaseAmount.Add(expectInfo.GuideAmount).Add(expectInfo.Amount.Mul(decimal.NewFromFloat32(0.03)))
|
|
//// case user_role.GoldLevel:
|
|
//// // 白银团队销售额2%
|
|
//// return expectInfo.PurchaseAmount.Add(expectInfo.GuideAmount).Add(expectInfo.Amount.Mul(decimal.NewFromFloat32(0.02)))
|
|
//// case user_role.SilverLevel:
|
|
//// // 白银团队销售额1%
|
|
//// return expectInfo.PurchaseAmount.Add(expectInfo.GuideAmount).Add(expectInfo.Amount.Mul(decimal.NewFromFloat32(0.01)))
|
|
//// case user_role.MasterLevel:
|
|
//// // 店主拥有导购,自购收益
|
|
//// return expectInfo.PurchaseAmount.Add(expectInfo.GuideAmount)
|
|
//// default:
|
|
//// // 其他角色
|
|
//// return decimal.Zero
|
|
//// }
|
|
////}
|
|
//
|
|
//// @Style 获取子查询
|
|
//func (i *incomeLogic) getRoleLevelUserIdsSql(roleLevel int, userIdsSql *gorm.SqlExpr) *gorm.SqlExpr {
|
|
// recookUserRbacRoleModel := &user.RecookUserRbacRoleModel{}
|
|
// recookUserInfoModel := user.RecookUserInfoModel{}
|
|
// return recookUserInfoModel.GetDb().Table(recookUserInfoModel.TableName()+" as userInfo").
|
|
// Select("userInfo.id").
|
|
// Joins(fmt.Sprintf("join %s as userRole on userInfo.role_id = userRole.id", recookUserRbacRoleModel.TableName())).
|
|
// Where("userRole.role_level = ? and userInfo.id in (?)", roleLevel, userIdsSql).
|
|
// SubQuery()
|
|
//}
|
|
//
|
|
//// @Style 获取月份结算收益
|
|
//func (i *incomeLogic) GetMonthIncome(userId uint, date int) decimal.Decimal {
|
|
// recookUserTeamIncomeModel := &user.RecookUserTeamIncomeModel{}
|
|
// incomeInfo := recookUserTeamIncomeModel.FindByUserIdAndDate(userId, date)
|
|
// if incomeInfo.IsSettlement == user.RecookUserTeamIncomeIsSettlementTrue {
|
|
// // 团队收益已结算 已结算收益=自购+导购+团队+推案+平台奖励
|
|
// return incomeInfo.PurchaseAmount.Add(incomeInfo.GuideAmount).Add(incomeInfo.TeamAmount).Add(incomeInfo.RecommendAmount).Add(incomeInfo.RewardAmount)
|
|
// }
|
|
// // 团队收益未结算 已结算收益=自购收益+导购收益
|
|
// return incomeInfo.PurchaseAmount.Add(incomeInfo.GuideAmount)
|
|
//}
|
|
//
|
|
//type Accumulate struct {
|
|
// PurchaseAmount decimal.Decimal `json:"purchaseAmount"`
|
|
// GuideAmount decimal.Decimal `json:"guideAmount"`
|
|
// TeamAmount decimal.Decimal `json:"teamAmount"`
|
|
// RecommendAmount decimal.Decimal `json:"recommendAmount"`
|
|
// RewardAmount decimal.Decimal `json:"rewardAmount"`
|
|
//}
|
|
|
|
// @Style 收益累计信息
|
|
//func (i *incomeLogic) Accumulate(userId uint) Accumulate {
|
|
// recookUserWalletModel := &user.RecookUserWalletModel{}
|
|
// userWalletInfo := recookUserWalletModel.FindByUserId(userId)
|
|
// return Accumulate{
|
|
// PurchaseAmount: userWalletInfo.PurchaseAmount,
|
|
// GuideAmount: userWalletInfo.GuideAmount,
|
|
// TeamAmount: userWalletInfo.TeamAmount,
|
|
// RecommendAmount: userWalletInfo.RecommendAmount,
|
|
// RewardAmount: userWalletInfo.RewardAmount,
|
|
// }
|
|
//}
|
|
//
|
|
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
|
|
//}
|