benefit_helper.go 4.9 KB

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