abiao лет назад: 5
Родитель
Сommit
38ec352b9d

+ 6 - 159
go/gopath/src/fohow.com/apps/controllers/pay_controller/after_pay_controller.go

@@ -8,24 +8,19 @@ import (
 
 	"fohow.com/apps"
 	"fohow.com/apps/helpers"
-	"fohow.com/apps/models/base_config"
 	"fohow.com/libs/lib_redis"
-	"math"
-
 	// "fohow.com/apps/models/balance_model"
 	// "fohow.com/apps/models/project_join_model"
 	// "fohow.com/apps/models/project_model"
 	"fohow.com/apps/models/balance_model"
 	"fohow.com/apps/models/order_model"
 	"fohow.com/apps/models/pay_model"
-	"fohow.com/cache"
 	"fohow.com/libs/wx_mp"
 	"github.com/astaxie/beego"
 	"strconv"
 	"strings"
 	"time"
-	//"fohow.com/apps/models/product_model"
-	"fmt"
+
 	"fohow.com/apps/models/user_model"
 )
 
@@ -122,15 +117,9 @@ func (self *PayController) wxPayBalanceAsync() {
 		self.Ctx.WriteString(wx_mp.MapToXmlString(notifyResponse))
 		return
 	}
-	go recharge(order.WxUserId, order.UserId, order.TotalPrice, order.OrderId)
-	wxUser := user_model.GetWxUserById(order.WxUserId, false)
-	if wxUser != nil {
-		newSendInviterBenefit(wxUser, order.OrderId, user_model.BALANCE_BENEFIT)
-	}
-	if totalFee >= base_config.GetBuyCash() && wxUser.ShowInviteMode != 1 {
-		//升级群主
-		UpdateIntroUser(wxUser)
-	}
+
+	// 发放充值佣金
+	go helpers.PatchRechargeBalance(order.Id, totalFee)
 
 	notifyResponse["return_code"] = wx_mp.PAY_SUCCESS
 	//beego.BeeLogger.Warn("小程序购买提货券微信支付回调通知,订单编号=%s  订单状态=%d", order.OrderId, order.State)
@@ -139,148 +128,6 @@ func (self *PayController) wxPayBalanceAsync() {
 
 }
 
