优化代码如下:

if (param.getQuantity() > 3) {
    throw new YshopException("活动商品限购3件");
}

JSONObject dataJson = jfUserInfo(param.getUserAddress(), param.getChannel(), param.getPayType(), request);
String token = dataJson.getString("token");
Long userId = dataJson.getLong("userId");
YxMerchantConfig yxMerchantConfig = dataJson.getObject("yxMerchantConfig", YxMerchantConfig.class);

YxStoreProduct1 yxStoreProduct = productMapper.selectById(param.getProductId());
YxStoreProductAttrValue yxStoreProductAttrValue = productAttrValueMapper.selectById(param.getSkuId());
getProductAttrValue(yxStoreProduct, yxStoreProductAttrValue, param.getSkuId(), param.getPriceType());
YxUserAddress userAddress = param.getUserAddress();

BigDecimal totalAmount;
BigDecimal payAmount;
BigDecimal costAmount;
BigDecimal freightPrice;

if (yxStoreProductAttrValue != null) {
    totalAmount = yxStoreProductAttrValue.getPrice().multiply(BigDecimal.valueOf(param.getQuantity()));
    costAmount = yxStoreProductAttrValue.getCost().multiply(BigDecimal.valueOf(param.getQuantity()));
} else {
    log.error("getProductId-----------" + param.getProductId() + ",skuId" + param.getSkuId());
    totalAmount = yxStoreProduct.getPrice().multiply(BigDecimal.valueOf(param.getQuantity()));
    costAmount = yxStoreProduct.getCost().multiply(BigDecimal.valueOf(param.getQuantity()));
}

payAmount = totalAmount;
FreightPriceDto freightPriceDto = getFreightPriceByOrder(yxStoreProduct.getTempId(), param.getUserAddress().getCityId(), param.getQuantity());
freightPrice = freightPriceDto.getFreightPrice();
payAmount = payAmount.add(freightPrice);

YxOrder yxOrder = new YxOrder();
YxOrderItem yxOrderItem = new YxOrderItem();

if (org.apache.commons.lang3.StringUtils.isNotBlank(param.getKey())) {
    String orderId = redisUtils.getY(JF_PAY_TMPLID + param.getKey());
    OrdersDetail oldOrder = findDetailByOrderId(orderId);
    if (oldOrder != null) {
        if (oldOrder.getPayStatus().equals(1)) {
            throw new YshopException("订单已支付");
        }
        if (oldOrder.getStatus().equals(YxOrderEnum.status0.getStatus())
                || oldOrder.getStatus().equals(YxOrderEnum.status50.getStatus())) {
            BeanUtils.copyProperties(oldOrder, yxOrder);
            yxOrderItem = oldOrder.getOrderItem();
        }
    }
}

int quantity = param.getQuantity();
if (yxOrder.getStatus() != null && yxOrder.getStatus().equals(0)) {
    quantity = param.getQuantity() - yxOrderItem.getProductQuantity();
}

if (yxStoreProduct.getGiveIntegral() == null) {
    yxStoreProduct.setGiveIntegral(BigDecimal.ZERO);
}

YxOrderProductDto yxOrderProductDto = new YxOrderProductDto();
List<YxOrderProductDto> productStockList = new LinkedList<>();
yxOrderProductDto.setProductId(yxStoreProduct.getId());
yxOrderProductDto.setProductName(yxStoreProduct.getStoreName());
yxOrderProductDto.setQuantity(quantity);
yxOrderProductDto.setSkuId(param.getSkuId());
if (quantity > 0) {
    updateProductStock(productStockList);
}

Long batchId = yxOrder.getStatus() != null && yxOrder.getStatus().equals(0) ? yxOrder.getBatchId() : idGeneratorSnowflake.nextId();
yxOrder.setBatchId(batchId);
yxOrder.setSupplierId(yxStoreProduct.getSupplierId());
yxOrder.setUserId(userId);
yxOrder.setCreateTime(new Date());
yxOrder.setTotalAmount(totalAmount);
yxOrder.setCostAmount(costAmount);
yxOrder.setPayAmount(payAmount);
yxOrder.setFreightAmount(freightPrice);
int integrationAmount = yxStoreProduct.getIntegral() * param.getQuantity();
yxOrder.setIntegrationAmount(BigDecimal.valueOf(integrationAmount));
yxOrder.setPayType(param.getPayType());
yxOrder.setSourceType(param.getFrom());
yxOrder.setOrderType(param.getOrderType() != null ? param.getOrderType() : yxStoreProduct.getActivityType());
yxOrder.setBelongTo(param.getBelongTo());
yxOrder.setChannel(param.getChannel());
yxOrder.setStatus(0);
yxOrder.setIntegration(yxStoreProduct.getGiveIntegral().multiply(BigDecimal.valueOf(param.getQuantity())));
yxOrder.setReceiverName(userAddress.getRealName());
yxOrder.setReceiverPhone(userAddress.getPhone());
yxOrder.setReceiverProvince(userAddress.getProvince());
yxOrder.setReceiverCity(userAddress.getCity());
yxOrder.setReceiverRegion(userAddress.getDistrict());
yxOrder.setReceiverRegionId(userAddress.getDistrictId());
yxOrder.setReceiverDetailAddress(userAddress.getDetail());
yxOrder.setRemark(param.getMark());
yxOrder.setUseIntegration(integrationAmount);
yxOrder.setOpenId(org.apache.commons.lang3.StringUtils.isNotBlank(param.getOpenId()) ? param.getOpenId() : "");
yxOrder.setMerchantId(yxMerchantConfig.getId());
yxOrder.setType(1);

