|
@@ -12,8 +12,9 @@ import cn.newfeifan.mall.framework.common.enums.UserTypeEnum;
|
|
import cn.newfeifan.mall.framework.common.exception.ErrorCode;
|
|
import cn.newfeifan.mall.framework.common.exception.ErrorCode;
|
|
import cn.newfeifan.mall.framework.common.util.json.JsonUtils;
|
|
import cn.newfeifan.mall.framework.common.util.json.JsonUtils;
|
|
import cn.newfeifan.mall.framework.common.util.number.MoneyUtils;
|
|
import cn.newfeifan.mall.framework.common.util.number.MoneyUtils;
|
|
|
|
+import cn.newfeifan.mall.framework.pay.core.enums.channel.PayChannelEnum;
|
|
import cn.newfeifan.mall.module.distri.constant.DistriConstants;
|
|
import cn.newfeifan.mall.module.distri.constant.DistriConstants;
|
|
-import cn.newfeifan.mall.module.distri.controller.admin.integral.vo.IntegralSaveReqVO;
|
|
|
|
|
|
+import cn.newfeifan.mall.module.distri.controller.app.integral.vo.IntegralSaveReqVO;
|
|
import cn.newfeifan.mall.module.distri.controller.admin.ptprofit.vo.PtProfitSaveReqVO;
|
|
import cn.newfeifan.mall.module.distri.controller.admin.ptprofit.vo.PtProfitSaveReqVO;
|
|
import cn.newfeifan.mall.module.distri.controller.app.ptprofitlog.vo.PtProfitLogSaveReqVO;
|
|
import cn.newfeifan.mall.module.distri.controller.app.ptprofitlog.vo.PtProfitLogSaveReqVO;
|
|
import cn.newfeifan.mall.module.distri.dal.dataobject.integral.IntegralDO;
|
|
import cn.newfeifan.mall.module.distri.dal.dataobject.integral.IntegralDO;
|
|
@@ -35,9 +36,17 @@ import cn.newfeifan.mall.module.member.service.user.MemberUserService;
|
|
import cn.newfeifan.mall.module.pay.api.order.PayOrderApi;
|
|
import cn.newfeifan.mall.module.pay.api.order.PayOrderApi;
|
|
import cn.newfeifan.mall.module.pay.api.order.dto.PayOrderCreateReqDTO;
|
|
import cn.newfeifan.mall.module.pay.api.order.dto.PayOrderCreateReqDTO;
|
|
import cn.newfeifan.mall.module.pay.api.order.dto.PayOrderRespDTO;
|
|
import cn.newfeifan.mall.module.pay.api.order.dto.PayOrderRespDTO;
|
|
-import cn.newfeifan.mall.module.pay.dal.dataobject.order.PayOrderDO;
|
|
|
|
-import cn.newfeifan.mall.module.pay.dal.mysql.order.PayOrderMapper;
|
|
|
|
|
|
+import cn.newfeifan.mall.module.pay.controller.admin.order.vo.PayOrderRespVO;
|
|
|
|
+import cn.newfeifan.mall.module.pay.controller.admin.order.vo.PayOrderSubmitReqVO;
|
|
|
|
+import cn.newfeifan.mall.module.pay.controller.app.order.vo.AppPayOrderSubmitZeroPurchaseReqVO;
|
|
|
|
+import cn.newfeifan.mall.module.pay.convert.order.PayOrderConvert;
|
|
|
|
+import cn.newfeifan.mall.module.pay.dal.dataobject.channel.PayChannelDO;
|
|
|
|
+import cn.newfeifan.mall.module.pay.dal.dataobject.order.*;
|
|
|
|
+import cn.newfeifan.mall.module.pay.dal.mysql.order.*;
|
|
|
|
+import cn.newfeifan.mall.module.pay.dal.redis.no.PayNoRedisDAO;
|
|
import cn.newfeifan.mall.module.pay.enums.order.PayOrderStatusEnum;
|
|
import cn.newfeifan.mall.module.pay.enums.order.PayOrderStatusEnum;
|
|
|
|
+import cn.newfeifan.mall.module.pay.framework.pay.config.PayProperties;
|
|
|
|
+import cn.newfeifan.mall.module.pay.service.order.PayOrderService;
|
|
import cn.newfeifan.mall.module.product.api.comment.ProductCommentApi;
|
|
import cn.newfeifan.mall.module.product.api.comment.ProductCommentApi;
|
|
import cn.newfeifan.mall.module.product.api.comment.dto.ProductCommentCreateReqDTO;
|
|
import cn.newfeifan.mall.module.product.api.comment.dto.ProductCommentCreateReqDTO;
|
|
import cn.newfeifan.mall.module.product.dal.dataobject.sku.ProductSkuDO;
|
|
import cn.newfeifan.mall.module.product.dal.dataobject.sku.ProductSkuDO;
|
|
@@ -46,15 +55,11 @@ import cn.newfeifan.mall.module.product.dal.mysql.sku.ProductSkuMapper;
|
|
import cn.newfeifan.mall.module.product.dal.mysql.spu.ProductSpuMapper;
|
|
import cn.newfeifan.mall.module.product.dal.mysql.spu.ProductSpuMapper;
|
|
import cn.newfeifan.mall.module.sale.dal.dataobject.shop.ShopDO;
|
|
import cn.newfeifan.mall.module.sale.dal.dataobject.shop.ShopDO;
|
|
import cn.newfeifan.mall.module.sale.dal.mysql.shop.ShopMapper;
|
|
import cn.newfeifan.mall.module.sale.dal.mysql.shop.ShopMapper;
|
|
|
|
+import cn.newfeifan.mall.module.system.service.sms.SmsCodeService;
|
|
import cn.newfeifan.mall.module.system.service.user.AdminUserService;
|
|
import cn.newfeifan.mall.module.system.service.user.AdminUserService;
|
|
-import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO;
|
|
|
|
-import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderRemarkReqVO;
|
|
|
|
-import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderUpdateAddressReqVO;
|
|
|
|
-import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderUpdatePriceReqVO;
|
|
|
|
|
|
+import cn.newfeifan.mall.module.trade.controller.admin.order.vo.*;
|
|
import cn.newfeifan.mall.module.trade.controller.app.base.property.AppProductPropertyValueDetailRespVO;
|
|
import cn.newfeifan.mall.module.trade.controller.app.base.property.AppProductPropertyValueDetailRespVO;
|
|
-import cn.newfeifan.mall.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO;
|
|
|
|
-import cn.newfeifan.mall.module.trade.controller.app.order.vo.AppTradeOrderSettlementReqVO;
|
|
|
|
-import cn.newfeifan.mall.module.trade.controller.app.order.vo.AppTradeOrderSettlementRespVO;
|
|
|
|
|
|
+import cn.newfeifan.mall.module.trade.controller.app.order.vo.*;
|
|
import cn.newfeifan.mall.module.trade.controller.app.order.vo.item.AppTradeOrderItemCommentCreateReqVO;
|
|
import cn.newfeifan.mall.module.trade.controller.app.order.vo.item.AppTradeOrderItemCommentCreateReqVO;
|
|
import cn.newfeifan.mall.module.trade.convert.order.TradeOrderConvert;
|
|
import cn.newfeifan.mall.module.trade.convert.order.TradeOrderConvert;
|
|
import cn.newfeifan.mall.module.trade.dal.dataobject.cart.CartDO;
|
|
import cn.newfeifan.mall.module.trade.dal.dataobject.cart.CartDO;
|
|
@@ -166,6 +171,16 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
@Resource
|
|
@Resource
|
|
private PayOrderMapper payOrderMapper;
|
|
private PayOrderMapper payOrderMapper;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ private PayOrderService payOrderService;
|
|
|
|
+ @Resource
|
|
|
|
+ private PayOrderExtensionMapper orderExtensionMapper;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private PayNoRedisDAO noRedisDAO;
|
|
|
|
+ @Resource
|
|
|
|
+ private PayProperties payProperties;
|
|
|
|
+
|
|
@Resource
|
|
@Resource
|
|
private IntegralService integralService;
|
|
private IntegralService integralService;
|
|
|
|
|
|
@@ -192,6 +207,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
@Lazy
|
|
@Lazy
|
|
private DuserService duserService;
|
|
private DuserService duserService;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ private SmsCodeService smsCodeService;
|
|
|
|
+
|
|
// =================== Order ===================
|
|
// =================== Order ===================
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -246,6 +264,50 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
return thisPayOrderDO;
|
|
return thisPayOrderDO;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public PayOrderRespVO submitOrderByZeroPurchase(AppPayOrderSubmitZeroPurchaseReqVO reqVO) {
|
|
|
|
+ reqVO.setChannelCode(PayChannelEnum.ZERO_PURCHASE.getCode());
|
|
|
|
+ // 获得 PayOrderDO ,并校验其是否存在
|
|
|
|
+ PayOrderDO order = payOrderService.validateOrderCanSubmit(reqVO.getId());
|
|
|
|
+ // 验证码校验
|
|
|
|
+ smsCodeService.useSmsCode(reqVO.getSmsCodeUseReqDTO().setUsedIp(getClientIP()));
|
|
|
|
+
|
|
|
|
+ PayChannelDO channel = payOrderService.validateChannelCanSubmit(order.getAppId(), reqVO.getChannelCode());
|
|
|
|
+ // 2. 插入 PayOrderExtensionDO
|
|
|
|
+ String no = noRedisDAO.generate(payProperties.getOrderNoPrefix());
|
|
|
|
+ PayOrderExtensionDO orderExtension = PayOrderConvert.INSTANCE.convert(cn.newfeifan.mall.framework.common.util.object.BeanUtils.toBean(reqVO, PayOrderSubmitReqVO.class), getClientIP())
|
|
|
|
+ .setOrderId(order.getId()).setNo(no)
|
|
|
|
+ .setStatus(PayOrderStatusEnum.SUCCESS.getStatus())
|
|
|
|
+ .setChannelId(channel.getId())
|
|
|
|
+ .setChannelCode(channel.getCode());
|
|
|
|
+ orderExtensionMapper.insert(orderExtension);
|
|
|
|
+
|
|
|
|
+ // 修改订单信息
|
|
|
|
+ order.setStatus(PayOrderStatusEnum.SUCCESS.getStatus());
|
|
|
|
+ order.setExtensionId(orderExtension.getId());
|
|
|
|
+ order.setNo(orderExtension.getNo());
|
|
|
|
+ order.setChannelCode(reqVO.getChannelCode());
|
|
|
|
+ order.setChannelId(channel.getId());
|
|
|
|
+ order.setChannelOrderNo("88888888"); // 短信支付没有通道编号
|
|
|
|
+
|
|
|
|
+ payOrderService.updatePayOrder(order);
|
|
|
|
+
|
|
|
|
+ List list = updateOrderPaid(reqVO.getId());
|
|
|
|
+
|
|
|
|
+ PayOrderRespVO convert = PayOrderConvert.INSTANCE.convert(order);
|
|
|
|
+
|
|
|
|
+ Object jfObj = list.get(0);
|
|
|
|
+ Object sjObj = list.get(1);
|
|
|
|
+
|
|
|
|
+ Long jf = (Long) jfObj;//待确权积分
|
|
|
|
+ Double sj = (Double) sjObj;//待确权身价
|
|
|
|
+
|
|
|
|
+ convert.setJf(jf);
|
|
|
|
+ convert.setSj(sj);
|
|
|
|
+ return convert;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public AppTradeOrderSettlementRespVO settlementOrder(Long userId, AppTradeOrderSettlementReqVO settlementReqVO) {
|
|
public AppTradeOrderSettlementRespVO settlementOrder(Long userId, AppTradeOrderSettlementReqVO settlementReqVO) {
|
|
@@ -375,6 +437,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
respVO.setShopSkuIds(shopSkuIds);//把sku根据店聚合放到map中
|
|
respVO.setShopSkuIds(shopSkuIds);//把sku根据店聚合放到map中
|
|
respVO.setShopNameMap(shopNameMap);
|
|
respVO.setShopNameMap(shopNameMap);
|
|
respVO.setCurrentQuota(currentQuota);//用户当前积分
|
|
respVO.setCurrentQuota(currentQuota);//用户当前积分
|
|
|
|
+ respVO.setConsumePoints(integralDO.getConsumptionPoints());//用户当前消费分
|
|
|
|
|
|
// System.out.println("shopSkuIds@@@@@@@@"+shopSkuIds);
|
|
// System.out.println("shopSkuIds@@@@@@@@"+shopSkuIds);
|
|
// System.out.println("shopNameMap@@@@@@@@"+shopNameMap);
|
|
// System.out.println("shopNameMap@@@@@@@@"+shopNameMap);
|
|
@@ -445,6 +508,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
IntegralDO integralDO = integralMapper.selectOne("user_id", getLoginUserId());//查询出用户积分相关信息
|
|
IntegralDO integralDO = integralMapper.selectOne("user_id", getLoginUserId());//查询出用户积分相关信息
|
|
Long currentQuota = integralDO.getCurrentQuota();//获取用户当前积分
|
|
Long currentQuota = integralDO.getCurrentQuota();//获取用户当前积分
|
|
respVO.setCurrentQuota(currentQuota);
|
|
respVO.setCurrentQuota(currentQuota);
|
|
|
|
+ respVO.setConsumePoints(integralDO.getConsumptionPoints());//用户当前消费分
|
|
|
|
|
|
//保存每个店铺返回页面的 订单信息汇总
|
|
//保存每个店铺返回页面的 订单信息汇总
|
|
Map<Long, AppTradeOrderSettlementRespVO> shopRespVOMap = new HashMap<>();
|
|
Map<Long, AppTradeOrderSettlementRespVO> shopRespVOMap = new HashMap<>();
|
|
@@ -572,11 +636,16 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
@TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_CREATE)
|
|
@TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_CREATE)
|
|
public TradeOrderDO createOrder(Long userId, AppTradeOrderCreateReqVO createReqVO) {
|
|
public TradeOrderDO createOrder(Long userId, AppTradeOrderCreateReqVO createReqVO) {
|
|
|
|
|
|
- if(createReqVO.getPayIntegral() != null && createReqVO.getPayIntegral() < 0){
|
|
|
|
- ErrorCode ERROR = new ErrorCode(1_011_000_013, "抵扣佣金不能小于0");
|
|
|
|
|
|
+ if (createReqVO.getPayIntegral() != null && createReqVO.getPayIntegral() > 0 && createReqVO.getPayConsumptionPoints() != null && createReqVO.getPayConsumptionPoints() > 0) {
|
|
|
|
+ ErrorCode ERROR = new ErrorCode(1_011_000_013, "佣金和消费分只能选择一种");
|
|
throw exception(ERROR);
|
|
throw exception(ERROR);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// if(createReqVO.getPayIntegral() != null && createReqVO.getPayIntegral() < 0){
|
|
|
|
+// ErrorCode ERROR = new ErrorCode(1_011_000_013, "抵扣佣金不能小于0");
|
|
|
|
+// throw exception(ERROR);
|
|
|
|
+// }
|
|
|
|
+
|
|
//校验最大值 start add by Ben
|
|
//校验最大值 start add by Ben
|
|
//查询订单提成比例
|
|
//查询订单提成比例
|
|
QueryWrapper<OrderPercentageDO> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<OrderPercentageDO> queryWrapper = new QueryWrapper<>();
|
|
@@ -663,6 +732,14 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
} else {//把页面传入的,1积分=1元钱的积分,转换为后台保存到数据库的积分值
|
|
} else {//把页面传入的,1积分=1元钱的积分,转换为后台保存到数据库的积分值
|
|
payPoints = payPoints * DistriConstants.INTEGRAL_PAGE2DB;
|
|
payPoints = payPoints * DistriConstants.INTEGRAL_PAGE2DB;
|
|
}
|
|
}
|
|
|
|
+ //消费者在页面录入的,要使用的消费分
|
|
|
|
+ Double consumptionPoints = createReqVO.getPayConsumptionPoints();
|
|
|
|
+
|
|
|
|
+ if (consumptionPoints == null) {
|
|
|
|
+ consumptionPoints = (double) 0;
|
|
|
|
+ } else {//把页面传入的,1消费分=1元钱的消费分,转换为后台保存到数据库的消费分值
|
|
|
|
+ consumptionPoints = consumptionPoints * DistriConstants.INTEGRAL_PAGE2DB;
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
// payPoints = 3;//为了测试方便,临时写死
|
|
// payPoints = 3;//为了测试方便,临时写死
|
|
@@ -671,6 +748,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
TradePriceCalculateRespBO tradePriceCalculateRespBO = calculatePriceWithPoints(userId, createReqVO);
|
|
TradePriceCalculateRespBO tradePriceCalculateRespBO = calculatePriceWithPoints(userId, createReqVO);
|
|
//计算分摊的积分金额
|
|
//计算分摊的积分金额
|
|
List<Integer> dividePoints = TradePriceCalculatorHelper.dividePrice(tradePriceCalculateRespBO.getItems(), integral2Money(payPoints.longValue()));
|
|
List<Integer> dividePoints = TradePriceCalculatorHelper.dividePrice(tradePriceCalculateRespBO.getItems(), integral2Money(payPoints.longValue()));
|
|
|
|
+ List<Integer> divideConsumptionPoints = TradePriceCalculatorHelper.dividePrice(tradePriceCalculateRespBO.getItems(), integral2Money(consumptionPoints.longValue()));
|
|
//键为skuId,value为单个商品项信息
|
|
//键为skuId,value为单个商品项信息
|
|
Map<Long, TradePriceCalculateRespBO.OrderItem> itemPayPointsMap = new HashMap<>();
|
|
Map<Long, TradePriceCalculateRespBO.OrderItem> itemPayPointsMap = new HashMap<>();
|
|
|
|
|
|
@@ -680,6 +758,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
TradePriceCalculateRespBO.OrderItem orderItem = priceOrderItems.get(i);
|
|
TradePriceCalculateRespBO.OrderItem orderItem = priceOrderItems.get(i);
|
|
Long itemPoint = money2Integral(dividePoints.get(i));//每项商品使用的积分
|
|
Long itemPoint = money2Integral(dividePoints.get(i));//每项商品使用的积分
|
|
orderItem.setPayPoints(itemPoint);
|
|
orderItem.setPayPoints(itemPoint);
|
|
|
|
+ orderItem.setPayConsumptionPoints(money2Integral(divideConsumptionPoints.get(i)));
|
|
itemPayPointsMap.put(orderItem.getSkuId(), orderItem);
|
|
itemPayPointsMap.put(orderItem.getSkuId(), orderItem);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -725,6 +804,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
|
|
|
// 3. 保存一间店铺的订单
|
|
// 3. 保存一间店铺的订单
|
|
Long shopPayPoints = 0L;//一间店铺订单总支付积分
|
|
Long shopPayPoints = 0L;//一间店铺订单总支付积分
|
|
|
|
+ Long shopConsumptionPoints = 0L;//一间店铺订单总支付消费分
|
|
Integer shopPayPrice = 0;//一间店铺订单总支付价格
|
|
Integer shopPayPrice = 0;//一间店铺订单总支付价格
|
|
|
|
|
|
for (TradeOrderItemDO orderItem : orderItems) {//一间店铺订单的所有商品项
|
|
for (TradeOrderItemDO orderItem : orderItems) {//一间店铺订单的所有商品项
|
|
@@ -735,9 +815,15 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
Long skuId = orderItem.getSkuId();
|
|
Long skuId = orderItem.getSkuId();
|
|
TradePriceCalculateRespBO.OrderItem orderItemTmp = itemPayPointsMap.get(skuId);
|
|
TradePriceCalculateRespBO.OrderItem orderItemTmp = itemPayPointsMap.get(skuId);
|
|
orderItem.setPayIntegral(orderItemTmp.getPayPoints()); //本商品使用积分
|
|
orderItem.setPayIntegral(orderItemTmp.getPayPoints()); //本商品使用积分
|
|
|
|
+ orderItem.setPayConsumptionPoints(orderItemTmp.getPayConsumptionPoints()); //本商品使用消费分
|
|
Integer payRmb;
|
|
Integer payRmb;
|
|
if (orderItem.getHighPrecisionPrice().compareTo(BigDecimal.ZERO) == 0) {
|
|
if (orderItem.getHighPrecisionPrice().compareTo(BigDecimal.ZERO) == 0) {
|
|
- payRmb = orderItem.getPrice() * orderItem.getCount() - integral2Money(orderItemTmp.getPayPoints());//本商品实付人民币
|
|
|
|
|
|
+ if (orderItemTmp.getPayPoints() > 0) {
|
|
|
|
+ payRmb = orderItem.getPrice() * orderItem.getCount() - integral2Money(orderItemTmp.getPayPoints());//本商品实付人民币
|
|
|
|
+ } else {
|
|
|
|
+ payRmb = orderItem.getPrice() * orderItem.getCount() - integral2Money(orderItemTmp.getPayConsumptionPoints());//本商品实付人民币
|
|
|
|
+
|
|
|
|
+ }
|
|
} else {
|
|
} else {
|
|
double rmb = (orderItem.getHighPrecisionPrice().doubleValue() * orderItem.getCount()) - integral2Money(orderItemTmp.getPayPoints());
|
|
double rmb = (orderItem.getHighPrecisionPrice().doubleValue() * orderItem.getCount()) - integral2Money(orderItemTmp.getPayPoints());
|
|
if (rmb > 0 && rmb < 1) {
|
|
if (rmb > 0 && rmb < 1) {
|
|
@@ -753,6 +839,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
orderItem.setPayPrice(payRmb);//本商品实付人民币
|
|
orderItem.setPayPrice(payRmb);//本商品实付人民币
|
|
|
|
|
|
shopPayPoints += orderItemTmp.getPayPoints();//一间店铺订单总支付积分
|
|
shopPayPoints += orderItemTmp.getPayPoints();//一间店铺订单总支付积分
|
|
|
|
+ shopConsumptionPoints += orderItemTmp.getPayConsumptionPoints();//一间店铺订单总支付消费分
|
|
shopPayPrice += payRmb;//一间店铺订单总支付价格
|
|
shopPayPrice += payRmb;//一间店铺订单总支付价格
|
|
}
|
|
}
|
|
|
|
|
|
@@ -767,6 +854,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
order.setPayPrice(shopPayPrice);
|
|
order.setPayPrice(shopPayPrice);
|
|
order.setPayRmb(shopPayPrice);
|
|
order.setPayRmb(shopPayPrice);
|
|
order.setPayIntegral(shopPayPoints.doubleValue());
|
|
order.setPayIntegral(shopPayPoints.doubleValue());
|
|
|
|
+ order.setPayConsumptionPoints(shopConsumptionPoints);
|
|
|
|
|
|
tradeOrderMapper.insert(order);
|
|
tradeOrderMapper.insert(order);
|
|
|
|
|
|
@@ -794,23 +882,19 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
List<Long> deliveryTemplateIds = productSpuMapper.selectList(ProductSpuDO::getId, spuIds).stream().map(ProductSpuDO::getDeliveryTemplateId)
|
|
List<Long> deliveryTemplateIds = productSpuMapper.selectList(ProductSpuDO::getId, spuIds).stream().map(ProductSpuDO::getDeliveryTemplateId)
|
|
.distinct().collect(Collectors.toList());
|
|
.distinct().collect(Collectors.toList());
|
|
Map<Long, Long> templateIdMap = new HashMap<>();
|
|
Map<Long, Long> templateIdMap = new HashMap<>();
|
|
- deliveryTemplateIds.forEach(id -> {
|
|
|
|
- templateIdMap.put(id, 0L);
|
|
|
|
- });
|
|
|
|
|
|
+ deliveryTemplateIds.forEach(id -> templateIdMap.put(id, 0L));
|
|
|
|
|
|
Map<Long, Integer> deliveryPriceMap = new HashMap<>();
|
|
Map<Long, Integer> deliveryPriceMap = new HashMap<>();
|
|
- templateIdMap.forEach((id, count) -> {
|
|
|
|
- orderItems.forEach(item -> {
|
|
|
|
- ProductSpuDO spu = productSpuMapper.selectById(item.getSpuId());
|
|
|
|
- if (spu.getDeliveryTemplateId().equals(id)) {
|
|
|
|
- templateIdMap.put(id, templateIdMap.get(id) + 1);
|
|
|
|
-
|
|
|
|
- if (item.getDeliveryPrice() != 0) {
|
|
|
|
- deliveryPriceMap.put(spu.getDeliveryTemplateId(), item.getDeliveryPrice());
|
|
|
|
- }
|
|
|
|
|
|
+ templateIdMap.forEach((id, count) -> orderItems.forEach(item -> {
|
|
|
|
+ ProductSpuDO spu = productSpuMapper.selectById(item.getSpuId());
|
|
|
|
+ if (spu.getDeliveryTemplateId().equals(id)) {
|
|
|
|
+ templateIdMap.put(id, templateIdMap.get(id) + 1);
|
|
|
|
+
|
|
|
|
+ if (item.getDeliveryPrice() != 0) {
|
|
|
|
+ deliveryPriceMap.put(spu.getDeliveryTemplateId(), item.getDeliveryPrice());
|
|
}
|
|
}
|
|
- });
|
|
|
|
- });
|
|
|
|
|
|
+ }
|
|
|
|
+ }));
|
|
|
|
|
|
orderItems.forEach(itemDO -> {
|
|
orderItems.forEach(itemDO -> {
|
|
ProductSpuDO spuDO = productSpuMapper.selectById(itemDO.getSpuId());
|
|
ProductSpuDO spuDO = productSpuMapper.selectById(itemDO.getSpuId());
|
|
@@ -847,7 +931,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
virtualOrder.setPayPrice(allShopPayRMB);
|
|
virtualOrder.setPayPrice(allShopPayRMB);
|
|
virtualOrder.setPayRmb(allShopPayRMB);
|
|
virtualOrder.setPayRmb(allShopPayRMB);
|
|
|
|
|
|
- Integer shopCount = shopSkuIds.keySet().size();//订单对应的店铺数目
|
|
|
|
|
|
+ int shopCount = shopSkuIds.keySet().size();//订单对应的店铺数目
|
|
if (shopCount > 1) {//如果多店铺拆分订单,则支付订单的商户订单id为0
|
|
if (shopCount > 1) {//如果多店铺拆分订单,则支付订单的商户订单id为0
|
|
virtualOrder.setId(0L);//为了让payOrder中的tradeOrderId为0;
|
|
virtualOrder.setId(0L);//为了让payOrder中的tradeOrderId为0;
|
|
} else if (shopCount == 1) {
|
|
} else if (shopCount == 1) {
|
|
@@ -879,6 +963,21 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //如果订单有使用消费分,则抵扣用户的消费分。
|
|
|
|
+ if (consumptionPoints > 0) {
|
|
|
|
+ for (Map<String, Object> m : orderMapList) {
|
|
|
|
+ TradeOrderDO order = (TradeOrderDO) (m.get("order"));
|
|
|
|
+ Long tradeOrderId = order.getId();
|
|
|
|
+ String OrderNum = order.getNo();
|
|
|
|
+ Long payConsumptionPoints = order.getPayConsumptionPoints();//每个订单使用的积分
|
|
|
|
+ Boolean flag = integralService.updateUserConsumptionPoints(userId, userId, payConsumptionPoints, tradeOrderId, OrderNum);
|
|
|
|
+ if (!flag) {
|
|
|
|
+ throw exception(ORDER_PAY_CONSUMPTION_POINTS_ERROR);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
// boolean caculateFreezeAmount = false;//增加冻结积分
|
|
// boolean caculateFreezeAmount = false;//增加冻结积分
|
|
|
|
|
|
//增加冻结积分这分部分,是订单微信支付成功后,才执行的,下面的代码只是为了测试方便写在这,实际永远不会执行。add by Ben
|
|
//增加冻结积分这分部分,是订单微信支付成功后,才执行的,下面的代码只是为了测试方便写在这,实际永远不会执行。add by Ben
|
|
@@ -1274,7 +1373,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
|
|
|
// 七天获得变为即算即得,后续如果恢复把这里注释即可,并打开平台定时任务得订单结算
|
|
// 七天获得变为即算即得,后续如果恢复把这里注释即可,并打开平台定时任务得订单结算
|
|
// CompletableFuture.runAsync(() -> {
|
|
// CompletableFuture.runAsync(() -> {
|
|
- calc(TradeOrderDOList, orderPercentageDO, JsonUtils.toJsonString(orderPercentageDO));
|
|
|
|
|
|
+ calc(TradeOrderDOList, orderPercentageDO, JsonUtils.toJsonString(orderPercentageDO));
|
|
// });
|
|
// });
|
|
|
|
|
|
return rs;
|
|
return rs;
|
|
@@ -1282,9 +1381,10 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
|
|
|
/**
|
|
/**
|
|
* 计算订单支付成功后,订单项的冻结积分转换
|
|
* 计算订单支付成功后,订单项的冻结积分转换
|
|
- * @param tradeOrderDOList 订单列表
|
|
|
|
|
|
+ *
|
|
|
|
+ * @param tradeOrderDOList 订单列表
|
|
* @param orderPercentageDO 参数百分比
|
|
* @param orderPercentageDO 参数百分比
|
|
- * @param percentTemplate 计算百分比模板
|
|
|
|
|
|
+ * @param percentTemplate 计算百分比模板
|
|
*/
|
|
*/
|
|
private void calc(List<TradeOrderDO> tradeOrderDOList, OrderPercentageDO orderPercentageDO, String percentTemplate) {
|
|
private void calc(List<TradeOrderDO> tradeOrderDOList, OrderPercentageDO orderPercentageDO, String percentTemplate) {
|
|
// 平台收益日志
|
|
// 平台收益日志
|