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
拉新营销平台