|  | @@ -30,7 +30,9 @@ import cn.newfeifan.mall.module.pay.enums.order.PayOrderStatusEnum;
 | 
	
		
			
				|  |  |  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.dal.dataobject.sku.ProductSkuDO;
 | 
	
		
			
				|  |  | +import cn.newfeifan.mall.module.product.dal.dataobject.spu.ProductSpuDO;
 | 
	
		
			
				|  |  |  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.sale.dal.dataobject.shop.ShopDO;
 | 
	
		
			
				|  |  |  import cn.newfeifan.mall.module.sale.dal.mysql.shop.ShopMapper;
 | 
	
		
			
				|  |  |  import cn.newfeifan.mall.module.system.service.user.AdminUserService;
 | 
	
	
		
			
				|  | @@ -109,6 +111,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Resource
 | 
	
		
			
				|  |  |      private ProductSkuMapper productSkuMapper;//add by ben 20240314
 | 
	
		
			
				|  |  | +    @Resource
 | 
	
		
			
				|  |  | +    private ProductSpuMapper productSpuMapper;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Resource
 | 
	
		
			
				|  |  |      private ShopMapper shopMapper;//add by ben 20240314
 | 
	
	
		
			
				|  | @@ -221,7 +225,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public AppTradeOrderSettlementRespVO settlementOrder(Long userId, AppTradeOrderSettlementReqVO settlementReqVO) {
 | 
	
		
			
				|  |  |          // 1. 获得收货地址
 | 
	
		
			
				|  |  | -        MemberAddressRespDTO address = getAddress(userId, settlementReqVO.getAddressId(),settlementReqVO.getAddressType());
 | 
	
		
			
				|  |  | +        MemberAddressRespDTO address = getAddress(userId, settlementReqVO.getAddressId(), settlementReqVO.getAddressType());
 | 
	
		
			
				|  |  |          if (address != null) {
 | 
	
		
			
				|  |  |              settlementReqVO.setAddressId(address.getId());
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -276,7 +280,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //如果是虚拟商品,则用自己的编写的程序返回
 | 
	
		
			
				|  |  | -        if(Objects.equals(settlementReqVO.getDeliveryType(), VIRTUAL_PRODUCT.getType())){
 | 
	
		
			
				|  |  | +        if (Objects.equals(settlementReqVO.getDeliveryType(), VIRTUAL_PRODUCT.getType())) {
 | 
	
		
			
				|  |  |              return getSettlement(settlementReqVO.getItems());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -355,10 +359,11 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 虚拟商品自走程序
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  |       * @param items 商品项数组
 | 
	
		
			
				|  |  |       * @return AppTradeOrderSettlementRespVO
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  | -    private AppTradeOrderSettlementRespVO getSettlement(List<AppTradeOrderSettlementReqVO.Item> items){
 | 
	
		
			
				|  |  | +    private AppTradeOrderSettlementRespVO getSettlement(List<AppTradeOrderSettlementReqVO.Item> items) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 4. 查询每个sku对应的店铺ID,并传回页面
 | 
	
		
			
				|  |  |          List<AppTradeOrderSettlementReqVO.Item> productSkuList = items;
 | 
	
	
		
			
				|  | @@ -429,6 +434,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 | 
	
		
			
				|  |  |              ProductSkuDO productSkuDO = productSkuMapper.selectById(orderItems.get(0).getSkuId());
 | 
	
		
			
				|  |  |              shopCalculateRespBO.setVirtualPayPrice(productSkuDO.getHighPrecisionPrice().doubleValue() * orderItems.get(0).getCount());
 | 
	
		
			
				|  |  |              shopCalculateRespBO.setVirtualTotalPrice(productSkuDO.getHighPrecisionPrice().doubleValue() * orderItems.get(0).getCount());
 | 
	
		
			
				|  |  | +            shopCalculateRespBO.setPayPrice((int)productSkuDO.getHighPrecisionPrice().doubleValue() * orderItems.get(0).getCount());
 | 
	
		
			
				|  |  | +            shopCalculateRespBO.setTotalPrice((int)productSkuDO.getHighPrecisionPrice().doubleValue() * orderItems.get(0).getCount());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //把重复的收货地址置为空
 | 
	
	
		
			
				|  | @@ -445,16 +452,16 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 获得用户地址
 | 
	
		
			
				|  |  |       *
 | 
	
		
			
				|  |  | -     * @param userId    用户编号
 | 
	
		
			
				|  |  | -     * @param addressId 地址编号
 | 
	
		
			
				|  |  | +     * @param userId      用户编号
 | 
	
		
			
				|  |  | +     * @param addressId   地址编号
 | 
	
		
			
				|  |  |       * @param addressType 地址类别
 | 
	
		
			
				|  |  |       * @return 地址
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  | -    private MemberAddressRespDTO getAddress(Long userId, Long addressId ,Integer addressType) {
 | 
	
		
			
				|  |  | +    private MemberAddressRespDTO getAddress(Long userId, Long addressId, Integer addressType) {
 | 
	
		
			
				|  |  |          if (addressId != null) {
 | 
	
		
			
				|  |  | -            return addressApi.getAddress(addressId, userId,addressType);
 | 
	
		
			
				|  |  | +            return addressApi.getAddress(addressId, userId, addressType);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        return addressApi.getDefaultAddress(userId,addressType);
 | 
	
		
			
				|  |  | +        return addressApi.getDefaultAddress(userId, addressType);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
	
		
			
				|  | @@ -738,7 +745,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 | 
	
		
			
				|  |  |                  Long tradeOrderId = order.getId();
 | 
	
		
			
				|  |  |                  String OrderNum = order.getNo();
 | 
	
		
			
				|  |  |                  Long payIntegral = order.getPayIntegral().longValue();//每个订单使用的积分
 | 
	
		
			
				|  |  | -                integralService.updateUserIntegral(userId,userId, CaclEnum.ORDER_PAY_INTEGRAL, payIntegral * (-1), 0L, tradeOrderId, OrderNum);
 | 
	
		
			
				|  |  | +                integralService.updateUserIntegral(userId, userId, CaclEnum.ORDER_PAY_INTEGRAL, payIntegral * (-1), 0L, tradeOrderId, OrderNum);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -813,9 +820,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 把商品的推广费总额,转换为消费者本人(直推人)、或消费者的推荐人 获得的冻结积分
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  |       * @param promotionExpenses 商品的推广费总额
 | 
	
		
			
				|  |  | -     * @param grossProfitPerc 推荐人/消费者本人额度 百分比
 | 
	
		
			
				|  |  | +     * @param grossProfitPerc   推荐人/消费者本人额度 百分比
 | 
	
		
			
				|  |  |       * @return 输入推广费,对应的直推人获得的冻结积分
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      public static Long promotionExpenses2GrossProfitAncestorQuota(
 | 
	
	
		
			
				|  | @@ -866,15 +872,15 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 | 
	
		
			
				|  |  |          // 物流信息
 | 
	
		
			
				|  |  |          order.setDeliveryType(createReqVO.getDeliveryType());
 | 
	
		
			
				|  |  |          if (Objects.equals(createReqVO.getDeliveryType(), DeliveryTypeEnum.EXPRESS.getType())) {
 | 
	
		
			
				|  |  | -            MemberAddressRespDTO address = addressApi.getAddress(createReqVO.getAddressId(), userId,1);
 | 
	
		
			
				|  |  | +            MemberAddressRespDTO address = addressApi.getAddress(createReqVO.getAddressId(), userId, 1);
 | 
	
		
			
				|  |  |              Assert.notNull(address, "地址({}) 不能为空", createReqVO.getAddressId()); // 价格计算时,已经计算
 | 
	
		
			
				|  |  |              order.setReceiverName(address.getName()).setReceiverMobile(address.getMobile())
 | 
	
		
			
				|  |  |                      .setReceiverAreaId(address.getAreaId()).setReceiverDetailAddress(address.getDetailAddress());
 | 
	
		
			
				|  |  |          } else if (Objects.equals(createReqVO.getDeliveryType(), DeliveryTypeEnum.PICK_UP.getType())) {
 | 
	
		
			
				|  |  |              order.setReceiverName(createReqVO.getReceiverName()).setReceiverMobile(createReqVO.getReceiverMobile());
 | 
	
		
			
				|  |  |              order.setPickUpVerifyCode(RandomUtil.randomNumbers(8)); // 随机一个核销码,长度为 8 位
 | 
	
		
			
				|  |  | -        } else if(Objects.equals(createReqVO.getDeliveryType(), VIRTUAL_PRODUCT.getType())){
 | 
	
		
			
				|  |  | -            MemberAddressRespDTO address = addressApi.getAddress(createReqVO.getAddressId(), userId,2);
 | 
	
		
			
				|  |  | +        } else if (Objects.equals(createReqVO.getDeliveryType(), VIRTUAL_PRODUCT.getType())) {
 | 
	
		
			
				|  |  | +            MemberAddressRespDTO address = addressApi.getAddress(createReqVO.getAddressId(), userId, 2);
 | 
	
		
			
				|  |  |              order.setReceiverName(address.getName()).setReceiverMobile(address.getMobile())
 | 
	
		
			
				|  |  |                      .setReceiverDetailAddress(address.getDetailAddress());
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -921,8 +927,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 创建子支付订单
 | 
	
		
			
				|  |  |       *
 | 
	
		
			
				|  |  | -     * @param order 订单
 | 
	
		
			
				|  |  | -     * @param orderItems 订单详情
 | 
	
		
			
				|  |  | +     * @param order            订单
 | 
	
		
			
				|  |  | +     * @param orderItems       订单详情
 | 
	
		
			
				|  |  |       * @param parentPayOrderId 父级支付订单id
 | 
	
		
			
				|  |  |       * @param expireTime       支付过期时间
 | 
	
		
			
				|  |  |       * @return 支付订单ID
 | 
	
	
		
			
				|  | @@ -1100,12 +1106,12 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              String OrderNum = order.getNo();
 | 
	
		
			
				|  |  |              //修改购物者本人获得的冻结积分
 | 
	
		
			
				|  |  | -            integralService.updateUserIntegral(tradeOrderDO.getUserId(),tradeOrderDO.getUserId(),CaclEnum.ORDER_PAY_INTEGRAL_CONSUMER, 0L, totalFreezeAmount, tradeOrderId, OrderNum);
 | 
	
		
			
				|  |  | +            integralService.updateUserIntegral(tradeOrderDO.getUserId(), tradeOrderDO.getUserId(), CaclEnum.ORDER_PAY_INTEGRAL_CONSUMER, 0L, totalFreezeAmount, tradeOrderId, OrderNum);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              //修改推荐人(上级)获得的冻结积分
 | 
	
		
			
				|  |  | -            integralService.updateUserIntegral(tradeOrderDO.getUserId(),ancesterUserId, CaclEnum.ORDER_PAY_INTEGRAL_ANCESTER, 0L, totalAncestorFreezeAmount, tradeOrderId, OrderNum);
 | 
	
		
			
				|  |  | +            integralService.updateUserIntegral(tradeOrderDO.getUserId(), ancesterUserId, CaclEnum.ORDER_PAY_INTEGRAL_ANCESTER, 0L, totalAncestorFreezeAmount, tradeOrderId, OrderNum);
 | 
	
		
			
				|  |  |              log.warn("[TradeOrderUpdateServiceImpl.updateOrderPaid]$$$:[tradeOrderId({}),ancesterUserId({}),totalAncestorFreezeAmount({})]" + new Date(),
 | 
	
		
			
				|  |  | -                    tradeOrderId,ancesterUserId, totalAncestorFreezeAmount);
 | 
	
		
			
				|  |  | +                    tradeOrderId, ancesterUserId, totalAncestorFreezeAmount);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              allTradeOrderTotalFreezeAmount += totalFreezeAmount;//用户获得总的待确权冻结积分
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1404,7 +1410,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 | 
	
		
			
				|  |  |          String orderNum = order.getNo();
 | 
	
		
			
				|  |  |          //如果订单有使用积分,则退回积分
 | 
	
		
			
				|  |  |          if (payIntegral > 0) {
 | 
	
		
			
				|  |  | -            integralService.updateUserIntegral(userId,userId, CaclEnum.ORDER_CANCEL_BY_USER_REFUND_INTEGRAL, payIntegral, 0L, tradeOrderId, orderNum);
 | 
	
		
			
				|  |  | +            integralService.updateUserIntegral(userId, userId, CaclEnum.ORDER_CANCEL_BY_USER_REFUND_INTEGRAL, payIntegral, 0L, tradeOrderId, orderNum);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1436,7 +1442,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 | 
	
		
			
				|  |  |                  Long userId = order.getUserId();
 | 
	
		
			
				|  |  |                  //如果订单有使用积分,则退回积分
 | 
	
		
			
				|  |  |                  if (payIntegral > 0) {
 | 
	
		
			
				|  |  | -                    integralService.updateUserIntegral(userId, userId,CaclEnum.ORDER_CANCEL_BY_SYSTEM_REFUND_INTEGRAL, payIntegral, 0L, tradeOrderId, orderNum);
 | 
	
		
			
				|  |  | +                    integralService.updateUserIntegral(userId, userId, CaclEnum.ORDER_CANCEL_BY_SYSTEM_REFUND_INTEGRAL, payIntegral, 0L, tradeOrderId, orderNum);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  count++;
 |