benefit_helper.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. package helpers
  2. import (
  3. "fmt"
  4. "fohow.com/apps/models/balance_model"
  5. "fohow.com/apps/models/order_model"
  6. "fohow.com/apps/models/sys_config"
  7. "fohow.com/apps/models/user_model"
  8. "math"
  9. )
  10. func NewSendInviterBenefit(wxUser *user_model.WxUser, orderId, source string) {
  11. //三部代理--佣金计入本人账户 0317
  12. //specialDepartStr := beego.AppConfig.String("SpecialDepart")
  13. //specialDeparts := strings.Split(specialDepartStr, ",")
  14. //departUser := fmt.Sprintf("%d", wxUser.Depart)
  15. //contain := tool.StringsContains(specialDeparts, departUser) //是否结算给
  16. var benefitWxUser *user_model.WxUser
  17. if wxUser.ShowInviteMode == int64(1) {
  18. benefitWxUser = wxUser
  19. } else {
  20. //20.12.01 新规--(微信支付金额-运费)>0,按(微信支付金额-运费)*20%给上级代理返佣金(代理本人下订单,也是返给上级代理)
  21. benefitWxUser = FindInviter(wxUser)
  22. }
  23. if benefitWxUser == nil || benefitWxUser.Id == int64(1) {
  24. return
  25. }
  26. if source == user_model.SOURCE_PRODUCT_BENEFIT {
  27. productOrder := order_model.GetOrderById(orderId, true)
  28. if productOrder == nil {
  29. return
  30. }
  31. if benefitWxUser != nil {
  32. //发放群主收益,(微信支付金额-运费)>0,按(微信支付金额-运费)*20%给上级代理返佣金
  33. //val := []int64{productOrder.Pv - productOrder.Freight, productOrder.Pv}
  34. //计算佣金的业绩=max(pv-max(扣提货券-运费,0),0)
  35. award_cash := productOrder.Pv
  36. couponFee := productOrder.CouponPrice - productOrder.Freight
  37. if couponFee > 0 {
  38. award_cash = productOrder.Pv - couponFee
  39. }
  40. if award_cash <= 0 {
  41. return
  42. }
  43. be_total := float64(award_cash) * (float64(sys_config.GetCashAward()) / float64(100))
  44. count := int64(math.Floor(be_total + 0.5))
  45. //beego.BeeLogger.Warn("count %d", count)
  46. remark := fmt.Sprintf("%s%s", wxUser.Nickname, "购物")
  47. if count > 0 {
  48. //发放佣金
  49. inviteOrder := new(user_model.InviteOrder).Create(benefitWxUser.Id, wxUser.Id, wxUser.Id, count, productOrder.TotalPrice, user_model.SOURCE_PRODUCT_BENEFIT, productOrder.OrderId)
  50. s := balance_model.CASH_SOURCE_PRODUCT_BENEFIT
  51. cb := balance_model.GetCashBalanceByWxUIdAndRIdAndSource(benefitWxUser.Id, productOrder.OrderId, s)
  52. if cb == nil {
  53. cb = new(balance_model.CashBalance).Create(inviteOrder.BenefitWxUId, count, s, productOrder.OrderId, remark)
  54. if cb != nil {
  55. //标志进账
  56. inviteOrder.IsEnterBalance = true
  57. inviteOrder.EnterTime = cb.CreatedAt
  58. inviteOrder.Save()
  59. }
  60. }
  61. }
  62. }
  63. } else if source == user_model.BALANCE_BENEFIT {
  64. balanceOrder := balance_model.GetBalanceOrderByOId(orderId, false)
  65. if balanceOrder == nil {
  66. return
  67. }
  68. //下线充值,上线获得540返利
  69. if benefitWxUser != nil {
  70. count := int64(0)
  71. //读取上级配置收益比例
  72. if balanceOrder.PaiedPrice >= sys_config.GetBuyCash() {
  73. be_total := balanceOrder.PaiedPrice * sys_config.GetCashAward()
  74. count = be_total / int64(100)
  75. }
  76. if count > 0 {
  77. inviteOrder := new(user_model.InviteOrder).Create(benefitWxUser.Id, wxUser.Id, wxUser.Id, count, balanceOrder.TotalPrice, user_model.BALANCE_BENEFIT, balanceOrder.OrderId)
  78. //发放现金佣金
  79. s := balance_model.BALANCE_SOURCE_BENEFIT
  80. remark := fmt.Sprintf("%s%s", wxUser.Nickname, "充值提货券")
  81. b := balance_model.GetCashBalanceByWxUIdAndRIdAndSource(benefitWxUser.Id, balanceOrder.OrderId, s)
  82. if b == nil {
  83. b = new(balance_model.CashBalance).Create(inviteOrder.BenefitWxUId, count, s, balanceOrder.OrderId, remark)
  84. if b != nil {
  85. //标志进账
  86. inviteOrder.IsEnterBalance = true
  87. inviteOrder.EnterTime = b.CreatedAt
  88. inviteOrder.Save()
  89. }
  90. }
  91. }
  92. }
  93. }
  94. }
  95. func ShopSendInviterBenefit(wxUser *user_model.WxUser, orderId, source string) {
  96. //非群主店铺专区不能下单
  97. if wxUser == nil || wxUser.Rank != int64(2) {
  98. return
  99. }
  100. //店长购物给上级返佣8%
  101. benefitWxUser := FindInviter(wxUser)
  102. if benefitWxUser == nil || benefitWxUser.Id == int64(1) {
  103. return
  104. }
  105. //beego.BeeLogger.Warn("shop_benefitWxUser: %s", benefitWxUser)
  106. //beego.BeeLogger.Warn("shop_newSendInviterBenefit:%v,%v,%s", wxUser, benefitWxUser, orderId)
  107. if source == user_model.SOURCE_PRODUCT_BENEFIT {
  108. productOrder := order_model.GetOrderById(orderId, false)
  109. if productOrder == nil || productOrder.OrderType != order_model.ORDER_TYPE_SHOP {
  110. return
  111. }
  112. if benefitWxUser != nil {
  113. //不扣提货券,只计算8%佣金
  114. count := int64(math.Floor(float64(productOrder.TotalPrice) * order_model.SHOP_BENETFIT_BL))
  115. remark := fmt.Sprintf("%s%s", wxUser.Nickname, "店铺专区购物")
  116. //发放佣金
  117. inviteOrder := new(user_model.InviteOrder).Create(benefitWxUser.Id, wxUser.Id, wxUser.Id, count, productOrder.TotalPrice, user_model.SOURCE_PRODUCT_BENEFIT, productOrder.OrderId)
  118. s := balance_model.CASH_SOURCE_PRODUCT_BENEFIT
  119. cb := balance_model.GetCashBalanceByWxUIdAndRIdAndSource(benefitWxUser.Id, productOrder.OrderId, s)
  120. if cb == nil {
  121. cb = new(balance_model.CashBalance).Create(inviteOrder.BenefitWxUId, count, s, productOrder.OrderId, remark)
  122. if cb != nil {
  123. //标志进账
  124. inviteOrder.IsEnterBalance = true
  125. inviteOrder.EnterTime = cb.CreatedAt
  126. inviteOrder.Save()
  127. }
  128. }
  129. }
  130. }
  131. }