package helpers import ( "fmt" "fohow.com/apps/models/balance_model" "fohow.com/apps/models/base_config" "fohow.com/apps/models/order_model" "fohow.com/apps/models/user_model" "fohow.com/libs/tool" "github.com/astaxie/beego" "math" "strings" ) func NewSendInviterBenefit(wxUser *user_model.WxUser, orderId, source string) { //三部代理--佣金计入本人账户 0317 specialDepartStr := beego.AppConfig.String("SpecialDepart") specialDeparts := strings.Split(specialDepartStr, ".") departUser := fmt.Sprintf("%d", wxUser.Depart) contain := tool.StringsContains(specialDeparts, departUser) var benefitWxUser *user_model.WxUser if wxUser.ShowInviteMode == int64(1) && contain >= 0 { benefitWxUser = wxUser } else { //20.12.01 新规--(微信支付金额-运费)>0,按(微信支付金额-运费)*20%给上级代理返佣金(代理本人下订单,也是返给上级代理) benefitWxUser = FindInviter(wxUser) } if benefitWxUser == nil || benefitWxUser.Id == int64(1) { return } //beego.BeeLogger.Warn("benefitWxUser: %s", benefitWxUser) //beego.BeeLogger.Warn("newSendInviterBenefit:%v,%v,%s", wxUser, benefitWxUser, orderId) if source == user_model.SOURCE_PRODUCT_BENEFIT { productOrder := order_model.GetOrderById(orderId, true) if productOrder == nil { return } if benefitWxUser != nil { //发放群主收益,(微信支付金额-运费)>0,按(微信支付金额-运费)*20%给上级代理返佣金 be_total := float64(productOrder.PaiedPrice-productOrder.Freight) * float64(0.2) count := int64(math.Floor(be_total + 0.5)) //beego.BeeLogger.Warn("count %d", count) remark := fmt.Sprintf("%s%s", wxUser.Nickname, "购物") if count > 0 { //发放佣金 inviteOrder := new(user_model.InviteOrder).Create(benefitWxUser.Id, wxUser.Id, wxUser.Id, count, productOrder.TotalPrice, user_model.SOURCE_PRODUCT_BENEFIT, productOrder.OrderId) s := balance_model.CASH_SOURCE_PRODUCT_BENEFIT cb := balance_model.GetCashBalanceByWxUIdAndRIdAndSource(benefitWxUser.Id, productOrder.OrderId, s) if cb == nil { cb = new(balance_model.CashBalance).Create(inviteOrder.BenefitWxUId, count, s, productOrder.OrderId, remark) if cb != nil { //标志进账 inviteOrder.IsEnterBalance = true inviteOrder.EnterTime = cb.CreatedAt inviteOrder.Save() } } } } } else if source == user_model.BALANCE_BENEFIT { balanceOrder := balance_model.GetBalanceOrderByOId(orderId, false) if balanceOrder == nil { return } //下线充值,上线获得540返利 if benefitWxUser != nil { count := int64(0) //读取上级配置收益比例 if balanceOrder.PaiedPrice >= base_config.GetBuyCash() { be_total := balanceOrder.PaiedPrice * base_config.GetCashAward() count = be_total / int64(100) } if count > 0 { inviteOrder := new(user_model.InviteOrder).Create(benefitWxUser.Id, wxUser.Id, wxUser.Id, count, balanceOrder.TotalPrice, user_model.BALANCE_BENEFIT, balanceOrder.OrderId) //发放现金佣金 s := balance_model.BALANCE_SOURCE_BENEFIT remark := fmt.Sprintf("%s%s", wxUser.Nickname, "充值提货券") b := balance_model.GetCashBalanceByWxUIdAndRIdAndSource(benefitWxUser.Id, balanceOrder.OrderId, s) if b == nil { b = new(balance_model.CashBalance).Create(inviteOrder.BenefitWxUId, count, s, balanceOrder.OrderId, remark) if b != nil { //标志进账 inviteOrder.IsEnterBalance = true inviteOrder.EnterTime = b.CreatedAt inviteOrder.Save() } } } } } } func ShopSendInviterBenefit(wxUser *user_model.WxUser, orderId, source string) { //非群主店铺专区不能下单 if wxUser == nil || wxUser.Rank != int64(2) { return } //店长购物给上级返佣8% benefitWxUser := FindInviter(wxUser) if benefitWxUser == nil || benefitWxUser.Id == int64(1) { return } //beego.BeeLogger.Warn("shop_benefitWxUser: %s", benefitWxUser) //beego.BeeLogger.Warn("shop_newSendInviterBenefit:%v,%v,%s", wxUser, benefitWxUser, orderId) if source == user_model.SOURCE_PRODUCT_BENEFIT { productOrder := order_model.GetOrderById(orderId, false) if productOrder == nil || productOrder.OrderType != order_model.ORDER_TYPE_SHOP { return } if benefitWxUser != nil { //不扣提货券,只计算8%佣金 count := int64(math.Floor(float64(productOrder.TotalPrice) * order_model.SHOP_BENETFIT_BL)) remark := fmt.Sprintf("%s%s", wxUser.Nickname, "店铺专区购物") //发放佣金 inviteOrder := new(user_model.InviteOrder).Create(benefitWxUser.Id, wxUser.Id, wxUser.Id, count, productOrder.TotalPrice, user_model.SOURCE_PRODUCT_BENEFIT, productOrder.OrderId) s := balance_model.CASH_SOURCE_PRODUCT_BENEFIT cb := balance_model.GetCashBalanceByWxUIdAndRIdAndSource(benefitWxUser.Id, productOrder.OrderId, s) if cb == nil { cb = new(balance_model.CashBalance).Create(inviteOrder.BenefitWxUId, count, s, productOrder.OrderId, remark) if cb != nil { //标志进账 inviteOrder.IsEnterBalance = true inviteOrder.EnterTime = cb.CreatedAt inviteOrder.Save() } } } } }