优化代码 if paramgetQuantity 3 throw new YshopException活动商品限购3件; 远程获取积分用户信息 JSONObject dataJson = jfUserInfoparamgetUserAddress paramgetChannel paramgetPayType request;
优化代码如下:
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);
``
原文地址: http://www.cveoy.top/t/topic/iv5s 著作权归作者所有。请勿转载和采集!