|
@@ -11,6 +11,7 @@ import cn.newfeifan.mall.framework.common.core.KeyValue;
|
|
|
import cn.newfeifan.mall.framework.common.enums.UserTypeEnum;
|
|
|
import cn.newfeifan.mall.framework.common.util.json.JsonUtils;
|
|
|
import cn.newfeifan.mall.framework.common.util.number.MoneyUtils;
|
|
|
+import cn.newfeifan.mall.module.distri.constant.DistriConstants;
|
|
|
import cn.newfeifan.mall.module.distri.dal.dataobject.integral.IntegralDO;
|
|
|
import cn.newfeifan.mall.module.distri.dal.mysql.integral.IntegralMapper;
|
|
|
import cn.newfeifan.mall.module.member.api.address.MemberAddressApi;
|
|
@@ -315,6 +316,15 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
return tradePriceService.calculatePrice(calculateReqBO);
|
|
|
}
|
|
|
|
|
|
+ //把数据库的钱转换为数据库的积分
|
|
|
+ public static Integer money2Integral(Integer money){
|
|
|
+ return money*DistriConstants.INTEGRAL2MONEY;
|
|
|
+ }
|
|
|
+
|
|
|
+ //把数据库的积分转换为数据库的钱
|
|
|
+ public static Integer integral2Money(Integer integral){
|
|
|
+ return integral/DistriConstants.INTEGRAL2MONEY;
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@@ -376,8 +386,11 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
|
|
|
//消费者在页面录入的,要使用的积分
|
|
|
Integer payPoints = createReqVO.getPayIntegral();
|
|
|
+
|
|
|
if(payPoints == null){
|
|
|
payPoints = 0;
|
|
|
+ }else{//把页面传入的,1积分=1元钱的积分,转换为后台保存到数据库的积分值
|
|
|
+ payPoints = payPoints* DistriConstants.PERCENT;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -386,7 +399,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
//计算订单含积分的各项商品价格
|
|
|
TradePriceCalculateRespBO tradePriceCalculateRespBO = calculatePriceWithPoints(userId, createReqVO);
|
|
|
//计算分摊的积分金额
|
|
|
- List<Integer> dividePoints = TradePriceCalculatorHelper.dividePrice(tradePriceCalculateRespBO.getItems(), payPoints);
|
|
|
+ List<Integer> dividePoints = TradePriceCalculatorHelper.dividePrice(tradePriceCalculateRespBO.getItems(), integral2Money(payPoints));
|
|
|
//键为skuId,value为单个商品项信息
|
|
|
Map<Long, TradePriceCalculateRespBO.OrderItem> itemPayPointsMap = new HashMap<Long, TradePriceCalculateRespBO.OrderItem>();
|
|
|
|
|
@@ -394,7 +407,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
List<TradePriceCalculateRespBO.OrderItem> priceOrderItems = tradePriceCalculateRespBO.getItems();
|
|
|
for (int i = 0; i < priceOrderItems.size(); i++) {
|
|
|
TradePriceCalculateRespBO.OrderItem orderItem = priceOrderItems.get(i);
|
|
|
- Integer itemPoint = dividePoints.get(i);//每项商品使用的积分
|
|
|
+ Integer itemPoint = money2Integral(dividePoints.get(i));//每项商品使用的积分
|
|
|
orderItem.setPayPoints(itemPoint);
|
|
|
itemPayPointsMap.put(orderItem.getSkuId(),orderItem);
|
|
|
}
|
|
@@ -440,8 +453,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
//计算抵扣积分后的价格
|
|
|
Long skuId = orderItem.getSkuId();
|
|
|
TradePriceCalculateRespBO.OrderItem orderItemTmp = itemPayPointsMap.get(skuId);
|
|
|
- orderItem.setPayPoints(orderItemTmp.getPayPoints()); //本商品使用积分
|
|
|
- Integer payRmb = orderItem.getPrice()*orderItem.getCount()-orderItemTmp.getPayPoints();//本商品实付人民币
|
|
|
+ orderItem.setPayIntegral(orderItemTmp.getPayPoints()); //本商品使用积分
|
|
|
+ Integer payRmb = orderItem.getPrice()*orderItem.getCount()-integral2Money(orderItemTmp.getPayPoints());//本商品实付人民币
|
|
|
orderItem.setPayRmb(payRmb);//本商品实付人民币
|
|
|
orderItem.setPayPrice(payRmb);//本商品实付人民币
|
|
|
|
|
@@ -459,7 +472,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
order.setShopId(shopId);
|
|
|
order.setPayPrice(shopPayPrice);
|
|
|
order.setPayRmb(shopPayPrice);
|
|
|
- order.setPayPoints(shopPayPoints);
|
|
|
+ order.setPayIntegral(shopPayPoints);
|
|
|
|
|
|
tradeOrderMapper.insert(order);
|
|
|
|
|
@@ -494,6 +507,11 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()).setPayOrderId(payOrderId));
|
|
|
}
|
|
|
|
|
|
+ //如果订单有使用积分,则抵扣用户的积分
|
|
|
+ if(payPoints>0){
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
return virtualOrder;
|
|
|
}
|
|
|
|