Browse Source

feat: 更新业务逻辑

master
xc-yjs 8 months ago
parent
commit
22a82eaba9
  1. 5
      nla-common/pom.xml
  2. 28
      nla-common/src/main/java/cn/nla/common/config/MybatisPlusPageConfig.java
  3. 22
      nla-common/src/main/java/cn/nla/common/config/SwaggerConfiguration.java
  4. 2
      nla-common/src/main/java/cn/nla/common/config/WebConfig.java
  5. 16
      nla-common/src/main/java/cn/nla/common/enums/CouponCategoryEnum.java
  6. 19
      nla-common/src/main/java/cn/nla/common/enums/CouponPublishEnum.java
  7. 20
      nla-common/src/main/java/cn/nla/common/enums/CouponStateEnum.java
  8. 8
      nla-common/src/main/java/cn/nla/common/util/CommonUtil.java
  9. 4
      nla-common/src/main/java/cn/nla/common/util/JWTUtil.java
  10. 8
      nla-common/src/test/java/tools/MyBatisPlusGenerator.java
  11. 28
      nla-coupon-service/pom.xml
  12. 15
      nla-coupon-service/src/main/java/cn/nla/coupon/CouponApplication.java
  13. 65
      nla-coupon-service/src/main/java/cn/nla/coupon/model/VO/CouponVO.java
  14. 21
      nla-coupon-service/src/main/resources/application.yml
  15. 71
      nla-coupon-service/src/main/resources/logback.xml
  16. 1
      pom.xml

5
nla-common/pom.xml

@ -78,6 +78,11 @@
<artifactId>jjwt</artifactId>
<version>0.7.0</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies>
</project>

28
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;
}
}

22
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());
}
/**
* 接口基本信息配置

2
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",

16
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
}

19
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
}

20
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
}

8
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();
}
/**
* 获取验证码随机数
*

4
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;
}
}

8
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")

28
nla-coupon-service/pom.xml

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>nla-shop</artifactId>
<groupId>cn.nla</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>nla-coupon-service</artifactId>
<description>优惠券服务模块</description>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>cn.nla</groupId>
<artifactId>nla-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>

15
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);
}
}

65
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;
}

21
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

71
nla-coupon-service/src/main/resources/logback.xml

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 自定义配置: 日志存放路径 -->
<property name="log.path" value="./logs/nla-coupon-service"/>
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 自定义配置: 系统模块日志级别控制 -->
<logger name="cn.nla" level="info"/>
<!-- Spring日志级别控制 -->
<logger name="org.springframework" level="warn"/>
<logger name="io.lettuce.core.protocol" level="ERROR"/>
<!--自定义配置: mapper打印-->
<logger name="cn.nla.coupon.mapper" level="DEBUG"/>
<root level="info">
<appender-ref ref="console"/>
</root>
<!--系统操作日志-->
<root level="info">
<appender-ref ref="file_info"/>
<appender-ref ref="file_error"/>
</root>
</configuration>

1
pom.xml

@ -10,6 +10,7 @@
<modules>
<module>nla-common</module>
<module>nla-user-service</module>
<module>nla-coupon-service</module>
</modules>
<packaging>pom</packaging>
<description>拉新营销平台</description>

Loading…
Cancel
Save