diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index b4dad81..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,4 +0,0 @@ -### 1.0.0 - -*2019-07-02* - diff --git a/pom.xml b/pom.xml index 21d7d6b..a537201 100644 --- a/pom.xml +++ b/pom.xml @@ -21,8 +21,8 @@ 0.0.1-SNAPSHOT UTF-8 UTF-8 - 3.12.0 - 3.4.7 + 3.15.0 + 4.0.3 17 33.4.0-jre 5.8.35 @@ -31,18 +31,15 @@ 7.12.1 4.3.9 1.1.0 - 3.5.10.1 - 3.44.0 + 3.5.16 + 4.3.0 2.14.5 2.19.0 4.5.0 2.4.2 - 4.2.0 1.44.0 - 1.2.83 - 3.0.3 - 2.8.4 + 3.0.2 @@ -54,11 +51,6 @@ pom import - - org.mybatis - mybatis-spring - ${mybatis-spring.version} - com.aliyun aliyun-java-sdk-core @@ -127,11 +119,6 @@ xxl-job-core ${xxl-job.version} - - org.springframework.cloud - spring-cloud-commons - ${spring-cloud-commons.version} - @@ -148,7 +135,7 @@ org.springframework.boot - spring-boot-starter-web + spring-boot-starter-webmvc com.github.xiaoymin diff --git a/yami-shop-admin/pom.xml b/yami-shop-admin/pom.xml index 2182d71..2a7ce33 100644 --- a/yami-shop-admin/pom.xml +++ b/yami-shop-admin/pom.xml @@ -35,10 +35,6 @@ com.xuxueli xxl-job-core - - org.springframework.cloud - spring-cloud-commons - diff --git a/yami-shop-admin/src/main/java/com/yami/shop/admin/config/XxlJobConfig.java b/yami-shop-admin/src/main/java/com/yami/shop/admin/config/XxlJobConfig.java index 17452fa..fd3f3a7 100644 --- a/yami-shop-admin/src/main/java/com/yami/shop/admin/config/XxlJobConfig.java +++ b/yami-shop-admin/src/main/java/com/yami/shop/admin/config/XxlJobConfig.java @@ -9,12 +9,12 @@ */ package com.yami.shop.admin.config; +import cn.hutool.core.util.StrUtil; import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; +import com.yami.shop.common.util.IpHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.cloud.commons.util.InetUtils; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -43,8 +43,8 @@ public class XxlJobConfig { @Value("${server.port}") private int port; - @Autowired - private InetUtils inetUtils; + @Value("${xxl-job.local.ip:}") + private String localIp; // @Bean // public XxlJobSpringExecutor xxlJobExecutor() { @@ -52,13 +52,16 @@ public class XxlJobConfig { // logger.info(">>>>>>>>>>> xxl-job config init."); // XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); // xxlJobSpringExecutor.setAdminAddresses(adminAddresses); -// xxlJobSpringExecutor.setAppname("mall4j"); -// // 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP -// xxlJobSpringExecutor.setIp(inetUtils.findFirstNonLoopbackAddress().getHostAddress()); +// xxlJobSpringExecutor.setAppname("mall4j-bbc"); +// if (StrUtil.isNotBlank(localIp)) { +// xxlJobSpringExecutor.setIp(localIp); +// } else { +// xxlJobSpringExecutor.setIp(IpHelper.getLocalIp()); +// } // xxlJobSpringExecutor.setPort(port + 1000); // xxlJobSpringExecutor.setAccessToken(accessToken); // xxlJobSpringExecutor.setLogPath(logPath); -// xxlJobSpringExecutor.setLogRetentionDays(3); +// xxlJobSpringExecutor.setLogRetentionDays(7); // return xxlJobSpringExecutor; // } diff --git a/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/OrderController.java b/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/OrderController.java index b150acb..73263f7 100644 --- a/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/OrderController.java +++ b/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/OrderController.java @@ -256,8 +256,8 @@ public class OrderController { * 如果需要合并的话,就合并 */ private void mergeIfNeed(ExcelWriter writer, int firstRow, int lastRow, int firstColumn, int lastColumn, Object content) { - if (content instanceof Date) { - content = DateUtil.format((Date) content, DatePattern.NORM_DATETIME_PATTERN); + if (content instanceof Date date) { + content = DateUtil.format(date, DatePattern.NORM_DATETIME_PATTERN); } if (lastRow - firstRow > 0 || lastColumn - firstColumn > 0) { writer.merge(firstRow, lastRow, firstColumn, lastColumn, content, false); diff --git a/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/ProdCommController.java b/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/ProdCommController.java index 9f0846d..714628b 100644 --- a/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/ProdCommController.java +++ b/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/ProdCommController.java @@ -10,8 +10,8 @@ package com.yami.shop.admin.controller; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.ObjectMapper; import com.yami.shop.bean.model.ProdComm; import com.yami.shop.common.annotation.SysLog; import com.yami.shop.common.util.Json; diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/BasketItemDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/BasketItemDto.java index fe1b62e..e62591f 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/BasketItemDto.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/BasketItemDto.java @@ -11,7 +11,7 @@ package com.yami.shop.bean.app.dto; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonSerialize; import com.yami.shop.common.serializer.json.ImgJsonSerializer; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/CategoryDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/CategoryDto.java index 1880f55..c441bb7 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/CategoryDto.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/CategoryDto.java @@ -10,7 +10,7 @@ package com.yami.shop.bean.app.dto; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonSerialize; import com.yami.shop.common.serializer.json.ImgJsonSerializer; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/IndexImgDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/IndexImgDto.java index 5653163..dc71c56 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/IndexImgDto.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/IndexImgDto.java @@ -10,7 +10,7 @@ package com.yami.shop.bean.app.dto; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonSerialize; import com.yami.shop.common.serializer.json.ImgJsonSerializer; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/MyOrderItemDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/MyOrderItemDto.java index a4a5e8d..004a2e0 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/MyOrderItemDto.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/MyOrderItemDto.java @@ -10,7 +10,7 @@ package com.yami.shop.bean.app.dto; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonSerialize; import com.yami.shop.common.serializer.json.ImgJsonSerializer; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProdCommDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProdCommDto.java index 63bbbb2..2ace498 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProdCommDto.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProdCommDto.java @@ -11,7 +11,7 @@ package com.yami.shop.bean.app.dto; import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonSerialize; import com.yami.shop.common.serializer.json.ImgJsonSerializer; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProductDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProductDto.java index 25aaf63..da576c4 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProductDto.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProductDto.java @@ -10,7 +10,7 @@ package com.yami.shop.bean.app.dto; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonSerialize; import com.yami.shop.bean.model.Transport; import com.yami.shop.common.serializer.json.ImgJsonSerializer; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProductItemDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProductItemDto.java index 6a56d8e..ba6866b 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProductItemDto.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProductItemDto.java @@ -11,7 +11,7 @@ package com.yami.shop.bean.app.dto; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonSerialize; import com.yami.shop.common.serializer.json.ImgJsonSerializer; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ShopCartItemDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ShopCartItemDto.java index b5a5905..882ba46 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ShopCartItemDto.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ShopCartItemDto.java @@ -10,12 +10,13 @@ package com.yami.shop.bean.app.dto; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonSerialize; import com.yami.shop.common.serializer.json.ImgJsonSerializer; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; +import java.io.Serial; import java.io.Serializable; import java.util.ArrayList; import java.util.Date; @@ -27,6 +28,7 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = false) public class ShopCartItemDto extends ProductItemDto implements Serializable { + @Serial private static final long serialVersionUID = -8284981156242930909L; @Schema(description = "购物车ID" ,requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/SkuDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/SkuDto.java index cacb1ca..10f8dde 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/SkuDto.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/SkuDto.java @@ -10,11 +10,12 @@ package com.yami.shop.bean.app.dto; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonSerialize; import com.yami.shop.common.serializer.json.ImgJsonSerializer; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.io.Serial; import java.io.Serializable; /** @@ -23,6 +24,7 @@ import java.io.Serializable; @Data public class SkuDto implements Serializable { + @Serial private static final long serialVersionUID = 6457261945829470666L; @Schema(description = "skuId" ,requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/dto/SearchProdDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/dto/SearchProdDto.java index 7b561cb..e8b4973 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/dto/SearchProdDto.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/dto/SearchProdDto.java @@ -10,7 +10,7 @@ package com.yami.shop.bean.dto; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonSerialize; import com.yami.shop.common.serializer.json.ImgJsonSerializer; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Area.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Area.java index 03ac76a..0726d4f 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Area.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Area.java @@ -16,6 +16,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.io.Serial; import java.io.Serializable; import java.util.List; @@ -25,6 +26,7 @@ import java.util.List; @Data @TableName("tz_area") public class Area implements Serializable { + @Serial private static final long serialVersionUID = -6013320537436191451L; @TableId @Schema(description = "地区id" ,requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Category.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Category.java index 66df464..e447f60 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Category.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Category.java @@ -13,7 +13,7 @@ package com.yami.shop.bean.model; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonSerialize; import com.yami.shop.common.serializer.json.ImgJsonSerializer; import lombok.Data; diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/IndexImg.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/IndexImg.java index cde109e..07e534d 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/IndexImg.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/IndexImg.java @@ -13,10 +13,11 @@ package com.yami.shop.bean.model; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonSerialize; import com.yami.shop.common.serializer.json.ImgJsonSerializer; import lombok.Data; +import java.io.Serial; import java.io.Serializable; import java.util.Date; @@ -26,6 +27,7 @@ import java.util.Date; @Data @TableName("tz_index_img") public class IndexImg implements Serializable { + @Serial private static final long serialVersionUID = -3468251351681518798L; /** * 主键 diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Notice.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Notice.java index dbb4a1a..ae2eeec 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Notice.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Notice.java @@ -16,6 +16,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; +import java.io.Serial; import java.io.Serializable; import java.util.Date; @@ -28,6 +29,7 @@ import java.util.Date; @Data @TableName("tz_notice") public class Notice implements Serializable { + @Serial private static final long serialVersionUID = 1L; /** diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Order.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Order.java index 41d2957..7e371e7 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Order.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Order.java @@ -16,6 +16,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; +import java.io.Serial; import java.io.Serializable; import java.util.Date; import java.util.List; @@ -26,6 +27,7 @@ import java.util.List; @Data @TableName("tz_order") public class Order implements Serializable { + @Serial private static final long serialVersionUID = 6222259729062826852L; /** * 订单ID diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/OrderItem.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/OrderItem.java index 0cdf2ba..3565c81 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/OrderItem.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/OrderItem.java @@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import java.io.Serial; import java.io.Serializable; import java.util.Date; @@ -25,6 +26,7 @@ import java.util.Date; @TableName("tz_order_item") public class OrderItem implements Serializable { + @Serial private static final long serialVersionUID = 7307405761190788407L; /** * 订单项ID diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdComm.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdComm.java index 1447051..d40e8d6 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdComm.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdComm.java @@ -14,13 +14,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonSerialize; import com.yami.shop.bean.vo.UserVO; import com.yami.shop.common.serializer.json.ImgJsonSerializer; import lombok.Data; import lombok.EqualsAndHashCode; import org.springframework.format.annotation.DateTimeFormat; +import java.io.Serial; import java.io.Serializable; import java.util.Date; import java.util.List; @@ -35,6 +36,7 @@ import java.util.List; @TableName("tz_prod_comm") @EqualsAndHashCode public class ProdComm implements Serializable{ + @Serial private static final long serialVersionUID = 1L; /** diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdProp.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdProp.java index 63e2122..161748d 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdProp.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdProp.java @@ -17,6 +17,8 @@ import lombok.Data; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; + +import java.io.Serial; import java.io.Serializable; import java.util.List; @@ -26,6 +28,7 @@ import java.util.List; @Data @TableName("tz_prod_prop") public class ProdProp implements Serializable { + @Serial private static final long serialVersionUID = -8761177918672000191L; /** diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdPropValue.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdPropValue.java index 6974da6..00c0d78 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdPropValue.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdPropValue.java @@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import java.io.Serial; import java.io.Serializable; /** @@ -23,9 +24,10 @@ import java.io.Serializable; @TableName("tz_prod_prop_value") public class ProdPropValue implements Serializable{ /** - * - */ - private static final long serialVersionUID = 6604406039354172708L; + * + */ + @Serial + private static final long serialVersionUID = 6604406039354172708L; /** * 属性值ID diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdTag.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdTag.java index a0b93ec..b48139d 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdTag.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdTag.java @@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; +import java.io.Serial; import java.io.Serializable; import java.util.Date; @@ -28,6 +29,7 @@ import java.util.Date; @TableName("tz_prod_tag") public class ProdTag implements Serializable { + @Serial private static final long serialVersionUID = 1991508792679311621L; /** * 分组标签id diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdTagReference.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdTagReference.java index 4cb1ad0..bf355ac 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdTagReference.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdTagReference.java @@ -14,6 +14,8 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; + +import java.io.Serial; import java.io.Serializable; import java.util.Date; @@ -26,6 +28,7 @@ import java.util.Date; @Data @TableName("tz_prod_tag_reference") public class ProdTagReference implements Serializable{ + @Serial private static final long serialVersionUID = 1L; /** diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Product.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Product.java index ed42d17..da63cd2 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Product.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Product.java @@ -11,10 +11,11 @@ package com.yami.shop.bean.model; import com.baomidou.mybatisplus.annotation.*; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonSerialize; import com.yami.shop.common.serializer.json.ImgJsonSerializer; import lombok.Data; +import java.io.Serial; import java.io.Serializable; import java.util.Date; import java.util.List; @@ -26,6 +27,7 @@ import java.util.List; @TableName("tz_prod") public class Product implements Serializable { + @Serial private static final long serialVersionUID = -4644407386444894349L; /** * 商品ID diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ShopDetail.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ShopDetail.java index eb42df7..9d47b37 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ShopDetail.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/ShopDetail.java @@ -10,6 +10,7 @@ package com.yami.shop.bean.model; +import java.io.Serial; import java.io.Serializable; import java.util.Date; import com.baomidou.mybatisplus.annotation.*; @@ -21,6 +22,7 @@ import lombok.Data; @Data @TableName("tz_shop_detail") public class ShopDetail implements Serializable{ + @Serial private static final long serialVersionUID = 3300529542917772262L; /** * 店铺id diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/TranscityFree.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/TranscityFree.java index cb101ee..ff1daa2 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/TranscityFree.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/TranscityFree.java @@ -13,6 +13,7 @@ package com.yami.shop.bean.model; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; +import java.io.Serial; import java.io.Serializable; /** @@ -21,6 +22,7 @@ import java.io.Serializable; @Data @TableName("tz_transcity_free") public class TranscityFree implements Serializable { + @Serial private static final long serialVersionUID = 2579465286635831076L; /** * 指定条件包邮城市项id diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Transfee.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Transfee.java index d266c75..25116d9 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Transfee.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Transfee.java @@ -16,14 +16,17 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.io.Serial; import java.io.Serializable; import java.util.List; + /** * @author lanhai */ @Data @TableName("tz_transfee") public class Transfee implements Serializable { + @Serial private static final long serialVersionUID = 8039640964056626028L; /** * 运费项id diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/TransfeeFree.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/TransfeeFree.java index a926e26..cfd6442 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/TransfeeFree.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/TransfeeFree.java @@ -16,14 +16,17 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.io.Serial; import java.io.Serializable; import java.util.List; + /** * @author lanhai */ @Data @TableName("tz_transfee_free") public class TransfeeFree implements Serializable { + @Serial private static final long serialVersionUID = -2811714952219888223L; /** * 指定条件包邮项id diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Transport.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Transport.java index 53f78d9..12f209c 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Transport.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Transport.java @@ -10,6 +10,7 @@ package com.yami.shop.bean.model; +import java.io.Serial; import java.io.Serializable; import java.util.Date; import java.util.List; @@ -22,12 +23,14 @@ import org.springframework.format.annotation.DateTimeFormat; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; + /** * @author lanhai */ @Data @TableName("tz_transport") public class Transport implements Serializable { + @Serial private static final long serialVersionUID = 1876655654053364580L; /** * 运费模板id diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/User.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/User.java index e72f09c..25edf78 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/User.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/User.java @@ -16,14 +16,17 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; +import java.io.Serial; import java.io.Serializable; import java.util.Date; + /** * @author lanhai */ @Data @TableName("tz_user") public class User implements Serializable { + @Serial private static final long serialVersionUID = 2090714647038636896L; /** * ID diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/UserAddr.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/UserAddr.java index 63a89e9..a7a3e53 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/UserAddr.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/UserAddr.java @@ -17,6 +17,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.springframework.format.annotation.DateTimeFormat; +import java.io.Serial; import java.io.Serializable; import java.util.Date; @@ -30,6 +31,7 @@ import java.util.Date; @TableName("tz_user_addr") @EqualsAndHashCode(callSuper = false) public class UserAddr implements Serializable { + @Serial private static final long serialVersionUID = 1L; /** diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/UserCollection.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/UserCollection.java index 2ac0a17..b9fdd16 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/UserCollection.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/UserCollection.java @@ -14,6 +14,8 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; + +import java.io.Serial; import java.io.Serializable; import java.util.Date; @@ -27,6 +29,7 @@ import java.util.Date; @TableName("tz_user_collection") @EqualsAndHashCode public class UserCollection implements Serializable{ + @Serial private static final long serialVersionUID = 1L; /** diff --git a/yami-shop-common/pom.xml b/yami-shop-common/pom.xml index 1907f4e..b4753fc 100644 --- a/yami-shop-common/pom.xml +++ b/yami-shop-common/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot - spring-boot-starter-aop + spring-boot-starter-aspectj com.google.guava @@ -25,7 +25,7 @@ hutool-all - com.fasterxml.jackson.core + tools.jackson.core jackson-databind @@ -34,7 +34,7 @@ com.baomidou - mybatis-plus-boot-starter + mybatis-plus-spring-boot4-starter com.baomidou diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/config/DefaultExceptionHandlerConfig.java b/yami-shop-common/src/main/java/com/yami/shop/common/config/DefaultExceptionHandlerConfig.java index 841cdf0..c2ad3b5 100644 --- a/yami-shop-common/src/main/java/com/yami/shop/common/config/DefaultExceptionHandlerConfig.java +++ b/yami-shop-common/src/main/java/com/yami/shop/common/config/DefaultExceptionHandlerConfig.java @@ -40,11 +40,11 @@ public class DefaultExceptionHandlerConfig { public ResponseEntity>> methodArgumentNotValidExceptionHandler(Exception e) { log.error("methodArgumentNotValidExceptionHandler", e); List fieldErrors = null; - if (e instanceof MethodArgumentNotValidException) { - fieldErrors = ((MethodArgumentNotValidException) e).getBindingResult().getFieldErrors(); + if (e instanceof MethodArgumentNotValidException exception) { + fieldErrors = exception.getBindingResult().getFieldErrors(); } - if (e instanceof BindException) { - fieldErrors = ((BindException) e).getBindingResult().getFieldErrors(); + if (e instanceof BindException exception) { + fieldErrors = exception.getBindingResult().getFieldErrors(); } if (fieldErrors == null) { return ResponseEntity.status(HttpStatus.OK) diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/config/RedisCacheConfig.java b/yami-shop-common/src/main/java/com/yami/shop/common/config/RedisCacheConfig.java index 34c3df7..0c9228f 100644 --- a/yami-shop-common/src/main/java/com/yami/shop/common/config/RedisCacheConfig.java +++ b/yami-shop-common/src/main/java/com/yami/shop/common/config/RedisCacheConfig.java @@ -10,14 +10,6 @@ package com.yami.shop.common.config; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.MapperFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.json.JsonMapper; -import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; @@ -28,10 +20,14 @@ import org.springframework.data.redis.cache.RedisCacheWriter; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.GenericJacksonJsonRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.MapperFeature; +import tools.jackson.databind.SerializationFeature; +import tools.jackson.databind.cfg.DateTimeFeature; import java.time.Duration; import java.util.HashMap; @@ -99,23 +95,29 @@ public class RedisCacheConfig { */ @Bean public RedisSerializer redisSerializer() { - ObjectMapper objectMapper = JsonMapper.builder().disable(MapperFeature.USE_ANNOTATIONS).build(); - // 反序列化时候遇到不匹配的属性并不抛出异常 - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - // 序列化时候遇到空对象不抛出异常 - objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - // 反序列化的时候如果是无效子类型,不抛出异常 - objectMapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false); - // 不使用默认的dateTime进行序列化, - objectMapper.configure(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS, false); - // 使用JSR310提供的序列化类,里面包含了大量的JDK8时间序列化类 - objectMapper.registerModule(new JavaTimeModule()); - // 启用反序列化所需的类型信息,在属性中添加@class - objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, - JsonTypeInfo.As.PROPERTY); - // 配置null值的序列化器 - GenericJackson2JsonRedisSerializer.registerNullValueSerializer(objectMapper, null); - return new GenericJackson2JsonRedisSerializer(objectMapper); + return GenericJacksonJsonRedisSerializer.builder() + // 尽量兼容旧 GenericJackson2JsonRedisSerializer 的 @class 结构 + .typePropertyName("@class") + // 兼容旧系统:保留宽松 default typing + .enableUnsafeDefaultTyping() + // 兼容 Spring Cache 的 NullValue + .enableSpringCacheNullValueSupport("@class") + .customize(mapper -> mapper + .disable(MapperFeature.USE_ANNOTATIONS) + + // 1. 反序列化遇到未知属性不报错 + .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + + // 2. 序列化空对象不报错 + .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS) + + // 3. 无效子类型不报错 + .disable(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE) + + // 4. 不把日期 key 写成时间戳 + .disable(DateTimeFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS) + ) + .build(); } diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/exception/YamiShopBindException.java b/yami-shop-common/src/main/java/com/yami/shop/common/exception/YamiShopBindException.java index c5f62ec..8315904 100644 --- a/yami-shop-common/src/main/java/com/yami/shop/common/exception/YamiShopBindException.java +++ b/yami-shop-common/src/main/java/com/yami/shop/common/exception/YamiShopBindException.java @@ -14,16 +14,19 @@ import com.yami.shop.common.response.ResponseEnum; import com.yami.shop.common.response.ServerResponseEntity; import lombok.Getter; +import java.io.Serial; + /** * @author lanhai */ @Getter public class YamiShopBindException extends RuntimeException{ - /** - * - */ - private static final long serialVersionUID = -4137688758944857209L; + /** + * + */ + @Serial + private static final long serialVersionUID = -4137688758944857209L; /** * http状态码 diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/handler/HttpHandler.java b/yami-shop-common/src/main/java/com/yami/shop/common/handler/HttpHandler.java index ff19f1b..2f07db0 100644 --- a/yami-shop-common/src/main/java/com/yami/shop/common/handler/HttpHandler.java +++ b/yami-shop-common/src/main/java/com/yami/shop/common/handler/HttpHandler.java @@ -1,11 +1,13 @@ package com.yami.shop.common.handler; import cn.hutool.core.util.CharsetUtil; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import com.yami.shop.common.exception.YamiShopBindException; import com.yami.shop.common.response.ServerResponseEntity; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; @@ -54,7 +56,7 @@ public class HttpHandler { printWriter = response.getWriter(); printWriter.write(objectMapper.writeValueAsString(serverResponseEntity)); } - catch (IOException e) { + catch (JacksonException | IOException e) { throw new YamiShopBindException("io 异常", e); } } diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/serializer/json/ImgJsonSerializer.java b/yami-shop-common/src/main/java/com/yami/shop/common/serializer/json/ImgJsonSerializer.java index 7e82453..3ff63ed 100644 --- a/yami-shop-common/src/main/java/com/yami/shop/common/serializer/json/ImgJsonSerializer.java +++ b/yami-shop-common/src/main/java/com/yami/shop/common/serializer/json/ImgJsonSerializer.java @@ -11,11 +11,12 @@ package com.yami.shop.common.serializer.json; import cn.hutool.core.util.StrUtil; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; +import tools.jackson.core.JsonGenerator; import com.yami.shop.common.bean.Qiniu; import com.yami.shop.common.util.ImgUploadUtil; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ValueSerializer; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -28,7 +29,7 @@ import java.util.regex.Pattern; * @author lanhai */ @Component -public class ImgJsonSerializer extends JsonSerializer { +public class ImgJsonSerializer extends ValueSerializer { @Autowired private Qiniu qiniu; @@ -36,7 +37,7 @@ public class ImgJsonSerializer extends JsonSerializer { private ImgUploadUtil imgUploadUtil; @Override - public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + public void serialize(String value, JsonGenerator gen, SerializationContext serializers) { if (StrUtil.isBlank(value)) { gen.writeString(StrUtil.EMPTY); return; diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/util/IpHelper.java b/yami-shop-common/src/main/java/com/yami/shop/common/util/IpHelper.java index d8e1e67..af08816 100644 --- a/yami-shop-common/src/main/java/com/yami/shop/common/util/IpHelper.java +++ b/yami-shop-common/src/main/java/com/yami/shop/common/util/IpHelper.java @@ -12,6 +12,11 @@ package com.yami.shop.common.util; import jakarta.servlet.http.HttpServletRequest; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.util.Enumeration; + /** * IP帮助工具 * @author lanhai @@ -43,5 +48,26 @@ public class IpHelper { return ips[0].trim(); } - + /** + * 获取本地IP + * @return + */ + public static String getLocalIp() { + try { + Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces(); + while (networkInterfaces.hasMoreElements()) { + NetworkInterface networkInterface = networkInterfaces.nextElement(); + Enumeration inetAddresses = networkInterface.getInetAddresses(); + while (inetAddresses.hasMoreElements()) { + InetAddress inetAddress = inetAddresses.nextElement(); + if (inetAddress.isSiteLocalAddress() && !inetAddress.isLoopbackAddress() && inetAddress.getHostAddress().indexOf(":") == -1) { + return inetAddress.getHostAddress(); + } + } + } + } catch (SocketException e) { + e.printStackTrace(); + } + return "127.0.0.1"; + } } diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/util/Json.java b/yami-shop-common/src/main/java/com/yami/shop/common/util/Json.java index fa38ae6..f2a7c5b 100644 --- a/yami-shop-common/src/main/java/com/yami/shop/common/util/Json.java +++ b/yami-shop-common/src/main/java/com/yami/shop/common/util/Json.java @@ -11,14 +11,15 @@ package com.yami.shop.common.util; +import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.json.JsonWriteFeature; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; +import tools.jackson.core.json.JsonWriteFeature; +import tools.jackson.databind.*; +import tools.jackson.core.JacksonException; + import lombok.extern.slf4j.Slf4j; +import tools.jackson.databind.cfg.EnumFeature; +import tools.jackson.databind.json.JsonMapper; import java.util.Arrays; import java.util.Collections; @@ -30,21 +31,30 @@ import java.util.List; @Slf4j public class Json { - private static ObjectMapper objectMapper = new ObjectMapper(); + public static JsonMapper.Builder newBaseBuilder() { + return JsonMapper.builder() + .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS) + .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + // 兼容 Jackson 2 的宽松行为,允许 null 映射到基础类型并使用其默认值。 + .disable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES) + .disable(SerializationFeature.FAIL_ON_SELF_REFERENCES) + .enable(SerializationFeature.WRITE_SELF_REFERENCES_AS_NULL) + .disable(EnumFeature.FAIL_ON_NUMBERS_FOR_ENUMS) + .changeDefaultVisibility(vc -> vc + .withFieldVisibility(JsonAutoDetect.Visibility.ANY) + .withGetterVisibility(JsonAutoDetect.Visibility.NONE) + .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE) + .withSetterVisibility(JsonAutoDetect.Visibility.NONE) + .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)); + // 如果你想尽量贴近 Jackson 2 默认行为,可再补: + // .disable(DeserializationFeature.FAIL_ON_TRAILING_TOKENS) + } - static { - // 如果为空则不输出 - objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); - // 对于空的对象转json的时候不抛出错误 - objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); - // 禁用序列化日期为timestamps - objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); - // 禁用遇到未知属性抛出异常 - objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); - // 取消对非ASCII字符的转码 - objectMapper.configure(JsonWriteFeature.ESCAPE_NON_ASCII.mappedFeature(), false); - - } + /** + * 普通用途:深拷贝、parseObject、mapAsList + */ + private static final ObjectMapper objectMapper = + newBaseBuilder().build(); /** * 对象转json @@ -54,7 +64,7 @@ public class Json { public static String toJsonString(Object object) { try { return objectMapper.writeValueAsString(object); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { log.error("对象转json错误:", e); } return null; diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/xss/XssWrapper.java b/yami-shop-common/src/main/java/com/yami/shop/common/xss/XssWrapper.java index bb4239e..81d0787 100644 --- a/yami-shop-common/src/main/java/com/yami/shop/common/xss/XssWrapper.java +++ b/yami-shop-common/src/main/java/com/yami/shop/common/xss/XssWrapper.java @@ -65,8 +65,8 @@ public class XssWrapper extends HttpServletRequestWrapper { @Override public Object getAttribute(String name) { Object value = super.getAttribute(name); - if (value instanceof String && StrUtil.isNotBlank((String) value)) { - return cleanXss((String) value); + if (value instanceof String string && StrUtil.isNotBlank(string)) { + return cleanXss(string); } return value; } diff --git a/yami-shop-security/yami-shop-security-common/pom.xml b/yami-shop-security/yami-shop-security-common/pom.xml index ed5fef3..45b0917 100644 --- a/yami-shop-security/yami-shop-security-common/pom.xml +++ b/yami-shop-security/yami-shop-security-common/pom.xml @@ -40,11 +40,6 @@ sa-token-redis-jackson ${satoken.version} - - com.alibaba - fastjson - ${fastjson.version} - diff --git a/yami-shop-security/yami-shop-security-common/src/main/java/com/yami/shop/security/common/adapter/MallWebSecurityConfigurerAdapter.java b/yami-shop-security/yami-shop-security-common/src/main/java/com/yami/shop/security/common/adapter/MallWebSecurityConfigurerAdapter.java index 0b2db39..9dbebad 100644 --- a/yami-shop-security/yami-shop-security-common/src/main/java/com/yami/shop/security/common/adapter/MallWebSecurityConfigurerAdapter.java +++ b/yami-shop-security/yami-shop-security-common/src/main/java/com/yami/shop/security/common/adapter/MallWebSecurityConfigurerAdapter.java @@ -1,8 +1,11 @@ package com.yami.shop.security.common.adapter; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.web.SecurityFilterChain; import org.springframework.stereotype.Component; @@ -14,17 +17,29 @@ import org.springframework.web.cors.CorsUtils; * @date 2022/3/25 17:33 */ @Component +@Configuration @EnableWebSecurity public class MallWebSecurityConfigurerAdapter { @Bean - public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{ - // We don't need CSRF for token based authentication - return http.csrf().disable().cors() - .and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) - .and().authorizeRequests().requestMatchers(CorsUtils::isPreFlightRequest).permitAll() - .and() - .authorizeRequests().requestMatchers( - "/**").permitAll().and().build(); + public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + return http + // 禁用basic明文验证 + .httpBasic(AbstractHttpConfigurer::disable) + // 需要跨域的配置 参考cors config + .cors(Customizer.withDefaults()) + // 前后端分离架构不需要csrf保护 + .csrf(AbstractHttpConfigurer::disable) + // 禁用默认登录页 + .formLogin(AbstractHttpConfigurer::disable) + // 禁用默认登出页 + .logout(AbstractHttpConfigurer::disable) + // 前后端分离是无状态的,不需要session了,直接禁用。 + .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) + // 允许所有请求 + .authorizeHttpRequests(authorizeHttpRequests -> authorizeHttpRequests + .requestMatchers(CorsUtils::isPreFlightRequest).permitAll() + .requestMatchers("/**").permitAll()) + .build(); } } diff --git a/yami-shop-security/yami-shop-security-common/src/main/java/com/yami/shop/security/common/filter/AuthFilter.java b/yami-shop-security/yami-shop-security-common/src/main/java/com/yami/shop/security/common/filter/AuthFilter.java index ebcef4f..86d46ac 100644 --- a/yami-shop-security/yami-shop-security-common/src/main/java/com/yami/shop/security/common/filter/AuthFilter.java +++ b/yami-shop-security/yami-shop-security-common/src/main/java/com/yami/shop/security/common/filter/AuthFilter.java @@ -108,8 +108,8 @@ public class AuthFilter implements Filter { }catch (Exception e) { // 手动捕获下非controller异常 - if (e instanceof YamiShopBindException) { - httpHandler.printServerResponseToWeb((YamiShopBindException) e); + if (e instanceof YamiShopBindException exception) { + httpHandler.printServerResponseToWeb(exception); } else { throw e; } diff --git a/yami-shop-security/yami-shop-security-common/src/main/java/com/yami/shop/security/common/manager/TokenStore.java b/yami-shop-security/yami-shop-security-common/src/main/java/com/yami/shop/security/common/manager/TokenStore.java index d37c63b..f22f52b 100644 --- a/yami-shop-security/yami-shop-security-common/src/main/java/com/yami/shop/security/common/manager/TokenStore.java +++ b/yami-shop-security/yami-shop-security-common/src/main/java/com/yami/shop/security/common/manager/TokenStore.java @@ -11,10 +11,10 @@ package com.yami.shop.security.common.manager; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.yami.shop.common.constants.OauthCacheNames; import com.yami.shop.common.exception.YamiShopBindException; import com.yami.shop.common.response.ResponseEnum; +import com.yami.shop.common.util.Json; import com.yami.shop.security.common.bo.TokenInfoBO; import com.yami.shop.security.common.bo.UserInfoInTokenBO; import com.yami.shop.security.common.enums.SysTypeEnum; @@ -63,7 +63,7 @@ public class TokenStore { redisTemplate.delete(keyName); redisTemplate.opsForValue().set( keyName, - JSON.toJSONString(userInfoInToken), + Json.toJsonString(userInfoInToken), timeoutSecond, TimeUnit.SECONDS ); @@ -110,7 +110,7 @@ public class TokenStore { if (redisCache == null) { throw new YamiShopBindException(ResponseEnum.UNAUTHORIZED,"登录过期,请重新登录"); } - return JSON.parseObject(redisCache.toString(), UserInfoInTokenBO.class); + return Json.parseObject(redisCache.toString(), UserInfoInTokenBO.class); } /** diff --git a/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysLog.java b/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysLog.java index 5187dcd..eddd5b8 100644 --- a/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysLog.java +++ b/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysLog.java @@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import java.io.Serial; import java.io.Serializable; import java.util.Date; @@ -25,7 +26,8 @@ import java.util.Date; @Data @TableName("tz_sys_log") public class SysLog implements Serializable { - private static final long serialVersionUID = 1L; + @Serial + private static final long serialVersionUID = 1L; @TableId private Long id; /** diff --git a/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysMenu.java b/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysMenu.java index f026b85..e3c8d80 100644 --- a/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysMenu.java +++ b/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysMenu.java @@ -18,6 +18,8 @@ import lombok.Data; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; + +import java.io.Serial; import java.io.Serializable; import java.util.List; @@ -28,7 +30,8 @@ import java.util.List; @Data @TableName("tz_sys_menu") public class SysMenu implements Serializable { - private static final long serialVersionUID = 1L; + @Serial + private static final long serialVersionUID = 1L; /** * 菜单ID diff --git a/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysRole.java b/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysRole.java index 7f02675..de8a935 100644 --- a/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysRole.java +++ b/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysRole.java @@ -18,6 +18,8 @@ import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import jakarta.validation.constraints.NotBlank; + +import java.io.Serial; import java.io.Serializable; import java.util.Date; import java.util.List; @@ -29,7 +31,8 @@ import java.util.List; @Data @TableName("tz_sys_role") public class SysRole implements Serializable { - private static final long serialVersionUID = 1L; + @Serial + private static final long serialVersionUID = 1L; /** * 角色ID diff --git a/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysRoleMenu.java b/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysRoleMenu.java index 30d8e08..815543b 100644 --- a/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysRoleMenu.java +++ b/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysRoleMenu.java @@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import java.io.Serial; import java.io.Serializable; /** @@ -24,7 +25,8 @@ import java.io.Serializable; @Data @TableName("tz_sys_role_menu") public class SysRoleMenu implements Serializable { - private static final long serialVersionUID = 1L; + @Serial + private static final long serialVersionUID = 1L; @TableId private Long id; diff --git a/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysUser.java b/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysUser.java index b45055f..94c2917 100644 --- a/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysUser.java +++ b/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysUser.java @@ -22,6 +22,8 @@ import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; + +import java.io.Serial; import java.io.Serializable; import java.util.Date; import java.util.List; @@ -33,7 +35,8 @@ import java.util.List; @Data @TableName("tz_sys_user") public class SysUser implements Serializable { - private static final long serialVersionUID = 1L; + @Serial + private static final long serialVersionUID = 1L; /** * 用户ID diff --git a/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysUserRole.java b/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysUserRole.java index 688bec5..d61380e 100644 --- a/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysUserRole.java +++ b/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysUserRole.java @@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import java.io.Serial; import java.io.Serializable; /** @@ -24,7 +25,8 @@ import java.io.Serializable; @Data @TableName("tz_sys_user_role") public class SysUserRole implements Serializable { - private static final long serialVersionUID = 1L; + @Serial + private static final long serialVersionUID = 1L; @TableId private Long id;