mirror of
https://gitee.com/gz-yami/mall4j.git
synced 2025-12-25 23:56:20 +08:00
最低版本要求jdk17, 升级spring boot3.0
This commit is contained in:
parent
07f919b8ab
commit
324d91bc0a
29
README.md
29
README.md
@ -45,21 +45,20 @@ uni-app:https://gitee.com/gz-yami/mall4uni
|
||||
|
||||
## 技术选型
|
||||
|
||||
| 技术 | 版本 | 说明 |
|
||||
|----------------------|--------|------------------------------|
|
||||
| Spring Boot | 2.7.0 | MVC核心框架 |
|
||||
| Spring Security web | 2.7.0 | web应用安全防护 |
|
||||
| MyBatis | 3.5.0 | ORM框架 |
|
||||
| MyBatisPlus | 3.1.0 | 基于mybatis,使用lambda表达式的 |
|
||||
| spring-doc | 1.6.9 | 接口文档工具 |
|
||||
| Hibernator-Validator | 6.0.17 | 验证框架 |
|
||||
| redisson | 3.10.6 | 对redis进行封装、集成分布式锁等 |
|
||||
| hikari | 3.2.0 | 数据库连接池 |
|
||||
| logback | 1.2.11 | log日志工具 |
|
||||
| orika | 1.5.4 | 更快的bean复制工具 |
|
||||
| lombok | 1.18.8 | 简化对象封装工具 |
|
||||
| hutool | 5.7.22 | 更适合国人的java工具集 |
|
||||
| knife4j | 4.0.0 | 基于swagger,更便于国人使用的swagger ui |
|
||||
| 技术 | 版本 | 说明 |
|
||||
|---------------------|---------|------------------------------|
|
||||
| Spring Boot | 3.0.4 | MVC核心框架 |
|
||||
| Spring Security web | 3.0.4 | web应用安全防护 |
|
||||
| MyBatis | 3.5.10 | ORM框架 |
|
||||
| MyBatisPlus | 3.5.3.1 | 基于mybatis,使用lambda表达式的 |
|
||||
| spring-doc | 2.0.0 | 接口文档工具 |
|
||||
| jakarta-validation | 3.0.2 | 验证框架 |
|
||||
| redisson | 3.19.3 | 对redis进行封装、集成分布式锁等 |
|
||||
| hikari | 5.0.1 | 数据库连接池 |
|
||||
| logback | 1.4.5 | log日志工具 |
|
||||
| lombok | 1.18.26 | 简化对象封装工具 |
|
||||
| hutool | 5.8.15 | 更适合国人的java工具集 |
|
||||
| knife4j | 4.0.0 | 基于swagger,更便于国人使用的swagger ui |
|
||||
|
||||
|
||||
通过阿里的代码规范扫描工具(Alibaba Java Coding Guidelines plugin),扫描无异常:
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
FROM mysql:5.7
|
||||
|
||||
MAINTAINER opgames(opgames.cn@gmail.com)
|
||||
|
||||
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
||||
|
||||
COPY ./db/yami_shop.sql /docker-entrypoint-initdb.d
|
||||
COPY ./db/yami_shop.sql /docker-entrypoint-initdb.d
|
||||
|
||||
@ -70,7 +70,7 @@ public class SubmitOrderListener {
|
||||
|
||||
```java
|
||||
// 把订单地址保存到数据库
|
||||
UserAddrOrder userAddrOrder = mapperFacade.map(mergerOrder.getUserAddr(), UserAddrOrder.class);
|
||||
UserAddrOrder userAddrOrder = BeanUtil.copyProperties(mergerOrder.getUserAddr(), UserAddrOrder.class);
|
||||
if (userAddrOrder == null) {
|
||||
throw new YamiShopBindException("请填写收货地址");
|
||||
}
|
||||
|
||||
38
pom.xml
38
pom.xml
@ -22,24 +22,22 @@
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<maven.compiler.plugin.version>3.8.1</maven.compiler.plugin.version>
|
||||
<spring-boot.version>2.7.0</spring-boot.version>
|
||||
<java.version>1.8</java.version>
|
||||
<spring-boot.version>3.0.4</spring-boot.version>
|
||||
<java.version>17</java.version>
|
||||
<guava.version>31.1-jre</guava.version>
|
||||
<hutool.version>5.7.22</hutool.version>
|
||||
<hutool.version>5.8.15</hutool.version>
|
||||
<jsoup.version>1.15.3</jsoup.version>
|
||||
<poi.version>5.2.3</poi.version>
|
||||
<qiniu.version>7.2.18</qiniu.version>
|
||||
<weixin.version>3.5.0</weixin.version>
|
||||
<orika.version>1.5.4</orika.version>
|
||||
<aliyun-core.version>4.3.9</aliyun-core.version>
|
||||
<aliyun-dysmsapi.version>1.1.0</aliyun-dysmsapi.version>
|
||||
<mybatis-plus.version>3.5.3.1</mybatis-plus.version>
|
||||
<redisson.version>3.12.5</redisson.version>
|
||||
<redisson.version>3.19.3</redisson.version>
|
||||
<transmittable-thread-local.version>2.12.1</transmittable-thread-local.version>
|
||||
<log4j.version>2.17.2</log4j.version>
|
||||
<knife4j.version>4.0.0</knife4j.version>
|
||||
<xxl-job.version>2.3.1</xxl-job.version>
|
||||
<spring-cloud-commons.version>3.1.1</spring-cloud-commons.version>
|
||||
<spring-cloud-commons.version>4.0.1</spring-cloud-commons.version>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
@ -58,26 +56,6 @@
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.binarywang</groupId>
|
||||
<artifactId>weixin-java-pay</artifactId>
|
||||
<version>${weixin.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.binarywang</groupId>
|
||||
<artifactId>weixin-java-miniapp</artifactId>
|
||||
<version>${weixin.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.binarywang</groupId>
|
||||
<artifactId>weixin-java-mp</artifactId>
|
||||
<version>${weixin.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ma.glasnost.orika</groupId>
|
||||
<artifactId>orika-core</artifactId>
|
||||
<version>${orika.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.aliyun</groupId>
|
||||
<artifactId>aliyun-java-sdk-core</artifactId>
|
||||
@ -169,11 +147,7 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.xiaoymin</groupId>
|
||||
<artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springdoc</groupId>
|
||||
<artifactId>springdoc-openapi-ui</artifactId>
|
||||
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
FROM anapsix/alpine-java:8_server-jre_unlimited
|
||||
FROM openjdk:17.0.2
|
||||
|
||||
MAINTAINER opgames(opgames.cn@gmail.com)
|
||||
|
||||
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
||||
|
||||
@ -12,4 +11,4 @@ ADD ./yami-shop-admin/target/yami-shop-admin-0.0.1-SNAPSHOT.jar ./
|
||||
|
||||
EXPOSE 8085
|
||||
|
||||
CMD java -jar -Xms512m -Xmx512m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -Dspring.profiles.active=docker yami-shop-admin-0.0.1-SNAPSHOT.jar
|
||||
CMD java -jar -Xms512m -Xmx512m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -Dspring.profiles.active=docker yami-shop-admin-0.0.1-SNAPSHOT.jar
|
||||
|
||||
@ -13,7 +13,7 @@ package com.yami.shop.admin.config;
|
||||
import io.swagger.v3.oas.models.OpenAPI;
|
||||
import io.swagger.v3.oas.models.info.Info;
|
||||
import io.swagger.v3.oas.models.info.License;
|
||||
import org.springdoc.core.GroupedOpenApi;
|
||||
import org.springdoc.core.models.GroupedOpenApi;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
|
||||
@ -31,12 +31,11 @@ import com.yami.shop.sys.service.SysUserService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@ -22,7 +22,7 @@ import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@ import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
|
||||
@ -22,7 +22,7 @@ import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.Objects;
|
||||
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@ import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@ -61,7 +61,7 @@ public class HotSearchController {
|
||||
HotSearch hotSearch = hotSearchService.getById(id);
|
||||
return ServerResponseEntity.success(hotSearch);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 保存
|
||||
*/
|
||||
@ -75,7 +75,7 @@ public class HotSearchController {
|
||||
hotSearchService.removeHotSearchDtoCacheByShopId(SecurityUtils.getSysUser().getShopId());
|
||||
return ServerResponseEntity.success();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
|
||||
@ -24,7 +24,7 @@ import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@ import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
|
||||
@ -37,8 +37,8 @@ import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import jakarta.servlet.ServletOutputStream;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
|
||||
@ -24,7 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
|
||||
|
||||
@ -18,7 +18,7 @@ import com.yami.shop.common.util.Json;
|
||||
import com.yami.shop.service.ProdCommService;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
import lombok.SneakyThrows;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@ -30,7 +30,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.yami.shop.common.util.PageParam;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
|
||||
@ -25,7 +25,7 @@ import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@ -136,4 +136,4 @@ public class ProdTagController {
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,7 +22,7 @@ import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
/**
|
||||
* 分组标签引用
|
||||
|
||||
@ -26,12 +26,12 @@ import com.yami.shop.service.BasketService;
|
||||
import com.yami.shop.service.ProdTagReferenceService;
|
||||
import com.yami.shop.service.ProductService;
|
||||
import com.yami.shop.service.SkuService;
|
||||
import ma.glasnost.orika.MapperFacade;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@ -49,8 +49,6 @@ public class ProductController {
|
||||
@Autowired
|
||||
private ProductService productService;
|
||||
|
||||
@Autowired
|
||||
private MapperFacade mapperFacade;
|
||||
|
||||
@Autowired
|
||||
private SkuService skuService;
|
||||
@ -103,7 +101,7 @@ public class ProductController {
|
||||
public ServerResponseEntity<String> save(@Valid @RequestBody ProductParam productParam) {
|
||||
checkParam(productParam);
|
||||
|
||||
Product product = mapperFacade.map(productParam, Product.class);
|
||||
Product product = BeanUtil.copyProperties(productParam, Product.class);
|
||||
product.setDeliveryMode(Json.toJsonString(productParam.getDeliveryModeVo()));
|
||||
product.setShopId(SecurityUtils.getSysUser().getShopId());
|
||||
product.setUpdateTime(new Date());
|
||||
@ -130,7 +128,7 @@ public class ProductController {
|
||||
List<Sku> dbSkus = skuService.listByProdId(dbProduct.getProdId());
|
||||
|
||||
|
||||
Product product = mapperFacade.map(productParam, Product.class);
|
||||
Product product = BeanUtil.copyProperties(productParam, Product.class);
|
||||
product.setDeliveryMode(Json.toJsonString(productParam.getDeliveryModeVo()));
|
||||
product.setUpdateTime(new Date());
|
||||
|
||||
|
||||
@ -18,14 +18,14 @@ import com.yami.shop.bean.param.ShopDetailParam;
|
||||
import com.yami.shop.common.util.PageParam;
|
||||
import com.yami.shop.security.admin.util.SecurityUtils;
|
||||
import com.yami.shop.service.ShopDetailService;
|
||||
import ma.glasnost.orika.MapperFacade;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
@ -43,9 +43,6 @@ public class ShopDetailController {
|
||||
@Autowired
|
||||
private ShopDetailService shopDetailService;
|
||||
|
||||
@Autowired
|
||||
private MapperFacade mapperFacade;
|
||||
|
||||
|
||||
/**
|
||||
* 修改分销开关
|
||||
@ -83,7 +80,7 @@ public class ShopDetailController {
|
||||
.orderByDesc(ShopDetail::getShopId));
|
||||
return ServerResponseEntity.success(shopDetails);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取信息
|
||||
*/
|
||||
@ -101,13 +98,13 @@ public class ShopDetailController {
|
||||
@PostMapping
|
||||
@PreAuthorize("@pms.hasPermission('shop:shopDetail:save')")
|
||||
public ServerResponseEntity<Void> save(@Valid ShopDetailParam shopDetailParam){
|
||||
ShopDetail shopDetail = mapperFacade.map(shopDetailParam, ShopDetail.class);
|
||||
ShopDetail shopDetail = BeanUtil.copyProperties(shopDetailParam, ShopDetail.class);
|
||||
shopDetail.setCreateTime(new Date());
|
||||
shopDetail.setShopStatus(1);
|
||||
shopDetailService.save(shopDetail);
|
||||
return ServerResponseEntity.success();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
@ -115,12 +112,12 @@ public class ShopDetailController {
|
||||
@PreAuthorize("@pms.hasPermission('shop:shopDetail:update')")
|
||||
public ServerResponseEntity<Void> update(@Valid ShopDetailParam shopDetailParam){
|
||||
ShopDetail daShopDetail = shopDetailService.getShopDetailByShopId(shopDetailParam.getShopId());
|
||||
ShopDetail shopDetail = mapperFacade.map(shopDetailParam, ShopDetail.class);
|
||||
ShopDetail shopDetail = BeanUtil.copyProperties(shopDetailParam, ShopDetail.class);
|
||||
shopDetail.setUpdateTime(new Date());
|
||||
shopDetailService.updateShopDetail(shopDetail,daShopDetail);
|
||||
return ServerResponseEntity.success();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
@ -130,7 +127,7 @@ public class ShopDetailController {
|
||||
shopDetailService.deleteShopDetailByShopId(id);
|
||||
return ServerResponseEntity.success();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新店铺状态
|
||||
*/
|
||||
@ -145,8 +142,8 @@ public class ShopDetailController {
|
||||
shopDetailService.removeShopDetailCacheByShopId(shopDetail.getShopId());
|
||||
return ServerResponseEntity.success();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取所有的店铺名称
|
||||
*/
|
||||
|
||||
@ -25,7 +25,7 @@ import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
|
||||
@ -21,7 +21,7 @@ import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
/**
|
||||
* 用户地址管理
|
||||
|
||||
@ -13,14 +13,11 @@ spring:
|
||||
idle-timeout: 10000
|
||||
auto-commit: true
|
||||
connection-test-query: SELECT 1
|
||||
cache:
|
||||
type: redis
|
||||
data:
|
||||
redis:
|
||||
cache-null-values: true
|
||||
redis:
|
||||
host: 127.0.0.1
|
||||
port: 6379
|
||||
database: 0
|
||||
host: 127.0.0.1
|
||||
port: 6379
|
||||
database: 0
|
||||
logging:
|
||||
config: classpath:logback/logback-dev.xml
|
||||
xxl-job:
|
||||
|
||||
@ -13,14 +13,15 @@ spring:
|
||||
idle-timeout: 25000
|
||||
auto-commit: true
|
||||
connection-test-query: SELECT 1
|
||||
redis:
|
||||
host: ${REDIS_HOST}
|
||||
port: ${REDIS_PORT}
|
||||
database: ${REDIS_DATABASE:0}
|
||||
data:
|
||||
redis:
|
||||
host: ${REDIS_HOST}
|
||||
port: ${REDIS_PORT}
|
||||
database: ${REDIS_DATABASE:0}
|
||||
logging:
|
||||
config: classpath:logback/logback-prod.xml
|
||||
xxl-job:
|
||||
accessToken: ${XXL_JOB_ACCESS_TOKEN:default_token}
|
||||
logPath: ${XXL_JOB_LOG_PATH:/data/applogs/xxl-job/jobhandler}
|
||||
admin:
|
||||
addresses: ${XXL_JOB_ADDRESS:http://mall4j-job:8080/xxl-job-admin}
|
||||
addresses: ${XXL_JOB_ADDRESS:http://mall4j-job:8080/xxl-job-admin}
|
||||
|
||||
@ -13,14 +13,15 @@ spring:
|
||||
idle-timeout: 25000
|
||||
auto-commit: true
|
||||
connection-test-query: SELECT 1
|
||||
redis:
|
||||
host: 127.0.0.1
|
||||
port: 6379
|
||||
database: ${REDIS_DATABASE:0}
|
||||
data:
|
||||
redis:
|
||||
host: 127.0.0.1
|
||||
port: 6379
|
||||
database: ${REDIS_DATABASE:0}
|
||||
logging:
|
||||
config: classpath:logback/logback-prod.xml
|
||||
xxl-job:
|
||||
accessToken: default_token
|
||||
logPath: /data/applogs/xxl-job/jobhandler
|
||||
admin:
|
||||
addresses: http://localhost:8080/xxl-job-admin
|
||||
addresses: http://localhost:8080/xxl-job-admin
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
FROM anapsix/alpine-java:8_server-jre_unlimited
|
||||
FROM openjdk:17.0.2
|
||||
|
||||
MAINTAINER opgames(opgames.cn@gmail.com)
|
||||
|
||||
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
||||
|
||||
@ -12,4 +11,4 @@ EXPOSE 8086
|
||||
|
||||
ADD ./yami-shop-api/target/yami-shop-api-0.0.1-SNAPSHOT.jar ./
|
||||
|
||||
CMD java -jar -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -Dspring.profiles.active=docker yami-shop-api-0.0.1-SNAPSHOT.jar
|
||||
CMD java -jar -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -Dspring.profiles.active=docker yami-shop-api-0.0.1-SNAPSHOT.jar
|
||||
|
||||
@ -13,7 +13,7 @@ package com.yami.shop.api.config;
|
||||
import io.swagger.v3.oas.models.OpenAPI;
|
||||
import io.swagger.v3.oas.models.info.Info;
|
||||
import io.swagger.v3.oas.models.info.License;
|
||||
import org.springdoc.core.GroupedOpenApi;
|
||||
import org.springdoc.core.models.GroupedOpenApi;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
|
||||
@ -22,11 +22,11 @@ import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.AllArgsConstructor;
|
||||
import ma.glasnost.orika.MapperFacade;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@ -39,8 +39,6 @@ import java.util.List;
|
||||
@AllArgsConstructor
|
||||
public class AddrController {
|
||||
|
||||
@Autowired
|
||||
private MapperFacade mapperFacade;
|
||||
@Autowired
|
||||
private UserAddrService userAddrService;
|
||||
|
||||
@ -52,7 +50,7 @@ public class AddrController {
|
||||
public ServerResponseEntity<List<UserAddrDto>> dvyList() {
|
||||
String userId = SecurityUtils.getUser().getUserId();
|
||||
List<UserAddr> userAddrs = userAddrService.list(new LambdaQueryWrapper<UserAddr>().eq(UserAddr::getUserId, userId).orderByDesc(UserAddr::getCommonAddr).orderByDesc(UserAddr::getUpdateTime));
|
||||
return ServerResponseEntity.success(mapperFacade.mapAsList(userAddrs, UserAddrDto.class));
|
||||
return ServerResponseEntity.success(BeanUtil.copyToList(userAddrs, UserAddrDto.class));
|
||||
}
|
||||
|
||||
@PostMapping("/addAddr")
|
||||
@ -64,7 +62,7 @@ public class AddrController {
|
||||
return ServerResponseEntity.showFailMsg("该地址已存在");
|
||||
}
|
||||
long addrCount = userAddrService.count(new LambdaQueryWrapper<UserAddr>().eq(UserAddr::getUserId, userId));
|
||||
UserAddr userAddr = mapperFacade.map(addrParam, UserAddr.class);
|
||||
UserAddr userAddr = BeanUtil.copyProperties(addrParam, UserAddr.class);
|
||||
|
||||
if (addrCount == 0) {
|
||||
userAddr.setCommonAddr(1);
|
||||
@ -96,7 +94,7 @@ public class AddrController {
|
||||
return ServerResponseEntity.showFailMsg("该地址已被删除");
|
||||
}
|
||||
|
||||
UserAddr userAddr = mapperFacade.map(addrParam, UserAddr.class);
|
||||
UserAddr userAddr = BeanUtil.copyProperties(addrParam, UserAddr.class);
|
||||
userAddr.setUserId(userId);
|
||||
userAddr.setUpdateTime(new Date());
|
||||
userAddrService.updateById(userAddr);
|
||||
@ -154,7 +152,7 @@ public class AddrController {
|
||||
if (userAddr == null) {
|
||||
throw new YamiShopBindException("该地址已被删除");
|
||||
}
|
||||
return ServerResponseEntity.success(mapperFacade.map(userAddr, UserAddrDto.class));
|
||||
return ServerResponseEntity.success(BeanUtil.copyProperties(userAddr, UserAddrDto.class));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -26,7 +26,7 @@ import com.yami.shop.service.CategoryService;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import ma.glasnost.orika.MapperFacade;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
|
||||
/**
|
||||
* @author lanhai
|
||||
@ -39,8 +39,6 @@ public class CategoryController {
|
||||
@Autowired
|
||||
private CategoryService categoryService;
|
||||
|
||||
@Autowired
|
||||
private MapperFacade mapperFacade;
|
||||
|
||||
/**
|
||||
* 分类信息列表接口
|
||||
@ -50,7 +48,7 @@ public class CategoryController {
|
||||
@Parameter(name = "parentId", description = "分类ID", required = false)
|
||||
public ServerResponseEntity<List<CategoryDto>> categoryInfo(@RequestParam(value = "parentId", defaultValue = "0") Long parentId) {
|
||||
List<Category> categories = categoryService.listByParentId(parentId);
|
||||
List<CategoryDto> categoryDtos = mapperFacade.mapAsList(categories, CategoryDto.class);
|
||||
List<CategoryDto> categoryDtos = BeanUtil.copyToList(categories, CategoryDto.class);
|
||||
return ServerResponseEntity.success(categoryDtos);
|
||||
}
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ import com.yami.shop.bean.model.IndexImg;
|
||||
import com.yami.shop.service.IndexImgService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import ma.glasnost.orika.MapperFacade;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
@ -29,8 +29,6 @@ import java.util.List;
|
||||
@RestController
|
||||
@Tag(name = "首页轮播图接口")
|
||||
public class IndexImgController {
|
||||
@Autowired
|
||||
private MapperFacade mapperFacade;
|
||||
|
||||
@Autowired
|
||||
private IndexImgService indexImgService;
|
||||
@ -42,7 +40,7 @@ public class IndexImgController {
|
||||
@Operation(summary = "首页轮播图" , description = "获取首页轮播图列表信息")
|
||||
public ServerResponseEntity<List<IndexImgDto>> indexImgs() {
|
||||
List<IndexImg> indexImgList = indexImgService.listIndexImg();
|
||||
List<IndexImgDto> indexImgDtos = mapperFacade.mapAsList(indexImgList, IndexImgDto.class);
|
||||
List<IndexImgDto> indexImgDtos = BeanUtil.copyToList(indexImgList, IndexImgDto.class);
|
||||
return ServerResponseEntity.success(indexImgDtos);
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,7 +27,7 @@ import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Parameters;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import ma.glasnost.orika.MapperFacade;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@ -46,7 +46,7 @@ public class MyOrderController {
|
||||
|
||||
private final OrderService orderService;
|
||||
|
||||
private final MapperFacade mapperFacade;
|
||||
|
||||
|
||||
private final UserAddrOrderService userAddrOrderService;
|
||||
|
||||
@ -83,9 +83,9 @@ public class MyOrderController {
|
||||
|
||||
ShopDetail shopDetail = shopDetailService.getShopDetailByShopId(order.getShopId());
|
||||
UserAddrOrder userAddrOrder = userAddrOrderService.getById(order.getAddrOrderId());
|
||||
UserAddrDto userAddrDto = mapperFacade.map(userAddrOrder, UserAddrDto.class);
|
||||
UserAddrDto userAddrDto = BeanUtil.copyProperties(userAddrOrder, UserAddrDto.class);
|
||||
List<OrderItem> orderItems = orderItemService.getOrderItemsByOrderNumber(orderNumber);
|
||||
List<OrderItemDto> orderItemDtos = mapperFacade.mapAsList(orderItems, OrderItemDto.class);
|
||||
List<OrderItemDto> orderItemDtos = BeanUtil.copyToList(orderItems, OrderItemDto.class);
|
||||
|
||||
orderShopDto.setShopId(shopDetail.getShopId());
|
||||
orderShopDto.setShopName(shopDetail.getShopName());
|
||||
|
||||
@ -20,7 +20,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameters;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import ma.glasnost.orika.MapperFacade;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
@ -40,7 +40,7 @@ public class NoticeController {
|
||||
|
||||
private NoticeService noticeService;
|
||||
|
||||
private MapperFacade mapperFacade;
|
||||
|
||||
|
||||
/**
|
||||
* 置顶公告列表接口
|
||||
@ -50,7 +50,7 @@ public class NoticeController {
|
||||
@JsonView(NoticeDto.NoContent.class)
|
||||
public ServerResponseEntity<List<NoticeDto>> getTopNoticeList() {
|
||||
List<Notice> noticeList = noticeService.listNotice();
|
||||
List<NoticeDto> noticeDtoList = mapperFacade.mapAsList(noticeList, NoticeDto.class);
|
||||
List<NoticeDto> noticeDtoList = BeanUtil.copyToList(noticeList, NoticeDto.class);
|
||||
return ServerResponseEntity.success(noticeDtoList);
|
||||
}
|
||||
|
||||
@ -62,7 +62,7 @@ public class NoticeController {
|
||||
@JsonView(NoticeDto.WithContent.class)
|
||||
public ServerResponseEntity<NoticeDto> getNoticeById(@PathVariable("id") Long id) {
|
||||
Notice notice = noticeService.getNoticeById(id);
|
||||
NoticeDto noticeDto = mapperFacade.map(notice, NoticeDto.class);
|
||||
NoticeDto noticeDto = BeanUtil.copyProperties(notice, NoticeDto.class);
|
||||
return ServerResponseEntity.success(noticeDto);
|
||||
}
|
||||
|
||||
|
||||
@ -24,7 +24,7 @@ import com.yami.shop.security.api.util.SecurityUtils;
|
||||
import com.yami.shop.service.*;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import ma.glasnost.orika.MapperFacade;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import com.yami.shop.common.response.ServerResponseEntity;
|
||||
@ -33,7 +33,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@ -49,8 +49,6 @@ public class OrderController {
|
||||
@Autowired
|
||||
private OrderService orderService;
|
||||
@Autowired
|
||||
private MapperFacade mapperFacade;
|
||||
@Autowired
|
||||
private SkuService skuService;
|
||||
@Autowired
|
||||
private ProductService productService;
|
||||
@ -72,7 +70,7 @@ public class OrderController {
|
||||
|
||||
// 订单的地址信息
|
||||
UserAddr userAddr = userAddrService.getUserAddrByUserId(orderParam.getAddrId(), userId);
|
||||
UserAddrDto userAddrDto = mapperFacade.map(userAddr, UserAddrDto.class);
|
||||
UserAddrDto userAddrDto = BeanUtil.copyProperties(userAddr, UserAddrDto.class);
|
||||
|
||||
|
||||
// 组装获取用户提交的购物车商品项
|
||||
|
||||
@ -10,7 +10,6 @@
|
||||
|
||||
package com.yami.shop.api.controller;
|
||||
|
||||
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
|
||||
import com.yami.shop.bean.app.param.PayParam;
|
||||
import com.yami.shop.bean.pay.PayInfoDto;
|
||||
import com.yami.shop.security.api.model.YamiUser;
|
||||
@ -42,7 +41,7 @@ public class PayController {
|
||||
*/
|
||||
@PostMapping("/pay")
|
||||
@Operation(summary = "根据订单号进行支付" , description = "根据订单号进行支付")
|
||||
public ServerResponseEntity<WxPayMpOrderResult> pay(@RequestBody PayParam payParam) {
|
||||
public ServerResponseEntity<Void> pay(@RequestBody PayParam payParam) {
|
||||
YamiUser user = SecurityUtils.getUser();
|
||||
String userId = user.getUserId();
|
||||
|
||||
|
||||
@ -26,7 +26,7 @@ import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Parameters;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import ma.glasnost.orika.MapperFacade;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@ -47,8 +47,6 @@ public class ProdController {
|
||||
@Autowired
|
||||
private ProductService prodService;
|
||||
|
||||
@Autowired
|
||||
private MapperFacade mapperFacade;
|
||||
|
||||
@Autowired
|
||||
private SkuService skuService;
|
||||
@ -82,7 +80,7 @@ public class ProdController {
|
||||
// 启用的sku列表
|
||||
List<Sku> useSkuList = skuList.stream().filter(sku -> sku.getStatus() == 1).collect(Collectors.toList());
|
||||
product.setSkuList(useSkuList);
|
||||
ProductDto productDto = mapperFacade.map(product, ProductDto.class);
|
||||
ProductDto productDto = BeanUtil.copyProperties(product, ProductDto.class);
|
||||
|
||||
|
||||
// 商品的配送方式
|
||||
|
||||
@ -16,7 +16,7 @@ import com.yami.shop.service.ProdTagService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.AllArgsConstructor;
|
||||
import ma.glasnost.orika.MapperFacade;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@ -35,7 +35,7 @@ public class ProdTagController {
|
||||
|
||||
private ProdTagService prodTagService;
|
||||
|
||||
private MapperFacade mapperFacade;
|
||||
|
||||
|
||||
/**
|
||||
* 商品分组标签列表接口
|
||||
@ -44,7 +44,7 @@ public class ProdTagController {
|
||||
@Operation(summary = "商品分组标签列表" , description = "获取所有的商品分组列表")
|
||||
public ServerResponseEntity<List<ProdTagDto>> getProdTagList() {
|
||||
List<ProdTag> prodTagList = prodTagService.listProdTag();
|
||||
List<ProdTagDto> prodTagDtoList = mapperFacade.mapAsList(prodTagList, ProdTagDto.class);
|
||||
List<ProdTagDto> prodTagDtoList = BeanUtil.copyToList(prodTagList, ProdTagDto.class);
|
||||
return ServerResponseEntity.success(prodTagDtoList);
|
||||
}
|
||||
|
||||
|
||||
@ -32,7 +32,7 @@ import org.springframework.context.ApplicationContext;
|
||||
import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@ -18,7 +18,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import ma.glasnost.orika.MapperFacade;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@ -37,7 +37,7 @@ public class SkuController {
|
||||
|
||||
private final SkuService skuService;
|
||||
|
||||
private final MapperFacade mapperFacade;
|
||||
|
||||
|
||||
@GetMapping("/getSkuList")
|
||||
@Operation(summary = "通过prodId获取商品全部规格列表" , description = "通过prodId获取商品全部规格列表")
|
||||
@ -48,7 +48,7 @@ public class SkuController {
|
||||
.eq(Sku::getIsDelete, 0)
|
||||
.eq(Sku::getProdId, prodId)
|
||||
);
|
||||
List<SkuDto> skuDtoList = mapperFacade.mapAsList(skus, SkuDto.class);
|
||||
List<SkuDto> skuDtoList = BeanUtil.copyToList(skus, SkuDto.class);
|
||||
return ServerResponseEntity.success(skuDtoList);
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,7 +18,7 @@ import com.yami.shop.service.UserService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.AllArgsConstructor;
|
||||
import ma.glasnost.orika.MapperFacade;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
/**
|
||||
@ -32,7 +32,7 @@ public class UserController {
|
||||
|
||||
private final UserService userService;
|
||||
|
||||
private final MapperFacade mapperFacade;
|
||||
|
||||
/**
|
||||
* 查看用户接口
|
||||
*/
|
||||
@ -41,7 +41,7 @@ public class UserController {
|
||||
public ServerResponseEntity<UserDto> userInfo() {
|
||||
String userId = SecurityUtils.getUser().getUserId();
|
||||
User user = userService.getById(userId);
|
||||
UserDto userDto = mapperFacade.map(user, UserDto.class);
|
||||
UserDto userDto = BeanUtil.copyProperties(user, UserDto.class);
|
||||
return ServerResponseEntity.success(userDto);
|
||||
}
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@ import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
|
||||
@ -29,7 +29,7 @@ import com.yami.shop.service.ProductService;
|
||||
import com.yami.shop.service.SkuService;
|
||||
import com.yami.shop.service.UserAddrOrderService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import ma.glasnost.orika.MapperFacade;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.stereotype.Component;
|
||||
@ -46,7 +46,7 @@ import java.util.*;
|
||||
public class SubmitOrderListener {
|
||||
|
||||
|
||||
private final MapperFacade mapperFacade;
|
||||
|
||||
|
||||
private final UserAddrOrderService userAddrOrderService;
|
||||
|
||||
@ -89,7 +89,7 @@ public class SubmitOrderListener {
|
||||
Map<Long, Product> prodStocksMap = new HashMap<>(16);
|
||||
|
||||
// 把订单地址保存到数据库
|
||||
UserAddrOrder userAddrOrder = mapperFacade.map(mergerOrder.getUserAddr(), UserAddrOrder.class);
|
||||
UserAddrOrder userAddrOrder = BeanUtil.copyProperties(mergerOrder.getUserAddr(), UserAddrOrder.class);
|
||||
if (userAddrOrder == null) {
|
||||
throw new YamiShopBindException("请填写收货地址");
|
||||
}
|
||||
|
||||
@ -12,10 +12,11 @@ spring:
|
||||
maximum-pool-size: 20
|
||||
idle-timeout: 10000
|
||||
connection-test-query: select 1
|
||||
redis:
|
||||
host: 127.0.0.1
|
||||
port: 6379
|
||||
database: 0
|
||||
data:
|
||||
redis:
|
||||
host: 127.0.0.1
|
||||
port: 6379
|
||||
database: 0
|
||||
logging:
|
||||
config: classpath:logback/logback-dev.xml
|
||||
|
||||
|
||||
@ -12,9 +12,10 @@ spring:
|
||||
minimum-idle: 0
|
||||
maximum-pool-size: 20
|
||||
connection-test-query: select 1
|
||||
redis:
|
||||
host: ${REDIS_HOST}
|
||||
port: ${REDIS_PORT}
|
||||
database: ${REDIS_DATABASE:0}
|
||||
data:
|
||||
redis:
|
||||
host: ${REDIS_HOST}
|
||||
port: ${REDIS_PORT}
|
||||
database: ${REDIS_DATABASE:0}
|
||||
logging:
|
||||
config: classpath:logback/logback-prod.xml
|
||||
|
||||
@ -12,9 +12,10 @@ spring:
|
||||
minimum-idle: 0
|
||||
maximum-pool-size: 20
|
||||
connection-test-query: select 1
|
||||
redis:
|
||||
host: 127.0.0.1
|
||||
port: 6379
|
||||
database: ${REDIS_DATABASE:0}
|
||||
data:
|
||||
redis:
|
||||
host: 127.0.0.1
|
||||
port: 6379
|
||||
database: ${REDIS_DATABASE:0}
|
||||
logging:
|
||||
config: classpath:logback/logback-prod.xml
|
||||
|
||||
@ -12,57 +12,57 @@ package com.yami.shop.bean.app.param;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author lanhai
|
||||
*/
|
||||
@Schema(description = "地址参数")
|
||||
public class AddrParam {
|
||||
|
||||
|
||||
@Schema(description = "地址ID" ,required=true)
|
||||
private Long addrId;
|
||||
|
||||
@NotNull(message = "收货人不能为空")
|
||||
@Schema(description = "收货人" ,required=true)
|
||||
private String receiver;
|
||||
|
||||
|
||||
@NotNull(message = "地址不能为空")
|
||||
@Schema(description = "地址" ,required=true)
|
||||
private String addr;
|
||||
|
||||
|
||||
@Schema(description = "邮编" ,required=false)
|
||||
private String postCode;
|
||||
|
||||
|
||||
@NotNull(message = "手机不能为空")
|
||||
@Schema(description = "手机" ,required=true)
|
||||
private String mobile;
|
||||
|
||||
|
||||
@NotNull(message = "省ID不能为空")
|
||||
@Schema(description = "省ID" ,required=true)
|
||||
private Long provinceId;
|
||||
|
||||
|
||||
@NotNull(message = "城市ID不能为空")
|
||||
@Schema(description = "城市ID" ,required=true)
|
||||
private Long cityId;
|
||||
|
||||
|
||||
@NotNull(message = "区ID不能为空")
|
||||
@Schema(description = "区ID" ,required=true)
|
||||
private Long areaId;
|
||||
|
||||
|
||||
@NotNull(message = "省不能为空")
|
||||
@Schema(description = "省" ,required=true)
|
||||
private String province;
|
||||
|
||||
|
||||
@NotNull(message = "城市不能为空")
|
||||
@Schema(description = "城市" ,required=true)
|
||||
private String city;
|
||||
|
||||
|
||||
@NotNull(message = "区不能为空")
|
||||
@Schema(description = "区" ,required=true)
|
||||
private String area;
|
||||
|
||||
|
||||
|
||||
public Long getAddrId() {
|
||||
return addrId;
|
||||
}
|
||||
@ -150,5 +150,5 @@ public class AddrParam {
|
||||
public void setArea(String area) {
|
||||
this.area = area;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
|
||||
package com.yami.shop.bean.app.param;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@ -13,8 +13,8 @@ package com.yami.shop.bean.app.param;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author lanhai
|
||||
@ -26,11 +26,11 @@ public class OrderItemParam {
|
||||
@NotNull(message = "产品ID不能为空")
|
||||
@Schema(description = "产品ID" ,required=true)
|
||||
private Long prodId;
|
||||
|
||||
|
||||
@NotNull(message = "skuId不能为空")
|
||||
@Schema(description = "skuId" ,required=true)
|
||||
private Long skuId;
|
||||
|
||||
|
||||
@NotNull(message = "产品数量不能为空")
|
||||
@Min(value = 1,message = "产品数量不能为空")
|
||||
@Schema(description = "产品数量" ,required=true)
|
||||
|
||||
@ -13,7 +13,7 @@ package com.yami.shop.bean.app.param;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
||||
@ -3,7 +3,7 @@ package com.yami.shop.bean.app.param;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
|
||||
/**
|
||||
* @author lanhai
|
||||
|
||||
@ -3,8 +3,8 @@ package com.yami.shop.bean.app.param;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author lanhai
|
||||
|
||||
@ -10,8 +10,8 @@
|
||||
|
||||
package com.yami.shop.bean.app.param;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ package com.yami.shop.bean.app.param;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author lanhai
|
||||
|
||||
@ -12,14 +12,14 @@ package com.yami.shop.bean.app.param;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
import javax.validation.constraints.Pattern;
|
||||
import jakarta.validation.constraints.Pattern;
|
||||
|
||||
/**
|
||||
* @author lanhai
|
||||
*/
|
||||
@Schema(description = "发送验证码参数")
|
||||
public class SendSmsParam {
|
||||
|
||||
|
||||
@Schema(description = "手机号" )
|
||||
@Pattern(regexp="1[0-9]{10}",message = "请输入正确的手机号")
|
||||
private String mobile;
|
||||
@ -32,5 +32,5 @@ public class SendSmsParam {
|
||||
this.mobile = mobile;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -15,8 +15,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@ -12,21 +12,21 @@ package com.yami.shop.bean.param;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @author lanhai
|
||||
*/
|
||||
public class DeliveryOrderParam {
|
||||
|
||||
|
||||
@NotBlank(message="订单号不能为空")
|
||||
@Schema(description = "订单号" ,required=true)
|
||||
private String orderNumber;
|
||||
|
||||
|
||||
@NotBlank(message="快递公司id不能为空")
|
||||
@Schema(description = "快递公司" ,required=true)
|
||||
private Long dvyId;
|
||||
|
||||
|
||||
@NotBlank(message="物流单号不能为空")
|
||||
@Schema(description = "物流单号" ,required=true)
|
||||
private String dvyFlowId;
|
||||
@ -55,5 +55,5 @@ public class DeliveryOrderParam {
|
||||
public void setOrderNumber(String orderNumber) {
|
||||
this.orderNumber = orderNumber;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -14,9 +14,9 @@ import com.yami.shop.bean.model.Product;
|
||||
import com.yami.shop.bean.model.Sku;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
||||
@ -10,17 +10,17 @@
|
||||
|
||||
package com.yami.shop.bean.param;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.Size;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.Size;
|
||||
|
||||
/**
|
||||
* @author lanhai
|
||||
*/
|
||||
public class ShopDetailParam {
|
||||
|
||||
|
||||
|
||||
private Long shopId;
|
||||
|
||||
|
||||
/**
|
||||
* 店铺名称(数字、中文,英文(可混合,不可有特殊字符),可修改)、不唯一
|
||||
*/
|
||||
@ -74,14 +74,14 @@ public class ShopDetailParam {
|
||||
@NotBlank(message="店铺所在区域不能为空")
|
||||
@Size(max = 10,message = "店铺所在省份区域长度应该小于{max}")
|
||||
private String area;
|
||||
|
||||
|
||||
/**
|
||||
* 店铺省市区代码,用于回显
|
||||
*/
|
||||
@NotBlank(message="店铺省市区代码不能为空")
|
||||
@Size(max = 20,message = "店铺省市区代码长度应该小于{max}")
|
||||
private String pcaCode;
|
||||
|
||||
|
||||
/**
|
||||
* 店铺logo(可修改)
|
||||
*/
|
||||
@ -101,7 +101,7 @@ public class ShopDetailParam {
|
||||
@NotBlank(message="每天营业时间段不能为空")
|
||||
@Size(max = 100,message = "每天营业时间段长度应该小于{max}")
|
||||
private String openTime;
|
||||
|
||||
|
||||
/**
|
||||
* 店铺状态(-1:未开通 0: 停业中 1:营业中),可修改
|
||||
*/
|
||||
|
||||
@ -40,9 +40,9 @@
|
||||
<groupId>com.qiniu</groupId>
|
||||
<artifactId>qiniu-java-sdk</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<dependency>
|
||||
<groupId>com.mysql</groupId>
|
||||
<artifactId>mysql-connector-j</artifactId>
|
||||
</dependency>
|
||||
<!-- 开始spring 缓存 -->
|
||||
<dependency>
|
||||
@ -58,10 +58,6 @@
|
||||
<artifactId>redisson-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ma.glasnost.orika</groupId>
|
||||
<artifactId>orika-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.aliyun</groupId>
|
||||
<artifactId>aliyun-java-sdk-core</artifactId>
|
||||
</dependency>
|
||||
@ -69,18 +65,6 @@
|
||||
<groupId>com.aliyun</groupId>
|
||||
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.binarywang</groupId>
|
||||
<artifactId>weixin-java-pay</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.binarywang</groupId>
|
||||
<artifactId>weixin-java-miniapp</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.binarywang</groupId>
|
||||
<artifactId>weixin-java-mp</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>transmittable-thread-local</artifactId>
|
||||
|
||||
@ -1,36 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
|
||||
*
|
||||
* https://www.mall4j.com/
|
||||
*
|
||||
* 未经允许,不可做商业用途!
|
||||
*
|
||||
* 版权所有,侵权必究!
|
||||
*/
|
||||
|
||||
package com.yami.shop.common.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import ma.glasnost.orika.MapperFacade;
|
||||
import ma.glasnost.orika.MapperFactory;
|
||||
import ma.glasnost.orika.impl.DefaultMapperFactory;
|
||||
|
||||
/**
|
||||
* MapperFacade 用于dto ->entity的转换
|
||||
* @author lgh
|
||||
*/
|
||||
@Configuration
|
||||
public class OrikaConfig {
|
||||
|
||||
@Bean
|
||||
public MapperFactory mapperFactory() {
|
||||
return new DefaultMapperFactory.Builder().build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public MapperFacade mapperFacade() {
|
||||
return mapperFactory().getMapperFacade();
|
||||
}
|
||||
}
|
||||
@ -1,103 +0,0 @@
|
||||
package com.yami.shop.common.config;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.yami.shop.common.util.PageParam;
|
||||
import io.swagger.v3.oas.annotations.Hidden;
|
||||
import org.apache.commons.lang3.reflect.FieldUtils;
|
||||
import org.springdoc.api.annotations.ParameterObject;
|
||||
import org.springdoc.core.DelegatingMethodParameter;
|
||||
import org.springdoc.core.GenericParameterService;
|
||||
import org.springdoc.core.PropertyResolverUtils;
|
||||
import org.springdoc.core.SpringDocUtils;
|
||||
import org.springdoc.core.customizers.DelegatingMethodParameterCustomizer;
|
||||
import org.springdoc.core.providers.ObjectMapperProvider;
|
||||
import org.springdoc.core.providers.WebConversionServiceProvider;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.MethodParameter;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* @author FrozenWatermelon
|
||||
* @date 2022/4/24
|
||||
*/
|
||||
@Configuration
|
||||
public class Swagger2Config {
|
||||
|
||||
static {
|
||||
SpringDocUtils.getConfig().addAnnotationsToIgnore(JsonIgnore.class);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public GenericParameterService parameterBuilder(PropertyResolverUtils propertyResolverUtils, Optional<WebConversionServiceProvider> optionalWebConversionServiceProvider, ObjectMapperProvider objectMapperProvider) {
|
||||
return new GenericParameterService(propertyResolverUtils, delegatingMethodParameterCustomizer(),
|
||||
optionalWebConversionServiceProvider,objectMapperProvider);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解决@ParameterObject和@Hidden, JsonIgnore同时使用不生效的问题
|
||||
* @return
|
||||
*/
|
||||
private Optional<DelegatingMethodParameterCustomizer> delegatingMethodParameterCustomizer() {
|
||||
// NOSONAR
|
||||
return Optional.of((originalMethodParam, methodParam) -> {
|
||||
// 这个方法类拥有的注解
|
||||
Annotation[] annotations = originalMethodParam.getParameterType().getAnnotations();
|
||||
boolean typeContainParameterObject = false;
|
||||
if (annotations.length > 0) {
|
||||
List<? extends Class<? extends Annotation>> annotationTypes = Arrays.stream(annotations).map(Annotation::annotationType).collect(Collectors.toList());
|
||||
typeContainParameterObject = annotationTypes.contains(ParameterObject.class);
|
||||
}
|
||||
|
||||
boolean hasParameterAnnotations = (originalMethodParam.hasParameterAnnotations() && originalMethodParam.hasParameterAnnotation(ParameterObject.class));
|
||||
if (typeContainParameterObject || hasParameterAnnotations) {
|
||||
try {
|
||||
if (isParameterIgnore(originalMethodParam, methodParam)) {
|
||||
Field field = FieldUtils.getDeclaredField(DelegatingMethodParameter.class, "additionalParameterAnnotations", true);
|
||||
try {
|
||||
field.set(methodParam, new Annotation[] {new Hidden() { // NOSONAR
|
||||
@Override
|
||||
public Class<? extends Annotation> annotationType() {
|
||||
return Hidden.class;
|
||||
}}
|
||||
});
|
||||
} catch (IllegalArgumentException|IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
} catch (NoSuchFieldException | SecurityException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private boolean isParameterIgnore(MethodParameter originalMethodParam, MethodParameter methodParam) throws NoSuchFieldException, SecurityException {
|
||||
String searchCount = "searchCount";
|
||||
String parameterName = StrUtil.isBlank(methodParam.getParameterName())? "":methodParam.getParameterName();
|
||||
String fieldName = parameterName.indexOf('.') == -1 ? parameterName : parameterName.substring(0, parameterName.indexOf('.'));
|
||||
// 解决mybatis-plus返回的查询参数污染的问题
|
||||
if (originalMethodParam.getParameterType().isAssignableFrom(PageParam.class)) {
|
||||
if (searchCount.equals(fieldName)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Field declaredField;
|
||||
try {
|
||||
declaredField = originalMethodParam.getParameterType().getDeclaredField(fieldName);
|
||||
} catch (NoSuchFieldException e) {
|
||||
e.printStackTrace();
|
||||
declaredField = originalMethodParam.getParameterType().getSuperclass().getDeclaredField(fieldName);
|
||||
}
|
||||
return Stream.of(declaredField.getAnnotations())
|
||||
.filter(annot -> Arrays.asList(Hidden.class, JsonIgnore.class).contains(annot.annotationType())).count() > 0;
|
||||
}
|
||||
}
|
||||
@ -15,9 +15,9 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import jakarta.servlet.*;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
@ -28,7 +28,7 @@ import java.io.IOException;
|
||||
@Component
|
||||
public class XssFilter implements Filter {
|
||||
Logger logger = LoggerFactory.getLogger(getClass().getName());
|
||||
|
||||
|
||||
@Override
|
||||
public void init(FilterConfig filterConfig) throws ServletException {
|
||||
|
||||
@ -39,7 +39,7 @@ public class XssFilter implements Filter {
|
||||
HttpServletRequest req = (HttpServletRequest) request;
|
||||
HttpServletResponse resp = (HttpServletResponse) response;
|
||||
|
||||
|
||||
|
||||
logger.info("uri:{}",req.getRequestURI());
|
||||
// xss 过滤
|
||||
chain.doFilter(new XssWrapper(req), resp);
|
||||
|
||||
@ -12,7 +12,7 @@ import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.Objects;
|
||||
|
||||
@ -13,7 +13,7 @@ package com.yami.shop.common.util;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
|
||||
/**
|
||||
* @author lanhai
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
|
||||
package com.yami.shop.common.util;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
|
||||
/**
|
||||
* IP帮助工具
|
||||
|
||||
@ -14,7 +14,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import io.swagger.v3.oas.annotations.Hidden;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springdoc.api.annotations.ParameterObject;
|
||||
import org.springdoc.core.annotations.ParameterObject;
|
||||
|
||||
import java.util.List;
|
||||
/**
|
||||
|
||||
@ -12,8 +12,8 @@ package com.yami.shop.common.xss;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletRequestWrapper;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletRequestWrapper;
|
||||
|
||||
/**
|
||||
* xss 攻击过滤
|
||||
|
||||
@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
/**
|
||||
* @author 菠萝凤梨
|
||||
|
||||
@ -23,7 +23,7 @@ public class MallWebSecurityConfigurerAdapter {
|
||||
.and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
|
||||
.and().authorizeRequests().requestMatchers(CorsUtils::isPreFlightRequest).permitAll()
|
||||
.and()
|
||||
.authorizeRequests().antMatchers(
|
||||
.authorizeRequests().requestMatchers(
|
||||
"/**").permitAll().and().build();
|
||||
}
|
||||
|
||||
|
||||
@ -21,7 +21,7 @@ import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
|
||||
|
||||
import javax.servlet.DispatcherType;
|
||||
import jakarta.servlet.DispatcherType;
|
||||
|
||||
/**
|
||||
* 授权配置
|
||||
|
||||
@ -18,7 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
|
||||
/**
|
||||
* @author 菠萝凤梨
|
||||
|
||||
@ -15,13 +15,13 @@ import com.yami.shop.security.common.dto.RefreshTokenDTO;
|
||||
import com.yami.shop.security.common.manager.TokenStore;
|
||||
import com.yami.shop.security.common.vo.TokenInfoVO;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import ma.glasnost.orika.MapperFacade;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
/**
|
||||
* @author 菠萝凤梨
|
||||
@ -34,15 +34,13 @@ public class TokenController {
|
||||
@Autowired
|
||||
private TokenStore tokenStore;
|
||||
|
||||
@Autowired
|
||||
private MapperFacade mapperFacade;
|
||||
|
||||
@PostMapping("/token/refresh")
|
||||
public ServerResponseEntity<TokenInfoVO> refreshToken(@Valid @RequestBody RefreshTokenDTO refreshTokenDTO) {
|
||||
TokenInfoBO tokenInfoServerResponseEntity = tokenStore
|
||||
.refreshToken(refreshTokenDTO.getRefreshToken());
|
||||
return ServerResponseEntity
|
||||
.success(mapperFacade.map(tokenInfoServerResponseEntity, TokenInfoVO.class));
|
||||
.success(BeanUtil.copyProperties(tokenInfoServerResponseEntity, TokenInfoVO.class));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -12,7 +12,7 @@ package com.yami.shop.security.common.dto;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* 用于登陆传递账号密码
|
||||
|
||||
@ -11,7 +11,7 @@ package com.yami.shop.security.common.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* 刷新token
|
||||
|
||||
@ -25,9 +25,9 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.AntPathMatcher;
|
||||
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import jakarta.servlet.*;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@ -12,6 +12,7 @@ package com.yami.shop.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.yami.shop.bean.model.Category;
|
||||
@ -20,8 +21,6 @@ import com.yami.shop.dao.CategoryMapper;
|
||||
import com.yami.shop.dao.CategoryPropMapper;
|
||||
import com.yami.shop.service.AttachFileService;
|
||||
import com.yami.shop.service.CategoryService;
|
||||
import ma.glasnost.orika.MapperFacade;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -38,19 +37,16 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
|
||||
|
||||
@Autowired
|
||||
private CategoryMapper categoryMapper;
|
||||
|
||||
|
||||
@Autowired
|
||||
private CategoryBrandMapper categoryBrandMapper;
|
||||
|
||||
|
||||
@Autowired
|
||||
private CategoryPropMapper categoryPropMapper;
|
||||
|
||||
|
||||
@Autowired
|
||||
private AttachFileService attachFileService;
|
||||
|
||||
@Autowired
|
||||
private MapperFacade mapperFacade;
|
||||
|
||||
|
||||
@Override
|
||||
public List<Category> listByParentId(Long parentId) {
|
||||
return categoryMapper.listByParentId(parentId);
|
||||
@ -67,7 +63,7 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
|
||||
category.setRecTime(new Date());
|
||||
// 保存分类信息
|
||||
categoryMapper.insert(category);
|
||||
|
||||
|
||||
insertBrandsAndAttributes(category);
|
||||
}
|
||||
|
||||
@ -86,19 +82,19 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
|
||||
// attachFileService.deleteFile(dbCategory.getPic());
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deleteCategory(Long categoryId) {
|
||||
Category category = categoryMapper.selectById(categoryId);
|
||||
categoryMapper.deleteById(categoryId);
|
||||
|
||||
|
||||
deleteBrandsAndAttributes(categoryId);
|
||||
// if (StrUtil.isNotBlank(category.getPic())) {
|
||||
// attachFileService.deleteFile(category.getPic());
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void deleteBrandsAndAttributes(Long categoryId) {
|
||||
// 删除所有分类所关联的品牌
|
||||
@ -106,13 +102,13 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
|
||||
// 删除所有分类所关联的参数
|
||||
categoryPropMapper.deleteByCategoryId(categoryId);
|
||||
}
|
||||
|
||||
|
||||
private void insertBrandsAndAttributes(Category category) {
|
||||
//保存分类与品牌信息
|
||||
if(CollUtil.isNotEmpty(category.getBrandIds())){
|
||||
categoryBrandMapper.insertCategoryBrand(category.getCategoryId(), category.getBrandIds());
|
||||
}
|
||||
|
||||
|
||||
//保存分类与参数信息
|
||||
if(CollUtil.isNotEmpty(category.getAttributeIds())){
|
||||
categoryPropMapper.insertCategoryProp(category.getCategoryId(), category.getAttributeIds());
|
||||
@ -124,18 +120,18 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
|
||||
List<Category> categories = categoryMapper.selectList(new LambdaQueryWrapper<Category>().le(Category::getGrade,grade).eq(Category::getShopId,shopId));
|
||||
return categoryListToTree(categories);
|
||||
}
|
||||
|
||||
|
||||
public List<Category> categoryListToTree(List<Category> categorys){
|
||||
if (CollectionUtils.isEmpty(categorys)) {
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
Map<Long, List<Category>> categoryMap = categorys.stream().collect(Collectors.groupingBy(Category::getParentId));
|
||||
|
||||
|
||||
List<Category> rootList = categoryMap.get(0L);
|
||||
transformCategoryTree(rootList,categoryMap);
|
||||
return rootList;
|
||||
}
|
||||
|
||||
|
||||
public void transformCategoryTree(List<Category> categorys,Map<Long, List<Category>> categoryMap) {
|
||||
for (Category category : categorys) {
|
||||
List<Category> nextList = categoryMap.get(category.getCategoryId());
|
||||
|
||||
@ -26,7 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
package com.yami.shop.sys.controller;
|
||||
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
@ -47,7 +47,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
public class SysConfigController{
|
||||
@Autowired
|
||||
private SysConfigService sysConfigService;
|
||||
|
||||
|
||||
/**
|
||||
* 所有配置列表
|
||||
*/
|
||||
@ -57,8 +57,8 @@ public class SysConfigController{
|
||||
IPage<SysConfig> sysConfigs = sysConfigService.page(page, new LambdaQueryWrapper<SysConfig>().like(StrUtil.isNotBlank(paramKey),SysConfig::getParamKey,paramKey));
|
||||
return ServerResponseEntity.success(sysConfigs);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 配置信息
|
||||
*/
|
||||
@ -68,7 +68,7 @@ public class SysConfigController{
|
||||
SysConfig config = sysConfigService.getById(id);
|
||||
return ServerResponseEntity.success(config);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 保存配置
|
||||
*/
|
||||
@ -79,7 +79,7 @@ public class SysConfigController{
|
||||
sysConfigService.save(config);
|
||||
return ServerResponseEntity.success();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改配置
|
||||
*/
|
||||
@ -90,7 +90,7 @@ public class SysConfigController{
|
||||
sysConfigService.updateById(config);
|
||||
return ServerResponseEntity.success();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除配置
|
||||
*/
|
||||
|
||||
@ -25,7 +25,7 @@ import com.yami.shop.common.response.ServerResponseEntity;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
@ -34,7 +34,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
|
||||
@ -13,8 +13,8 @@ package com.yami.shop.sys.dto;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.Size;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.Size;
|
||||
/**
|
||||
* @author lanhai
|
||||
*/
|
||||
@ -26,7 +26,7 @@ public class UpdatePasswordDto {
|
||||
@Size(max = 50)
|
||||
@Schema(description = "旧密码" ,required=true)
|
||||
private String password;
|
||||
|
||||
|
||||
@NotBlank(message="新密码不能为空")
|
||||
@Size(max = 50)
|
||||
@Schema(description = "新密码" ,required=true)
|
||||
|
||||
@ -14,7 +14,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* 系统配置信息
|
||||
@ -25,13 +25,13 @@ import javax.validation.constraints.NotBlank;
|
||||
public class SysConfig {
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
|
||||
@NotBlank(message="参数名不能为空")
|
||||
private String paramKey;
|
||||
|
||||
|
||||
@NotBlank(message="参数值不能为空")
|
||||
private String paramValue;
|
||||
|
||||
|
||||
private String remark;
|
||||
|
||||
}
|
||||
|
||||
@ -16,8 +16,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@ -29,7 +29,7 @@ import java.util.List;
|
||||
@TableName("tz_sys_menu")
|
||||
public class SysMenu implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
/**
|
||||
* 菜单ID
|
||||
*/
|
||||
@ -41,13 +41,13 @@ public class SysMenu implements Serializable {
|
||||
*/
|
||||
@NotNull(message="上级菜单不能为空")
|
||||
private Long parentId;
|
||||
|
||||
|
||||
/**
|
||||
* 父菜单名称
|
||||
*/
|
||||
@TableField(exist=false)
|
||||
private String parentName;
|
||||
|
||||
|
||||
/**
|
||||
* 菜单名称
|
||||
*/
|
||||
@ -78,7 +78,7 @@ public class SysMenu implements Serializable {
|
||||
* 排序
|
||||
*/
|
||||
private Integer orderNum;
|
||||
|
||||
|
||||
@TableField(exist=false)
|
||||
private List<?> list;
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@ -30,7 +30,7 @@ import java.util.List;
|
||||
@TableName("tz_sys_role")
|
||||
public class SysRole implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
/**
|
||||
* 角色ID
|
||||
*
|
||||
@ -52,7 +52,7 @@ public class SysRole implements Serializable {
|
||||
|
||||
@TableField(exist=false)
|
||||
private List<Long> menuIdList;
|
||||
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
|
||||
@ -18,10 +18,10 @@ import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import javax.validation.constraints.Email;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.Pattern;
|
||||
import javax.validation.constraints.Size;
|
||||
import jakarta.validation.constraints.Email;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.Pattern;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@ -34,7 +34,7 @@ import java.util.List;
|
||||
@TableName("tz_sys_user")
|
||||
public class SysUser implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*
|
||||
@ -72,18 +72,18 @@ public class SysUser implements Serializable {
|
||||
* 状态 0:禁用 1:正常
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
|
||||
/**
|
||||
* 用户所在店铺id
|
||||
*/
|
||||
private Long shopId;
|
||||
|
||||
|
||||
/**
|
||||
* 角色ID列表
|
||||
*/
|
||||
@TableField(exist=false)
|
||||
private List<Long> roleIdList;
|
||||
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user