Bläddra i källkod

fix: 统一 Long 精度处理方案,修复 miniapp 分页序列化问题

- haha-miniapp JacksonConfig 移除 Long.TYPE 注册,避免分页基本类型 long 字段
  (total/pageSize 等) 被错误序列化为字符串导致前端分页异常
- 回退 QueryDTO.shopId/creatorId → Long (全局 JacksonConfig 已处理 Long.class)
- 移除 ReplenishmentSuggestionVO 冗余 @JsonSerialize 注解
- PageResult 清理未使用的 Jackson import

Co-Authored-By: Claude <noreply@anthropic.com>
skyline 2 dagar sedan
förälder
incheckning
ff8dec8e7f

+ 0 - 3
haha-common/src/main/java/com/haha/common/vo/PageResult.java

@@ -1,9 +1,6 @@
 package com.haha.common.vo;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import lombok.Data;
 
 import java.io.Serializable;

+ 4 - 7
haha-entity/src/main/java/com/haha/entity/dto/ReplenishmentOrderQueryDTO.java

@@ -5,9 +5,6 @@ import lombok.EqualsAndHashCode;
 
 /**
  * 补货单查询DTO
- *
- * 注意:shopId/creatorId 使用 String 类型而非 Long,
- * 避免前端 JS 传递雪花ID时因 Number 精度丢失导致查询条件错误。
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -24,9 +21,9 @@ public class ReplenishmentOrderQueryDTO extends PageQueryDTO {
     private String deviceId;
 
     /**
-     * 门店ID(前端传 String 避免 Long 精度丢失)
+     * 门店ID
      */
-    private String shopId;
+    private Long shopId;
 
     /**
      * 状态
@@ -44,7 +41,7 @@ public class ReplenishmentOrderQueryDTO extends PageQueryDTO {
     private String endTime;
 
     /**
-     * 创建人ID(前端传 String 避免 Long 精度丢失)
+     * 创建人ID
      */
-    private String creatorId;
+    private Long creatorId;
 }

+ 0 - 8
haha-entity/src/main/java/com/haha/entity/dto/ReplenishmentSuggestionVO.java

@@ -1,7 +1,5 @@
 package com.haha.entity.dto;
 
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import lombok.Data;
 
 import java.math.BigDecimal;
@@ -16,19 +14,13 @@ public class ReplenishmentSuggestionVO {
 
     private String deviceId;
     private String deviceName;
-
-    @JsonSerialize(using = ToStringSerializer.class)
     private Long shopId;
-
     private String shopName;
     private List<SuggestionItem> items;
 
     @Data
     public static class SuggestionItem {
-
-        @JsonSerialize(using = ToStringSerializer.class)
         private Long productId;
-
         private String productCode;
         private String productName;
         private String productImage;

+ 2 - 2
haha-miniapp/src/main/java/com/haha/miniapp/config/JacksonConfig.java

@@ -49,9 +49,9 @@ public class JacksonConfig implements WebMvcConfigurer {
         ObjectMapper mapper = new ObjectMapper();
         
         // 注册Long类型转String序列化模块,避免前端精度丢失
-        SimpleModule longModule = new SimpleModule();
+        // 注意:不处理基本类型 long,分页字段(total/pageSize等)需要保持数字类型
+        SimpleModule longModule = new SimpleModule("LongToStringModule");
         longModule.addSerializer(Long.class, ToStringSerializer.instance);
-        longModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
         mapper.registerModule(longModule);
         
         JavaTimeModule javaTimeModule = new JavaTimeModule();

+ 4 - 4
haha-service/src/main/java/com/haha/service/impl/ReplenishmentOrderServiceImpl.java

@@ -64,14 +64,14 @@ public class ReplenishmentOrderServiceImpl extends ServiceImpl<ReplenishmentOrde
         if (StringUtils.hasText(queryDTO.getDeviceId())) {
             wrapper.eq(ReplenishmentOrder::getDeviceId, queryDTO.getDeviceId());
         }
-        if (StringUtils.hasText(queryDTO.getShopId())) {
-            wrapper.eq(ReplenishmentOrder::getShopId, Long.parseLong(queryDTO.getShopId()));
+        if (queryDTO.getShopId() != null) {
+            wrapper.eq(ReplenishmentOrder::getShopId, queryDTO.getShopId());
         }
         if (queryDTO.getStatus() != null) {
             wrapper.eq(ReplenishmentOrder::getStatus, queryDTO.getStatus());
         }
-        if (StringUtils.hasText(queryDTO.getCreatorId())) {
-            wrapper.eq(ReplenishmentOrder::getCreatorId, Long.parseLong(queryDTO.getCreatorId()));
+        if (queryDTO.getCreatorId() != null) {
+            wrapper.eq(ReplenishmentOrder::getCreatorId, queryDTO.getCreatorId());
         }
         if (StringUtils.hasText(queryDTO.getStartTime())) {
             wrapper.ge(ReplenishmentOrder::getCreateTime,