送货地址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); shopStorePrinterService.printShopStoreOrder(orderId);
// 发送顺丰同城快递 // 如果配送方式是 同城配送直接同城顺丰下单
Pair<Boolean, String> pairCreateSfOrder = sfExpressApiService.innerCreateSfExpressOrder(orderId, orderPickupNum); if (orderInfoOld.getDelivery_type_id() != null && orderInfoOld.getDelivery_type_id().equals(StateCode.DELIVERY_TYPE_SAME_CITY)) {
if(pairCreateSfOrder==null){ // 发送顺丰同城快递
logger.error("顺丰同城下单失败pairCreateSfOrder 返回空值"); Pair<Boolean, String> pairCreateSfOrder = sfExpressApiService.innerCreateSfExpressOrder(orderId, orderPickupNum);
return; if (pairCreateSfOrder == null) {
} logger.error("顺丰同城下单失败pairCreateSfOrder 返回空值");
return;
}
if(!pairCreateSfOrder.getFirst()){ if (!pairCreateSfOrder.getFirst()) {
logger.error("顺丰同城下单失败:{}",pairCreateSfOrder.getSecond()); logger.error("顺丰同城下单失败:{}", pairCreateSfOrder.getSecond());
return; 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 user_id 用户编号
* @param item_rows 订单数据 * @param item_rows 订单数据
@ -1487,7 +1487,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
} }
} }
// 添加订单 // 添加订单关键方法
List<String> order_id_row = addOrder(cart_data, true, false, null); List<String> order_id_row = addOrder(cart_data, true, false, null);
// 最终应付金额 // 最终应付金额
@ -5928,7 +5928,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
// 是否需要配送地址 自提及虚拟到店服务不需要配送地址 // 是否需要配送地址 自提及虚拟到店服务不需要配送地址
if (is_delivery) { if (is_delivery) {
// 计算运费 // 计算运费 开始
// 是否需要地址 // 是否需要地址
Map address_row = (Map) cart_data.get("address_row"); Map address_row = (Map) cart_data.get("address_row");
if (address_row == null) { if (address_row == null) {
@ -5941,7 +5941,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
// 如果没有配送地址则忽略地址选择问题 // 如果没有配送地址则忽略地址选择问题
if (deliveryAddress != null && deliveryAddress.getUd_city_id() != null) { if (deliveryAddress != null && deliveryAddress.getUd_city_id() != null) {
Integer district_id = deliveryAddress.getUd_city_id(); Integer district_id = deliveryAddress.getUd_city_id();
shopUserCartService.calTransportFreight(cart_data, district_id); // 配送检测 shopUserCartService.calTransportFreight(cart_data, district_id); // 配送运费检测和计算
} else { } else {
throw new ApiException(I18nUtil._("请选择正确的收货地址!")); throw new ApiException(I18nUtil._("请选择正确的收货地址!"));
} }

View File

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

View File

@ -653,7 +653,7 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl<ShopUserCartMapper,
cart_row.put("pfgb_id", pfgb_id); cart_row.put("pfgb_id", pfgb_id);
} }
// 生成订单数据结算checkout预览及生成订单关键函数 // 重要生成订单数据结算checkout预览及生成订单关键函数
data = formatCartRows(cart_rows, activity_rows, null, null); 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 (CollUtil.isNotEmpty(delivery_address_row) && CheckUtil.isNotEmpty(district_id)) {
// 计算邮费情况 // 计算邮费情况
if (Convert.toBool(is_delivery)) { if (Convert.toBool(is_delivery)) {
// 配送运费校验和计算 // 重要配送运费校验和计算涉及的东西比较多
calTransportFreight(data, district_id); calTransportFreight(data, district_id);
data.put("has_stock", data.get("can_delivery")); // 是否有货 data.put("has_stock", data.get("can_delivery")); // 是否有货
} else { } else {
@ -751,11 +751,11 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl<ShopUserCartMapper,
// 是否有货 // 是否有货
boolean has_stock = (boolean) data.get("has_stock"); 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("address_row", address_row); // 用户所有的收货地址
data.put("delivery_address_row", delivery_address_row); data.put("delivery_address_row", delivery_address_row); //用户选择的收货地址
// todo validPeriod // todo validPeriod
@ -1332,7 +1332,7 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl<ShopUserCartMapper,
item_row_map.putAll(row); item_row_map.putAll(row);
//允许发的快递类型id普通快递同城配送自取取交集 //允许发的快递类型id普通快递同城配送上门自取取交集
allowTransportIds = (List<Integer>) CollUtil.intersection(allowTransportIds, Convert.toList(Integer.class, item.get("product_transport_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); 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(); List delivery_item_none_row = new ArrayList();
// 配送不到这个区域商品id
cart_data.put("transport_type_none_ids", transport_type_none_ids); cart_data.put("transport_type_none_ids", transport_type_none_ids);
// 配送不到这个区域商品记录
cart_data.put("delivery_item_none_row", delivery_item_none_row); cart_data.put("delivery_item_none_row", delivery_item_none_row);
//判断是是礼包 //判断是是礼包
boolean isgiftbag = false; boolean isgiftbag = false;
Map activity_rule = new HashMap(); Map activity_rule = new HashMap();
@ -2481,24 +2483,25 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl<ShopUserCartMapper,
BigDecimal freight = BigDecimal.ZERO; BigDecimal freight = BigDecimal.ZERO;
if (isgiftbag) { if (isgiftbag) {
// 以下是礼包的情况
Integer cart_quantity = Convert.toInt(activity_rule.get("cart_quantity")); Integer cart_quantity = Convert.toInt(activity_rule.get("cart_quantity"));
BigDecimal giftbag_fixed_amount = Convert.toBigDecimal(activity_rule.get("giftbag_fixed_amount")); BigDecimal giftbag_fixed_amount = Convert.toBigDecimal(activity_rule.get("giftbag_fixed_amount"));
BigDecimal giftbag_amount = Convert.toBigDecimal(activity_rule.get("giftbag_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); 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) { 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)); 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) { } 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)); store_row.put("order_money_select_items", NumberUtil.mul(giftbag_amount, giftbag_fixed_discount, cart_quantity));
} else { } else {
//固定金额购买 //以固定价格购买
store_row.put("order_money_select_items", NumberUtil.mul(giftbag_amount, cart_quantity)); 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; BigDecimal post_free_max = BigDecimal.ZERO;
// 按照店铺订单计算运费 // 按照店铺订单计算运费
@ -2524,7 +2527,7 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl<ShopUserCartMapper,
} else { } else {
// 判断运费方式如果发现同一个订单计费模式不一致报错禁止下单 // 判断运费方式如果发现同一个订单计费模式不一致报错禁止下单
Map tt_ids = (Map) store_row.get("tt_ids"); 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<>(); List<ShopStoreTransportType> transport_type_rows = new ArrayList<>();
Integer transport_type_id; Integer transport_type_id;
@ -2558,6 +2561,7 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl<ShopUserCartMapper,
Integer transport_type_pricing_method = transportType.getTransport_type_pricing_method(); Integer transport_type_pricing_method = transportType.getTransport_type_pricing_method();
BigDecimal order_money_select_items = Convert.toBigDecimal(store_row.get("order_money_select_items")); 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) { 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); 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")); freight = Convert.toBigDecimal(data.get("freight"));
} else { } else {
if (isgiftbag) { 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); 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"); boolean type_freight = (boolean) data.get("type_freight");