送货地址bug修复

This commit is contained in:
Jack 2024-12-03 00:13:32 +08:00
parent 953319764f
commit 01af3bc673
4 changed files with 37 additions and 29 deletions

View File

@ -91,19 +91,22 @@ public class OrderPayedListener {
// 订单状态处理成功之后打印小票
shopStorePrinterService.printShopStoreOrder(orderId);
// 发送顺丰同城快递
Pair<Boolean, String> pairCreateSfOrder = sfExpressApiService.innerCreateSfExpressOrder(orderId, orderPickupNum);
if(pairCreateSfOrder==null){
logger.error("顺丰同城下单失败pairCreateSfOrder 返回空值");
return;
}
// 如果配送方式是 同城配送直接同城顺丰下单
if (orderInfoOld.getDelivery_type_id() != null && orderInfoOld.getDelivery_type_id().equals(StateCode.DELIVERY_TYPE_SAME_CITY)) {
// 发送顺丰同城快递
Pair<Boolean, String> pairCreateSfOrder = sfExpressApiService.innerCreateSfExpressOrder(orderId, orderPickupNum);
if (pairCreateSfOrder == null) {
logger.error("顺丰同城下单失败pairCreateSfOrder 返回空值");
return;
}
if(!pairCreateSfOrder.getFirst()){
logger.error("顺丰同城下单失败:{}",pairCreateSfOrder.getSecond());
return;
}
if (!pairCreateSfOrder.getFirst()) {
logger.error("顺丰同城下单失败:{}", pairCreateSfOrder.getSecond());
return;
}
logger.info("顺丰同城下单成功");
logger.info("顺丰同城下单成功");
}
}
}

View File

