tea 2 месяцев назад
Родитель
Сommit
4c33e4898d
24 измененных файлов с 364 добавлено и 316 удалено
  1. 1 1
      kxmall-admin-api/src/main/java/com/kxmall/web/controller/quartz/AutoDispatchQuartz.java
  2. 1 0
      kxmall-admin-api/src/main/java/com/kxmall/web/controller/rider/KxRiderOrderController.java
  3. 4 4
      kxmall-admin-api/src/main/java/com/kxmall/web/controller/rider/service/IKxRiderOrderService.java
  4. 1 5
      kxmall-admin-api/src/main/java/com/kxmall/web/controller/rider/service/impl/KxRiderOrderServiceImpl.java
  5. 1 1
      kxmall-admin/src/main/resources/application-dev.yml
  6. 1 1
      kxmall-app-api/src/main/java/com/kxmall/web/controller/callback/CallbackController.java
  7. 1 1
      kxmall-app-api/src/main/java/com/kxmall/web/controller/order/builder/OrderConcreteBuilder.java
  8. 2 2
      kxmall-app-api/src/main/java/com/kxmall/web/controller/order/service/impl/KxAppOrderService.java
  9. 55 0
      kxmall-common/src/main/java/com/kxmall/common/filter/KxMallFilter.java
  10. 81 0
      kxmall-common/src/main/java/com/kxmall/common/filter/KxMallHttpServletRequestWrapper.java
  11. 3 4
      kxmall-common/src/main/java/com/kxmall/common/filter/XssFilter.java
  12. 2 0
      kxmall-common/src/main/java/com/kxmall/common/filter/XssHttpServletRequestWrapper.java
  13. 12 1
      kxmall-framework/src/main/java/com/kxmall/framework/config/FilterConfig.java
  14. 3 0
      kxmall-framework/src/main/java/com/kxmall/framework/config/MybatisPlusConfig.java
  15. 0 13
      kxmall-framework/src/main/java/com/kxmall/framework/config/ResourcesConfig.java
  16. 0 94
      kxmall-framework/src/main/java/com/kxmall/framework/interceptor/PlusWebInvokeTimeInterceptor.java
  17. 119 0
      kxmall-framework/src/main/java/com/kxmall/framework/mp/MybatisLogInterceptor.java
  18. 27 28
      kxmall-rider-api/src/main/java/com/kxmall/web/controller/task/service/impl/TaskCenterServiceImpl.java
  19. 0 114
      kxmall-rider-api/src/main/java/com/kxmall/web/controller/websocket/service/impl/CommonRiderNotificationServiceImpl.java
  20. 14 26
      kxmall-system/src/main/java/com/kxmall/order/biz/KxOrderSnapshotService.java
  21. 30 5
      kxmall-system/src/main/java/com/kxmall/rider/domain/vo/RiderOrderStatisticalDTO.java
  22. 1 7
      kxmall-system/src/main/java/com/kxmall/rider/mapper/KxRiderOrderMapper.java
  23. 0 4
      kxmall-system/src/main/resources/mapper/rider/KxRiderOrderMapper.xml
  24. 5 5
      pom.xml

+ 1 - 1
kxmall-admin-api/src/main/java/com/kxmall/web/controller/quartz/AutoDispatchQuartz.java

@@ -24,7 +24,7 @@ public class AutoDispatchQuartz {
      * 每3分钟执行一次
      */
     // @Scheduled(cron = "0 */3 * * * ?")
-    @Scheduled(fixedDelay = 10000)
+    @Scheduled(fixedDelay = 30000)
     public void autoDispatchWaitingOrders() {
         log.debug("开始执行自动派单定时任务");
         orderDispatchService.scanAndDispatchWaitingOrders();

+ 1 - 0
kxmall-admin-api/src/main/java/com/kxmall/web/controller/rider/KxRiderOrderController.java

@@ -106,4 +106,5 @@ public class KxRiderOrderController extends BaseController {
                           @PathVariable Long[] ids) {
         return toAjax(iKxRiderOrderService.deleteWithValidByIds(Arrays.asList(ids), true));
     }
+
 }

+ 4 - 4
kxmall-admin-api/src/main/java/com/kxmall/web/controller/rider/service/IKxRiderOrderService.java

@@ -1,10 +1,9 @@
 package com.kxmall.web.controller.rider.service;
 
-import com.kxmall.rider.domain.KxRiderOrder;
-import com.kxmall.rider.domain.vo.KxRiderOrderVo;
-import com.kxmall.rider.domain.bo.KxRiderOrderBo;
-import com.kxmall.common.core.page.TableDataInfo;
 import com.kxmall.common.core.domain.PageQuery;
+import com.kxmall.common.core.page.TableDataInfo;
+import com.kxmall.rider.domain.bo.KxRiderOrderBo;
+import com.kxmall.rider.domain.vo.KxRiderOrderVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -46,4 +45,5 @@ public interface IKxRiderOrderService {
      * 校验并批量删除配送员订单信息信息
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
 }

+ 1 - 5
kxmall-admin-api/src/main/java/com/kxmall/web/controller/rider/service/impl/KxRiderOrderServiceImpl.java

@@ -7,13 +7,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.kxmall.common.constant.UserConstants;
 import com.kxmall.common.core.domain.PageQuery;
-import com.kxmall.common.core.domain.entity.SysDept;
-import com.kxmall.common.core.domain.entity.SysUser;
 import com.kxmall.common.core.page.TableDataInfo;
-import com.kxmall.common.helper.DataBaseHelper;
-import com.kxmall.common.utils.StreamUtils;
 import com.kxmall.common.utils.StringUtils;
 import com.kxmall.rider.domain.KxRiderOrder;
 import com.kxmall.rider.domain.bo.KxRiderOrderBo;
@@ -151,4 +146,5 @@ public class KxRiderOrderServiceImpl implements IKxRiderOrderService {
         }
         return baseMapper.deleteBatchIds(ids) > 0;
     }
