@@ -4,13 +4,11 @@ import ( | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db" | "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db" | ||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db/model" | "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db/model" | ||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/md" | "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/md" | ||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/svc" | |||||
zhios_order_relate_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils" | zhios_order_relate_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils" | ||||
zhios_order_relate_logx "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils/logx" | zhios_order_relate_logx "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils/logx" | ||||
"encoding/json" | |||||
"errors" | "errors" | ||||
"fmt" | |||||
"math" | "math" | ||||
"strconv" | |||||
"strings" | "strings" | ||||
"time" | "time" | ||||
"xorm.io/xorm" | "xorm.io/xorm" | ||||
@@ -18,101 +16,10 @@ import ( | |||||
// BatchGetPublicPlatoonRelateCommission 批量分佣 订单显示 | // BatchGetPublicPlatoonRelateCommission 批量分佣 订单显示 | ||||
func BatchGetPublicPlatoonRelateCommissionByOrder(engine *xorm.Engine, masterId string, PublicPlatoonRelateCommissionReqList []*md.PublicPlatoonRelateCommissionReq) (map[string]*md.PublicPlatoonRelateCommissionResp, error) { | func BatchGetPublicPlatoonRelateCommissionByOrder(engine *xorm.Engine, masterId string, PublicPlatoonRelateCommissionReqList []*md.PublicPlatoonRelateCommissionReq) (map[string]*md.PublicPlatoonRelateCommissionResp, error) { | ||||
var resp = make(map[string]*md.PublicPlatoonRelateCommissionResp) | |||||
userPublicPlatoonSetting, err := db.UserPublicPlatoonSettingGetOneByParams(engine, map[string]interface{}{ | |||||
"key": "is_open", | |||||
"value": 1, | |||||
}) | |||||
resp, err := svc.BatchGetPublicPlatoonRelateCommissionByOrder(engine, masterId, PublicPlatoonRelateCommissionReqList) | |||||
if err != nil { | if err != nil { | ||||
return nil, err | return nil, err | ||||
} | } | ||||
for _, param := range PublicPlatoonRelateCommissionReqList { | |||||
// 根据供应商 | |||||
rewardOpt, err := db.DbsPlanRewardByPvd(engine, param.Pvd) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
if rewardOpt == nil { | |||||
return nil, zhios_order_relate_logx.Warn("找不到方案记录") | |||||
} | |||||
if rewardOpt.State == 0 { | |||||
return nil, zhios_order_relate_logx.Warn("抽成方案未开启") | |||||
} | |||||
if rewardOpt.PlanCommissionId == 0 { | |||||
return nil, zhios_order_relate_logx.Warn("抽成方案未设置佣金方案id") | |||||
} | |||||
fmt.Println("抽成设置:", zhios_order_relate_utils.SerializeStr(rewardOpt)) | |||||
fmt.Println("commission id:", rewardOpt.PlanCommissionId) | |||||
//TODO::计算共富收益 | |||||
commissionOpt, err := db.DbsPlanCommissionById(engine, rewardOpt.PlanCommissionId) | |||||
if err != nil || commissionOpt == nil || commissionOpt.Id == 0 { | |||||
return nil, err | |||||
} | |||||
var subsidyTmp map[string]*md.LvGrade | |||||
if err := json.Unmarshal([]byte(commissionOpt.Data), &subsidyTmp); err != nil { | |||||
return nil, zhios_order_relate_logx.Warn(fmt.Sprintf("%s:分佣方案数据设置错误", masterId)) | |||||
} | |||||
lvGrade := subsidyTmp[param.UserLevel] | |||||
var selfRateList, commonWealthSystem, directPush map[string]string | |||||
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)) | |||||
} | |||||
//TODO::本次消费产生的共富收益给到谁 | |||||
var nowBenefitUid string | |||||
userPublicPlatoonRelation, err := db.UserPublicPlatoonRelationGetOneByParams(engine, map[string]interface{}{ | |||||
"key": "uid", | |||||
"value": param.Uid, | |||||
}) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
if userPublicPlatoonRelation == nil { | |||||
return nil, errors.New("未查询到公排关系记录") | |||||
} | |||||
fatherPositions := strings.Split(userPublicPlatoonRelation.FatherUid, "-") | |||||
var fatherPosition string | |||||
userPublicPlatoonRelation.ReturnCommissionNum++ | |||||
remainder := (userPublicPlatoonRelation.ReturnCommissionNum) % userPublicPlatoonSetting.SeveralRows | |||||
if remainder == 0 { | |||||
fatherPosition = fatherPositions[userPublicPlatoonSetting.SeveralRows-1] | |||||
} else { | |||||
fatherPosition = fatherPositions[remainder-1] | |||||
} | |||||
nowBenefitUsers, err := db.UserPublicPlatoonRelationGetOneByParams(engine, map[string]interface{}{ | |||||
"key": "position", | |||||
"value": fatherPosition, | |||||
}) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
if nowBenefitUsers == nil { | |||||
return nil, errors.New("未查询到父级公排关系记录") | |||||
} | |||||
nowBenefitUid = zhios_order_relate_utils.AnyToString(nowBenefitUsers.Uid) | |||||
//TODO::更新 公排关系记录 中 `return_commission_num` | |||||
affected, err := db.UserPublicPlatoonRelationUpdate(engine.NewSession(), userPublicPlatoonRelation.Id, userPublicPlatoonRelation, "return_commission_num") | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
if affected == 0 { | |||||
return nil, errors.New("更新公排关系记录失败") | |||||
} | |||||
resp[param.Oid] = &md.PublicPlatoonRelateCommissionResp{ | |||||
Uid: param.Uid, | |||||
CommonWealthBenefitUid: nowBenefitUid, | |||||
DirectPushBenefitUid: strconv.Itoa(userPublicPlatoonRelation.RecommendUid), | |||||
PendingAmount: param.PendingAmount, | |||||
Oid: param.Oid, | |||||
SelfRateList: selfRateList, | |||||
CommonWealthSystem: commonWealthSystem, | |||||
DirectPush: directPush, | |||||
} | |||||
} | |||||
return resp, nil | return resp, nil | ||||
} | } | ||||
@@ -0,0 +1,114 @@ | |||||
package svc | |||||
import ( | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/md" | |||||
zhios_order_relate_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils" | |||||
zhios_order_relate_logx "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils/logx" | |||||
"encoding/json" | |||||
"errors" | |||||
"fmt" | |||||
"strconv" | |||||
"strings" | |||||
"xorm.io/xorm" | |||||
) | |||||
// BatchGetPublicPlatoonRelateCommission 批量分佣 订单显示 | |||||
func BatchGetPublicPlatoonRelateCommissionByOrder(engine *xorm.Engine, masterId string, PublicPlatoonRelateCommissionReqList []*md.PublicPlatoonRelateCommissionReq) (map[string]*md.PublicPlatoonRelateCommissionResp, error) { | |||||
var resp = make(map[string]*md.PublicPlatoonRelateCommissionResp) | |||||
userPublicPlatoonSetting, err := db.UserPublicPlatoonSettingGetOneByParams(engine, map[string]interface{}{ | |||||
"key": "is_open", | |||||
"value": 1, | |||||
}) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
for _, param := range PublicPlatoonRelateCommissionReqList { | |||||
// 根据供应商 | |||||
rewardOpt, err := db.DbsPlanRewardByPvd(engine, param.Pvd) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
if rewardOpt == nil { | |||||
return nil, zhios_order_relate_logx.Warn("找不到方案记录") | |||||
} | |||||
if rewardOpt.State == 0 { | |||||
return nil, zhios_order_relate_logx.Warn("抽成方案未开启") | |||||
} | |||||
if rewardOpt.PlanCommissionId == 0 { | |||||
return nil, zhios_order_relate_logx.Warn("抽成方案未设置佣金方案id") | |||||
} | |||||
fmt.Println("抽成设置:", zhios_order_relate_utils.SerializeStr(rewardOpt)) | |||||
fmt.Println("commission id:", rewardOpt.PlanCommissionId) | |||||
//TODO::计算共富收益 | |||||
commissionOpt, err := db.DbsPlanCommissionById(engine, rewardOpt.PlanCommissionId) | |||||
if err != nil || commissionOpt == nil || commissionOpt.Id == 0 { | |||||
return nil, err | |||||
} | |||||
var subsidyTmp map[string]*md.LvGrade | |||||
if err := json.Unmarshal([]byte(commissionOpt.Data), &subsidyTmp); err != nil { | |||||
return nil, zhios_order_relate_logx.Warn(fmt.Sprintf("%s:分佣方案数据设置错误", masterId)) | |||||
} | |||||
lvGrade := subsidyTmp[param.UserLevel] | |||||
var selfRateList, commonWealthSystem, directPush map[string]string | |||||
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)) | |||||
} | |||||
//TODO::本次消费产生的共富收益给到谁 | |||||
var nowBenefitUid string | |||||
userPublicPlatoonRelation, err := db.UserPublicPlatoonRelationGetOneByParams(engine, map[string]interface{}{ | |||||
"key": "uid", | |||||
"value": param.Uid, | |||||
}) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
if userPublicPlatoonRelation == nil { | |||||
return nil, errors.New("未查询到公排关系记录") | |||||
} | |||||
fatherPositions := strings.Split(userPublicPlatoonRelation.FatherUid, "-") | |||||
var fatherPosition string | |||||
userPublicPlatoonRelation.ReturnCommissionNum++ | |||||
remainder := (userPublicPlatoonRelation.ReturnCommissionNum) % userPublicPlatoonSetting.SeveralRows | |||||
if remainder == 0 { | |||||
fatherPosition = fatherPositions[userPublicPlatoonSetting.SeveralRows-1] | |||||
} else { | |||||
fatherPosition = fatherPositions[remainder-1] | |||||
} | |||||
nowBenefitUsers, err := db.UserPublicPlatoonRelationGetOneByParams(engine, map[string]interface{}{ | |||||
"key": "position", | |||||
"value": fatherPosition, | |||||
}) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
if nowBenefitUsers == nil { | |||||
return nil, errors.New("未查询到父级公排关系记录") | |||||
} | |||||
nowBenefitUid = zhios_order_relate_utils.AnyToString(nowBenefitUsers.Uid) | |||||
//TODO::更新 公排关系记录 中 `return_commission_num` | |||||
affected, err := db.UserPublicPlatoonRelationUpdate(engine.NewSession(), userPublicPlatoonRelation.Id, userPublicPlatoonRelation, "return_commission_num") | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
if affected == 0 { | |||||
return nil, errors.New("更新公排关系记录失败") | |||||
} | |||||
resp[param.Oid] = &md.PublicPlatoonRelateCommissionResp{ | |||||
Uid: param.Uid, | |||||
CommonWealthBenefitUid: nowBenefitUid, | |||||
DirectPushBenefitUid: strconv.Itoa(userPublicPlatoonRelation.RecommendUid), | |||||
PendingAmount: param.PendingAmount, | |||||
Oid: param.Oid, | |||||
SelfRateList: selfRateList, | |||||
CommonWealthSystem: commonWealthSystem, | |||||
DirectPush: directPush, | |||||
} | |||||
} | |||||
return resp, nil | |||||
} |
@@ -4,7 +4,6 @@ import ( | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db" | "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db" | ||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/lib/comm_plan" | "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/lib/comm_plan" | ||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/md" | "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/md" | ||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule" | |||||
zhios_order_relate_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils" | zhios_order_relate_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils" | ||||
"errors" | "errors" | ||||
"fmt" | "fmt" | ||||
@@ -97,7 +96,7 @@ func GetRewardCommission(engine *xorm.Engine, rmd *md.CommissionParam, isShare b | |||||
Oid: rmd.Oid, | Oid: rmd.Oid, | ||||
}, | }, | ||||
} | } | ||||
order, err := rule.BatchGetPublicPlatoonRelateCommissionByOrder(engine, masterId, PublicPlatoonRelateCommissionReqList) | |||||
order, err := BatchGetPublicPlatoonRelateCommissionByOrder(engine, masterId, PublicPlatoonRelateCommissionReqList) | |||||
if err != nil || order[rmd.Oid] == nil { | if err != nil || order[rmd.Oid] == nil { | ||||
return 0, 0, 0, 0, nil, nil | return 0, 0, 0, 0, nil, nil | ||||
} | } | ||||