-//升级群主
-func UpdateIntroUser(wxUser *user_model.WxUser) {
-
-	if wxUser == nil || wxUser.ShowInviteMode == int64(1) {
-		return
-	}
-	//升级群主,打开推广模块
-	wxUser.ShowInviteMode = int64(1)
-	wxUser.Rank = int64(1)
-	wxUser.PartnerTime = time.Now().Unix()
-	wxUser.Save()
-	//更改下级群主关系
-	inviteList := user_model.GetWxUsersByInviteIdAll(wxUser.Id, false)
-	go user_model.UpdateClass(inviteList, wxUser.Id, wxUser.IntroUserId)
-	//消除user,wxuser缓存
-	userKey := fmt.Sprintf("user.GetByUid[%d]", wxUser.UserId)
-	wxUserKey := cache.GetKey(cache.GetWxUserById, wxUser.Id)
-	cache.Cache.Delete(userKey)
-	cache.Cache.Delete(wxUserKey)
-}
-
-func FindInviter(wxUser *user_model.WxUser) *user_model.WxUser {
-	inviter := user_model.GetWxUserById(wxUser.InviteId, false)
-	if inviter == nil {
-		return nil
-	}
-	if inviter.ShowInviteMode == int64(1) {
-		return inviter
-	} else {
-		return FindInviter(inviter)
-	}
-}
-
-func newSendInviterBenefit(wxUser *user_model.WxUser, orderId, source string) {
-
-	//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)
-			//发放一级收益, 上级群主返利540
-			if balanceOrder.PaiedPrice == base_config.GetBuyCash() {
-				count = base_config.GetCashAward()
-			}
-			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()
-				}
-			}
-		}
-	}
-}
-
 //微信购买商品
 func (self *PayController) wxPayExchangeAsync() {
 	var notifyResponse = map[string]string{
@@ -337,9 +184,9 @@ func (self *PayController) wxPayExchangeAsync() {
 	//go notice()
 	wxUser := user_model.GetWxUserById(order.WxUserId, true)
 	if order.OrderType == order_model.ORDER_TYPE_NORMAL {
-		go newSendInviterBenefit(wxUser, order.OrderId, user_model.SOURCE_PRODUCT_BENEFIT)
+		go helpers.NewSendInviterBenefit(wxUser, order.OrderId, user_model.SOURCE_PRODUCT_BENEFIT)
 	} else if order.OrderType == order_model.ORDER_TYPE_SHOP {
-		go shopSendInviterBenefit(wxUser, order.OrderId, user_model.SOURCE_PRODUCT_BENEFIT)
+		go helpers.ShopSendInviterBenefit(wxUser, order.OrderId, user_model.SOURCE_PRODUCT_BENEFIT)
 	}
 
 	//发放赠品

+ 0 - 37
go/gopath/src/fohow.com/apps/controllers/pay_controller/recharge_controller.go

@@ -49,43 +49,6 @@ func (self *PayController) CreateBalanceOrder() {
 	self.ServeJSON()
 }
 
-//添加提货券记录
-func recharge(wxUId, uId, c int64, rId string) {
-	source := balance_model.BALANCE_SOURCE_RECHARGE
-	item := balance_model.GetBalanceBySourceAndRId(source, rId)
-	if item != nil {
-		return
-	}
-	b := new(balance_model.Balance).Create(wxUId, uId, c, source, rId, fmt.Sprintf("¥%0.2f", float64(c)/100))
-	if b != nil {
-		go rechargeNotice(uId, b)
-	}
-}
-
-//提货券充值成功通知
-func rechargeNotice(uId int64, balance *balance_model.Balance) {
-	//user := user_model.GetUserById(uId, false)
-	//openId := user.GetOpenid()
-	//if openId == "" {
-	//	beego.BeeLogger.Error("Recharge notice, didn't get openId of user:[%s]", user.Tel)
-	//	return
-	//}
-	/*url := ""
-	if beego.AppConfig.String("RunMode") == "prod" {
-		// url = "http://api.d5c360.com/v1/cfc/25"
-		url = fmt.Sprintf("%s/v1/cfc/25", beego.AppConfig.String("ApiHost"))
-	} else {
-		url = fmt.Sprintf("%s/user/balance", beego.AppConfig.String("MHost"))
-	}
-	title := "成功充值到账, 快去选购众筹项目吧!\n"
-	amount := fmt.Sprintf("%0.2f 元", float64(balance.Count)/100)
-	account := user.Tel
-	rechargeType := "线上充值"
-	cTime := balance.CreatedAt.Format("2006-01-02 15:04:05")
-	remark := "\n点击可查看交易明细>"
-	beego.BeeLogger.Warn("Recharge notice to user:[%s], openId:[%s], amount:[%s]", user.RealName, openId, amount)*/
-}
-
 //余额充值订单
 func (self *PayController) CreateRechargeCashOrder() {
 

+ 119 - 0
go/gopath/src/fohow.com/apps/helpers/benefit_helper.go

@@ -0,0 +1,119 @@
+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"
+	"math"
+)
+
+func NewSendInviterBenefit(wxUser *user_model.WxUser, orderId, source string) {
+
+	//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)
+			//发放一级收益, 上级群主返利540
+			if balanceOrder.PaiedPrice == base_config.GetBuyCash() {
+				count = base_config.GetCashAward()
+			}
+			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()
+				}
+			}
+		}
+	}
+}

+ 29 - 0
go/gopath/src/fohow.com/apps/helpers/intro_helper.go

@@ -0,0 +1,29 @@
+package helpers
+
+import (
+	"fmt"
+	"fohow.com/apps/models/user_model"
+	"fohow.com/cache"
+	"time"
+)
+
+//升级群主
+func UpdateIntroUser(wxUser *user_model.WxUser) {
+
+	if wxUser == nil || wxUser.ShowInviteMode == int64(1) {
+		return
+	}
+	//升级群主,打开推广模块
+	wxUser.ShowInviteMode = int64(1)
+	wxUser.Rank = int64(1)
+	wxUser.PartnerTime = time.Now().Unix()
+	wxUser.Save()
+	//更改下级群主关系
+	inviteList := user_model.GetWxUsersByInviteIdAll(wxUser.Id, false)
+	go user_model.UpdateClass(inviteList, wxUser.Id, wxUser.IntroUserId)
+	//消除user,wxuser缓存
+	userKey := fmt.Sprintf("user.GetByUid[%d]", wxUser.UserId)
+	wxUserKey := cache.GetKey(cache.GetWxUserById, wxUser.Id)
+	cache.Cache.Delete(userKey)
+	cache.Cache.Delete(wxUserKey)
+}

+ 12 - 0
go/gopath/src/fohow.com/apps/helpers/invite_helper.go

@@ -46,3 +46,15 @@ func SetInviter(loginedWxUId, ivId int64) {
 		beego.BeeLogger.Info("Wxuser Inviter Relationship-setInviter(), wxUserId:%d, inviteId:%d", wxUser.Id, wxUser.InviteId)
 	}
 }