@ -1264,7 +1264,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
}
/**
* 添加订单详细信息 预处理 - addOrder 转移过来所以直接读取request 不合规范 兼容前后端下单逻辑
* 添加订单详细信息 预处理 -> addOrder 转移过来所以直接读取request 不合规范兼容前后端下单逻辑
*
* @param user_id 用户编号
* @param item_rows 订单数据
@ -1487,7 +1487,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
}
}
// 添加订单
// 添加订单关键方法
List<String> order_id_row = addOrder(cart_data, true, false, null);
// 最终应付金额
@ -5928,7 +5928,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
// 是否需要配送地址 自提及虚拟到店服务不需要配送地址
if (is_delivery) {
// 计算运费
// 计算运费 开始
// 是否需要地址
Map address_row = (Map) cart_data.get("address_row");
if (address_row == null) {
@ -5941,7 +5941,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
// 如果没有配送地址则忽略地址选择问题
if (deliveryAddress != null && deliveryAddress.getUd_city_id() != null) {
Integer district_id = deliveryAddress.getUd_city_id();
shopUserCartService.calTransportFreight(cart_data, district_id); // 配送检测
shopUserCartService.calTransportFreight(cart_data, district_id); // 配送运费检测和计算
} else {
throw new ApiException(I18nUtil._("请选择正确的收货地址!"));
}

View File

@ -41,13 +41,13 @@ public class UserDeliveryAddressController extends BaseControllerImpl {
}
@ApiOperation(value = "保存用户地址", notes = "保存用户地址")
@RequestMapping(value = "/save", method = RequestMethod.POST)
@RequestMapping(value = "/save", method = {RequestMethod.GET, RequestMethod.POST})
public CommonResult save(ShopUserDeliveryAddress deliveryAddress) {
return userDeliveryAddressService.saveAddress(deliveryAddress);
}
@ApiOperation(value = "删除用户地址", notes = "删除用户地址")
@RequestMapping(value = "/remove", method = RequestMethod.POST)
@RequestMapping(value = "/remove", method = {RequestMethod.GET, RequestMethod.POST})
public CommonResult remove(@RequestParam(name = "ud_id") Integer ud_id) {
UserDto user = getCurrentUser();

View File

@ -653,7 +653,7 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl<ShopUserCartMapper,
cart_row.put("pfgb_id", pfgb_id);
}
// 生成订单数据结算checkout预览及生成订单关键函数
// 重要生成订单数据结算checkout预览及生成订单关键函数
data = formatCartRows(cart_rows, activity_rows, null, null);
}
}
@ -741,7 +741,7 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl<ShopUserCartMapper,
if (CollUtil.isNotEmpty(delivery_address_row) && CheckUtil.isNotEmpty(district_id)) {
// 计算邮费情况
if (Convert.toBool(is_delivery)) {
// 配送运费校验和计算
// 重要配送运费校验和计算涉及的东西比较多
calTransportFreight(data, district_id);
data.put("has_stock", data.get("can_delivery")); // 是否有货
} else {
@ -751,11 +751,11 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl<ShopUserCartMapper,
// 是否有货
boolean has_stock = (boolean) data.get("has_stock");
data.put("show_oos", !has_stock);
data.put("show_oos", !has_stock); //无库存
}
data.put("address_row", address_row);
data.put("delivery_address_row", delivery_address_row);
data.put("address_row", address_row); // 用户所有的收货地址
data.put("delivery_address_row", delivery_address_row); //用户选择的收货地址
// todo validPeriod
@ -1332,7 +1332,7 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl<ShopUserCartMapper,
item_row_map.putAll(row);
//允许发的快递类型id普通快递同城配送自取取交集
//允许发的快递类型id普通快递同城配送上门自取取交集
allowTransportIds = (List<Integer>) CollUtil.intersection(allowTransportIds, Convert.toList(Integer.class, item.get("product_transport_id")));
Map stand_item_row = fixCartItemRow(item_row_map, chain_item_row);
@ -2467,10 +2467,12 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl<ShopUserCartMapper,
// 配送不到这个区域商品记录
List delivery_item_none_row = new ArrayList();
// 配送不到这个区域商品id
cart_data.put("transport_type_none_ids", transport_type_none_ids);
// 配送不到这个区域商品记录
cart_data.put("delivery_item_none_row", delivery_item_none_row);
//判断是是礼包
//判断是是礼包
boolean isgiftbag = false;
Map activity_rule = new HashMap();
@ -2481,24 +2483,25 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl<ShopUserCartMapper,
BigDecimal freight = BigDecimal.ZERO;
if (isgiftbag) {
// 以下是礼包的情况
Integer cart_quantity = Convert.toInt(activity_rule.get("cart_quantity"));
BigDecimal giftbag_fixed_amount = Convert.toBigDecimal(activity_rule.get("giftbag_fixed_amount"));
BigDecimal giftbag_amount = Convert.toBigDecimal(activity_rule.get("giftbag_amount"));
BigDecimal giftbag_fixed_discount = NumberUtil.div(Convert.toBigDecimal(activity_rule.get("giftbag_fixed_discount")), 10);
if (Convert.toInt(activity_rule.get("group_discount_type")).intValue() == StateCode.ACTIVITY_GROUPBOOKING_FIXED_AMOUNT) {
//优惠金额购买
//优惠固定金额购买
store_row.put("order_money_select_items", NumberUtil.mul(giftbag_fixed_amount, cart_quantity));
} else if (Convert.toInt(activity_rule.get("group_discount_type")).intValue() == StateCode.ACTIVITY_GROUPBOOKING_FIXED_DISCOUNT) {
//优惠折扣
//以固定折扣购买
store_row.put("order_money_select_items", NumberUtil.mul(giftbag_amount, giftbag_fixed_discount, cart_quantity));
} else {
//固定金额购买
//以固定价格购买
store_row.put("order_money_select_items", NumberUtil.mul(giftbag_amount, cart_quantity));
}
}
// todo 此处免运费传递的是transport_type中的设置 则默认代表为订单了 未来可以优化
// todo 此处免运费传递的是transport_type设置中的值 则默认代表为订单了 未来可以优化
BigDecimal post_free_max = BigDecimal.ZERO;
// 按照店铺订单计算运费
@ -2524,7 +2527,7 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl<ShopUserCartMapper,
} else {
// 判断运费方式如果发现同一个订单计费模式不一致报错禁止下单
Map tt_ids = (Map) store_row.get("tt_ids");
Boolean isOnSale = (Boolean) store_row.get("is_on_sale");
Boolean isOnSale = (Boolean) store_row.get("is_on_sale");//正活动中的商品
List<ShopStoreTransportType> transport_type_rows = new ArrayList<>();
Integer transport_type_id;
@ -2558,6 +2561,7 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl<ShopUserCartMapper,
Integer transport_type_pricing_method = transportType.getTransport_type_pricing_method();
BigDecimal order_money_select_items = Convert.toBigDecimal(store_row.get("order_money_select_items"));
//计费规则(ENUM):1-按件数;2-按重量;3-按体积;4-按配送区域计费猜测不确定
if (transport_type_pricing_method != null && 4 == transport_type_pricing_method) {
// 按照配送区域计费
Map data = transportTypeService.calFreight(transport_type_id, district_id, 1, order_money_select_items, post_free_max);
@ -2566,6 +2570,7 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl<ShopUserCartMapper,
freight = Convert.toBigDecimal(data.get("freight"));
} else {
if (isgiftbag) {
// 以下是礼包的情况
Map data = transportTypeService.calFreight(transport_type_id, district_id, Convert.toInt(activity_rule.get("giftbag_quantity")), Convert.toBigDecimal(store_row.get("order_money_select_items")), post_free_max);
boolean type_freight = (boolean) data.get("type_freight");