ソースを参照

更改促销条件

abiao 5 年 前
コミット
7cbdb6c097
共有1 個のファイルを変更した28 個の追加21 個の削除を含む
  1. 28 21
      go/gopath/src/fohow.com/apps/helpers/promotion_helper.go

+ 28 - 21
go/gopath/src/fohow.com/apps/helpers/promotion_helper.go

@@ -29,6 +29,7 @@ func SetOrderPromotion(orderId string, wxUid int64) {
 	for _, item := range effectivePromotions {
 		firstFlag := true
 		totalFlag := true
+		numsFlag := true
 		if item.MaxTotal > 0 && order.TotalPrice > item.MaxTotal {
 			totalFlag = false
 			continue
@@ -42,11 +43,11 @@ func SetOrderPromotion(orderId string, wxUid int64) {
 			firstFlag = false
 			continue
 		}
-		nums := int64(0)
-		nums1 := int64(0)
-		nums2 := int64(0)
-		nums3 := int64(0)
-		nums4 := int64(0)
+		nums := int64(99)
+		nums1 := int64(99)
+		nums2 := int64(99)
+		nums3 := int64(99)
+		nums4 := int64(99)
 		detail1 := order_model.GetDetailsByOrderIdAndPid(orderId, item.Prod1)
 
 		if detail1 != nil && item.Prod1 > 0 && item.Nums1 > 0 {
@@ -66,6 +67,9 @@ func SetOrderPromotion(orderId string, wxUid int64) {
 			nums4 = int64(order.TotalPrice / item.MinTotal)
 
 		}
+		if nums == int64(99) || nums == int64(0) {
+			numsFlag = false
+		}
 		val := []int64{nums1, nums2, nums3, nums4}
 		nums = min(val...)
 		beego.Warn("nums-1%d", nums)
@@ -77,7 +81,7 @@ func SetOrderPromotion(orderId string, wxUid int64) {
 		beego.Warn("firstFlag%v", firstFlag)
 		beego.Warn("totalFlag%v", totalFlag)
 		beego.Warn("nums-2%d", nums)
-		if firstFlag && totalFlag && nums > int64(0) {
+		if firstFlag && totalFlag && numsFlag {
 			if item.SendProd1 > 0 && item.SendNums1 > 0 {
 				sendNums1 := nums * item.SendNums1
 				//赠送赠品1
@@ -122,22 +126,25 @@ func min(vals ...int64) int64 {
 }
 
 /*
+
 找到所有当前时间>《开始时间》且 当前时间<《结束时间》 且《是否启用》=1的促销记录
-{	flag1=1,flag2=1
-NUMs=0,NUMs1=0,NUMs2=0,NUMs3=0,NUMs4=0
-如果《是否首次下单》=是,且当前订单不是首次订单,则flag1=0
-如果《最大金额》>0则要求订单金额大于此项值,则flag2=0
+{	flag1=1,flag2=1,flag3=1
+	NUMs=99,NUMs1=99,NUMs2=99,NUMs3=99,NUMs4=99
+	如果《是否首次下单》=是,且当前订单不是首次订单,则flag1=0
+	如果《最大金额》>0则要求订单金额大于此项值,则flag2=0
 
-如果:《购买产品ID1》>0且《购买数量1》>0则NUMs1=购买产品ID1的数量/《购买数量1》
-如果:《购买产品ID2》>0且《购买数量2》>0则当前订单中NUMs2=购买产品ID2的数量/《购买数量2》
-如果:《购买产品ID3》>0且《购买数量3》>0则当前订单中NUMs3=购买产品ID3的数量/《购买数量3》
-如果:《最小金额》>0则要求订单金额大于或等于此项值,则NUMs4=订单金额/《最小金额》
-NUMs=min(NUMs1,NUMs2,NUMs3,NUMs4);
-如果《是否多买多送》=否,NUMs=MIN(1,NUMs)
-if(flag1=1并且flag2=1并且NUMs>0)
-{	如果《赠送产品ID1》>0且《赠送数量1》>0,则按《赠送数量1》*NUMs赠送《赠送产品ID1》;
-如果《赠送产品ID2》>0且《赠送数量2》>0,则按《赠送数量2》*NUMs赠送《赠送产品ID2》;
-如果《赠送产品ID3》>0且《赠送数量3》>0,则按《赠送数量3》*NUMs赠送《赠送产品ID3》;
+	如果:《购买产品ID1》>0且《购买数量1》>0则NUMs1=购买产品ID1的数量/《购买数量1》
+	如果:《购买产品ID2》>0且《购买数量2》>0则当前订单中NUMs2=购买产品ID2的数量/《购买数量2》
+	如果:《购买产品ID3》>0且《购买数量3》>0则当前订单中NUMs3=购买产品ID3的数量/《购买数量3》
+	如果:《最小金额》>0则要求订单金额大于或等于此项值,则NUMs4=订单金额/《最小金额》
+	NUMs=min(NUMs1,NUMs2,NUMs3,NUMs4);
+	if(NUMs=99或NUMs=0)	则flag3=0
+	如果《是否多买多送》=否,NUMs=MIN(1,NUMs)
+	if(flag1=1并且flag2=1并且flag3=1)
+	{	如果《赠送产品ID1》>0且《赠送数量1》>0,则按《赠送数量1》*NUMs赠送《赠送产品ID1》;
+		如果《赠送产品ID2》>0且《赠送数量2》>0,则按《赠送数量2》*NUMs赠送《赠送产品ID2》;
+		如果《赠送产品ID3》>0且《赠送数量3》>0,则按《赠送数量3》*NUMs赠送《赠送产品ID3》;
+	}
+	找下一个促销记录
 }
-找下一个促销记录
 */