benefit_helper.go 5.0 KB

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