if (yxMerchantConfig.getId().equals(1610117983988416513L) || yxMerchantConfig.getId().equals(1665595988004409346L)) {
    yxOrder.setOpenId(getAliUserId(param.getOpenId(), yxMerchantConfig));
}

assert yxStoreProductAttrValue != null;
yxOrderItem.setBatchId(batchId);
yxOrderItem.setProductPic(yxStoreProductAttrValue.getImage());
yxOrderItem.setProductAttr(yxStoreProductAttrValue.getSku());
yxOrderItem.setProductOtPrice(yxStoreProductAttrValue.getOtPrice());
yxOrderItem.setProductPrice(yxStoreProductAttrValue.getPrice());
yxOrderItem.setProductSkuCode(yxStoreProductAttrValue.getBarCode());
yxOrderItem.setProductSkuId(yxStoreProductAttrValue.getId());
yxOrderItem.setProductAttr(yxStoreProductAttrValue.getSku());
yxOrderItem.setCost(yxStoreProductAttrValue.getCost());
yxOrderItem.setProductId(yxStoreProduct.getId());
yxOrderItem.setSupplierId(yxStoreProduct.getSupplierId());
yxOrderItem.setProductName(yxStoreProduct.getStoreName());
yxOrderItem.setProductQuantity(param.getQuantity());
yxOrderItem.setProductCategoryId((Long.valueOf(yxStoreProduct.getCateId())));
yxOrderItem.setActivityRelationType(yxStoreProduct.getActivityType() + "");
yxOrderItem.setRealAmount(payAmount);
yxOrderItem.setGiftIntegration(yxStoreProduct.getGiveIntegral());
yxOrderItem.setOnePrice(yxStoreProductAttrValue.getOnePrice());
yxOrderItem.setTaxPrice(yxStoreProductAttrValue.getTaxPrice());
yxOrderItem.setPromotionAmount(yxStoreProductAttrValue.getDiscountPrice());
if (org.apache.commons.lang3.StringUtils.isNotBlank(param.getActivityId())) {
    yxOrderItem.setActivityRelationType(param.getActivityId());
}

saveOrUpdate(yxOrder);

yxOrderItem.setOrderId(yxOrder.getId());
yxOrderItemService.saveOrUpdate(yxOrderItem);

orderCancelSender.sendCancelProductOrder(batchId.toString());

YxOrderDetail yxOrderDetail = new YxOrderDetail();
BeanUtils.copyProperties(yxOrder, yxOrderDetail);
List<YxOrderItem> orderItemList = new ArrayList<>();
orderItemList.add(yxOrderItem);
yxOrderDetail.setOrderItemList(orderItemList);

if (ObjectUtil.isNull(yxOrderDetail) || yxOrderDetail.getPayAmount().equals(BigDecimal.ZERO)) {
    throw new YshopException("订单生成失败");
}

YxOrderPayDto yxOrderPayDto = new YxOrderPayDto();
yxOrderPayDto.setBatchId(yxOrderDetail.getId());
yxOrderPayDto.setOrderItemList(orderItemList);
yxOrderPayDto.setTotalPayAmount(yxOrderDetail.getPayAmount());

Map<String, Object> map = orderPay(yxOrderPayDto, param.getPayType(), param.getOpenId(), param.getReturnUrl(), param.getFrom(), yxMerchantConfig, param.getAliUserId());

map.put("orderId", yxOrderDetail.getId().toString());
map.put("token", token);

redisUtils.set(JF_PAY_TMPLID + param.getKey(), yxOrderDetail.getId() + "", 6000, TimeUnit.SECONDS);
redisUtils.set(JF_CREATE_ORDER + yxOrderDetail.getId(), param.getKey(), 6000, TimeUnit.SECONDS);
``
优化代码 if paramgetQuantity 3 throw new YshopException活动商品限购3件; 远程获取积分用户信息 JSONObject dataJson = jfUserInfoparamgetUserAddress paramgetChannel paramgetPayType request;

原文地址: http://www.cveoy.top/t/topic/iv5s 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录