浏览代码

增加商品pv,按pv分红

abiao 4 年之前
父节点
当前提交
56b981c7d7

+ 10 - 2
go/gopath/src/fohow.com/apps/controllers/order_controller/order_controller.go

@@ -29,7 +29,7 @@ var MultreateOrder sync.Mutex
 var MultShopOrder sync.Mutex
 var MultCentOrder sync.Mutex
 
-//下单
+//单品下单
 func (self *OrderController) Create() {
 	createOrder.Lock()
 	defer createOrder.Unlock()
@@ -123,6 +123,7 @@ func (self *OrderController) Create() {
 	if order == nil {
 		self.ReturnError(403, apps.CreateOrderFail, "", nil)
 	}
+	order.Pv = product.Pv
 	order.Save()
 	//创建订单明细
 	new(order_model.OrderDetail).Create(order.OrderId, order.Id, product.Id, product.RelateProductId, product.Price, product.RoboBalancePrice, product.Name,
@@ -174,6 +175,7 @@ func (self *OrderController) MultipleCreate() {
 		self.ReturnError(403, apps.NoExist, "", nil)
 	}
 	totalPrice := int64(0)
+	totalPv := int64(0)
 	c_arr := strings.Split(ids, ",")
 	c_nums := strings.Split(nums, ",")
 
@@ -242,17 +244,23 @@ func (self *OrderController) MultipleCreate() {
 		if product == nil {
 			self.ReturnError(403, apps.NoExist, "", nil)
 		}
-		//创建订单明细
+		//统计订单总价及总pv
 		totalPrice += product.Price * cNums
+		totalPv += product.Pv * cNums
+
+		//创建订单明细
 		CreateOrderDetails(product, order, cNums, wxUser.Depart)
 	}
 	freight := sys_config.GetFreight()
 	if totalPrice >= sys_config.GetOrderLimit() {
 		freight = int64(0)
 	}
+	order.Pv = totalPv
 	order.TotalPrice = totalPrice
 	order.Freight = freight
 	order.Save()
+
+	//购物册清理
 	go ClearCart(order.UserId, order.OrderId)
 	//未支付订单加入取消队列
 	cancelKey := lib_redis.GetOrderCancelList()

+ 7 - 0
go/gopath/src/fohow.com/apps/controllers/pay_controller/pay_exchange_controller.go

@@ -64,10 +64,17 @@ func (self *PayController) payExchange(oId, payWay, tradPwd, returnUrl, source,
 	}
 	SaleNumsMap := make(map[int64]int64)
 	storeMap := make(map[int64]int64)
+
 	//支付方式判断
 	if (order.OrderType == order_model.ORDER_TYPE_SEKILL || order.OrderType == order_model.ORDER_TYPE_SHOP) && payWay == pay_model.PAYWAY_BALANCE {
 		self.ReturnError(403, apps.NotRightPayWay, "", nil)
 	}
+
+	//普通订单总价大于pv只支持微信支付
+	if order.OrderType == order_model.ORDER_TYPE_NORMAL && payWay == pay_model.PAYWAY_BALANCE && order.Pv < order.TotalPrice {
+		self.ReturnError(403, apps.NotRightPayWay, "", nil)
+	}
+
 	//获取购物商品明细
 	buy_price_total := int64(0)
 	total_price := int64(0)

+ 6 - 4
go/gopath/src/fohow.com/apps/helpers/benefit_helper.go

@@ -30,8 +30,7 @@ func NewSendInviterBenefit(wxUser *user_model.WxUser, orderId, source string) {
 	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 {
@@ -39,10 +38,13 @@ func NewSendInviterBenefit(wxUser *user_model.WxUser, orderId, source string) {
 		}
 
 		if benefitWxUser != nil {
+
 			//发放群主收益,(微信支付金额-运费)>0,按(微信支付金额-运费)*20%给上级代理返佣金
-			be_total := float64(productOrder.PaiedPrice-productOrder.Freight) * (float64(sys_config.GetCashAward()) / float64(100))
-			count := int64(math.Floor(be_total + 0.5))
+			val := []int64{productOrder.PaiedPrice - productOrder.Freight, productOrder.Pv}
+			award_cash := tool.Min(val...)
 
+			be_total := float64(award_cash) * (float64(sys_config.GetCashAward()) / float64(100))
+			count := int64(math.Floor(be_total + 0.5))
 			//beego.BeeLogger.Warn("count %d", count)
 			remark := fmt.Sprintf("%s%s", wxUser.Nickname, "购物")
 			if count > 0 {

+ 4 - 17
go/gopath/src/fohow.com/apps/helpers/promotion_helper.go

@@ -8,6 +8,7 @@ import (
 	"fohow.com/apps/models/product_model"
 	"fohow.com/apps/models/promotion_model"
 	"fohow.com/apps/models/user_model"
+	"fohow.com/libs/tool"
 	"github.com/astaxie/beego"
 	"time"
 )
@@ -119,10 +120,10 @@ func SetOrderPromotion(orderId string, wxUid int64) {
 		}
 
 		val := []int64{nums1, nums2, nums3, nums4, nums5, nums6}
-		nums = min(val...)
+		nums = tool.Min(val...)
 		if !item.IsMore {
 			val := []int64{nums, 1}
-			nums = min(val...)
+			nums = tool.Min(val...)
 		}
 		if nums == int64(999) || nums == int64(0) {
 			numsFlag = false
@@ -196,20 +197,6 @@ func max(vals ...int64) int64 {
 	return max
 }
 
-func min(vals ...int64) int64 {
-	min := int64(0)
-	for _, val := range vals {
-		if val <= int64(0) {
-			min = int64(0)
-			break
-		}
-		if val <= min || min == int64(0) {
-			min = val
-		}
-	}
-	return min
-}
-
 /*
 
 找到所有当前时间>《开始时间》且 当前时间<《结束时间》 且《是否启用》=1的促销记录
@@ -273,7 +260,7 @@ func BalanceOrderPromotion(orderId string, wxUid, depart int64) {
 		}
 		if !item.IsMore {
 			val := []int64{count, 1}
-			count = min(val...)
+			count = tool.Min(val...)
 		}
 
 		beego.Warn("item_name-1%d", item.Name)

+ 1 - 0
go/gopath/src/fohow.com/apps/models/order_model/order.go

@@ -106,6 +106,7 @@ type Order struct {
 	DTime          int64              `orm:"-"                                 json:"dtime"`                              // int(11)
 	Freight        int64              `orm:"column(freight);null"                            json:"freight"`              // int(11)
 	Depart         int64              `orm:"column(depart)" json:"-"`                                                     // datetime
+	Pv             int64              `orm:"column(pv)"            json:"-"`                                              // varchar(255)
 	DispatchTime   time.Time          `orm:"column(dispatch_time);null;type(datetime)"           json:"dispatch_time"`
 	ReceiveTime    time.Time          `orm:"column(receive_time);null;type(datetime)"            json:"receive_time"`
 	PaiedTime      time.Time          `orm:"column(paied_time);null;type(datetime)"              json:"paied_time"` // int(11)

+ 1 - 0
go/gopath/src/fohow.com/apps/models/order_model/order_detail.go

@@ -40,6 +40,7 @@ type OrderDetail struct {
 	RelateProductId      int64          `orm:"column(relate_product_id)"                        json:"-"`
 	Attrs                string         `orm:"-"                                                json:"attrs"` // decimal(10,2)
 	Depart               int64          `orm:"column(depart)" json:"-"`                                       // datetime
+	Pv                   int64          `orm:"column(pv)"            json:"-"`                                // varchar(255)
 	Package              bool           `orm:"-"                                                json:"package"`
 	PacakageList         []*ProductItem `orm:"-"                                                json:"package_list"` // varchar(255)
 }

+ 4 - 1
go/gopath/src/fohow.com/apps/models/order_model/order_dt_item.go

@@ -106,7 +106,10 @@ func GenerateOrderDtItem(detail_item *OrderDetail) error {
 		}
 		new(OrderDtItem).Create(detail_item.OrderNo, product.Name, sizeName, colorName, product.Id, detail_item.Price, detail_item.Count, detail_item.OrderId, detail_item.Id, detail_item.Send)
 	}
-	beego.BeeLogger.Warn("orderdtbase  GenerateOrderDtItem ")
+	//更新明细pv
+	detail_item.Pv = product.Pv
+	detail_item.Save()
+	//beego.BeeLogger.Warn("orderdtbase  GenerateOrderDtItem ")
 	return nil
 }
 

+ 1 - 0
go/gopath/src/fohow.com/apps/models/product_model/product.go

@@ -112,6 +112,7 @@ type Product struct {
 	SizeName         string          `orm:"-"                                     json:"size_name"`  // varchar(255)
 	ColorName        string          `orm:"-"                                     json:"color_name"` // varchar(255)
 	SinglePurchLimit int64           `orm:"column(single_purch_limit)"            json:"-"`          // varchar(255)
+	Pv               int64           `orm:"column(pv)"            json:"-"`                          // varchar(255)
 	Package          bool            `orm:"column(package)"                          json:"package"` // varchar(255)
 	PackageList      []*ProductItem  `orm:"-"                           json:"package_list"`         // varchar(255)
 	Size             *ProductAttrKey `orm:"-"                            json:"size_list"`           // varchar(255)

+ 15 - 0
go/gopath/src/fohow.com/libs/tool/number.go

@@ -40,3 +40,18 @@ func JudgeEndInCharacter(character, originStrings string) bool {
 func Int64ToFloat64ToString(number, base int64) string {
 	return strconv.FormatFloat(float64(number)/float64(base), 'f', 2, 64)
 }
+
+//把取最小值
+func Min(vals ...int64) int64 {
+	min := int64(0)
+	for _, val := range vals {
+		if val <= int64(0) {
+			min = int64(0)
+			break
+		}
+		if val <= min || min == int64(0) {
+			min = val
+		}
+	}
+	return min
+}