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> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
<optional>true</optional> <!-- 设为可选依赖 -->
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>

View File

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

View File

@ -16,10 +16,21 @@
</parent> </parent>
<dependencies> <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> <dependency>
<groupId>org.springframework.cloud</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId> <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.suisung.mall</groupId> <groupId>com.suisung.mall</groupId>
<artifactId>mall-common</artifactId> <artifactId>mall-common</artifactId>

View File

@ -3,6 +3,8 @@ spring:
active: @profiles.active@ active: @profiles.active@
application: application:
name: mall-gateway name: mall-gateway
# main:
# web-application-type: reactive
jackson: jackson:
date-format: yyyy-MM-dd HH:mm:ss date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8 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.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.suisung.mall.common.api.CommonResult; 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.api.StateCode;
import com.suisung.mall.common.domain.UserDto; import com.suisung.mall.common.domain.UserDto;
import com.suisung.mall.common.exception.ApiException; import com.suisung.mall.common.exception.ApiException;
@ -297,12 +298,31 @@ public class ShopOrderBaseController extends BaseControllerImpl {
@ApiOperation(value = "查询移动商家端订单数据(新)", notes = "查询移动商家端订单数据(新)") @ApiOperation(value = "查询移动商家端订单数据(新)", notes = "查询移动商家端订单数据(新)")
@RequestMapping(value = "/mch/order/list", method = RequestMethod.POST) @RequestMapping(value = "/mch/order/list", method = RequestMethod.POST)
public CommonResult selectMchOrderPageList(@RequestBody JSONObject params) { 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<>(); Map<String, Object> respMap = new HashMap<>();
// 订单分页数据 // 订单分页数据
Long expireSeconds = 1500L; // 60秒*25分钟 = 1500秒 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_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(params.getInt("storeId")));
// 订单数量统计
respMap.put("order_count", shopOrderBaseService.mchOrderCountByStoreId(storeId));
return CommonResult.success(respMap); return CommonResult.success(respMap);
} }

View File

@ -8552,16 +8552,16 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
IPage<MchOrderInfoDTO> pageList = shopOrderBaseMapper.selectMchOrderPageList( IPage<MchOrderInfoDTO> pageList = shopOrderBaseMapper.selectMchOrderPageList(
storeId, keyword, delivery, status, expireSeconds, page); storeId, keyword, delivery, status, expireSeconds, page);
if (pageList == null || CollUtil.isEmpty(pageList.getRecords())) { if (CollUtil.isEmpty(pageList.getRecords())) {
return pageList; return pageList;
} }
// 处理订单列表数据 // 处理订单列表数据
pageList.getRecords().forEach(order -> { pageList.getRecords().forEach(order -> {
// 处理物流轨迹信息仅限快递配送且已发货/已完成订单 // 处理物流轨迹信息仅限快递配送且已发货/已完成订单
if (StateCode.DELIVERY_TYPE_EXP == order.getDelivery_type_id() if (StateCode.DELIVERY_TYPE_SELF_PICK_UP != order.getDelivery_type_id()
&& (StateCode.ORDER_STATE_FINISH == order.getOrder_state_id() && StateCode.DELIVERY_TYPE_SAME_CITY != order.getDelivery_type_id()
|| StateCode.ORDER_STATE_SHIPPED == order.getOrder_state_id())) { && (StateCode.ORDER_STATE_FINISH == order.getOrder_state_id() || StateCode.ORDER_STATE_SHIPPED == order.getOrder_state_id())) {
try { try {
order.setLogistics_traces(kdApiExpressSearchService.getLogisticsTraces(order.getOrder_id())); order.setLogistics_traces(kdApiExpressSearchService.getLogisticsTraces(order.getOrder_id()));
} catch (Exception e) { } catch (Exception e) {
@ -8588,14 +8588,29 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
*/ */
@Override @Override
public JSONObject mchOrderCountByStoreId(Integer storeId) { public JSONObject mchOrderCountByStoreId(Integer storeId) {
if (ObjectUtil.isEmpty(storeId)) {
return null;
}
JSONObject jsonObject = new JSONObject(); 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-是全部退款 // refundstatus 退款状态:0-是无退款;1-是部分退款;2-是全部退款
// orderstatus 订单状态2010-ORDER_STATE_WAIT_PAY 待付款; // orderstatus 订单状态
// 2010-ORDER_STATE_WAIT_PAY 待付款;
// 2011-ORDER_STATE_WAIT_REVIEW 待订单审核; // 2011-ORDER_STATE_WAIT_REVIEW 待订单审核;
// 2013-ORDER_STATE_WAIT_FINANCE_REVIEW 待财务审核; // 2013-ORDER_STATE_WAIT_FINANCE_REVIEW 待财务审核;
// 2014-待配货/待出库审核; // 2014-待配货/待出库审核;
@ -8604,7 +8619,8 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
// 2040-已发货/待收货确认; // 2040-已发货/待收货确认;
// 2050-ORDER_STATE_RECEIVED 已签收; // 2050-ORDER_STATE_RECEIVED 已签收;
// 2060-ORDER_STATE_FINISH 已完成/已签收; // 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)); 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.plantform.ShopPlantformFeedback;
import com.suisung.mall.common.modules.product.ShopProductComment; import com.suisung.mall.common.modules.product.ShopProductComment;
import com.suisung.mall.common.pojo.res.ThirdApiRes; 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.common.utils.CommonUtil;
import com.suisung.mall.core.web.service.impl.BaseServiceImpl; import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
import com.suisung.mall.shop.base.service.AccountBaseConfigService; import com.suisung.mall.shop.base.service.AccountBaseConfigService;
@ -354,7 +355,7 @@ public class ShopOrderInfoServiceImpl extends BaseServiceImpl<ShopOrderInfoMappe
*/ */
@Override @Override
public Long getOrderCountByStoreId(Integer storeId, List<Integer> orderStatusIdList, List<Integer> orderRefundStatusIdList, List<Integer> deliveryTypeList, Long expireSeconds) { 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; return 0L;
} }

View File

@ -637,11 +637,13 @@
</resultMap> </resultMap>
<!--// refundstatus 退款状态:0-是无退款;1-是部分退款;2-是全部退款 <!--// 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 id="selectMchOrderPageList" resultMap="MchOrderResult">
SELECT SELECT
ob.order_id, ob.order_id,
ob.order_time, ob.order_time,
<!-- 送达时间戳-->
<if test="delivery!=null and delivery==1"> <if test="delivery!=null and delivery==1">
oi.order_time + #{expireSeconds}*1000 as arrival_time, oi.order_time + #{expireSeconds}*1000 as arrival_time,
</if> </if>

View File

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