+
+func FindInviter(wxUser *user_model.WxUser) *user_model.WxUser {
+	inviter := user_model.GetWxUserById(wxUser.InviteId, false)
+	if inviter == nil {
+		return nil
+	}
+	if inviter.ShowInviteMode == int64(1) {
+		return inviter
+	} else {
+		return FindInviter(inviter)
+	}
+}

+ 73 - 0
go/gopath/src/fohow.com/apps/helpers/recharge_helper.go

@@ -0,0 +1,73 @@
+package helpers
+
+import (
+	"fmt"
+	"fohow.com/apps/models/base_config"
+	"github.com/astaxie/beego"
+
+	"fohow.com/apps/models/balance_model"
+	"fohow.com/apps/models/user_model"
+	// "st.com/libs/wx_mp"
+)
+
+//充值成功发放佣金
+func PatchRechargeBalance(oId, totalFee int64) {
+
+	beego.BeeLogger.Warn("*******PatchRechargeBalance Begin oId:%d", oId)
+
+	order := balance_model.GetBalanceOrderById(oId, true)
+
+	if order == nil || order.State == int64(1) {
+		beego.BeeLogger.Error("充值订单状态错误或者不存在%d", oId)
+		return
+	}
+	recharge(order.WxUserId, order.UserId, order.TotalPrice, order.OrderId)
+	wxUser := user_model.GetWxUserById(order.WxUserId, false)
+	if wxUser != nil {
+		NewSendInviterBenefit(wxUser, order.OrderId, user_model.BALANCE_BENEFIT)
+	}
+	if totalFee >= base_config.GetBuyCash() && wxUser.ShowInviteMode != 1 {
+		//升级群主
+		UpdateIntroUser(wxUser)
+	}
+
+	beego.BeeLogger.Warn("*******PatchRechargeBalance End oId:%d", oId)
+
+}
+
+//添加提货券记录
+func recharge(wxUId, uId, c int64, rId string) {
+	source := balance_model.BALANCE_SOURCE_RECHARGE
+	item := balance_model.GetBalanceBySourceAndRId(source, rId)
+	if item != nil {
+		return
+	}
+	b := new(balance_model.Balance).Create(wxUId, uId, c, source, rId, fmt.Sprintf("¥%0.2f", float64(c)/100))
+	if b != nil {
+		go rechargeNotice(uId, b)
+	}
+}
+
+//提货券充值成功通知
+func rechargeNotice(uId int64, balance *balance_model.Balance) {
+	//user := user_model.GetUserById(uId, false)
+	//openId := user.GetOpenid()
+	//if openId == "" {
+	//	beego.BeeLogger.Error("Recharge notice, didn't get openId of user:[%s]", user.Tel)
+	//	return
+	//}
+	/*url := ""
+	if beego.AppConfig.String("RunMode") == "prod" {
+		// url = "http://api.d5c360.com/v1/cfc/25"
+		url = fmt.Sprintf("%s/v1/cfc/25", beego.AppConfig.String("ApiHost"))
+	} else {
+		url = fmt.Sprintf("%s/user/balance", beego.AppConfig.String("MHost"))
+	}
+	title := "成功充值到账, 快去选购众筹项目吧!\n"
+	amount := fmt.Sprintf("%0.2f 元", float64(balance.Count)/100)
+	account := user.Tel
+	rechargeType := "线上充值"
+	cTime := balance.CreatedAt.Format("2006-01-02 15:04:05")
+	remark := "\n点击可查看交易明细>"
+	beego.BeeLogger.Warn("Recharge notice to user:[%s], openId:[%s], amount:[%s]", user.RealName, openId, amount)*/
+}

+ 18 - 0
go/gopath/src/fohow.com/apps/models/balance_model/balance.go

@@ -268,6 +268,24 @@ func GetBalanceOrderByOId(oId string, useCache bool) *BalanceOrder {
 	return item
 }
 
+func GetBalanceOrderById(id int64, useCache bool) *BalanceOrder {
+	k := fmt.Sprintf("balance_model.GetBalanceOrderById[%d]", id)
+	if useCache {
+		if order, ok := cache.Cache.Get(k).(*BalanceOrder); ok {
+			return order
+		}
+	}
+
+	item := &BalanceOrder{}
+	if err := orm.NewOrm().QueryTable(item).Filter("id", id).Limit(1).
+		One(item); err != nil {
+		beego.BeeLogger.Info("GetBalanceOrderById(%d), err=%s", id, err)
+		return nil
+	}
+	cache.Cache.Put(k, item, 5*time.Minute)
+	return item
+}
+
 func GetBuyBalanceByRelateId(rId string, useCache bool) *Balance {
 	k := fmt.Sprintf("balance_model.GetBuyBalanceByRelateId[%s]", rId)
 	if useCache {