diff --git a/nla-common/pom.xml b/nla-common/pom.xml index 3f28b16..6d549e0 100644 --- a/nla-common/pom.xml +++ b/nla-common/pom.xml @@ -78,6 +78,11 @@ jjwt 0.7.0 + + javax.xml.bind + jaxb-api + 2.3.1 + diff --git a/nla-common/src/main/java/cn/nla/common/config/MybatisPlusPageConfig.java b/nla-common/src/main/java/cn/nla/common/config/MybatisPlusPageConfig.java new file mode 100644 index 0000000..26bc90c --- /dev/null +++ b/nla-common/src/main/java/cn/nla/common/config/MybatisPlusPageConfig.java @@ -0,0 +1,28 @@ +package cn.nla.common.config; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class MybatisPlusPageConfig { + // 旧版本配置 + // @Bean + // public PaginationInterceptorpaginationInterceptor() { + // return new PaginationInterceptor(); + // } + /** + * 新的分⻚插件,⼀缓和⼆缓遵循mybatis的规则, + * 需要设置 + * MybatisConfiguration#useDeprecatedExecutor = + * false 避免缓存出现问题 + */ + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); + return interceptor; + } +} diff --git a/nla-common/src/main/java/cn/nla/common/config/SwaggerConfiguration.java b/nla-common/src/main/java/cn/nla/common/config/SwaggerConfiguration.java index 3e038fb..3acc6f7 100644 --- a/nla-common/src/main/java/cn/nla/common/config/SwaggerConfiguration.java +++ b/nla-common/src/main/java/cn/nla/common/config/SwaggerConfiguration.java @@ -44,6 +44,28 @@ public class SwaggerConfiguration { .globalResponses(HttpMethod.POST, getGlobalResponseMessage()); } + /** + * 对优惠劵服务端的接口文档 + */ + @Bean + public Docket couponApiDoc() { + return new Docket(DocumentationType.OAS_30) // 版本3.0 + .groupName("优惠劵端接口文档") + .pathMapping("/") + //定义是否开启Swagger,false是关闭,可以通过变量去控制,线上关闭 + .enable(true) + //配置文档的元信息 + .apiInfo(apiInfo()) + .select() + .apis(RequestHandlerSelectors.basePackage("cn.nla")) + //正则匹配请求路径,并分配到当前项目组 + .paths(PathSelectors.ant("/cop/**")) + .build() + // 新版SwaggerUI3.0 + .globalRequestParameters(globalRequestParameters()) + .globalResponses(HttpMethod.GET, getGlobalResponseMessage()) + .globalResponses(HttpMethod.POST, getGlobalResponseMessage()); + } /** * 接口基本信息配置 diff --git a/nla-common/src/main/java/cn/nla/common/config/WebConfig.java b/nla-common/src/main/java/cn/nla/common/config/WebConfig.java index 16c0825..4e82d87 100644 --- a/nla-common/src/main/java/cn/nla/common/config/WebConfig.java +++ b/nla-common/src/main/java/cn/nla/common/config/WebConfig.java @@ -22,7 +22,7 @@ public class WebConfig implements WebMvcConfigurer { registry.addInterceptor(responseResultInterceptor); registry.addInterceptor(loginInterceptor) //拦截的路径 - .addPathPatterns("/user/*/**", "/address/*/**") + .addPathPatterns("/user/*/**", "/address/*/**", "/cop/*/**") //排查不拦截的路径 .excludePathPatterns( "/user/**/send", diff --git a/nla-common/src/main/java/cn/nla/common/enums/CouponCategoryEnum.java b/nla-common/src/main/java/cn/nla/common/enums/CouponCategoryEnum.java new file mode 100644 index 0000000..a0a992a --- /dev/null +++ b/nla-common/src/main/java/cn/nla/common/enums/CouponCategoryEnum.java @@ -0,0 +1,16 @@ +package cn.nla.common.enums; + +public enum CouponCategoryEnum { + /** + * 新人注册 + */ + NEW_USER, + /** + * 活动任务 + */ + TASK, + /** + * 促销劵 + */ + PROMOTION +} diff --git a/nla-common/src/main/java/cn/nla/common/enums/CouponPublishEnum.java b/nla-common/src/main/java/cn/nla/common/enums/CouponPublishEnum.java new file mode 100644 index 0000000..0163a14 --- /dev/null +++ b/nla-common/src/main/java/cn/nla/common/enums/CouponPublishEnum.java @@ -0,0 +1,19 @@ +package cn.nla.common.enums; + +/** + * 优惠券状态 + */ +public enum CouponPublishEnum { + /** + * 线上 + */ + PUBLISH, + /** + * 草稿 + */ + DRAFT, + /** + * 下线 + */ + OFFLINE +} diff --git a/nla-common/src/main/java/cn/nla/common/enums/CouponStateEnum.java b/nla-common/src/main/java/cn/nla/common/enums/CouponStateEnum.java new file mode 100644 index 0000000..fc8162c --- /dev/null +++ b/nla-common/src/main/java/cn/nla/common/enums/CouponStateEnum.java @@ -0,0 +1,20 @@ +package cn.nla.common.enums; + +public enum CouponStateEnum { + + /** + * 新的可用 + */ + NEW, + + /** + * 已经使用 + */ + USED, + + /** + * 过期 + */ + EXPIRED + +} diff --git a/nla-common/src/main/java/cn/nla/common/util/CommonUtil.java b/nla-common/src/main/java/cn/nla/common/util/CommonUtil.java index f5a22dd..34f2482 100644 --- a/nla-common/src/main/java/cn/nla/common/util/CommonUtil.java +++ b/nla-common/src/main/java/cn/nla/common/util/CommonUtil.java @@ -81,6 +81,14 @@ public class CommonUtil { return null; } + + /** + * 获取当前时间戳 + */ + public static long getCurrentTimestamp(){ + return System.currentTimeMillis(); + } + /** * 获取验证码随机数 * diff --git a/nla-common/src/main/java/cn/nla/common/util/JWTUtil.java b/nla-common/src/main/java/cn/nla/common/util/JWTUtil.java index 73e06d6..021a42e 100644 --- a/nla-common/src/main/java/cn/nla/common/util/JWTUtil.java +++ b/nla-common/src/main/java/cn/nla/common/util/JWTUtil.java @@ -27,6 +27,7 @@ public class JWTUtil { * subject */ private static final String SUBJECT = "yuan"; + /** * 根据用户信息,生成令牌 */ @@ -46,6 +47,7 @@ public class JWTUtil { token = TOKEN_PREFIX + token; return token; } + /** * 校验token的方法 */ @@ -55,7 +57,7 @@ public class JWTUtil { .setSigningKey(SECRET) .parseClaimsJws(token.replace(TOKEN_PREFIX, "")).getBody(); } catch (Exception e) { - log.info("jwt token解密失败"); + log.error("jwt token解密失败", e); return null; } } diff --git a/nla-common/src/test/java/tools/MyBatisPlusGenerator.java b/nla-common/src/test/java/tools/MyBatisPlusGenerator.java index 9b2416c..30f3ce6 100644 --- a/nla-common/src/test/java/tools/MyBatisPlusGenerator.java +++ b/nla-common/src/test/java/tools/MyBatisPlusGenerator.java @@ -22,7 +22,7 @@ public class MyBatisPlusGenerator { // 作者 .setAuthor("YJs") // ⽣成路径,最好使⽤绝对路径,window路径是不⼀样的 - .setOutputDir("D:\\workspace\\2024\\nla-shop\\nla-user-service\\src\\main\\java") + .setOutputDir("D:\\workspace\\2024\\nla-shop\\nla-coupon-service\\src\\main\\java") // ⽂件覆盖 .setFileOverride(true) // 主键策略 @@ -43,7 +43,7 @@ public class MyBatisPlusGenerator { // 设置数据库类型 dsConfig.setDbType(DbType.MYSQL) .setDriverName("com.mysql.cj.jdbc.Driver") - .setUrl("jdbc:mysql://117.72.43.105:3306/p_nla_user?useSSL=false") + .setUrl("jdbc:mysql://117.72.43.105:3306/p_nla_coupon?useSSL=false") .setUsername("root") .setPassword("Yuan625621105."); @@ -58,11 +58,11 @@ public class MyBatisPlusGenerator { //使⽤restcontroller注解 .setRestControllerStyle(true) // ⽣成的表, ⽀持多表⼀起⽣成,以数组形式填写 - .setInclude("user","address"); + .setInclude("coupon","coupon_record"); //4. 包名策略配置 PackageConfig pkConfig = new PackageConfig(); - pkConfig.setParent("cn.nla.user") + pkConfig.setParent("cn.nla.coupon") .setMapper("mapper") .setService("service") .setController("controller") diff --git a/nla-coupon-service/pom.xml b/nla-coupon-service/pom.xml new file mode 100644 index 0000000..d496d4e --- /dev/null +++ b/nla-coupon-service/pom.xml @@ -0,0 +1,28 @@ + + + + nla-shop + cn.nla + 1.0-SNAPSHOT + + 4.0.0 + nla-coupon-service + 优惠券服务模块 + + 11 + 11 + + + + cn.nla + nla-common + 1.0-SNAPSHOT + + + org.projectlombok + lombok + + + diff --git a/nla-coupon-service/src/main/java/cn/nla/coupon/CouponApplication.java b/nla-coupon-service/src/main/java/cn/nla/coupon/CouponApplication.java new file mode 100644 index 0000000..b0fca53 --- /dev/null +++ b/nla-coupon-service/src/main/java/cn/nla/coupon/CouponApplication.java @@ -0,0 +1,15 @@ +package cn.nla.coupon; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; + +@SpringBootApplication +@MapperScan("cn.nla.*.mapper") +@ComponentScan(basePackages = {"cn.nla.*"}) +public class CouponApplication { + public static void main(String[] args) { + SpringApplication.run(CouponApplication.class, args); + } +} diff --git a/nla-coupon-service/src/main/java/cn/nla/coupon/model/VO/CouponVO.java b/nla-coupon-service/src/main/java/cn/nla/coupon/model/VO/CouponVO.java new file mode 100644 index 0000000..a6053ff --- /dev/null +++ b/nla-coupon-service/src/main/java/cn/nla/coupon/model/VO/CouponVO.java @@ -0,0 +1,65 @@ +package cn.nla.coupon.model.VO; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class CouponVO { + /** + * id + */ + private Long id; + /** + * 优惠卷类型[NEW_USER注册赠券,TASK任务卷,PROMOTION促销劵] + */ + private String category; + /** + * 优惠券图片 + */ + @JsonProperty("coupon_img") + private String couponImg; + /** + * 优惠券标题 + */ + @JsonProperty("coupon_title") + private String couponTitle; + /** + * 抵扣价格 + */ + private BigDecimal price; + /** + * 每人限制张数 + */ + @JsonProperty("user_limit") + private Integer userLimit; + /** + * 优惠券开始有效时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",locale = "zh",timezone = "GMT+8") + @JsonProperty("start_time") + private Date startTime; + /** + * 优惠券失效时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",locale = "zh",timezone = "GMT+8") + @JsonProperty("end_time") + private Date endTime; + /** + * 优惠券总量 + */ + @JsonProperty("publish_count") + private Integer publishCount; + /** + * 库存 + */ + private Integer stock; + /** + * 满多少才可以使用 + */ + @JsonProperty("condition_price") + private BigDecimal conditionPrice; +} diff --git a/nla-coupon-service/src/main/resources/application.yml b/nla-coupon-service/src/main/resources/application.yml new file mode 100644 index 0000000..6b0c61e --- /dev/null +++ b/nla-coupon-service/src/main/resources/application.yml @@ -0,0 +1,21 @@ +server: + port: 9002 +spring: + application: + name: nla-coupon-service + #数据库配置 + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://117.72.43.105:3306/p_nla_coupon?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai + username: root + password: Yuan625621105. +#配置plus打印sql⽇志 +mybatis-plus: + configuration: + log-impl: + org.apache.ibatis.logging.stdout.StdOutImpl +#设置⽇志级别,ERROR/WARN/INFO/DEBUG,默认是INFO以上才显示 +#logging: +# level: +# root: INFO + diff --git a/nla-coupon-service/src/main/resources/logback.xml b/nla-coupon-service/src/main/resources/logback.xml new file mode 100644 index 0000000..d5e5fe2 --- /dev/null +++ b/nla-coupon-service/src/main/resources/logback.xml @@ -0,0 +1,71 @@ + + + + + + + + + + ${log.pattern} + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/pom.xml b/pom.xml index edd71dd..2bf372e 100644 --- a/pom.xml +++ b/pom.xml @@ -10,6 +10,7 @@ nla-common nla-user-service + nla-coupon-service pom 拉新营销平台