diff --git a/mall-common/pom.xml b/mall-common/pom.xml
index 367f9980..ba2b25bb 100644
--- a/mall-common/pom.xml
+++ b/mall-common/pom.xml
@@ -24,10 +24,12 @@
spring-boot-starter-web
true
+
org.springframework.boot
spring-boot-starter-data-redis
+
org.apache.commons
commons-pool2
diff --git a/mall-common/src/main/java/com/suisung/mall/common/constant/CommonConstant.java b/mall-common/src/main/java/com/suisung/mall/common/constant/CommonConstant.java
index b10966c9..bc30edbf 100644
--- a/mall-common/src/main/java/com/suisung/mall/common/constant/CommonConstant.java
+++ b/mall-common/src/main/java/com/suisung/mall/common/constant/CommonConstant.java
@@ -69,8 +69,16 @@ public class CommonConstant {
/**
* 推送消息类别:Contract-商家入驻合同;orderList-商家订单列表;orderDetail-商家订单详情
+ * * mchContract-商家入驻合同;
+ * * mchOrderDetail-商家订单详情;
+ * * mchOnLineOrderList-商家进行中订单列表;
+ * * mchAbnormalOrderList-商家异常订单列表;
+ * * mchRetrunOrderList-商家退款订单列表
*/
public static final String PUSH_MSG_CATE_EC = "mchContract";
- public static final String PUSH_MSG_CATE_ORDER_LIST = "mchOrderList";
- public static final String PUSH_MSG_CATE_ORDER_DETAIL = "mchOrderDetail";
+
+ public static final String PUSH_MSG_CATE_MCH_ORDER_DETAIL = "mchOrderDetail";
+ public static final String PUSH_MSG_CATE_MCH_ONLINE_ORDER_LIST = "mchOnLineOrderList";
+ public static final String PUSH_MSG_CATE_MCH_ABNORMAL_ORDER_LIST = "mchAbnormalOrderList";
+ public static final String PUSH_MSG_CATE_MCH_RETURN_ORDER_LIST = "mchRetrunOrderList";
}
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/admin/ShopOrderBaseController.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/admin/ShopOrderBaseController.java
index 7224b886..6a2ad517 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/admin/ShopOrderBaseController.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/admin/ShopOrderBaseController.java
@@ -1,6 +1,7 @@
package com.suisung.mall.shop.order.controller.admin;
import cn.hutool.core.convert.Convert;
+import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -11,6 +12,7 @@ import com.suisung.mall.common.api.StateCode;
import com.suisung.mall.common.domain.UserDto;
import com.suisung.mall.common.exception.ApiException;
import com.suisung.mall.common.modules.order.*;
+import com.suisung.mall.common.modules.order.dto.MchOrderInfoDTO;
import com.suisung.mall.common.service.impl.BaseControllerImpl;
import com.suisung.mall.common.utils.CheckUtil;
import com.suisung.mall.common.utils.I18nUtil;
@@ -40,6 +42,8 @@ import java.util.stream.Collectors;
@Slf4j
public class ShopOrderBaseController extends BaseControllerImpl {
+ private static final long mchOrderExpireSeconds = 1500; // 25分钟超时,60秒*25分钟 = 1500秒
+
@Autowired
private ShopOrderBaseService shopOrderBaseService;
@@ -296,7 +300,7 @@ public class ShopOrderBaseController extends BaseControllerImpl {
// 商家版接口 开始
- @ApiOperation(value = "查询移动商家端订单数据(新)", notes = "查询移动商家端订单数据(新)")
+ @ApiOperation(value = "查询商家端订单分页数据(新)", notes = "查询商家端订单分页数据(新)")
@RequestMapping(value = "/mch/order/list", method = RequestMethod.POST)
public CommonResult selectMchOrderPageList(@RequestBody JSONObject params) {
// === 用户验证 ===
@@ -321,14 +325,13 @@ public class ShopOrderBaseController extends BaseControllerImpl {
// === 构建响应数据 ===
Map respMap = new HashMap<>();
// 订单列表数据(缓存时间25分钟)
- long expireSeconds = 1500L;// 60秒*25分钟 = 1500秒
respMap.put("order_page_list", shopOrderBaseService.selectMchOrderPageList(
storeId,
params.getStr("keyword"),
params.getInt("delivery"),
params.getInt("status"),
params.getInt("logistics_status"),
- expireSeconds,
+ mchOrderExpireSeconds,
params.getLong("begin_time"),
params.getLong("end_time"),
params.getInt("pageNum"),
@@ -336,11 +339,51 @@ public class ShopOrderBaseController extends BaseControllerImpl {
));
// 订单数量统计
- respMap.put("order_count", shopOrderBaseService.mchOrderCountByStoreId(storeId, expireSeconds, params.getLong("begin_time"), params.getLong("end_time")));
+ respMap.put("order_count", shopOrderBaseService.mchOrderCountByStoreId(storeId, mchOrderExpireSeconds, params.getLong("begin_time"), params.getLong("end_time")));
return CommonResult.success(respMap);
}
+ @ApiOperation(value = "获取商家端订单详情数据(新)", notes = "获取商家端订单详情数据(新)")
+ @PostMapping(value = "/mch/order/detail")
+ public CommonResult getMchOrderDetail(@RequestBody JSONObject params) {
+ try {
+ // 1. 参数校验
+ String orderId = params.getStr("orderId");
+ if (StrUtil.isBlank(orderId)) {
+ log.warn("订单ID不能为空");
+ return CommonResult.failed(ResultCode.VALIDATE_FAILED);
+ }
+
+ // 2. 获取订单详情
+ MchOrderInfoDTO mchOrderInfoDTO = shopOrderBaseService.getMchOrderDetail(orderId, mchOrderExpireSeconds);
+ if (mchOrderInfoDTO == null) {
+ log.info("未查询到订单ID:{}的详情", orderId);
+ return CommonResult.success(null);
+ }
+
+ // 3. 用户认证
+ UserDto userDto = getCurrentUser();
+ if (userDto == null) {
+ log.warn("未获取到当前用户信息");
+ return CommonResult.failed(ResultCode.NEED_LOGIN);
+ }
+
+ // 4. 店铺权限校验
+ Integer storeId = Convert.toInt(userDto.getStore_id());
+ if (storeId != null && storeId > 0 && !storeId.equals(mchOrderInfoDTO.getOrder_state_id())) {
+ log.warn("用户{}无权限访问订单{}", userDto.getId(), orderId);
+ return CommonResult.failed(ResultCode.FORBIDDEN);
+ }
+
+ // 5. 返回结果
+ return CommonResult.success(mchOrderInfoDTO);
+ } catch (Exception e) {
+ log.error("获取商家端订单详情异常", e);
+ return CommonResult.failed();
+ }
+ }
+
// 商家版接口 结束
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/mobile/UserReturnController.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/mobile/UserReturnController.java
index 54da69cd..95db5e8d 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/mobile/UserReturnController.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/mobile/UserReturnController.java
@@ -3,11 +3,10 @@ package com.suisung.mall.shop.order.controller.mobile;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.suisung.mall.common.api.CommonResult;
+import com.suisung.mall.common.api.ResultCode;
import com.suisung.mall.common.domain.UserDto;
-import com.suisung.mall.common.exception.ApiUserException;
import com.suisung.mall.common.modules.order.ShopOrderReturnReason;
import com.suisung.mall.common.service.impl.BaseControllerImpl;
-import com.suisung.mall.common.utils.I18nUtil;
import com.suisung.mall.shop.order.service.ShopOrderReturnReasonService;
import com.suisung.mall.shop.order.service.ShopOrderReturnService;
import com.suisung.mall.shop.order.vo.OrderReturnInputVo;
@@ -61,6 +60,11 @@ public class UserReturnController extends BaseControllerImpl {
@ApiOperation(value = "添加退款退货-部分退货,卖家也可以决定不退货退款,买家申请退款不支持。卖家可以主动退款。", notes = "添加退款退货-发货退货,卖家也可以决定不退货退款,买家申请退款不支持。卖家可以主动退款。")
@RequestMapping(value = "/addItem", method = RequestMethod.GET)
public CommonResult addItem(OrderReturnVo orderReturnVo) {
+ UserDto user = getCurrentUser();
+ if (user == null) {
+ return CommonResult.failed(ResultCode.NEED_LOGIN);
+ }
+
OrderReturnInputVo orderReturnInputVo = BeanUtil.copyProperties(orderReturnVo, OrderReturnInputVo.class);
OrderReturnItemInputVo orderReturnItemInputVo = new OrderReturnItemInputVo();
@@ -70,16 +74,15 @@ public class UserReturnController extends BaseControllerImpl {
orderReturnInputVo.getReturn_items().add(orderReturnItemInputVo);
- return shopOrderReturnService.addItem(orderReturnInputVo);
+ return shopOrderReturnService.addItem(orderReturnInputVo, true);
}
@ApiOperation(value = "添加退款退货-整单退货", notes = "添加退款退货-整单退货")
@RequestMapping(value = "/addWholeItems", method = RequestMethod.POST)
public CommonResult addWholeItems(@RequestParam(name = "order_id") String order_id) {
UserDto user = getCurrentUser();
-
if (user == null) {
- throw new ApiUserException(I18nUtil._("用户信息异常!"));
+ return CommonResult.failed(ResultCode.NEED_LOGIN);
}
return shopOrderReturnService.addWholeItems(order_id, false, "");
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/OrderPayedListener.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/OrderPayedListener.java
index 46f05de6..7ca0325a 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/OrderPayedListener.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/OrderPayedListener.java
@@ -1,10 +1,13 @@
package com.suisung.mall.shop.order.listener;
import cn.hutool.core.convert.Convert;
+import cn.hutool.json.JSONObject;
import com.rabbitmq.client.Channel;
import com.suisung.mall.common.api.StateCode;
+import com.suisung.mall.common.constant.CommonConstant;
import com.suisung.mall.common.constant.MqConstant;
import com.suisung.mall.common.modules.order.ShopOrderInfo;
+import com.suisung.mall.common.utils.DateTimeUtils;
import com.suisung.mall.shop.message.service.PushMessageService;
import com.suisung.mall.shop.order.service.ShopOrderBaseService;
import com.suisung.mall.shop.order.service.ShopOrderInfoService;
@@ -21,6 +24,7 @@ import org.springframework.data.util.Pair;
import org.springframework.stereotype.Service;
import java.io.IOException;
+import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
@@ -119,6 +123,15 @@ public class OrderPayedListener {
logger.info("顺丰同城下单成功");
}
+
+ // 同城配送或普通快递,都发送 unipush 推送:您有一个新的订单,请查收!
+ String orderType = orderInfoOld.getDelivery_type_id() == StateCode.DELIVERY_TYPE_SAME_CITY ? "同城" : "";
+ String title = String.format("您有一个新的%s订单,请注意查收!", orderType);
+ String content = String.format("新%s订单号:%s,用户在%s下的单,请注意查收!", orderId, DateTimeUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss"));
+ JSONObject payload = new JSONObject();
+ payload.put("category", CommonConstant.PUSH_MSG_CATE_MCH_ONLINE_ORDER_LIST);
+ payload.put("orderId", orderId);
+ pushMessageService.noticeMerchantEmployeeOrderAction(orderInfoOld.getStore_id(), orderId, title, content, payload);
}
}
}
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/mapper/ShopOrderBaseMapper.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/mapper/ShopOrderBaseMapper.java
index 020a8278..1b1f5a32 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/order/mapper/ShopOrderBaseMapper.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/mapper/ShopOrderBaseMapper.java
@@ -93,6 +93,16 @@ public interface ShopOrderBaseMapper extends BaseMapper {
*/
Long countMchOrderByCondition(@Param("storeId") Integer storeId, @Param("keyword") String keyword, @Param("delivery") Integer delivery, @Param("status") Integer status, @Param("logisticsStatus") Integer logisticsStatus, @Param("expireSeconds") Long expireSeconds, @Param("beginTime") Long beginTime, @Param("endTime") Long endTime);
+
+ /**
+ * 获取商家版订单详情(新)
+ *
+ * @param orderId
+ * @param expireSeconds 配送超时的秒数,单位秒
+ * @return
+ */
+ MchOrderInfoDTO getMchOrderDetail(@Param("orderId") String orderId, @Param("expireSeconds") Long expireSeconds);
+
/**
* 获取微信发货订单基本信息
*
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBaseService.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBaseService.java
index f56adde2..5097f9c6 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBaseService.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBaseService.java
@@ -568,6 +568,15 @@ public interface ShopOrderBaseService extends IBaseService {
*/
Long countMchOrderByCondition(Integer storeId, String keyword, Integer delivery, Integer status, Integer logisticsStatus, Long expireSeconds, Long beginTime, Long endTime);
+ /**
+ * 获取商家订单详情
+ *
+ * @param orderId
+ * @param expireSeconds 配送超时的秒数,单位秒
+ * @return
+ */
+ MchOrderInfoDTO getMchOrderDetail(String orderId, Long expireSeconds);
+
/**
* 商家订单各个分类和状态的订单数量
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderReturnService.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderReturnService.java
index 7ff68865..dd4b6b63 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderReturnService.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderReturnService.java
@@ -41,17 +41,20 @@ public interface ShopOrderReturnService extends IBaseService {
long getReturnNum(List return_state_id, Integer store_id, Integer subsite_id);
/**
+ * 提交一条退货订单,等待商家审核处理(同意或不同意)
+ *
* @param orderReturnInputVo
+ * @param needSendMsg 是否需要发(站内 推送)消息
* @return
*/
- CommonResult addItem(OrderReturnInputVo orderReturnInputVo);
+ CommonResult addItem(OrderReturnInputVo orderReturnInputVo, Boolean needSendMsg);
Map getReturnDetail(String return_id);
boolean processReviewList(ShopOrderReturn shopOrderReturn, Integer receiving_address);
/**
- * 退单审核
+ * 退单审核,商家审核处理(同意或不同意)
*
* @param return_ids 退单编号
* @param return_rows 退单数据
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java
index b0a637b1..d578da54 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java
@@ -2801,7 +2801,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl shopOrderReturnItems = new ArrayList<>();
+ for (OrderReturnItemInputVo returnItemInputVo : orderReturnInputVo.getReturn_items()) {
+ ShopOrderItem shopOrderItem = shopOrderItemService.get(returnItemInputVo.getOrder_item_id());
+
+ if (shopOrderItem == null) {
+ throw new ApiException(I18nUtil._("此订单商品订单数据有误!"));
+ }
+ ShopProductIndex shopProductIndex = shopProductIndexService.get(shopOrderItem.getProduct_id());
+
+ if (shopProductIndex == null) {
+ throw new ApiException(I18nUtil._("此订单商品数据有误!"));
}
- Date curTime = new Date();
+ boolean is_denyreturn = ifDenyReturn(shopOrderInfo, shopOrderItem, shopProductIndex);
+ if (is_denyreturn) {
+ throw new ApiException(I18nUtil._("此商品不允许退货!"));
+ }
+ ShopOrderReturnItem orderReturnItem = new ShopOrderReturnItem();
+ Integer return_item_num = returnItemInputVo.getReturn_item_num();
- ShopOrderReturn orderReturn = new ShopOrderReturn();
-
- orderReturn.setReturn_id(return_id);
- orderReturn.setOrder_id(order_id);
- orderReturn.setBuyer_user_id(user_id);
- orderReturn.setBuyer_store_id(buyer_store_id);
- orderReturn.setReturn_reason_id(return_reason_id);
- orderReturn.setReturn_buyer_message(return_buyer_message);
- orderReturn.setStore_id(store_id);
- orderReturn.setReturn_refund_amount(BigDecimal.ZERO);
- orderReturn.setReturn_commision_fee(BigDecimal.ZERO);
- orderReturn.setReturn_state_id(StateCode.RETURN_PROCESS_CHECK);
- orderReturn.setReturn_tel(return_tel);
- orderReturn.setReturn_year(DateUtil.year(curTime)); // 退单年份-索引查询
- orderReturn.setReturn_month(DateUtil.month(curTime) + 1); // 退单月份-索引查询
- orderReturn.setReturn_day(DateUtil.dayOfMonth(curTime)); // 退单日-索引查询
- orderReturn.setReturn_reason_id(0);
- orderReturn.setReturn_store_user_id(0);
- orderReturn.setReturn_mobile(0L);
- orderReturn.setReturn_telephone("");
- orderReturn.setSubsite_id(shopOrderInfo.getSubsite_id());
-
- List shopOrderReturnItems = new ArrayList<>();
- for (OrderReturnItemInputVo returnItemInputVo : orderReturnInputVo.getReturn_items()) {
- ShopOrderItem shopOrderItem = shopOrderItemService.get(returnItemInputVo.getOrder_item_id());
-
- if (shopOrderItem == null) {
- throw new ApiException(I18nUtil._("此订单商品订单数据有误!"));
- }
- ShopProductIndex shopProductIndex = shopProductIndexService.get(shopOrderItem.getProduct_id());
-
- if (shopProductIndex == null) {
- throw new ApiException(I18nUtil._("此订单商品数据有误!"));
- }
-
- boolean is_denyreturn = ifDenyReturn(shopOrderInfo, shopOrderItem, shopProductIndex);
- if (is_denyreturn) {
- throw new ApiException(I18nUtil._("此商品不允许退货!"));
- }
- ShopOrderReturnItem orderReturnItem = new ShopOrderReturnItem();
- Integer return_item_num = returnItemInputVo.getReturn_item_num();
-
- if (return_item_num <= 0) {
- throw new ApiException(I18nUtil._("退款数量不正确!"));
- }
-
- BigDecimal return_refund_amount = returnItemInputVo.getReturn_refund_amount();
- String return_item_image = ObjectUtil.defaultIfBlank(orderReturnInputVo.getRefund_pic(), orderReturnInputVo.getUpload_img());
-
- orderReturnItem.setOrder_item_id(returnItemInputVo.getOrder_item_id()); // 退货商品编号(DOT):0为退款
- orderReturnItem.setOrder_id(order_id); // 订单编号
- orderReturnItem.setReturn_item_num(return_item_num); // 退货商品编号(DOT):0为退款
- orderReturnItem.setReturn_item_subtotal(return_refund_amount); // 退款金额 = goods_payment_amount/goods_quantity, 因为涉及到折扣等等 或者 为订单中 order_payment_amount
- orderReturnItem.setReturn_reason_id(return_reason_id); // 退款理由id
- orderReturnItem.setReturn_item_note(return_buyer_message); // 买家退货备注
- orderReturnItem.setReturn_item_image(return_item_image);
- orderReturnItem.setReturn_state_id(StateCode.RETURN_PROCESS_CHECK);
- orderReturnItem.setReturn_reason_id(0);
-
- shopOrderReturnItems.add(orderReturnItem);
+ if (return_item_num <= 0) {
+ throw new ApiException(I18nUtil._("退款数量不正确!"));
}
- if (!addReturnByItem(orderReturn, shopOrderReturnItems)) {
- throw new ApiException(ResultCode.FAILED);
- }
+ BigDecimal return_refund_amount = returnItemInputVo.getReturn_refund_amount();
+ String return_item_image = ObjectUtil.defaultIfBlank(orderReturnInputVo.getRefund_pic(), orderReturnInputVo.getUpload_img());
- // 退货单提交成功,对商家进行提醒
-// String message_id = "return-reminder";
-// Map args = new HashMap();
-// args.put("order_id", return_id);
-// args.put("id", order_id);
-// args.put("return_id", return_id);
-// args.put("order_item", String.format(("退货商品编号:[%s]"), order_item_id));
-// messageService.sendNoticeMsg(0, store_id, message_id, args);
+ orderReturnItem.setOrder_item_id(returnItemInputVo.getOrder_item_id()); // 退货商品编号(DOT):0为退款
+ orderReturnItem.setOrder_id(order_id); // 订单编号
+ orderReturnItem.setReturn_item_num(return_item_num); // 退货商品编号(DOT):0为退款
+ orderReturnItem.setReturn_item_subtotal(return_refund_amount); // 退款金额 = goods_payment_amount/goods_quantity, 因为涉及到折扣等等 或者 为订单中 order_payment_amount
+ orderReturnItem.setReturn_reason_id(return_reason_id); // 退款理由id
+ orderReturnItem.setReturn_item_note(return_buyer_message); // 买家退货备注
+ orderReturnItem.setReturn_item_image(return_item_image);
+ orderReturnItem.setReturn_state_id(StateCode.RETURN_PROCESS_CHECK);
+ orderReturnItem.setReturn_reason_id(0);
- data.put("return", orderReturn);
- data.put("items", shopOrderReturnItems);
+ shopOrderReturnItems.add(orderReturnItem);
+ }
- //暂时注释
- // 七天无理由自动退货
+ if (!addReturnByItem(orderReturn, shopOrderReturnItems)) {
+ throw new ApiException(ResultCode.FAILED);
+ }
+
+
+ data.put("return", orderReturn);
+ data.put("items", shopOrderReturnItems);
+
+ //暂时注释
+ // 七天无理由自动退货
/*if (contractTypeIds.contains(StateCode.CONTRACT_TYPE_7_RETURN) && shopOrderInfo.getOrder_is_out().equals(StateCode.ORDER_PICKING_STATE_NO)) {
ShopOrderReturn shopOrderReturn = new ShopOrderReturn();
shopOrderReturn.setReturn_id(orderReturn.getReturn_id());
@@ -572,15 +569,34 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl {
* 7.4、计算每样商品的佣金
* 7.5、计算最终运费,运费根据重量计费,同一店铺一次发货,商品独立计算快递费用不合理。
* 9、计算总价
- * 9、
*
* @access public
*/
@@ -139,7 +138,7 @@ public interface ShopUserCartService extends IBaseService {
*
* @param cart_data 最终数据
* @param district_id 配送地区(城市id)
- * @param canThrow 关键数据缺失,抛出 api 异常错误
+ * @param canThrow 关键数据缺失,抛出 api 异常错误
*/
void tryCalTransportFreight(Map cart_data, Integer district_id, boolean canThrow);
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/user/service/impl/ShopUserCartServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/user/service/impl/ShopUserCartServiceImpl.java
index d34fb277..553e1b98 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/user/service/impl/ShopUserCartServiceImpl.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/user/service/impl/ShopUserCartServiceImpl.java
@@ -48,7 +48,6 @@ import com.suisung.mall.shop.product.pojo.vo.FixOrderVo;
import com.suisung.mall.shop.product.pojo.vo.ProductVo;
import com.suisung.mall.shop.product.service.*;
import com.suisung.mall.shop.store.service.*;
-import com.suisung.mall.shop.store.service.impl.ShopStorePrinterLogServiceImpl;
import com.suisung.mall.shop.user.mapper.ShopUserCartMapper;
import com.suisung.mall.shop.user.service.ShopUserCartService;
import com.suisung.mall.shop.user.service.ShopUserDeliveryAddressService;
@@ -59,7 +58,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import javax.annotation.Resource;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.*;
@@ -765,10 +763,10 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl storeDistrictId = Convert.toList(Integer.class, store_row.get("store_district_id"));
- if (canThrow && uAddress!=null && storeDistrictId != null && storeDistrictId.size() > 0 && !CollUtil.contains(storeDistrictId, uAddress.getUd_city_id())) {
+ if (canThrow && uAddress != null && storeDistrictId != null && storeDistrictId.size() > 0 && !CollUtil.contains(storeDistrictId, uAddress.getUd_city_id())) {
throw new ApiException(I18nUtil._("订单不在同一城市,请检查您下单所在店铺的具体位置!"));
}
diff --git a/mall-shop/src/main/resources/mapper/order/ShopOrderBaseMapper.xml b/mall-shop/src/main/resources/mapper/order/ShopOrderBaseMapper.xml
index 1513ccc4..25c80256 100644
--- a/mall-shop/src/main/resources/mapper/order/ShopOrderBaseMapper.xml
+++ b/mall-shop/src/main/resources/mapper/order/ShopOrderBaseMapper.xml
@@ -693,7 +693,7 @@
-
+
AND oi.delivery_type_id IN (1,2,3,4,10)
@@ -737,15 +737,23 @@
-
-