Browse Source

Merge remote-tracking branch 'origin/master'

master
DengBiao 1 year ago
parent
commit
d74ba8e6c6
14 changed files with 170 additions and 46 deletions
  1. +14
    -0
      db/db_second_newcomers_free.go
  2. +19
    -0
      db/model/second_newcomers_free_price_type.go
  3. +1
    -0
      db/model/user_public_platoon_laxin_reward_setting.go
  4. +7
    -3
      lib/comm_plan/all.go
  5. +4
    -1
      lib/comm_plan/ds_check.go
  6. +3
    -2
      lib/comm_plan/init.go
  7. +1
    -0
      md/commission_parameter.go
  8. +4
    -0
      md/small_public_platoon_relate_commission.go
  9. +7
    -6
      rule/public_platoon_relate_commission.go
  10. +2
    -2
      rule/small_public_platoon_relate_commission.go
  11. +63
    -7
      svc/get_plan_cfg.go
  12. +23
    -16
      svc/reward_commission.go
  13. +18
    -5
      svc/small_public_platoon_relate_commission.go
  14. +4
    -4
      svc/svc_integral_release.go

+ 14
- 0
db/db_second_newcomers_free.go View File

@@ -0,0 +1,14 @@
package db

import (
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db/model"
"xorm.io/xorm"
)

func SecondGetAllPriceTypeList(Db *xorm.Engine) ([]model.SecondNewcomersFreePriceType, error) {
var priceType []model.SecondNewcomersFreePriceType
if err := Db.Find(&priceType); err != nil {
return nil, err
}
return priceType, nil
}

+ 19
- 0
db/model/second_newcomers_free_price_type.go View File

@@ -0,0 +1,19 @@
package model

type SecondNewcomersFreePriceType struct {
Id int `json:"id" xorm:"not null pk autoincr INT(10)"`
PriceName string `json:"price_name" xorm:"not null comment('价格类型') VARCHAR(255)"`
NeedQuan int `json:"need_quan" xorm:"not null default 0 comment('需要的福利券') INT(11)"`
CreatedAt int `json:"created_at" xorm:"not null default 0 INT(11)"`
UpdatedAt int `json:"updated_at" xorm:"not null default 0 INT(11)"`
IsShow int `json:"is_show" xorm:"not null default 1 comment('是否开启') TINYINT(1)"`
IsDel int `json:"is_del" xorm:"not null default 0 INT(11)"`
Auth string `json:"auth" xorm:"not null comment('权限') TEXT"`
NeedUseQuan int `json:"need_use_quan" xorm:"default 1 comment('是否需要使用免单券 0否 1是') INT(1)"`
NeedLimitBuy int `json:"need_limit_buy" xorm:"default 0 comment('是否限购') INT(1)"`
LimitBuyCondition string `json:"limit_buy_condition" xorm:"default '' comment('限购条件') VARCHAR(255)"`
CommissionId string `json:"commission_id" xorm:"default '' VARCHAR(255)"`
LimitStr string `json:"limit_str" xorm:"default '' VARCHAR(255)"`
BuyStr string `json:"buy_str" xorm:"default '' VARCHAR(255)"`
CommissionData string `json:"commission_data" xorm:"default '' VARCHAR(500)"`
}

+ 1
- 0
db/model/user_public_platoon_laxin_reward_setting.go View File

@@ -8,6 +8,7 @@ type UserPublicPlatoonLaxinRewardSetting struct {
IsUseRewardLimit int `json:"is_use_reward_limit" xorm:"default 0 comment('是否开启奖励限制(奖励积分只能获取等级与自己一样或等级低的人的奖励积分) ') TINYINT(1)"` IsUseRewardLimit int `json:"is_use_reward_limit" xorm:"default 0 comment('是否开启奖励限制(奖励积分只能获取等级与自己一样或等级低的人的奖励积分) ') TINYINT(1)"`
CoinId int `json:"coin_id" xorm:"INT(11)"` CoinId int `json:"coin_id" xorm:"INT(11)"`
Detail string `json:"detail" xorm:"TEXT"` Detail string `json:"detail" xorm:"TEXT"`
LevelDetail string `json:"level_detail" xorm:"TEXT"`
CreateAt time.Time `json:"create_at" xorm:"not null default 'CURRENT_TIMESTAMP' comment('创建时间') TIMESTAMP"` CreateAt time.Time `json:"create_at" xorm:"not null default 'CURRENT_TIMESTAMP' comment('创建时间') TIMESTAMP"`
UpdateAt time.Time `json:"update_at" xorm:"default 'CURRENT_TIMESTAMP' comment('更新时间') TIMESTAMP"` UpdateAt time.Time `json:"update_at" xorm:"default 'CURRENT_TIMESTAMP' comment('更新时间') TIMESTAMP"`
} }

+ 7
- 3
lib/comm_plan/all.go View File

