gateway 的 类库冲突 fix

This commit is contained in:
Jack 2025-07-21 11:02:17 +08:00
parent 332c3ff11b
commit 84da413f4d
9 changed files with 80 additions and 16 deletions

View File

@ -22,6 +22,7 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<optional>true</optional> <!-- 设为可选依赖 -->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>

View File

@ -1,5 +1,6 @@
package com.suisung.mall.common.config;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@ -19,6 +20,13 @@ import java.time.Duration;
@Configuration
public class RestTemplateConfig {
// 显式声明RestTemplateBuilder bean
@Bean
@ConditionalOnMissingBean
public RestTemplateBuilder restTemplateBuilder() {
return new RestTemplateBuilder();
}
/**
* 企业级 RestTemplate 配置
* 1. 使用 OkHttp3 客户端性能优化

View File

@ -16,10 +16,21 @@
</parent>
<dependencies>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-webflux</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-undertow</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>com.suisung.mall</groupId>
<artifactId>mall-common</artifactId>

View File

@ -3,6 +3,8 @@ spring:
active: @profiles.active@
application:
name: mall-gateway
# main:
# web-application-type: reactive
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8

View File

@ -6,6 +6,7 @@ import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.suisung.mall.common.api.CommonResult;
import com.suisung.mall.common.api.ResultCode;
import com.suisung.mall.common.api.StateCode;
import com.suisung.mall.common.domain.UserDto;
import com.suisung.mall.common.exception.ApiException;
@ -297,12 +298,31 @@ public class ShopOrderBaseController extends BaseControllerImpl {
@ApiOperation(value = "查询移动商家端订单数据(新)", notes = "查询移动商家端订单数据(新)")
@RequestMapping(value = "/mch/order/list", method = RequestMethod.POST)
public CommonResult selectMchOrderPageList(@RequestBody JSONObject params) {
UserDto userDto = getCurrentUser();
if (userDto == null) {
return CommonResult.failed(ResultCode.NEED_LOGIN);
}
// 如果 storeId 有值判断当前登录账号是否有权查看该店铺的订单(以后账号有多个店铺需要更改判断方法)
Integer storeId = params.getInt("storeId");
if (storeId != null && storeId > 0 && !storeId.equals(userDto.getStore_id())) {
return CommonResult.failed(ResultCode.FORBIDDEN);
} else {
storeId = Convert.toInt(userDto.getStore_id());
}
if (storeId == null || storeId <= 0) {
return CommonResult.failed(ResultCode.FORBIDDEN);
}
Map<String, Object> respMap = new HashMap<>();
// 订单分页数据
Long expireSeconds = 1500L; // 60秒*25分钟 = 1500秒
respMap.put("order_page_list", shopOrderBaseService.selectMchOrderPageList(params.getInt("storeId"), params.getStr("keyword"), params.getInt("delivery"), params.getInt("status"), expireSeconds, params.getInt("pageNum"), params.getInt("pageSize")));
// 订单数量
respMap.put("order_count", shopOrderBaseService.mchOrderCountByStoreId(params.getInt("storeId")));
respMap.put("order_page_list", shopOrderBaseService.selectMchOrderPageList(storeId, params.getStr("keyword"), params.getInt("delivery"), params.getInt("status"), expireSeconds, params.getInt("pageNum"), params.getInt("pageSize")));
// 订单数量统计
respMap.put("order_count", shopOrderBaseService.mchOrderCountByStoreId(storeId));
return CommonResult.success(respMap);
}

View File

@ -8552,16 +8552,16 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
IPage<MchOrderInfoDTO> pageList = shopOrderBaseMapper.selectMchOrderPageList(
storeId, keyword, delivery, status, expireSeconds, page);
if (pageList == null || CollUtil.isEmpty(pageList.getRecords())) {
if (CollUtil.isEmpty(pageList.getRecords())) {
return pageList;
}
// 处理订单列表数据
pageList.getRecords().forEach(order -> {
// 处理物流轨迹信息仅限快递配送且已发货/已完成订单
if (StateCode.DELIVERY_TYPE_EXP == order.getDelivery_type_id()
&& (StateCode.ORDER_STATE_FINISH == order.getOrder_state_id()
|| StateCode.ORDER_STATE_SHIPPED == order.getOrder_state_id())) {
if (StateCode.DELIVERY_TYPE_SELF_PICK_UP != order.getDelivery_type_id()
&& StateCode.DELIVERY_TYPE_SAME_CITY != order.getDelivery_type_id()
&& (StateCode.ORDER_STATE_FINISH == order.getOrder_state_id() || StateCode.ORDER_STATE_SHIPPED == order.getOrder_state_id())) {
try {
order.setLogistics_traces(kdApiExpressSearchService.getLogisticsTraces(order.getOrder_id()));
} catch (Exception e) {
@ -8588,14 +8588,29 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
*/
@Override
public JSONObject mchOrderCountByStoreId(Integer storeId) {
if (ObjectUtil.isEmpty(storeId)) {
return null;
}
JSONObject jsonObject = new JSONObject();
if (CheckUtil.isEmpty(storeId)) {
jsonObject.put("all_order_count", 0);
jsonObject.put("same_city_order_count", 0);
jsonObject.putByPath("same_city_order.progress_count", 0);
jsonObject.putByPath("same_city_order.overtime_count", 0);
jsonObject.putByPath("same_city_order.refund_count", 0);
jsonObject.put("logistics_order_count", 0);
jsonObject.putByPath("logistics_order.wait_pay_count", 0);
jsonObject.putByPath("logistics_order.wait_shipping_count", 0);
jsonObject.putByPath("logistics_order.receiving_count", 0);
jsonObject.putByPath("logistics_order.finished_count", 0);
return jsonObject;
}
// refundstatus 退款状态:0-是无退款;1-是部分退款;2-是全部退款
// orderstatus 订单状态2010-ORDER_STATE_WAIT_PAY 待付款;
// orderstatus 订单状态
// 2010-ORDER_STATE_WAIT_PAY 待付款;
// 2011-ORDER_STATE_WAIT_REVIEW 待订单审核;
// 2013-ORDER_STATE_WAIT_FINANCE_REVIEW 待财务审核;
// 2014-待配货/待出库审核;
@ -8604,7 +8619,8 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
// 2040-已发货/待收货确认;
// 2050-ORDER_STATE_RECEIVED 已签收;
// 2060-ORDER_STATE_FINISH 已完成/已签收;
// 2070-ORDER_STATE_CANCEL已取消/已作废;2080-ORDER_STATE_SELF_PICKUP自提
// 2070-ORDER_STATE_CANCEL已取消/已作废;
// 2080-ORDER_STATE_SELF_PICKUP自提
// 全部订单总数量
jsonObject.put("all_order_count", shopOrderInfoService.getOrderCountByStoreId(storeId, null, null, null, null));

View File

@ -26,6 +26,7 @@ import com.suisung.mall.common.modules.pay.PayPlantformResource;
import com.suisung.mall.common.modules.plantform.ShopPlantformFeedback;
import com.suisung.mall.common.modules.product.ShopProductComment;
import com.suisung.mall.common.pojo.res.ThirdApiRes;
import com.suisung.mall.common.utils.CheckUtil;
import com.suisung.mall.common.utils.CommonUtil;
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
import com.suisung.mall.shop.base.service.AccountBaseConfigService;
@ -354,7 +355,7 @@ public class ShopOrderInfoServiceImpl extends BaseServiceImpl<ShopOrderInfoMappe
*/
@Override
public Long getOrderCountByStoreId(Integer storeId, List<Integer> orderStatusIdList, List<Integer> orderRefundStatusIdList, List<Integer> deliveryTypeList, Long expireSeconds) {
if (ObjectUtil.isEmpty(storeId)) {
if (CheckUtil.isEmpty(storeId)) {
return 0L;
}

View File

@ -637,11 +637,13 @@
</resultMap>
<!--// refundstatus 退款状态:0-是无退款;1-是部分退款;2-是全部退款
// orderstatus 订单状态2010-待付款;2011-待订单审核;2012-待发货;2013-待财务审核;2014-待配货/待出库审核;2020-待发货;2030-待发货/待收货确认;2040-已发货/待收货确认;2050-已签收;2060-已完成/已签收;2070-已取消/已作废;2080-自提-->
// orderstatus 订单状态2010-待付款;2011-待订单审核;2012-待发货;2013-待财务审核;2014-待配货/待出库审核;2020-待发货;
2030-待发货/待收货确认;2040-已发货/待收货确认;2050-已签收;2060-已完成/已签收;2070-已取消/已作废;2080-自提-->
<select id="selectMchOrderPageList" resultMap="MchOrderResult">
SELECT
ob.order_id,
ob.order_time,
<!-- 送达时间戳-->
<if test="delivery!=null and delivery==1">
oi.order_time + #{expireSeconds}*1000 as arrival_time,
</if>

View File

@ -27,18 +27,21 @@
#{item}
</foreach>
</if>
<if test="orderRefundStatusIdList!=null and orderRefundStatusIdList.size()>0">
AND b.order_refund_status IN
<foreach collection="orderRefundStatusIdList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="deliveryTypeList!=null and deliveryTypeList.size()>0">
AND a.delivery_type_id IN
<foreach collection="deliveryTypeList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<!-- 过期的订单-->
<if test="expireSeconds!=null and expireSeconds>0">
AND a.order_time + #{expireSeconds}*1000 <![CDATA[<=]]> UNIX_TIMESTAMP() * 1000