【优化】优化使用部分积分加金额购买,申请售后回退积分的处理,增加精度到4位,减少误差。

This commit is contained in:
大灰灰
2022-09-28 23:59:55 +08:00
parent 5efd1dea26
commit c514bef193
5 changed files with 57 additions and 36 deletions

View File

@@ -798,13 +798,20 @@ namespace CoreCms.Net.Services
//计算可用积分
var allConfigs = await _settingServices.GetConfigDictionaries();
var pointExchangeModel = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointExchangeModel).ObjectToInt(); //判断是全局模式还是单品模式
//判断是全局模式还是单品模式
var pointExchangeModel = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointExchangeModel).ObjectToInt();
if (pointExchangeModel == 1)
{
var ordersPointProportion = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.OrdersPointProportion).ObjectToInt(10);//订单积分使用比例
var maxPointDeductedMoney = Math.Round(cartDto.amount * ordersPointProportion / 100, 2); //最大积分抵扣的钱
var pointDiscountedProportion = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointDiscountedProportion).ObjectToInt(100); //积分兑换比例
var pointDeductedMoney = point / pointDiscountedProportion; //积分可以抵扣的钱
//计算可用积分//订单积分使用比例
var ordersPointProportion = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.OrdersPointProportion).ObjectToDecimal(10);
var proportion = Math.Round(ordersPointProportion / 100, 4);
//最多可以抵扣的金额
var maxPointDeductedMoney = Math.Round(cartDto.amount * proportion, 4);
//订单积分折现比例(多少积分可以折现1块钱)
var pointDiscountedProportion = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointDiscountedProportion).ObjectToDecimal(100); //积分兑换比例
var pointDeductedMoney = Math.Round(Convert.ToDecimal(point) / pointDiscountedProportion, 4); ; //积分可以抵扣的钱
if (maxPointDeductedMoney < pointDeductedMoney)
{
@@ -832,8 +839,8 @@ namespace CoreCms.Net.Services
var needsPoint = money * pointDiscountedProportion;
cartDto.point = point;
cartDto.pointExchangeMoney = Convert.ToInt32(money);
cartDto.amount -= Convert.ToInt32(money);
cartDto.pointExchangeMoney = money;
cartDto.amount -= money;
}
}
jm.data = cartDto;

View File

@@ -195,17 +195,20 @@ namespace CoreCms.Net.Services
if (orderMoney != 0)
{
//计算可用积分//订单积分使用比例
var ordersPointProportion = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.OrdersPointProportion).ObjectToInt(10);
var ordersPointProportion = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.OrdersPointProportion).ObjectToDecimal(10);
var proportion = Math.Round(ordersPointProportion / 100, 4);
//最多可以抵扣的金额
var maxPointDeductedMoney = Math.Round((orderMoney * ordersPointProportion) / 100, 2);
var maxPointDeductedMoney = Math.Round(orderMoney * proportion, 4);
//订单积分折现比例(多少积分可以折现1块钱)
var pointDiscountedProportion = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointDiscountedProportion).ObjectToInt(100);
var pointDiscountedProportion = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointDiscountedProportion).ObjectToDecimal(100);
//计算需要多少积分
var needsPoint = maxPointDeductedMoney * pointDiscountedProportion;
//确定是否有那么多积分去抵扣比例计算出的能抵扣的钱
dto.availablePoint = Convert.ToInt32(needsPoint > user.point ? user.point : needsPoint);
dto.pointExchangeMoney = dto.availablePoint / pointDiscountedProportion;
var availablePoint = needsPoint > user.point ? user.point : needsPoint;
dto.availablePoint = Convert.ToInt32(availablePoint);
dto.pointExchangeMoney = Math.Round(availablePoint / pointDiscountedProportion, 4);
//dto.pointExchangeMoney = dto.availablePoint / pointDiscountedProportion;
}
}
else if (pointExchangeModel == 2)
@@ -243,9 +246,10 @@ namespace CoreCms.Net.Services
var needsPoint = money * pointDiscountedProportion;
//确定是否有那么多积分去抵扣比例计算出的能抵扣的钱
dto.availablePoint = Convert.ToInt32(needsPoint > user.point ? 0 : needsPoint);
var availablePoint = needsPoint > user.point ? 0 : needsPoint;
dto.availablePoint = Convert.ToInt32(availablePoint);
dto.pointExchangeMoney = Convert.ToInt32(user.point > needsPoint ? money : 0);
dto.pointExchangeMoney = user.point > needsPoint ? money : 0;
}
}