@@ -725,7 +725,7 @@ func getCommissionRatio(typ string, level, peerNum int, grade map[int]*LvGrade)
case "team": case "team":
ratio = grade[level].TeamRate ratio = grade[level].TeamRate
case "same_lv": case "same_lv":
if len(grade[level].PeerRate) == 0 {
if len(grade[level].PeerRate) == 0 || len(grade[level].PeerRate) < peerNum+1 {
ratio = 0 ratio = 0
} else { } else {
ratio = grade[level].PeerRate[peerNum] ratio = grade[level].PeerRate[peerNum]
@@ -748,8 +748,12 @@ func getVirtualCoinRatio(typ string, level, peerNum int, grade map[int]*LvGrade,
switch typ { switch typ {
case "extend_lv": case "extend_lv":
if isPostion == 1 { if isPostion == 1 {
ratio, ok = grade[level].SecondExtendList[coinId]
ratio = zhios_order_relate_utils.Float64ToStrByPrec(zhios_order_relate_utils.StrToFloat64(ratio)/100, 4)
SecondExtendList, ok1 := grade[level].SecondExtendList.(map[string]string)
if ok1 {
ratio, ok = SecondExtendList[coinId]
ratio = zhios_order_relate_utils.Float64ToStrByPrec(zhios_order_relate_utils.StrToFloat64(ratio)/100, 4)

}
} else { } else {
ratio, ok = grade[level].NewExtendList[coinId] ratio, ok = grade[level].NewExtendList[coinId]
ratio = zhios_order_relate_utils.Float64ToStrByPrec(zhios_order_relate_utils.StrToFloat64(ratio)/100, 4) ratio = zhios_order_relate_utils.Float64ToStrByPrec(zhios_order_relate_utils.StrToFloat64(ratio)/100, 4)


+ 4
- 1
lib/comm_plan/ds_check.go View File

@@ -70,7 +70,10 @@ func getVirtualCoinRatioDsOwn(typ string, level, peerNum int, grade map[int]*LvG
switch typ { switch typ {
case "extend_lv": case "extend_lv":
if isPostion == 1 { if isPostion == 1 {
ratio, ok = grade[level].SecondExtendList[coinId]
SecondExtendList, ok1 := grade[level].SecondExtendList.(map[string]string)
if ok1 {
ratio, ok = SecondExtendList[coinId]
}
} else { } else {
ratio, ok = grade[level].NewExtendList[coinId] ratio, ok = grade[level].NewExtendList[coinId]
} }


+ 3
- 2
lib/comm_plan/init.go View File

@@ -72,7 +72,7 @@ type LvGrade struct {
TeamRateList map[string]string `json:"team_rate_list"` // 团队最高比例 TeamRateList map[string]string `json:"team_rate_list"` // 团队最高比例
NewTeamList map[string]string `json:"new_team_list"` // 新团队比例 NewTeamList map[string]string `json:"new_team_list"` // 新团队比例
NewExtendList map[string]string `json:"new_extend_list"` // 直推比例 NewExtendList map[string]string `json:"new_extend_list"` // 直推比例
SecondExtendList map[string]string `json:"second_extend_list"` // 直推比例
SecondExtendList interface{} `json:"second_extend_list"` // 直推比例
ToTeamList map[string]string `json:"to_team_list"` // 直推比例 ToTeamList map[string]string `json:"to_team_list"` // 直推比例
SameUserCount string `json:"same_user_count"` SameUserCount string `json:"same_user_count"`
SameExtend []map[string]string `json:"same_extend"` SameExtend []map[string]string `json:"same_extend"`
@@ -85,7 +85,7 @@ type LvGrade struct {
TikTokTeamSubsidyOwnBiliType []string `json:"tik_tok_team_subsidy_own_bili_type"` //分销 返利类型 TikTokTeamSubsidyOwnBiliType []string `json:"tik_tok_team_subsidy_own_bili_type"` //分销 返利类型
TikTokTeamSubsidyList []map[string]string `json:"tik_tok_team_subsidy_list"` TikTokTeamSubsidyList []map[string]string `json:"tik_tok_team_subsidy_list"`
ToExtendList map[string]string `json:"to_extend_list"` // ToExtendList map[string]string `json:"to_extend_list"` //
CommonWealthSystem map[string]string `json:"common_wealth_system"` //共富制度比例
CommonWealthSystem interface{} `json:"common_wealth_system"` //共富制度比例


} }
type LvGradePricePublic struct { type LvGradePricePublic struct {
@@ -226,6 +226,7 @@ type LvUser struct {
LevelWeight int // 权重 LevelWeight int // 权重
Profit float64 // 利润(金额) Profit float64 // 利润(金额)
SubsidyFee float64 // 补贴(金额) SubsidyFee float64 // 补贴(金额)
AdditionalSubsidy float64
MinLevel int MinLevel int
IsFreeze int IsFreeze int
MinProfit float64 // 利润(金额) MinProfit float64 // 利润(金额)


+ 1
- 0
md/commission_parameter.go View File

@@ -21,6 +21,7 @@ type CommissionParam struct {
TikTokTeamCommission string `json:"tik_tok_team_commission"` TikTokTeamCommission string `json:"tik_tok_team_commission"`
IsTikTokTeamOrder string `json:"is_tik_tok_team_order"` IsTikTokTeamOrder string `json:"is_tik_tok_team_order"`
MinLevel int `json:"min_level"` MinLevel int `json:"min_level"`
DouyinBili string `json:"douyin_bili"`
} }
type CommissionFirstParam struct { type CommissionFirstParam struct {
CommissionParam CommissionParam `json:"commission_param"` CommissionParam CommissionParam `json:"commission_param"`


+ 4
- 0
md/small_public_platoon_relate_commission.go View File

@@ -36,6 +36,10 @@ type CalcSmallPublicPlatoonRelateLaXinReward struct {
CoinId int `json:"coin_id"` CoinId int `json:"coin_id"`
Value string `json:"value"` Value string `json:"value"`
} }
type CalcSmallPublicPlatoonRelateLaXinLevel struct {
Id string `json:"id"`
Detail []*CalcSmallPublicPlatoonRelateLaXinDetail `json:"detail"`
}


type CalcSmallPublicPlatoonRelateLaXinDetail struct { type CalcSmallPublicPlatoonRelateLaXinDetail struct {
Key int `json:"key"` Key int `json:"key"`


+ 7
- 6
rule/public_platoon_relate_commission.go View File

@@ -533,7 +533,7 @@ func FindRandUser(engine *xorm.Engine, nums int) (resp []int64, err error) {
var uniqueMap = map[int64]bool{} var uniqueMap = map[int64]bool{}
var j = 0 var j = 0
for { for {
ids := randSeedInt(int64(minM.Id), int64(maxM.Id), nums-len(resp), uniqueMap)
ids := randSeedInt(int64(minM.Id), int64(maxM.Id), nums-len(resp), uniqueMap, &[]int64{})
var list []model.UserPublicPlatoonRelation var list []model.UserPublicPlatoonRelation
if err1 := engine.In("id", ids). if err1 := engine.In("id", ids).
Find(&list); err1 != nil { Find(&list); err1 != nil {
@@ -559,19 +559,20 @@ func FindRandUser(engine *xorm.Engine, nums int) (resp []int64, err error) {
return return
} }


func randSeedInt(start, end int64, nums int, uniqueMap map[int64]bool) (resp []int64) {
func randSeedInt(start, end int64, nums int, uniqueMap map[int64]bool, resp *[]int64) (res []int64) {
rand.Seed(time.Now().UnixNano()) rand.Seed(time.Now().UnixNano())
for { for {
result := rand.Int63n(end) + start result := rand.Int63n(end) + start
if !uniqueMap[result] { if !uniqueMap[result] {
resp = append(resp, result)
*resp = append(*resp, result)
uniqueMap[result] = true uniqueMap[result] = true
break break
} }
} }


if len(resp) < nums {
randSeedInt(start, end, nums, uniqueMap)
if len(*resp) < nums {
randSeedInt(start, end, nums, uniqueMap, resp)
} }
return
res = *resp
return res
} }

+ 2
- 2
rule/small_public_platoon_relate_commission.go View File

@@ -26,8 +26,8 @@ func BatchGetSmallPublicPlatoonRelateCommissionByOrder(engine *xorm.Engine, mast
} }


// CalcSmallPublicPlatoonRelateLaXinReward 计算拉新奖励 // CalcSmallPublicPlatoonRelateLaXinReward 计算拉新奖励
func CalcSmallPublicPlatoonRelateLaXinReward(engine *xorm.Engine, masterId string, rewardUid int) ([]*md.CalcSmallPublicPlatoonRelateLaXinReward, error) {
resp, err := svc.CalcSmallPublicPlatoonRelateLaXinReward(engine, masterId, rewardUid)
func CalcSmallPublicPlatoonRelateLaXinReward(engine *xorm.Engine, masterId string, rewardUid, level int) ([]*md.CalcSmallPublicPlatoonRelateLaXinReward, error) {
resp, err := svc.CalcSmallPublicPlatoonRelateLaXinReward(engine, masterId, rewardUid, level)
if err != nil { if err != nil {
return nil, err return nil, err
} }


+ 63
- 7
svc/get_plan_cfg.go View File

@@ -34,6 +34,32 @@ func GetAllPlan(eg *xorm.Engine, dbName string) (map[string]*model.PlanReward, m
for _, v := range pvds { for _, v := range pvds {
plan[v.Pvd] = v plan[v.Pvd] = v
} }
list, _ := db.SecondGetAllPriceTypeList(eg)
for _, v := range list {
var oneRewardPlan map[string]string
err := json.Unmarshal([]byte(v.CommissionData), &oneRewardPlan)
if err == nil {
var tmp = &model.PlanReward{
Id: 0,
Pvd: "seFree_" + zhios_order_relate_utils.IntToStr(v.Id),
PvdRate: zhios_order_relate_utils.StrToFloat32(oneRewardPlan["pvd_rate"]) / 100,
SysRate: zhios_order_relate_utils.StrToFloat32(oneRewardPlan["sys_rate"]) / 100,
RegionRate: zhios_order_relate_utils.StrToFloat32(oneRewardPlan["region_rate"]) / 100,
GlobalRate: zhios_order_relate_utils.StrToFloat32(oneRewardPlan["global_rate"]) / 100,
SettleMode: zhios_order_relate_utils.StrToInt(oneRewardPlan["settle_mode"]),
PlanCommissionId: zhios_order_relate_utils.StrToInt(oneRewardPlan["plan_commission_id"]),
PlanSettleId: zhios_order_relate_utils.StrToInt(oneRewardPlan["plan_settle_id"]),
State: 1,
Source: 1,
IntegralOpen: zhios_order_relate_utils.StrToInt(oneRewardPlan["integral_open"]),
MerchantRate: zhios_order_relate_utils.StrToFloat32(oneRewardPlan["merchant_rate"]) / 100,
PushHandRate: zhios_order_relate_utils.StrToFloat32(oneRewardPlan["push_hand_rate"]) / 100,
OrderBeforeRate: zhios_order_relate_utils.StrToFloat32(oneRewardPlan["order_before_rate"]) / 100,
}
plan[tmp.Pvd] = tmp
}
}

commission := make(map[int]*model.PlanCommission, 0) commission := make(map[int]*model.PlanCommission, 0)
commissions := db.DbsPlanCommissionByIds(eg) commissions := db.DbsPlanCommissionByIds(eg)
for _, v := range commissions { for _, v := range commissions {
@@ -47,8 +73,14 @@ func GetPlanCfg(eg *xorm.Engine, pvd, masterId string, rewardOpts map[string]*mo
opt := &comm_plan.PlanOpt{} opt := &comm_plan.PlanOpt{}
// 根据供应商 // 根据供应商
rewardOpt := rewardOpts[pvd] rewardOpt := rewardOpts[pvd]
if pvd == "tikTok" && rmd.IsTikTokTeamOrder == "1" && rewardOpts["tikTokTeam"] != nil && rewardOpts["tikTokTeam"].PlanCommissionId > 0 {
rewardOpt = rewardOpts["tikTokTeam"]
if strings.Contains(pvd, "seFree") == false {
if pvd == "tikTok" && rmd.IsTikTokTeamOrder == "1" && rewardOpts["tikTokTeam"] != nil && rewardOpts["tikTokTeam"].PlanCommissionId > 0 {
rewardOpt = rewardOpts["tikTokTeam"]
}

if pvd == "kuaishou" && rmd.IsTikTokTeamOrder == "1" && rewardOpts["kuaishouTeam"] != nil && rewardOpts["kuaishouTeam"].PlanCommissionId > 0 {
rewardOpt = rewardOpts["kuaishouTeam"]
}
} }
if rewardOpt == nil { if rewardOpt == nil {
return nil, zhios_order_relate_logx.Warn("找不到方案记录") return nil, zhios_order_relate_logx.Warn("找不到方案记录")
@@ -115,6 +147,7 @@ func GetPlanCfg(eg *xorm.Engine, pvd, masterId string, rewardOpts map[string]*mo
commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"second_extend_list\":[]", "\"second_extend_list\":{}") commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"second_extend_list\":[]", "\"second_extend_list\":{}")
commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"to_extend_list\":[]", "\"to_extend_list\":{}") commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"to_extend_list\":[]", "\"to_extend_list\":{}")
commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"common_wealth_system\":[]", "\"common_wealth_system\":{}") commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"common_wealth_system\":[]", "\"common_wealth_system\":{}")
commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"common_wealth_system\":[\"0\"]", "\"common_wealth_system\":{}")
commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"to_team_list\":[]", "\"to_team_list\":{}") commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"to_team_list\":[]", "\"to_team_list\":{}")
commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"same_extend\":[[]]", "\"same_extend\":[]") commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"same_extend\":[[]]", "\"same_extend\":[]")
if strings.Contains(commissionOpt.Data, "\"subsidy_mode_list\":[") { //兼容旧的方案 if strings.Contains(commissionOpt.Data, "\"subsidy_mode_list\":[") { //兼容旧的方案
@@ -181,10 +214,8 @@ func GetPlanCfg(eg *xorm.Engine, pvd, masterId string, rewardOpts map[string]*mo
} }


if err := json.Unmarshal([]byte(commissionOpt.Data), &subsidyTmp); err != nil { if err := json.Unmarshal([]byte(commissionOpt.Data), &subsidyTmp); err != nil {
if masterId == "68823769" {
fmt.Println("===========================分佣方案数据设置错误", commissionOpt)
fmt.Println("===========================分佣方案数据设置错误", err)
}
fmt.Println("===========================分佣方案数据设置错误", commissionOpt)
fmt.Println("===========================分佣方案数据设置错误", err)
return nil, zhios_order_relate_logx.Warn(fmt.Sprintf("%s:分佣方案数据设置错误", masterId)) return nil, zhios_order_relate_logx.Warn(fmt.Sprintf("%s:分佣方案数据设置错误", masterId))
} }
opt.UserRate = subsidyTmp opt.UserRate = subsidyTmp
@@ -210,7 +241,31 @@ func PlanOpts(eg *xorm.Engine) map[string]*comm_plan.PlanOpt {
if err != nil || allRewardPlan == nil { if err != nil || allRewardPlan == nil {
return nil return nil
} }

list, _ := db.SecondGetAllPriceTypeList(eg)
for _, v := range list {
var oneRewardPlan map[string]string
err := json.Unmarshal([]byte(v.CommissionData), &oneRewardPlan)
if err == nil {
var tmp = &model.PlanReward{
Id: 0,
Pvd: "seFree_" + zhios_order_relate_utils.IntToStr(v.Id),
PvdRate: zhios_order_relate_utils.StrToFloat32(oneRewardPlan["pvd_rate"]) / 100,
SysRate: zhios_order_relate_utils.StrToFloat32(oneRewardPlan["sys_rate"]) / 100,
RegionRate: zhios_order_relate_utils.StrToFloat32(oneRewardPlan["region_rate"]) / 100,
GlobalRate: zhios_order_relate_utils.StrToFloat32(oneRewardPlan["global_rate"]) / 100,
SettleMode: zhios_order_relate_utils.StrToInt(oneRewardPlan["settle_mode"]),
PlanCommissionId: zhios_order_relate_utils.StrToInt(oneRewardPlan["plan_commission_id"]),
PlanSettleId: zhios_order_relate_utils.StrToInt(oneRewardPlan["plan_settle_id"]),
State: 1,
Source: 1,
IntegralOpen: zhios_order_relate_utils.StrToInt(oneRewardPlan["integral_open"]),
MerchantRate: zhios_order_relate_utils.StrToFloat32(oneRewardPlan["merchant_rate"]) / 100,
PushHandRate: zhios_order_relate_utils.StrToFloat32(oneRewardPlan["push_hand_rate"]) / 100,
OrderBeforeRate: zhios_order_relate_utils.StrToFloat32(oneRewardPlan["order_before_rate"]) / 100,
}
allRewardPlan = append(allRewardPlan, tmp)
}
}
opts := map[string]*comm_plan.PlanOpt{} opts := map[string]*comm_plan.PlanOpt{}
for _, v := range allRewardPlan { for _, v := range allRewardPlan {
if _, ok := commissionPlans[v.PlanCommissionId]; ok && v.State == 1 && v.PlanCommissionId > 0 { if _, ok := commissionPlans[v.PlanCommissionId]; ok && v.State == 1 && v.PlanCommissionId > 0 {
@@ -235,6 +290,7 @@ func PlanOpts(eg *xorm.Engine) map[string]*comm_plan.PlanOpt {
} }
} }
fmt.Println(opts) fmt.Println(opts)

if len(opts) == 0 { if len(opts) == 0 {
return nil return nil
} }


+ 23
- 16
svc/reward_commission.go View File

@@ -84,15 +84,15 @@ func GetRewardCommission(engine *xorm.Engine, rmd *md.CommissionParam, isShare b
fmt.Println(com) fmt.Println(com)
fmt.Println(price) fmt.Println(price)
comf := zhios_order_relate_utils.StrToFloat64(com) comf := zhios_order_relate_utils.StrToFloat64(com)
if zhios_order_relate_utils.InArr(cfg.Mode, []string{"lv_price_public_platoon", "lv_price", "lv_winery", "extend_price", "niubei_amount"}) && zhios_order_relate_utils.StrToFloat64(rmd.OldPrice) > 0 { //价格为基数
if zhios_order_relate_utils.InArr(cfg.Mode, []string{"lv_price_public_platoon", "lv_price", "lv_price_other", "lv_winery", "extend_price", "niubei_amount"}) && zhios_order_relate_utils.StrToFloat64(rmd.OldPrice) > 0 { //价格为基数
comf = zhios_order_relate_utils.StrToFloat64(rmd.OldPrice) comf = zhios_order_relate_utils.StrToFloat64(rmd.OldPrice)
} }
if cfg.Mode == "public_platoon" { if cfg.Mode == "public_platoon" {
//公排 //公排
//佣金扣除抽成后 //佣金扣除抽成后
fee, _, pvdFee, sysFee := CommFee(comf, cfg, "commission", rmd.IsGoods)
fee, _, pvdFee, sysFee := CommFee(comf, cfg, "commission", rmd)
////积分扣除抽成后 ////积分扣除抽成后
integralFee, _, _, _ := CommFee(zhios_order_relate_utils.StrToFloat64(price), cfg, "integral", rmd.IsGoods)
integralFee, _, _, _ := CommFee(zhios_order_relate_utils.StrToFloat64(price), cfg, "integral", rmd)
//调用公排制度 //调用公排制度


userPublicPlatoonSetting, err := db.UserPublicPlatoonSettingGetOneByParams(engine, map[string]interface{}{ userPublicPlatoonSetting, err := db.UserPublicPlatoonSettingGetOneByParams(engine, map[string]interface{}{
@@ -175,7 +175,7 @@ func GetRewardCommission(engine *xorm.Engine, rmd *md.CommissionParam, isShare b
} }
if cfg.Mode == "lv_integral_release" { // if cfg.Mode == "lv_integral_release" { //
price = rmd.OldPrice price = rmd.OldPrice
pvdFee, sysFee, _, ulink, err := IntegralRelease(engine, uid, newLevel, returnAllLevel, rmd.IsShowExtend, newProvider, user, comf, price, cfg, rmd.IsGoods, commArr, virtualCoinMoneyRate)
pvdFee, sysFee, _, ulink, err := IntegralRelease(engine, uid, newLevel, returnAllLevel, rmd.IsShowExtend, newProvider, user, comf, price, cfg, rmd, commArr, virtualCoinMoneyRate)
if err != nil { if err != nil {
return 0, 0, 0, 0, nil, nil return 0, 0, 0, 0, nil, nil
} }
@@ -195,9 +195,9 @@ func GetRewardCommission(engine *xorm.Engine, rmd *md.CommissionParam, isShare b
userLevel = zhios_order_relate_utils.StrToInt(extraData["agent_lv"]) userLevel = zhios_order_relate_utils.StrToInt(extraData["agent_lv"])
} }
//佣金扣除抽成后 //佣金扣除抽成后
fee, _, pvdFee, sysFee := CommFee(comf, cfg, "commission", rmd.IsGoods)
fee, _, pvdFee, sysFee := CommFee(comf, cfg, "commission", rmd)
////积分扣除抽成后 ////积分扣除抽成后
integralFee, _, _, _ := CommFee(zhios_order_relate_utils.StrToFloat64(price), cfg, "integral", rmd.IsGoods)
integralFee, _, _, _ := CommFee(zhios_order_relate_utils.StrToFloat64(price), cfg, "integral", rmd)
var param = map[string]string{ var param = map[string]string{
"commission": zhios_order_relate_utils.Float64ToStr(fee), "commission": zhios_order_relate_utils.Float64ToStr(fee),
"integral": zhios_order_relate_utils.Float64ToStr(integralFee), "integral": zhios_order_relate_utils.Float64ToStr(integralFee),
@@ -270,9 +270,9 @@ func GetRewardCommission(engine *xorm.Engine, rmd *md.CommissionParam, isShare b
} }
func public(engine *xorm.Engine, ulinkParent *comm_plan.LvUser, cfg *comm_plan.PlanOpt, newProvider string, uid int, comf float64, price string, rmd *md.CommissionParam) *comm_plan.LvUser { func public(engine *xorm.Engine, ulinkParent *comm_plan.LvUser, cfg *comm_plan.PlanOpt, newProvider string, uid int, comf float64, price string, rmd *md.CommissionParam) *comm_plan.LvUser {
//佣金扣除抽成后 //佣金扣除抽成后
fee, _, _, _ := CommFee(comf, cfg, "commission", rmd.IsGoods)
fee, _, _, _ := CommFee(comf, cfg, "commission", rmd)
////积分扣除抽成后 ////积分扣除抽成后
integralFee, _, _, _ := CommFee(zhios_order_relate_utils.StrToFloat64(price), cfg, "integral", rmd.IsGoods)
integralFee, _, _, _ := CommFee(zhios_order_relate_utils.StrToFloat64(price), cfg, "integral", rmd)
//调用公排制度 //调用公排制度


userPublicPlatoonSetting, err := db.UserPublicPlatoonSettingGetOneByParams(engine, map[string]interface{}{ userPublicPlatoonSetting, err := db.UserPublicPlatoonSettingGetOneByParams(engine, map[string]interface{}{
@@ -320,7 +320,11 @@ func public(engine *xorm.Engine, ulinkParent *comm_plan.LvUser, cfg *comm_plan.P
if zhios_order_relate_utils.StrToInt(coinId) > 0 { //积分更换基数 if zhios_order_relate_utils.StrToInt(coinId) > 0 { //积分更换基数
pendingAmount = zhios_order_relate_utils.Float64ToStr(integralFee) pendingAmount = zhios_order_relate_utils.Float64ToStr(integralFee)
} }
commonWealthSystem[coinId] = zhios_order_relate_utils.Float64ToStr(zhios_order_relate_utils.StrToFloat64(grade.CommonWealthSystem[coinId]) * zhios_order_relate_utils.StrToFloat64(pendingAmount) / 100)
CommonWealthSystems, ok := grade.CommonWealthSystem.(map[string]string)
if ok {
commonWealthSystem[coinId] = zhios_order_relate_utils.Float64ToStr(zhios_order_relate_utils.StrToFloat64(CommonWealthSystems[coinId]) * zhios_order_relate_utils.StrToFloat64(pendingAmount) / 100)

}
} }
} }
//共富收益处理 //共富收益处理
@@ -576,12 +580,12 @@ func currentPrice(m *md.CommissionParam, pvd string) string {
return "" return ""
} }
} }
func CommFee(fee float64, opt *comm_plan.PlanOpt, types, isGoods string) (float64, float64, float64, float64) {
func CommFee(fee float64, opt *comm_plan.PlanOpt, types string, rmd *md.CommissionParam) (float64, float64, float64, float64) {
var feeFirst float64 = 1 var feeFirst float64 = 1
if types == "integral" && opt.IntegralOpen == 0 || opt.Mode == "lv_winery" { //积分抽成后台没开启不用扣 if types == "integral" && opt.IntegralOpen == 0 || opt.Mode == "lv_winery" { //积分抽成后台没开启不用扣
return fee, feeFirst, 0, 0 return fee, feeFirst, 0, 0
} }
isGoods := rmd.IsGoods
if isGoods == "1" { if isGoods == "1" {
orderBeforeRate := fee * opt.OrderBeforeRate orderBeforeRate := fee * opt.OrderBeforeRate
orderBeforeRateFirst := feeFirst * opt.OrderBeforeRate orderBeforeRateFirst := feeFirst * opt.OrderBeforeRate
@@ -610,6 +614,9 @@ func CommFee(fee float64, opt *comm_plan.PlanOpt, types, isGoods string) (float6
for _, v := range opt.RateList { for _, v := range opt.RateList {
total -= int64(fee * (v / 100) * 1e4) total -= int64(fee * (v / 100) * 1e4)
} }
if zhios_order_relate_utils.StrToFloat64(rmd.DouyinBili) > 0 {
total -= int64(zhios_order_relate_utils.StrToFloat64(rmd.DouyinBili) * 1e4)
}
fee = float64(total) / 1e4 fee = float64(total) / 1e4
if fee < 0 { if fee < 0 {
fee = 0 fee = 0
@@ -645,10 +652,10 @@ func CalcCommission(uid, level, oldDiff, ownbuyReturnType int, fee, integralFee
//佣金扣除抽成后 //佣金扣除抽成后
var feeFirst float64 = 1 var feeFirst float64 = 1
var integralFeeFirst float64 = 1 var integralFeeFirst float64 = 1
fee, feeFirst, pvdFee, sysFee = CommFee(fee, opt, "commission", isGoods)
fee, feeFirst, pvdFee, sysFee = CommFee(fee, opt, "commission", rmd)
//积分扣除抽成后 //积分扣除抽成后
var integralSysFee float64 = 0 var integralSysFee float64 = 0
integralFee, integralFeeFirst, _, integralSysFee = CommFee(integralFee, opt, "integral", isGoods)
integralFee, integralFeeFirst, _, integralSysFee = CommFee(integralFee, opt, "integral", rmd)
// 计算自购补贴比例 // 计算自购补贴比例
subsidyFee = 0 subsidyFee = 0
//如果没登录,要找出权重最低的那个 //如果没登录,要找出权重最低的那个
@@ -764,11 +771,11 @@ func CalcCommission(uid, level, oldDiff, ownbuyReturnType int, fee, integralFee
//pvd 只是为了判断是会员升级的订单 可不传 //pvd 只是为了判断是会员升级的订单 可不传
func NiuBeiCalcCommission(uid, level, oldDiff, ownbuyReturnType int, fee, integralFee float64, isShare bool, opt *comm_plan.PlanOpt, userRelationShip *[]md.UserRelation, pvd string, newLevel int, eg *xorm.Engine, isGoods string, rmd *md.CommissionParam) (pvdFee, sysFee, subsidyFee float64, lvUser *comm_plan.LvUser, err error) { func NiuBeiCalcCommission(uid, level, oldDiff, ownbuyReturnType int, fee, integralFee float64, isShare bool, opt *comm_plan.PlanOpt, userRelationShip *[]md.UserRelation, pvd string, newLevel int, eg *xorm.Engine, isGoods string, rmd *md.CommissionParam) (pvdFee, sysFee, subsidyFee float64, lvUser *comm_plan.LvUser, err error) {
//佣金扣除抽成后 //佣金扣除抽成后
fee, _, pvdFee, sysFee = CommFee(fee, opt, "commission", isGoods)
fee, _, pvdFee, sysFee = CommFee(fee, opt, "commission", rmd)
//积分扣除抽成后 //积分扣除抽成后
var integralSysFee float64 = 0 var integralSysFee float64 = 0
integralFee, _, _, integralSysFee = CommFee(integralFee, opt, "integral", isGoods)
integralFeeForPrice, _, _, _ := CommFee(zhios_order_relate_utils.StrToFloat64(rmd.OldPrice), opt, "integral", isGoods)
integralFee, _, _, integralSysFee = CommFee(integralFee, opt, "integral", rmd)
integralFeeForPrice, _, _, _ := CommFee(zhios_order_relate_utils.StrToFloat64(rmd.OldPrice), opt, "integral", rmd)
// 计算自购补贴比例 // 计算自购补贴比例
subsidyFee = 0 subsidyFee = 0
//如果没登录,要找出权重最低的那个 //如果没登录,要找出权重最低的那个


+ 18
- 5
svc/small_public_platoon_relate_commission.go View File

@@ -155,7 +155,7 @@ func benefitUid(engine *xorm.Engine, param *md.SmallPublicPlatoonRelateCommissio


} }


func CalcSmallPublicPlatoonRelateLaXinReward(engine *xorm.Engine, masterId string, rewardUid int) (resp []*md.CalcSmallPublicPlatoonRelateLaXinReward, err error) {
func CalcSmallPublicPlatoonRelateLaXinReward(engine *xorm.Engine, masterId string, rewardUid, level int) (resp []*md.CalcSmallPublicPlatoonRelateLaXinReward, err error) {
userPublicPlatoonRelation, err := db.UserSmallPublicPlatoonRelationGetOneByParams(engine, map[string]interface{}{ userPublicPlatoonRelation, err := db.UserSmallPublicPlatoonRelationGetOneByParams(engine, map[string]interface{}{
"key": "uid", "key": "uid",
"value": rewardUid, "value": rewardUid,
@@ -185,10 +185,19 @@ func CalcSmallPublicPlatoonRelateLaXinReward(engine *xorm.Engine, masterId strin


//2、解析 detail //2、解析 detail
var detail []*md.CalcSmallPublicPlatoonRelateLaXinDetail var detail []*md.CalcSmallPublicPlatoonRelateLaXinDetail
if err2 := json.Unmarshal([]byte(m.Detail), &detail); err != nil {
if err2 := json.Unmarshal([]byte(m.Detail), &detail); err2 != nil {
return nil, err2 return nil, err2
} }


var levelDetail []md.CalcSmallPublicPlatoonRelateLaXinLevel
err2 := json.Unmarshal([]byte(m.LevelDetail), &levelDetail)
if err2 == nil {
for _, v := range levelDetail {
if zhios_order_relate_utils.StrToInt(v.Id) == level && len(v.Detail) > 0 {
detail = v.Detail
}
}
}
fatherPositions := strings.Split(userPublicPlatoonRelation.FatherUid, "-") fatherPositions := strings.Split(userPublicPlatoonRelation.FatherUid, "-")
var rewardUserLevelWeight int var rewardUserLevelWeight int
if m.IsUseRewardLimit == 1 { if m.IsUseRewardLimit == 1 {
@@ -323,9 +332,13 @@ func BatchSmallGetPublicPlatoonRelateByGoods(engine *xorm.Engine, masterId strin
var commonWealthSystem = make(map[string]string) var commonWealthSystem = make(map[string]string)
if lvGrade != nil { if lvGrade != nil {
for _, coinId := range lvGrade.ReturnType { for _, coinId := range lvGrade.ReturnType {
selfRateList[coinId] = zhios_order_relate_utils.Float64ToStr(zhios_order_relate_utils.StrToFloat64(lvGrade.SelfRateList[coinId]) * zhios_order_relate_utils.StrToFloat64(param.PendingAmount) / 100)
commonWealthSystem[coinId] = zhios_order_relate_utils.Float64ToStr(zhios_order_relate_utils.StrToFloat64(lvGrade.CommonWealthSystem[coinId]) * zhios_order_relate_utils.StrToFloat64(param.PendingAmount) / 100)
directPush[coinId] = zhios_order_relate_utils.Float64ToStr(zhios_order_relate_utils.StrToFloat64(lvGrade.DirectPush[coinId]) * zhios_order_relate_utils.StrToFloat64(param.PendingAmount) / 100)
var pendingAmount = param.PendingAmount
if zhios_order_relate_utils.StrToInt(coinId) > 0 { //积分更换基数
pendingAmount = param.PendingIntegral
}
selfRateList[coinId] = zhios_order_relate_utils.Float64ToStr(zhios_order_relate_utils.StrToFloat64(lvGrade.SelfRateList[coinId]) * zhios_order_relate_utils.StrToFloat64(pendingAmount) / 100)
commonWealthSystem[coinId] = zhios_order_relate_utils.Float64ToStr(zhios_order_relate_utils.StrToFloat64(lvGrade.CommonWealthSystem[coinId]) * zhios_order_relate_utils.StrToFloat64(pendingAmount) / 100)
directPush[coinId] = zhios_order_relate_utils.Float64ToStr(zhios_order_relate_utils.StrToFloat64(lvGrade.DirectPush[coinId]) * zhios_order_relate_utils.StrToFloat64(pendingAmount) / 100)
} }
} }
resp[param.Oid] = &md.SmallPublicPlatoonRelateCommissionResp{ resp[param.Oid] = &md.SmallPublicPlatoonRelateCommissionResp{


+ 4
- 4
svc/svc_integral_release.go View File

@@ -12,12 +12,12 @@ import (
"xorm.io/xorm" "xorm.io/xorm"
) )


func IntegralRelease(engine *xorm.Engine, uid, level int, returnAllLevel bool, IsShowExtend, pvd string, user *model.User, comf float64, price string, cfg *comm_plan.PlanOpt, isGoods string, commArr map[string]string, virtualCoinMoneyRate map[int]string) (pvdFee, sysFee, subsidyFee float64, lvUser *comm_plan.LvUser, err error) {
func IntegralRelease(engine *xorm.Engine, uid, level int, returnAllLevel bool, IsShowExtend, pvd string, user *model.User, comf float64, price string, cfg *comm_plan.PlanOpt, rmd *md.CommissionParam, commArr map[string]string, virtualCoinMoneyRate map[int]string) (pvdFee, sysFee, subsidyFee float64, lvUser *comm_plan.LvUser, err error) {
//佣金扣除抽成后 //佣金扣除抽成后
fee, _, pvdFee, sysFee := CommFee(comf, cfg, "commission", isGoods)
fee, _, pvdFee, sysFee := CommFee(comf, cfg, "commission", rmd)
////积分扣除抽成后 ////积分扣除抽成后
integralFee, _, _, _ := CommFee(zhios_order_relate_utils.StrToFloat64(price), cfg, "integral", isGoods)
integralFeeCom, _, _, _ := CommFee(comf, cfg, "integral", isGoods)
integralFee, _, _, _ := CommFee(zhios_order_relate_utils.StrToFloat64(price), cfg, "integral", rmd)
integralFeeCom, _, _, _ := CommFee(comf, cfg, "integral", rmd)
//常规级差 //常规级差
var userRelationship *[]md.UserRelation var userRelationship *[]md.UserRelation
if returnAllLevel { if returnAllLevel {


Loading…
Cancel
Save