+
 }

+ 1 - 1
kxmall-admin/src/main/resources/application-dev.yml

@@ -37,7 +37,7 @@ spring:
     # 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
     dynamic:
       # 性能分析插件(有性能损耗 不建议生产环境使用)
-      p6spy: true
+      p6spy: false
       # 设置默认的数据源或者数据源组,默认值即为 master
       primary: master
       # 严格模式 匹配不到数据源则报错

+ 1 - 1
kxmall-app-api/src/main/java/com/kxmall/web/controller/callback/CallbackController.java

@@ -151,7 +151,7 @@ public class CallbackController {
 
         RedisUtils.setCacheMapValue(CacheConstants.WAIT_DISPATCH_ORDERS, order.getId().toString(), order);
         addRiderOrder(order);
-        orderSnapshotService.addOrderSnapshotByOrderStatus(order.getId(), OrderSnapshotState.PAYED);
+        orderSnapshotService.addOrderSnapshotByOrderStatus(order.getId(), null, OrderSnapshotState.PAYED);
 
         // 通知管理员发货
         GlobalExecutor.execute(() -> {

+ 1 - 1
kxmall-app-api/src/main/java/com/kxmall/web/controller/order/builder/OrderConcreteBuilder.java

@@ -747,7 +747,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
                 }).collect(Collectors.toList());
         riderSpuMapper.insertBatch(items);
 
-        orderSnapshotService.addOrderSnapshotByOrderStatus(orderDO.getId(), OrderSnapshotState.PAYED);
+        orderSnapshotService.addOrderSnapshotByOrderStatus(orderDO.getId(), null, OrderSnapshotState.PAYED);
 
         RedisUtils.setCacheMapValue(CacheConstants.WAIT_DISPATCH_ORDERS, orderDO.getId().toString(), BeanUtil.toBean(orderDO, KxStoreOrderVo.class, com.kxmall.common.utils.ObjectUtils.defaultCopyOptions()));
     }

+ 2 - 2
kxmall-app-api/src/main/java/com/kxmall/web/controller/order/service/impl/KxAppOrderService.java

