|
@@ -29,6 +29,7 @@ func SetOrderPromotion(orderId string, wxUid int64) {
|
|
|
for _, item := range effectivePromotions {
|
|
for _, item := range effectivePromotions {
|
|
|
firstFlag := true
|
|
firstFlag := true
|
|
|
totalFlag := true
|
|
totalFlag := true
|
|
|
|
|
+ numsFlag := true
|
|
|
if item.MaxTotal > 0 && order.TotalPrice > item.MaxTotal {
|
|
if item.MaxTotal > 0 && order.TotalPrice > item.MaxTotal {
|
|
|
totalFlag = false
|
|
totalFlag = false
|
|
|
continue
|
|
continue
|
|
@@ -42,11 +43,11 @@ func SetOrderPromotion(orderId string, wxUid int64) {
|
|
|
firstFlag = false
|
|
firstFlag = false
|
|
|
continue
|
|
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)
|
|
detail1 := order_model.GetDetailsByOrderIdAndPid(orderId, item.Prod1)
|
|
|
|
|
|
|
|
if detail1 != nil && item.Prod1 > 0 && item.Nums1 > 0 {
|
|
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)
|
|
nums4 = int64(order.TotalPrice / item.MinTotal)
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
+ if nums == int64(99) || nums == int64(0) {
|
|
|
|
|
+ numsFlag = false
|
|
|
|
|
+ }
|
|
|
val := []int64{nums1, nums2, nums3, nums4}
|
|
val := []int64{nums1, nums2, nums3, nums4}
|
|
|
nums = min(val...)
|
|
nums = min(val...)
|
|
|
beego.Warn("nums-1%d", nums)
|
|
beego.Warn("nums-1%d", nums)
|
|
@@ -77,7 +81,7 @@ func SetOrderPromotion(orderId string, wxUid int64) {
|
|
|
beego.Warn("firstFlag%v", firstFlag)
|
|
beego.Warn("firstFlag%v", firstFlag)
|
|
|
beego.Warn("totalFlag%v", totalFlag)
|
|
beego.Warn("totalFlag%v", totalFlag)
|
|
|
beego.Warn("nums-2%d", nums)
|
|
beego.Warn("nums-2%d", nums)
|
|
|
- if firstFlag && totalFlag && nums > int64(0) {
|
|
|
|
|
|
|
+ if firstFlag && totalFlag && numsFlag {
|
|
|
if item.SendProd1 > 0 && item.SendNums1 > 0 {
|
|
if item.SendProd1 > 0 && item.SendNums1 > 0 {
|
|
|
sendNums1 := nums * item.SendNums1
|
|
sendNums1 := nums * item.SendNums1
|
|
|
//赠送赠品1
|
|
//赠送赠品1
|
|
@@ -122,22 +126,25 @@ func min(vals ...int64) int64 {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
/*
|
|
|
|
|
+
|
|
|
找到所有当前时间>《开始时间》且 当前时间<《结束时间》 且《是否启用》=1的促销记录
|
|
找到所有当前时间>《开始时间》且 当前时间<《结束时间》 且《是否启用》=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》;
|
|
|
|
|
+ }
|
|
|
|
|
+ 找下一个促销记录
|
|
|
}
|
|
}
|
|
|
-找下一个促销记录
|
|
|
|
|
*/
|
|
*/
|