package plan var Fn = map[string]func(grade map[int]*LvGrade, totalAmt float64, userList *LvUser, pvd string, sysFee float64, opt *PlanOpt) error{ "lv_all": CalcAll, "lv_self": CalcSelf, "lv_subsidy": CalcAll, "lv_price": CalcAll, "lv_price_other": CalcAll, } type PlanOpt struct { PlanCommissionId int Pvd string // 供应商 Mode string // 分佣方案 CommissionMode string // 佣金返佣方式 IntegralMode string // 积分返佣方式 BlockIconsMode string // 区块币返佣方式 SysRate float64 // 系统占佣比例 PvdRate float64 // 供应商占佣比例 RegionRate float64 // 区域代理抽成比例 RegionSubRate float64 // 区域代理抽成比例 GlobalRate float64 // 全球分红抽成比例 IntegralBili float64 // 积分兑换比例 BlockIconsBili float64 // 区块币兑换比例 MerchantRate float64 //商家占佣比例 PushHandRate float64 //推手占佣比例 UserRate map[int]*LvGrade // 供应商对应的等级比例 OrderBeforeRate float64 } //同级奖励 type PeerRateList struct { BlockIcons string `json:"block_icons"` //区块币 Commission string `json:"commission"` //佣金 Integral string `json:"integral"` //积分 } // 级差结构 type LvGrade struct { Lv int `json:"lv"` // 级别 SubsidyMode int `json:"subsidy_mode"` // 补贴计算方式, 0按佣金计算,1按平台利润计算 SubsidyEnable int `json:"subsidy_enable"` // 是否开启补贴计算方式 0关闭, 1开启 SubsidySelfRate float64 `json:"subsidy_self_rate"` // 自购补贴比例 SubsidyShareRate float64 `json:"subsidy_share_rate"` // 分享补贴比例 PayMode int `json:"pay_mode"` // 0团队内部支出, 1平台系统支出 SelfRate float64 `json:"self_rate"` // 自购比例 TeamRate float64 `json:"team_rate"` // 团队分成比例 PeerRate []float64 `json:"peer_rate"` // 同级分成比例 UserLvUpSubsidyEnable int `json:"user_lv_up_subsidy_enable"` //分销补贴开关 UserLvUpSubsidyMode int `json:"user_lv_up_subsidy_mode"` //补贴方式 0比例 1固定金额 UserSubsidyType string `json:"user_subsidy_type"` // 补贴模式 up_lv 推荐会员补贴 buy_goods 购买商品 UserLvUpSubsidyList []interface{} `json:"user_lv_up_subsidy_list"` //会员费分销补贴相应方式的列表 PeerRateList []PeerRateList `json:"-"` //同级比例 ReturnType []string `json:"return_type"` //返利类型 SelfRateList struct { //自购比例 BlockIcons string `json:"block_icons"` Commission string `json:"commission"` Integral string `json:"integral"` } `json:"-"` TeamRateList struct { //团队最高比例 BlockIcons string `json:"block_icons"` Commission string `json:"commission"` Integral string `json:"integral"` } `json:"-"` SubsidyBlockIconsMode string `json:"subsidy_block_icons_mode"` //分销 区块币返利类型 bili 比例 money 固定金额 SubsidyCommissionMode string `json:"subsidy_commission_mode"` //分销 佣金返利类型 bili 比例 money 固定金额 SubsidyIntegralMode string `json:"subsidy_integral_mode"` //分销 积分返利类型 bili 比例 money 固定金额 SubsidyReturnType []string `json:"subsidy_return_type"` //分销 返利类型 SubsidyOwnBiliList []map[string]string `json:"subsidy_own_bili_list"` } type UserLvUpSubsidyList struct { Lv int `json:"lv"` // 等级 Bili float64 `json:"bili"` // 比例 IsUse int `json:"is_use"` // 是否共存 BlockIcons float64 `json:"block_icons"` //区块币 Commission float64 `json:"commission"` //佣金 Integral float64 `json:"integral"` //积分 } type LvUser struct { Uid int // 用户ID Lv int // 等级 NewLv int // 升级后等级 针对会员费分佣 LevelWeight int // 权重 Profit float64 // 利润 SubsidyFee float64 // 补贴 OwnbuyReturnType int //0有返利 1没有返利 Diff int // 与当前用户级别差 ParentUser *LvUser // 父用户 ProfitList []*VirtualCoinCommission SubsidyFeeList []*VirtualCoinCommission } // 虚拟币分佣结构体 type VirtualCoinCommission struct { Cid string `json:"cid"` // 虚拟币id Val float64 `json:"val"` // 数量 } // 初始化级差模式 func Init(g map[int]*LvGrade) map[int]*LvGrade { var MinLv int = -1 // 最低级别 for k, v := range g { if MinLv == -1 { MinLv = v.Lv g[k].TeamRate = v.SelfRate } else if v.Lv < MinLv { MinLv = v.Lv g[k].TeamRate = v.SelfRate } } return g }