@@ -184,7 +184,7 @@ public class KxAppOrderService implements IKxAppOrderService {
         updateOrderDO.setStatus(OrderStatusType.CANCELED.getCode());
         updateOrderDO.setUpdateTime(new Date());
         orderBizService.changeOrderStatus(orderId, OrderStatusType.UNPAY.getCode(), updateOrderDO);
-        orderSnapshotService.addOrderSnapshotByOrderStatus(storeOrder.getId(), OrderSnapshotState.CANCELED);
+        orderSnapshotService.addOrderSnapshotByOrderStatus(storeOrder.getId(), null, OrderSnapshotState.CANCELED);
 
         RedisUtils.delCacheMapValue(CacheConstants.WAIT_DISPATCH_ORDERS, storeOrder.getId().toString());
         return "ok";
@@ -402,7 +402,7 @@ public class KxAppOrderService implements IKxAppOrderService {
             orderDTO.setProductList(orderProductVos);
             // adminNotifyBizService.refundOrder(orderDTO);
             //});
-            orderSnapshotService.addOrderSnapshotByOrderStatus(orderDO.getId(), OrderSnapshotState.REFUNDED);
+            orderSnapshotService.addOrderSnapshotByOrderStatus(orderDO.getId(), null, OrderSnapshotState.REFUNDED);
 
             if (PayChannelType.BALANCE.getCode().equals(orderDO.getPayChannel())) {
                 //余额退款

+ 55 - 0
kxmall-common/src/main/java/com/kxmall/common/filter/KxMallFilter.java

@@ -0,0 +1,55 @@
+package com.kxmall.common.filter;
+
+import cn.hutool.core.date.StopWatch;
+import cn.hutool.core.lang.UUID;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.ContentType;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.*;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+
+/**
+ * @author tea
+ * @date 2025/9/13
+ */
+@Slf4j
+@Component
+public class KxMallFilter implements Filter {
+
+    @Override
+    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+        HttpServletRequest req = (HttpServletRequest) request;
+
+        String multipartValue = ContentType.MULTIPART.getValue();
+        if (req.getContentType().toLowerCase().contains(multipartValue)) {
+            chain.doFilter(req, response);
+            return;
+        }
+
+        KxMallHttpServletRequestWrapper casterHttpServletRequestWrapper = new KxMallHttpServletRequestWrapper(req);
+
+        UUID taskId = UUID.fastUUID();
+        String requestUri = casterHttpServletRequestWrapper.getRequestURI();
+
+        String address = casterHttpServletRequestWrapper.getHeader("X-Forwarded-For");
+        if (StrUtil.isNotBlank(address)) {
+            address = address.split(",")[0].trim();
+        }
+
+        log.debug("=============== 【Task start】 {} ===============", taskId);
+        log.debug("URI:     {}", requestUri);
+        log.debug("IP:      {}", address);
+        log.debug("Params:   {}", casterHttpServletRequestWrapper.getParam());
+        StopWatch stopWatch = new StopWatch();
+        stopWatch.start();
+
+        chain.doFilter(casterHttpServletRequestWrapper, response);
+
+        stopWatch.stop();
+        log.debug("=============== 【Task end】 {} 。using  【{}ms】 ===============", taskId, stopWatch.getLastTaskTimeMillis());
+    }
+
+}

+ 81 - 0
kxmall-common/src/main/java/com/kxmall/common/filter/KxMallHttpServletRequestWrapper.java

@@ -0,0 +1,81 @@
+package com.kxmall.common.filter;
+
+import cn.hutool.core.io.IoUtil;
+import lombok.Getter;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.servlet.ReadListener;
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+
+/**
+ * XSS过滤处理
+ *
+ * @author kxmall
+ */
+@Slf4j
+@Getter
+public class KxMallHttpServletRequestWrapper extends HttpServletRequestWrapper {
+
+    private final HttpServletRequest httpServletRequest;
+
+    private String param;
+
+    public KxMallHttpServletRequestWrapper(HttpServletRequest request) {
+        super(request);
+        httpServletRequest = request;
+        this.setParam();
+    }
+
+    @SneakyThrows
+    private void setParam() {
+        String read = IoUtil.read(httpServletRequest.getInputStream(), StandardCharsets.UTF_8);
+        this.param = read.replace("\r\n", "").replaceAll(" ", "");
+    }
+
+    @Override
+    public ServletInputStream getInputStream() {
+        return new WrappedServletInputStream(new ByteArrayInputStream(this.param.getBytes(StandardCharsets.UTF_8)));
+    }
+
+
+
+    private static class WrappedServletInputStream extends ServletInputStream {
+        private InputStream stream;
+
+        public WrappedServletInputStream(InputStream stream) {
+            this.stream = stream;
+        }
+
+        public void setStream(InputStream stream) {
+            this.stream = stream;
+        }
+
+        @Override
+        public int read() throws IOException {
+            return stream.read();
+        }
+
+        @Override
+        public boolean isFinished() {
+            return false;
+        }
+
+        @Override
+        public boolean isReady() {
+            return false;
+        }
+
+        @Override
+        public void setReadListener(ReadListener readListener) {
+
+        }
+    }
+
+}

+ 3 - 4
kxmall-common/src/main/java/com/kxmall/common/filter/XssFilter.java

@@ -8,6 +8,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -22,13 +23,11 @@ public class XssFilter implements Filter {
     public List<String> excludes = new ArrayList<>();
 
     @Override
-    public void init(FilterConfig filterConfig) throws ServletException {
+    public void init(FilterConfig filterConfig) {
         String tempExcludes = filterConfig.getInitParameter("excludes");
         if (StringUtils.isNotEmpty(tempExcludes)) {
             String[] url = tempExcludes.split(",");
-            for (int i = 0; url != null && i < url.length; i++) {
-                excludes.add(url[i]);
-            }
+            excludes.addAll(Arrays.asList(url));
         }
     }
 

+ 2 - 0
kxmall-common/src/main/java/com/kxmall/common/filter/XssHttpServletRequestWrapper.java

@@ -21,6 +21,8 @@ import java.nio.charset.StandardCharsets;
  * @author kxmall
  */
 public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
+
+    private String param;
     /**
      * @param request
      */

+ 12 - 1
kxmall-framework/src/main/java/com/kxmall/framework/config/FilterConfig.java

@@ -1,15 +1,17 @@
 package com.kxmall.framework.config;
 
 import com.kxmall.common.filter.DemoFilter;
-import com.kxmall.framework.config.properties.XssProperties;
+import com.kxmall.common.filter.KxMallFilter;
 import com.kxmall.common.filter.RepeatableFilter;
 import com.kxmall.common.filter.XssFilter;
 import com.kxmall.common.utils.StringUtils;
+import com.kxmall.framework.config.properties.XssProperties;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.core.annotation.Order;
 
 import javax.servlet.DispatcherType;
 import javax.servlet.Filter;
@@ -63,6 +65,15 @@ public class FilterConfig {
         return createFilterBean(new DemoFilter(), Integer.MAX_VALUE);
     }
 
+    @Bean
+    @Order(Integer.MIN_VALUE)
+    public FilterRegistrationBean<KxMallFilter> xssFilterFilterRegistrationBean(KxMallFilter kxMallFilter) {
+        FilterRegistrationBean<KxMallFilter> registration = new FilterRegistrationBean<>();
+        registration.setFilter(kxMallFilter);
+        registration.setName("kxMallFilter");
+        return registration;
+    }
+
     public static <T extends Filter> FilterRegistrationBean<T> createFilterBean(T filter, Integer order) {
         FilterRegistrationBean<T> bean = new FilterRegistrationBean<>(filter);
         bean.setOrder(order);

+ 3 - 0
kxmall-framework/src/main/java/com/kxmall/framework/config/MybatisPlusConfig.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInt
 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
 import com.kxmall.framework.handler.CreateAndUpdateMetaObjectHandler;
 import com.kxmall.framework.interceptor.PlusDataPermissionInterceptor;
+import com.kxmall.framework.mp.MybatisLogInterceptor;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -33,6 +34,8 @@ public class MybatisPlusConfig {
         interceptor.addInnerInterceptor(paginationInnerInterceptor());
         // 乐观锁插件
         interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
+
+        interceptor.addInnerInterceptor(new MybatisLogInterceptor());
         return interceptor;
     }
 

+ 0 - 13
kxmall-framework/src/main/java/com/kxmall/framework/config/ResourcesConfig.java

@@ -1,13 +1,10 @@
 package com.kxmall.framework.config;
 
-import com.kxmall.framework.interceptor.PlusWebInvokeTimeInterceptor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.cors.CorsConfiguration;
 import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
 import org.springframework.web.filter.CorsFilter;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
 /**
@@ -18,16 +15,6 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 @Configuration
 public class ResourcesConfig implements WebMvcConfigurer {
 
-    @Override
-    public void addInterceptors(InterceptorRegistry registry) {
-        // 全局访问性能拦截
-        registry.addInterceptor(new PlusWebInvokeTimeInterceptor());
-    }
-
-    @Override
-    public void addResourceHandlers(ResourceHandlerRegistry registry) {
-    }
-
     /**
      * 跨域配置
      */

+ 0 - 94
kxmall-framework/src/main/java/com/kxmall/framework/interceptor/PlusWebInvokeTimeInterceptor.java

@@ -1,94 +0,0 @@
-package com.kxmall.framework.interceptor;
-
-import cn.hutool.core.io.IoUtil;
-import cn.hutool.core.map.MapUtil;
-import com.alibaba.ttl.TransmittableThreadLocal;
-import com.kxmall.common.filter.RepeatedlyRequestWrapper;
-import com.kxmall.common.utils.JsonUtils;
-import com.kxmall.common.utils.StringUtils;
-import com.kxmall.common.utils.spring.SpringUtils;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.time.StopWatch;
-import org.springframework.http.MediaType;
-import org.springframework.web.servlet.HandlerInterceptor;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.BufferedReader;
-import java.util.Map;
-
-/**
- * web的调用时间统计拦截器
- * dev环境有效
- *
- * @author kxmall
- * @since 3.3.0
- */
-@Slf4j
-public class PlusWebInvokeTimeInterceptor implements HandlerInterceptor {
-
-    private final String prodProfile = "prod";
-
-    private final TransmittableThreadLocal<StopWatch> invokeTimeTL = new TransmittableThreadLocal<>();
-
-    @Override
-    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
-        if (!prodProfile.equals(SpringUtils.getActiveProfile())) {
-            String url = request.getMethod() + " " + request.getRequestURI();
-
-            // 打印请求参数
-            if (isJsonRequest(request)) {
-                String jsonParam = "";
-                if (request instanceof RepeatedlyRequestWrapper) {
-                    BufferedReader reader = request.getReader();
-                    jsonParam = IoUtil.read(reader);
-                }
-                log.debug("[PLUS]开始请求 => URL[{}],参数类型[json],参数:[{}]", url, jsonParam);
-            } else {
-                Map<String, String[]> parameterMap = request.getParameterMap();
-                if (MapUtil.isNotEmpty(parameterMap)) {
-                    String parameters = JsonUtils.toJsonString(parameterMap);
-                    log.debug("[PLUS]开始请求 => URL[{}],参数类型[param],参数:[{}]", url, parameters);
-                } else {
-                    log.debug("[PLUS]开始请求 => URL[{}],无参数", url);
-                }
-            }
-
-            StopWatch stopWatch = new StopWatch();
-            invokeTimeTL.set(stopWatch);
-            stopWatch.start();
-        }
-        return true;
-    }
-
-    @Override
-    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
-
-    }
-
-    @Override
-    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
-        if (!prodProfile.equals(SpringUtils.getActiveProfile())) {
-            StopWatch stopWatch = invokeTimeTL.get();
-            stopWatch.stop();
-            log.debug("[PLUS]结束请求 => URL[{}],耗时:[{}]毫秒", request.getMethod() + " " + request.getRequestURI(), stopWatch.getTime());
-            invokeTimeTL.remove();
-        }
-    }
-
-    /**
-     * 判断本次请求的数据类型是否为json
-     *
-     * @param request request
-     * @return boolean
-     */
-    private boolean isJsonRequest(HttpServletRequest request) {
-        String contentType = request.getContentType();
-        if (contentType != null) {
-            return StringUtils.startsWithIgnoreCase(contentType, MediaType.APPLICATION_JSON_VALUE);
-        }
-        return false;
-    }
-
-}

+ 119 - 0
kxmall-framework/src/main/java/com/kxmall/framework/mp/MybatisLogInterceptor.java

@@ -0,0 +1,119 @@
+package com.kxmall.framework.mp;
+
+import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
+import org.apache.ibatis.executor.Executor;
+import org.apache.ibatis.mapping.BoundSql;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.reflection.MetaObject;
+import org.apache.ibatis.reflection.SystemMetaObject;
+import org.apache.ibatis.session.ResultHandler;
+import org.apache.ibatis.session.RowBounds;
+
+import java.sql.SQLException;
+import java.text.DateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+
+public class MybatisLogInterceptor implements InnerInterceptor {
+
+    private final ThreadLocal<Long> startTime = new ThreadLocal<>();
+
+    @Override
+    public void beforeQuery(Executor executor, MappedStatement ms, Object parameter,
+                            RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) {
+        startTime.set(System.currentTimeMillis());
+        String sql = buildSql(boundSql, parameter);
+        System.out.println("==> SQL: " + sql);
+    }
+
+    @Override
+    public boolean willDoQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
+        return InnerInterceptor.super.willDoQuery(executor, ms, parameter, rowBounds, resultHandler, boundSql);
+    }
+
+    public void afterQuery(Executor executor, MappedStatement ms, Object parameter,
+                           RowBounds rowBounds, ResultHandler resultHandler,
+                           BoundSql boundSql, List resultList) {
+        long cost = System.currentTimeMillis() - startTime.get();
+        System.out.println("==> Rows: " + (resultList == null ? 0 : resultList.size()) + " | Cost: " + cost + " ms");
+        startTime.remove();
+    }
+
+    @Override
+    public void beforeUpdate(Executor executor, MappedStatement ms, Object parameter) {
+        startTime.set(System.currentTimeMillis());
+        BoundSql boundSql = ms.getBoundSql(parameter);
+        String sql = buildSql(boundSql, parameter);
+        System.out.println("==> SQL: " + sql);
+    }
+
+    public void afterUpdate(Executor executor, MappedStatement ms, Object parameter, int rowCount) {
+        long cost = System.currentTimeMillis() - startTime.get();
+        System.out.println("==> Rows: " + rowCount + " | Cost: " + cost + " ms");
+        startTime.remove();
+    }
+
+    private String buildSql(BoundSql boundSql, Object parameterObject) {
+        String sql = boundSql.getSql().replaceAll("\\s+", " ");
+        List<Object> params = new ArrayList<>();
+
+        if (boundSql.getParameterMappings() != null) {
+            boundSql.getParameterMappings().forEach(pm -> {
+                String propertyName = pm.getProperty();
+                Object value;
+
+                if (boundSql.hasAdditionalParameter(propertyName)) {
+                    // 处理动态参数(如 foreach 或 wrapper 里的 paramNameValuePairs)
+                    value = boundSql.getAdditionalParameter(propertyName);
+                } else if (parameterObject == null) {
+                    value = null;
+                } else if (parameterObject instanceof Map) {
+                    // 如果是 Map,优先直接取
+                    value = ((Map<?, ?>) parameterObject).get(propertyName);
+                    // 兼容 MP 的 ew.paramNameValuePairs.MPGENVAL1
+                    if (value == null && propertyName.contains(".")) {
+                        try {
+                            MetaObject metaObject = SystemMetaObject.forObject(parameterObject);
+                            value = metaObject.getValue(propertyName);
+                        } catch (Exception ignore) {
+                        }
+                    }
+                } else {
+                    try {
+                        MetaObject metaObject = SystemMetaObject.forObject(parameterObject);
+                        value = metaObject.getValue(propertyName);
+                    } catch (Exception e) {
+                        value = null;
+                    }
+                }
+                params.add(value);
+            });
+        }
+        return formatSql(sql, params);
+    }
+
+
+    private String formatSql(String sql, List<Object> params) {
+        if (params == null || params.isEmpty()) {
+            return sql;
+        }
+        for (Object param : params) {
+            String value;
+            if (param == null) {
+                value = "null";
+            } else if (param instanceof String) {
+                value = "'" + param + "'";
+            } else if (param instanceof Date) {
+                DateFormat df = DateFormat.getDateTimeInstance();
+                value = "'" + df.format((Date) param) + "'";
+            } else {
+                value = param.toString();
+            }
+            sql = sql.replaceFirst("\\?", Matcher.quoteReplacement(value));
+        }
+        return sql;
+    }
+}

+ 27 - 28
kxmall-rider-api/src/main/java/com/kxmall/web/controller/task/service/impl/TaskCenterServiceImpl.java

@@ -83,7 +83,7 @@ public class TaskCenterServiceImpl implements TaskCenterService {
             wrapper.orderByDesc("predict_time");
         }
         PageQuery pageQuery = new PageQuery();
-        pageQuery.setPageNum(page - 1);
+        pageQuery.setPageNum(page);
         pageQuery.setPageSize(limit);
 
         Page<KxRiderOrderVo> riderOrderDOList = riderOrderMapper.selectVoPage(pageQuery.build(), wrapper);
@@ -133,7 +133,7 @@ public class TaskCenterServiceImpl implements TaskCenterService {
                 riderOrderDO.setStatus(RiderOrderStatusType.WORKING.getCode());
                 riderOrderDO.setUpdateTime(new Date());
                 if (riderOrderMapper.updateById(riderOrderDO) > 0) {
-                    orderSnapshotService.addOrderSnapshotByOrderStatus(riderOrderDO.getId(), OrderSnapshotState.WORKING);
+                    orderSnapshotService.addOrderSnapshotByOrderStatus(riderOrderDO.getId(), riderId, OrderSnapshotState.WORKING);
 
                     orderRiderBizService.sendRiderMessageBusiness(riderOrderDO.getOrderNo(), RiderOrderStatusType.WORKING, riderOrderDO.getRiderId(), null);
                     return "ok";
@@ -168,7 +168,7 @@ public class TaskCenterServiceImpl implements TaskCenterService {
                 riderOrderDO.setUpdateTime(new Date());
                 riderOrderDO.setReason(reason);
                 if (riderOrderMapper.updateById(riderOrderDO) > 0) {
-                    orderSnapshotService.addOrderSnapshotByOrderStatus(riderOrderDO.getId(), OrderSnapshotState.ABNORMAL);
+                    orderSnapshotService.addOrderSnapshotByOrderStatus(riderOrderDO.getId(), riderId, OrderSnapshotState.ABNORMAL);
                     orderRiderBizService.sendRiderMessageBusiness(riderOrderDO.getOrderNo(), RiderOrderStatusType.ABNORMAL, riderOrderDO.getRiderId(), reason);
                     return "ok";
                 }
@@ -207,7 +207,7 @@ public class TaskCenterServiceImpl implements TaskCenterService {
                     // if (riderOrderDO.getFreightPrice() != null && riderOrderDO.getFreightPrice().compareTo(BigDecimal.ZERO) > 0) {
                     //     updateRiderWallet(riderOrderDO.getRiderId(), riderOrderDO.getFreightPrice(), riderOrderDO.getOrderNo());
                     // }
-                    orderSnapshotService.addOrderSnapshotByOrderStatus(riderOrderDO.getId(), OrderSnapshotState.COMPLETED);
+                    orderSnapshotService.addOrderSnapshotByOrderStatus(riderOrderDO.getId(), riderId, OrderSnapshotState.COMPLETED);
 
                     KxRider kxRider = new KxRider();
                     kxRider.setId(riderId);
@@ -273,27 +273,25 @@ public class TaskCenterServiceImpl implements TaskCenterService {
 
     @Override
     public RiderOrderStatisticalDTO statistical(Long riderId) throws ServiceException {
-        if (riderId != null) {
-            List<RiderStatisticalDTO> riderStatisticalDTOList = riderOrderMapper.statisticalCount(riderId);
-            if (riderStatisticalDTOList != null && riderStatisticalDTOList.size() > 0) {
-                RiderOrderStatisticalDTO riderOrderStatisticalDTO = new RiderOrderStatisticalDTO();
-                for (RiderStatisticalDTO riderStatisticalDTO : riderStatisticalDTOList) {
-                    if (RiderOrderStatusType.WAITING.getCode().equals(riderStatisticalDTO.getStatus())) {
-                        riderOrderStatisticalDTO.setWaitingCount(riderStatisticalDTO.getCount());
-                    } else if (RiderOrderStatusType.WORKING.getCode().equals(riderStatisticalDTO.getStatus())) {
-                        riderOrderStatisticalDTO.setTimeoutCount(riderStatisticalDTO.getCount());
-                    } else if (RiderOrderStatusType.ABNORMAL.getCode().equals(riderStatisticalDTO.getStatus())) {
-                        riderOrderStatisticalDTO.setAbnormalCount(riderStatisticalDTO.getCount());
-                    } else if (RiderOrderStatusType.COMPLETED.getCode().equals(riderStatisticalDTO.getStatus())) {
-                        riderOrderStatisticalDTO.setCompletedCount(riderStatisticalDTO.getCount());
-                    } else if (RiderOrderStatusType.IN_ROAD.getCode().equals(riderStatisticalDTO.getStatus())) {
-                        riderOrderStatisticalDTO.setDispenseCount(riderStatisticalDTO.getCount());
-                    }
-                }
-                return riderOrderStatisticalDTO;
-            }
-        }
-        return null;
+        RiderOrderStatisticalDTO riderOrderStatisticalDTO = new RiderOrderStatisticalDTO();
+        LambdaQueryWrapper<KxRiderOrder> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(KxRiderOrder::getRiderId, riderId);
+        List<KxRiderOrder> kxRiderOrders = riderOrderMapper.selectList(lqw);
+        Map<Integer, Long> map = kxRiderOrders.stream()
+                .collect(Collectors.groupingBy(KxRiderOrder::getStatus, Collectors.counting()));
+        LambdaQueryWrapper<KxOrderRiderRecommend> orderRiderRecommendLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        orderRiderRecommendLambdaQueryWrapper.eq(KxOrderRiderRecommend::getRiderId, riderId)
+                .eq(KxOrderRiderRecommend::getStatus, OrderRiderRecommendStatusEnum.WAITING.getStatus());
+        Long waitCount = orderRiderRecommendMapper.selectCount(orderRiderRecommendLambdaQueryWrapper);
+
+        riderOrderStatisticalDTO.setWaiting(waitCount.intValue());
+        riderOrderStatisticalDTO.setAllocated(map.getOrDefault(RiderOrderStatusType.ALLOCATED.getCode(), 0L).intValue());
+        riderOrderStatisticalDTO.setInroad(map.getOrDefault(RiderOrderStatusType.IN_ROAD.getCode(), 0L).intValue());
+        riderOrderStatisticalDTO.setWorking(map.getOrDefault(RiderOrderStatusType.WORKING.getCode(), 0L).intValue());
+        riderOrderStatisticalDTO.setCompleted(map.getOrDefault(RiderOrderStatusType.COMPLETED.getCode(), 0L).intValue());
+        riderOrderStatisticalDTO.setAbnormal(map.getOrDefault(RiderOrderStatusType.ABNORMAL.getCode(), 0L).intValue());
+
+        return riderOrderStatisticalDTO;
     }
 
     @Override
@@ -326,7 +324,7 @@ public class TaskCenterServiceImpl implements TaskCenterService {
 
     private List<KxRiderOrderVo> getWaitList(Long riderId, Integer page, Integer limit) {
         PageQuery pageQuery = new PageQuery();
-        pageQuery.setPageNum(page - 1);
+        pageQuery.setPageNum(page);
         pageQuery.setPageSize(limit);
 
         LambdaQueryWrapper<KxOrderRiderRecommend> orderRiderRecommendLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -368,7 +366,7 @@ public class TaskCenterServiceImpl implements TaskCenterService {
 
                     orderRiderBizService.sendRiderMessageBusiness(riderOrderDO.getOrderNo(), RiderOrderStatusType.IN_ROAD, riderOrderDO.getRiderId(), null);
 
-                    orderSnapshotService.addOrderSnapshotByOrderStatus(riderOrderDO.getId(), OrderSnapshotState.IN_ROAD);
+                    orderSnapshotService.addOrderSnapshotByOrderStatus(riderOrderDO.getId(), riderId, OrderSnapshotState.IN_ROAD);
                     return "ok";
                 }
                 throw new ServiceException("配送员订单状态更新异常,请稍后再试");
@@ -396,6 +394,7 @@ public class TaskCenterServiceImpl implements TaskCenterService {
         Lock lock = RedisUtils.lock(RIDER_ORDER_STATUS_LOCK + orderNo);
         try {
             if (lock.tryLock(RIDER_ORDER_LOCK_WAITING_TIME, TimeUnit.SECONDS)) {
+                riderOrderDO.setRiderId(riderId);
                 riderOrderDO.setStatus(RiderOrderStatusType.ALLOCATED.getCode());
                 riderOrderDO.setUpdateTime(new Date());
                 if (riderOrderMapper.updateById(riderOrderDO) > 0) {
@@ -404,7 +403,7 @@ public class TaskCenterServiceImpl implements TaskCenterService {
                     orderRiderRecommendMapper.deleteByOrderNo(orderNo);
                     RedisUtils.delCacheMapValue(CacheConstants.WAIT_DISPATCH_ORDERS, riderOrderDO.getId().toString());
 
-                    orderSnapshotService.addOrderSnapshotByOrderStatus(riderOrderDO.getId(), OrderSnapshotState.WAIT_BEGIN);
+                    orderSnapshotService.addOrderSnapshotByOrderStatus(riderOrderDO.getId(), riderId, OrderSnapshotState.WAIT_BEGIN);
                     return "ok";
                 }
                 throw new ServiceException("配送员订单状态更新异常,请稍后再试");

+ 0 - 114
kxmall-rider-api/src/main/java/com/kxmall/web/controller/websocket/service/impl/CommonRiderNotificationServiceImpl.java

@@ -1,114 +0,0 @@
-package com.kxmall.web.controller.websocket.service.impl;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
-import com.kxmall.common.service.RiderNotificationService;
-import com.kxmall.order.biz.bo.SmartDispatchParamBo;
-import com.kxmall.web.controller.websocket.RiderWebSocketServer;
-import com.kxmall.web.controller.websocket.dto.OrderNotificationDTO;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.Date;
-
-/**
- * 通用骑手通知服务实现类
- * 实现通用模块接口,供其他模块调用
- * 
- * @author kxmall
- * @date 2025-01-08
- */
-@Service
-@Slf4j
-public class CommonRiderNotificationServiceImpl implements RiderNotificationService {
-
-    // @Override
-    // public void sendNewOrderNotification(SmartDispatchParamBo dispatchParam, List<String> riderIds, List<Double> matchScores) {
-    //     if (dispatchParam == null || CollUtil.isEmpty(riderIds)) {
-    //         log.warn("派单参数或骑手ID列表为空,无法发送通知");
-    //         return;
-    //     }
-    //
-    //     // 创建订单通知
-    //     OrderNotificationDTO notification = createOrderNotification(dispatchParam);
-    //
-    //     // 只发送给在线的骑手
-    //     int sentCount = 0;
-    //     for (int i = 0; i < riderIds.size(); i++) {
-    //         String riderId = riderIds.get(i);
-    //         if (isRiderOnline(riderId)) {
-    //             // 设置匹配度分数
-    //             if (matchScores != null && i < matchScores.size()) {
-    //                 notification.setMatchScore(matchScores.get(i));
-    //             }
-    //
-    //             try {
-    //                 RiderWebSocketServer.sendOrderNotification(riderId, notification);
-    //                 sentCount++;
-    //                 log.debug("成功发送订单通知给骑手:{}", riderId);
-    //             } catch (Exception e) {
-    //                 log.error("发送通知给骑手{}失败", riderId, e);
-    //             }
-    //         } else {
-    //             log.debug("骑手{}不在线,跳过通知发送", riderId);
-    //         }
-    //     }
-    //
-    //     log.info("订单{}成功发送通知给{}个在线骑手", dispatchParam.getOrderNo(), sentCount);
-    // }
-
-    @Override
-    public void sendOrderCancelNotification(String orderNo, String riderId) {
-        if (StrUtil.isBlank(orderNo) || StrUtil.isBlank(riderId)) {
-            log.warn("订单号或骑手ID为空");
-            return;
-        }
-
-        OrderNotificationDTO notification = new OrderNotificationDTO();
-        notification.setType(OrderNotificationDTO.Type.ORDER_CANCEL);
-        notification.setOrderNo(orderNo);
-        notification.setCreateTime(new Date());
-        notification.setRemark("订单已取消");
-
-        try {
-            RiderWebSocketServer.sendOrderNotification(riderId, notification);
-            log.info("发送订单{}取消通知给骑手{}", orderNo, riderId);
-        } catch (Exception e) {
-            log.error("发送订单取消通知失败", e);
-        }
-    }
-
-    @Override
-    public boolean isRiderOnline(String riderId) {
-        return RiderWebSocketServer.isRiderOnline(riderId);
-    }
-
-    /**
-     * 创建订单通知对象
-     */
-    private OrderNotificationDTO createOrderNotification(SmartDispatchParamBo dispatchParam) {
-        OrderNotificationDTO notification = new OrderNotificationDTO();
-        // notification.setType(OrderNotificationDTO.Type.NEW_ORDER);
-        // notification.setOrderId(dispatchParam.getOrderId());
-        // notification.setOrderNo(dispatchParam.getOrderNo());
-        // notification.setStoreName(dispatchParam.getStoreName());
-        // notification.setFreightPrice(dispatchParam.getFreightPrice());
-        // notification.setTotalAmount(dispatchParam.getTotalAmount());
-        // notification.setConsignee(dispatchParam.getConsignee());
-        // notification.setPhone(dispatchParam.getPhone());
-        // notification.setAddress(dispatchParam.getAddress());
-        // notification.setLongitude(dispatchParam.getLongitude());
-        // notification.setLatitude(dispatchParam.getLatitude());
-        // notification.setPredictTime(dispatchParam.getPredictTime());
-        // notification.setUrgencyLevel(dispatchParam.getUrgencyLevel());
-        // notification.setCreateTime(new Date());
-        // notification.setRemark(dispatchParam.getRemark());
-        
-        // 服务关键词转换为字符串
-        if (CollUtil.isNotEmpty(dispatchParam.getServiceKeywords())) {
-            notification.setServiceKeywords(String.join(",", dispatchParam.getServiceKeywords()));
-        }
-
-        return notification;
-    }
-}

+ 14 - 26
kxmall-system/src/main/java/com/kxmall/order/biz/KxOrderSnapshotService.java

@@ -4,7 +4,6 @@ import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.kxmall.common.enums.OrderSnapshotState;
 import com.kxmall.order.domain.KxOrderSnapshot;
-import com.kxmall.order.domain.bo.KxOrderSnapshotBo;
 import com.kxmall.order.domain.vo.KxOrderSnapshotVo;
 import com.kxmall.order.mapper.KxOrderSnapshotMapper;
 import lombok.RequiredArgsConstructor;
@@ -27,25 +26,25 @@ public class KxOrderSnapshotService {
     private final KxOrderSnapshotMapper mapper;
 
 
-    public boolean initOrderSnapshot(KxOrderSnapshotBo bo) {
-        KxOrderSnapshot kxOrderSnapshot = BeanUtil.toBean(bo, KxOrderSnapshot.class);
-        return mapper.insert(kxOrderSnapshot) > 0;
-    }
-
-
-    public boolean addOrderSnapshotByOrderStatus(Long orderId, OrderSnapshotState orderStatus) {
-        return addOrderSnapshotByOrderStatus(orderId, orderStatus, null, null);
+    public boolean addOrderSnapshotByOrderStatus(Long orderId, Long riderId, OrderSnapshotState orderStatus) {
+        return addOrderSnapshotByOrderStatus(orderId, riderId, orderStatus, null, null);
     }
 
-
-    public boolean addOrderSnapshotByOrderStatus(Long orderId, OrderSnapshotState orderStatus, String exceptionReason) {
-        return addOrderSnapshotByOrderStatus(orderId, orderStatus, exceptionReason, null);
+    public boolean addOrderSnapshotByOrderStatus(Long orderId, Long riderId, OrderSnapshotState orderStatus, String exceptionReason) {
+        return addOrderSnapshotByOrderStatus(orderId, riderId, orderStatus, exceptionReason, null);
     }
 
+    public boolean addOrderSnapshotByOrderStatus(Long orderId, Long riderId, OrderSnapshotState orderStatus, String exceptionReason, String remark) {
+        KxOrderSnapshot kxOrderSnapshot = new KxOrderSnapshot();
+        kxOrderSnapshot.setOrderId(orderId);
+        kxOrderSnapshot.setRiderId(riderId);
+        kxOrderSnapshot.setOrderStatus(orderStatus.getState());
+        kxOrderSnapshot.setExceptionReason(exceptionReason);
+        kxOrderSnapshot.setRemark(remark);
+        kxOrderSnapshot.setSnapshotTime(LocalDateTime.now());
+        kxOrderSnapshot.setSnapshotType((byte) 1);
 
-    public boolean addOrderSnapshotByOrderStatus(Long orderId, OrderSnapshotState orderStatus, String exceptionReason, String remark) {
-        KxOrderSnapshot snapshot = convert(orderId, orderStatus, exceptionReason, remark);
-        return mapper.insert(snapshot) > 0;
+        return mapper.insert(kxOrderSnapshot) > 0;
     }
 
 
@@ -70,15 +69,4 @@ public class KxOrderSnapshotService {
         return BeanUtil.copyToList(mapper.selectList(lqw), KxOrderSnapshotVo.class);
     }
 
-    private KxOrderSnapshot convert(Long orderId, OrderSnapshotState orderStatus, String exceptionReason, String remark) {
-        KxOrderSnapshot kxOrderSnapshot = new KxOrderSnapshot();
-        kxOrderSnapshot.setOrderId(orderId);
-        kxOrderSnapshot.setOrderStatus(orderStatus.getState());
-        kxOrderSnapshot.setExceptionReason(exceptionReason);
-        kxOrderSnapshot.setRemark(remark);
-        kxOrderSnapshot.setSnapshotTime(LocalDateTime.now());
-        kxOrderSnapshot.setSnapshotType((byte) 1);
-        return kxOrderSnapshot;
-    }
-
 }

+ 30 - 5
kxmall-system/src/main/java/com/kxmall/rider/domain/vo/RiderOrderStatisticalDTO.java

@@ -12,10 +12,35 @@ import java.io.Serializable;
 @Data
 public class RiderOrderStatisticalDTO implements Serializable {
 
-    private Integer waitingCount;
-    private Integer dispenseCount;
-    private Integer timeoutCount;
-    private Integer abnormalCount;
-    private Integer completedCount;
+    private static final long serialVersionUID = -973452368485950821L;
 
+    /**
+     * 待配货
+     */
+    private Integer waiting;
+
+    /**
+     * 已接单
+     */
+    private Integer allocated;
+
+    /**
+     * 出发
+     */
+    private Integer inroad;
+
+    /**
+     * 服务中
+     */
+    private Integer working;
+
+    /**
+     * 完成
+     */
+    private Integer completed;
+
+    /**
+     * 异常
+     */
+    private Integer abnormal;
 }

+ 1 - 7
kxmall-system/src/main/java/com/kxmall/rider/mapper/KxRiderOrderMapper.java

@@ -8,7 +8,6 @@ import com.kxmall.common.enums.RiderOrderStatusType;
 import com.kxmall.rider.domain.KxRiderOrder;
 import com.kxmall.rider.domain.bo.ConflictTimeRiderBo;
 import com.kxmall.rider.domain.vo.KxRiderOrderVo;
-import com.kxmall.rider.domain.vo.RiderStatisticalDTO;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
@@ -34,16 +33,10 @@ public interface KxRiderOrderMapper extends BaseMapperPlus<KxRiderOrderMapper, K
 
     int updateRiderOrderListStatus(@Param("orderNoList") List<String> orderNoList, @Param("status") Integer status);
 
-    List<RiderStatisticalDTO> statisticalCount(@Param("riderId") Long riderId);
-
     BigDecimal selectSumIncome(@Param("riderId") Long riderId);
 
     /**
      * 查询师傅在指定时间范围内的已接订单
-     * 
-     * @param riderId 师傅ID
-     * @param startTime 开始时间
-     * @param endTime 结束时间
      * @return 师傅已接订单列表
      */
     List<ConflictTimeRiderBo> selectRiderOrdersByTimeRange(@Param("predictDate") LocalDateTime predictDate);
@@ -51,4 +44,5 @@ public interface KxRiderOrderMapper extends BaseMapperPlus<KxRiderOrderMapper, K
     Page<KxRiderOrderVo> selectVoPageList(@Param("page") Page<Object> build, @Param(Constants.WRAPPER) Wrapper<KxRiderOrder> kxRiderOrderWrapper);
 
     List<KxRiderOrder> selectFinishedOrderListByLastDay(@Param("status")RiderOrderStatusType status, @Param("time") LocalDateTime time);
+
 }

+ 0 - 4
kxmall-system/src/main/resources/mapper/rider/KxRiderOrderMapper.xml

@@ -30,10 +30,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         WHERE order_no=#{orderNo}
     </update>
 
-    <select id="statisticalCount" resultType="com.kxmall.rider.domain.vo.RiderStatisticalDTO">
-        select count(1) as count ,status  from kx_rider_order WHERE rider_id=#{riderId} GROUP  BY rider_id,status
-    </select>
-
 
     <select id="selectExpireOrderNos" resultType="java.lang.String">
         SELECT

+ 5 - 5
pom.xml

@@ -206,11 +206,11 @@
             </dependency>
 
             <!-- sql性能分析插件 -->
-            <dependency>
-                <groupId>p6spy</groupId>
-                <artifactId>p6spy</artifactId>
-                <version>${p6spy.version}</version>
-            </dependency>
+            <!-- <dependency> -->
+            <!--     <groupId>p6spy</groupId> -->
+            <!--     <artifactId>p6spy</artifactId> -->
+            <!--     <version>${p6spy.version}</version> -->
+            <!-- </dependency> -->
 
             <dependency>
                 <groupId>com.squareup.okhttp3</groupId>