【修复】修复全局促销指定商品第几件减去指定金额计算数量有差异的问题。

This commit is contained in:
大灰灰
2022-05-25 23:56:38 +08:00
parent 50e516c0b7
commit 4930f2148c
3 changed files with 24 additions and 13 deletions

View File

@@ -71,15 +71,19 @@ namespace CoreCms.Net.Services
{ {
switch (resultInfo.code) switch (resultInfo.code)
{ {
//指定商品减固定金额
case "GOODS_REDUCE": case "GOODS_REDUCE":
promotionModel = result_GOODS_REDUCE(parameters, item, promotionInfo); promotionModel = result_GOODS_REDUCE(parameters, item, promotionInfo);
break; break;
//指定商品打X折
case "GOODS_DISCOUNT": case "GOODS_DISCOUNT":
promotionModel = result_GOODS_DISCOUNT(parameters, item, promotionInfo); promotionModel = result_GOODS_DISCOUNT(parameters, item, promotionInfo);
break; break;
//指定商品一口价
case "GOODS_ONE_PRICE": case "GOODS_ONE_PRICE":
promotionModel = result_GOODS_ONE_PRICE(parameters, item, promotionInfo); promotionModel = result_GOODS_ONE_PRICE(parameters, item, promotionInfo);
break; break;
//指定商品每第几件减指定金额
case "GOODS_HALF_PRICE": //todo 指定商品每第几件减指定金额 case "GOODS_HALF_PRICE": //todo 指定商品每第几件减指定金额
promotionModel = result_GOODS_HALF_PRICE(parameters, item, promotionInfo); promotionModel = result_GOODS_HALF_PRICE(parameters, item, promotionInfo);
break; break;
@@ -136,10 +140,12 @@ namespace CoreCms.Net.Services
} }
else else
{ {
//订单打X折
if (resultInfo.code == "ORDER_DISCOUNT") if (resultInfo.code == "ORDER_DISCOUNT")
{ {
result_ORDER_DISCOUNT(parameters, cart, promotionInfo); result_ORDER_DISCOUNT(parameters, cart, promotionInfo);
} }
//订单减指定金额
else if (resultInfo.code == "ORDER_REDUCE") else if (resultInfo.code == "ORDER_REDUCE")
{ {
result_ORDER_REDUCE(parameters, cart, promotionInfo); result_ORDER_REDUCE(parameters, cart, promotionInfo);
@@ -319,7 +325,7 @@ namespace CoreCms.Net.Services
return promotionMoney; return promotionMoney;
} }
//商品第N个半价 //指定商品每第几件减指定金额
public decimal result_GOODS_HALF_PRICE(JObject parameters, CartProducts cartProducts, CoreCmsPromotion promotionInfo) public decimal result_GOODS_HALF_PRICE(JObject parameters, CartProducts cartProducts, CoreCmsPromotion promotionInfo)
{ {
if (!parameters.ContainsKey("money")) return 0; if (!parameters.ContainsKey("money")) return 0;
@@ -335,16 +341,21 @@ namespace CoreCms.Net.Services
var num = parameters["num"].ObjectToInt(0); var num = parameters["num"].ObjectToInt(0);
//购买的数量 //购买的数量
var buyNum = cartProducts.nums; var buyNum = cartProducts.nums;
//取整数,保证满足了,才优惠 ,比如设置 原价 10 第2个 减少5购买5个产品的时候实际只优惠2个产品的价格
var promotionNum = buyNum / num; if (cartProducts.nums >= num)
var pmoney = Math.Round((decimal)promotionNum * objMoney / buyNum, 2); //单品优惠的金额 {
var goodsPrice = (decimal)cartProducts.products.price; //var promotionNum = buyNum / num;
cartProducts.products.price = goodsPrice - pmoney; //优惠后的平均价格 var pmoney = Math.Round(objMoney / buyNum, 2); //单品优惠的金额
promotionMoney = Math.Round(cartProducts.nums * pmoney, 2);//优惠金额 var goodsPrice = (decimal)cartProducts.products.price;
//设置商品优惠总金额 cartProducts.products.price = goodsPrice - pmoney; //优惠后的平均价格
cartProducts.products.promotionAmount = Math.Round(cartProducts.products.promotionAmount + promotionMoney, 2); promotionMoney = Math.Round(cartProducts.nums * pmoney, 2);//优惠金额
//设置商品的实际销售总金额
cartProducts.products.amount = Math.Round(cartProducts.products.amount - promotionMoney, 2); //设置商品优惠总金额
cartProducts.products.promotionAmount = Math.Round(cartProducts.products.promotionAmount + promotionMoney, 2);
//设置商品的实际销售总金额
cartProducts.products.amount = Math.Round(cartProducts.products.amount - promotionMoney, 2);
}
return promotionMoney; return promotionMoney;
} }

View File

@@ -22,7 +22,7 @@
"UseCache": true, //启用redis作为内存选择 "UseCache": true, //启用redis作为内存选择
"UseTimedTask": true, //启用redis作为定时任务 "UseTimedTask": true, //启用redis作为定时任务
// 如果采用容器化部署Service 要写成redis的服务名否则写地址 // 如果采用容器化部署Service 要写成redis的服务名否则写地址
"ConnectionString": "127.0.0.1:6379,password=CoreShop,connectTimeout=3000,connectRetry=1,syncTimeout=10000,DefaultDatabase=10" //redis数据库连接字符串 "ConnectionString": "127.0.0.1:6379,password=CoreShop,connectTimeout=3000,connectRetry=1,syncTimeout=10000,DefaultDatabase=10,abortConnect=false" //redis数据库连接字符串
}, },
//jwt授权认证的一些设置 //jwt授权认证的一些设置
"JwtConfig": { "JwtConfig": {

View File

@@ -22,7 +22,7 @@
"UseCache": true, //启用redis作为内存选择 "UseCache": true, //启用redis作为内存选择
"UseTimedTask": true, //启用redis作为定时任务 "UseTimedTask": true, //启用redis作为定时任务
// 如果采用容器化部署Service 要写成redis的服务名否则写地址 // 如果采用容器化部署Service 要写成redis的服务名否则写地址
"ConnectionString": "127.0.0.1:6379,password=CoreShop,connectTimeout=3000,connectRetry=1,syncTimeout=10000,DefaultDatabase=10" //redis数据库连接字符串 "ConnectionString": "127.0.0.1:6379,password=CoreShop,connectTimeout=3000,connectRetry=1,syncTimeout=10000,DefaultDatabase=10,abortConnect=false" //redis数据库连接字符串
}, },
//jwt授权认证的一些设置 //jwt授权认证的一些设置
"JwtConfig": { "JwtConfig": {