Kaynağa Gözat

产品模块:搭建

wangPH 2 yıl önce
ebeveyn
işleme
cc1a2b1451
28 değiştirilmiş dosya ile 485 ekleme ve 128 silme
  1. 0 26
      pdf-office-api/pdf-office-api-app/src/main/java/cn/kdan/cloud/pdf/office/api/app/vo/ActivityInfoVO.java
  2. 6 0
      pdf-office-api/pdf-office-api-product/src/main/java/cn/kdan/cloud/pdf/office/api/product/feign/ProductApi.java
  3. 6 0
      pdf-office-api/pdf-office-api-product/src/main/java/cn/kdan/cloud/pdf/office/api/product/feign/hystrix/ProductHystrix.java
  4. 61 0
      pdf-office-api/pdf-office-api-product/src/main/java/cn/kdan/cloud/pdf/office/api/product/vo/ActivityInfoVO.java
  5. 0 20
      pdf-office-app/src/main/java/cn/kdan/cloud/pdf/office/app/service/ActivityInformationService.java
  6. 0 31
      pdf-office-app/src/main/java/cn/kdan/cloud/pdf/office/app/service/impl/ActivityInformationServiceImpl.java
  7. 0 19
      pdf-office-app/src/main/java/cn/kdan/cloud/pdf/office/app/service/impl/ActivityTypeServiceImpl.java
  8. 82 0
      pdf-office-pdf-website/pom.xml
  9. 31 0
      pdf-office-pdf-website/src/main/java/cn/kdan/cloud/pdf/office/website/PDFOfficeWebsiteApplication.java
  10. 7 0
      pdf-office-pdf-website/src/main/java/cn/kdan/cloud/pdf/office/website/controller/ActivityController.java
  11. 7 0
      pdf-office-pdf-website/src/main/java/cn/kdan/cloud/pdf/office/website/controller/PayController.java
  12. 37 0
      pdf-office-pdf-website/src/main/java/cn/kdan/cloud/pdf/office/website/controller/ProductController.java
  13. 12 0
      pdf-office-pdf-website/src/main/resources/bootstrap.properties
  14. 73 0
      pdf-office-pdf-website/src/main/resources/logback-spring.xml
  15. 3 3
      pdf-office-app/src/main/java/cn/kdan/cloud/pdf/office/app/controller/ActivityInfoController.java
  16. 12 2
      pdf-office-product/src/main/java/cn/kdan/cloud/pdf/office/product/controller/ProductController.java
  17. 27 10
      pdf-office-app/src/main/java/cn/kdan/cloud/pdf/office/app/entity/ActivityInformation.java
  18. 1 1
      pdf-office-app/src/main/java/cn/kdan/cloud/pdf/office/app/entity/ActivityType.java
  19. 3 3
      pdf-office-app/src/main/java/cn/kdan/cloud/pdf/office/app/mapper/ActivityInformationMapper.java
  20. 2 2
      pdf-office-app/src/main/java/cn/kdan/cloud/pdf/office/app/mapper/ActivityTypeMapper.java
  21. 26 0
      pdf-office-product/src/main/java/cn/kdan/cloud/pdf/office/product/service/ActivityInformationService.java
  22. 2 3
      pdf-office-app/src/main/java/cn/kdan/cloud/pdf/office/app/service/ActivityTypeService.java
  23. 2 1
      pdf-office-product/src/main/java/cn/kdan/cloud/pdf/office/product/service/ProductService.java
  24. 42 0
      pdf-office-product/src/main/java/cn/kdan/cloud/pdf/office/product/service/impl/ActivityInformationServiceImpl.java
  25. 16 0
      pdf-office-product/src/main/java/cn/kdan/cloud/pdf/office/product/service/impl/ActivityTypeServiceImpl.java
  26. 22 2
      pdf-office-product/src/main/java/cn/kdan/cloud/pdf/office/product/service/impl/ProductServiceImpl.java
  27. 3 3
      pdf-office-app/src/main/resources/mapper/ActivityInformationMapper.xml
  28. 2 2
      pdf-office-app/src/main/resources/mapper/ActivityTypeMapper.xml

+ 0 - 26
pdf-office-api/pdf-office-api-app/src/main/java/cn/kdan/cloud/pdf/office/api/app/vo/ActivityInfoVO.java

@@ -1,26 +0,0 @@
-package cn.kdan.cloud.pdf.office.api.app.vo;
-
-import lombok.Data;
-import lombok.ToString;
-
-/**
- * @author ComPDFKit-WPH 2023/1/10
- *
- * 活动信息 VO
- */
-@Data
-@ToString
-public class ActivityInfoVO {
-
-    /**
-     * 活动信息
-     */
-    private String activityInfo;
-
-    /**
-     * 活动信息标题
-     */
-    private String activityTitle;
-
-
-}

+ 6 - 0
pdf-office-api/pdf-office-api-product/src/main/java/cn/kdan/cloud/pdf/office/api/product/feign/ProductApi.java

@@ -1,10 +1,12 @@
 package cn.kdan.cloud.pdf.office.api.product.feign;
 
+import cn.kdan.cloud.pdf.office.api.product.dto.ProductListDTO;
 import cn.kdan.cloud.pdf.office.api.product.feign.hystrix.ProductHystrix;
 import cn.kdan.cloud.pdf.office.api.product.vo.ProductPriceVo;
 import cn.kdan.cloud.pdf.office.api.product.vo.ProductVO;
 import cn.kdan.cloud.pdf.office.common.constant.CommonConstant;
 import cn.kdan.cloud.pdf.office.common.pojo.ResultMap;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -25,4 +27,8 @@ public interface ProductApi {
     @GetMapping("/getProduct")
     ResultMap<ProductVO> getProduct(@NotNull(message = "产品id不能为空") @RequestParam("productId") String productId);
 
+
+    @GetMapping("/getProductList")
+    ResultMap<IPage<ProductVO>> getProductList(@RequestParam Long size, @RequestParam Long page);
+
 }

+ 6 - 0
pdf-office-api/pdf-office-api-product/src/main/java/cn/kdan/cloud/pdf/office/api/product/feign/hystrix/ProductHystrix.java

@@ -6,6 +6,7 @@ import cn.kdan.cloud.pdf.office.api.product.vo.ProductPriceVo;
 import cn.kdan.cloud.pdf.office.api.product.vo.ProductVO;
 import cn.kdan.cloud.pdf.office.common.constant.CommonConstant;
 import cn.kdan.cloud.pdf.office.common.pojo.ResultMap;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.stereotype.Service;
 
 import javax.validation.constraints.NotNull;
@@ -22,4 +23,9 @@ public class ProductHystrix implements ProductApi {
     public ResultMap<ProductVO> getProduct(@NotNull(message = "产品id不能为空") String productId) {
         return new ResultMap<>(CommonConstant.ERROR, CommonConstant.RESULT_ERROR_SERVICE_NOT_AVAILABLE);
     }
+
+    @Override
+    public ResultMap<IPage<ProductVO>> getProductList(Long size, Long page) {
+        return new ResultMap<>(CommonConstant.ERROR, CommonConstant.RESULT_ERROR_SERVICE_NOT_AVAILABLE);
+    }
 }

+ 61 - 0
pdf-office-api/pdf-office-api-product/src/main/java/cn/kdan/cloud/pdf/office/api/product/vo/ActivityInfoVO.java

@@ -0,0 +1,61 @@
+package cn.kdan.cloud.pdf.office.api.product.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.ToString;
+
+import java.math.BigDecimal;
+
+/**
+ * @author ComPDFKit-WPH 2023/1/10
+ *
+ * 活动信息 VO
+ */
+@Data
+@ToString
+public class ActivityInfoVO {
+
+    /**
+     * 活动信息
+     */
+    private String activityInfo;
+
+    /**
+     * 活动信息标题
+     */
+    private String activityTitle;
+
+    /**
+     * 活动类型id  1-新用户专用,2正常
+     */
+    private Integer activityTypeId;
+    /**
+     * 活动信息类容
+     */
+    private String contentInformation;
+    /**
+     * 折扣
+     */
+    private BigDecimal discount;
+    /**
+     * 最终价格
+     */
+    private BigDecimal finalPrice;
+    /**
+     * 主键id
+     */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+    /**
+     * 是否启用,1启用,0禁用
+     */
+    private Integer isEnable;
+    /**
+     * 产品id
+     */
+    private String productId;
+
+
+
+}

+ 0 - 20
pdf-office-app/src/main/java/cn/kdan/cloud/pdf/office/app/service/ActivityInformationService.java

@@ -1,20 +0,0 @@
-package cn.kdan.cloud.pdf.office.app.service;
-
-import cn.kdan.cloud.pdf.office.app.entity.ActivityInformation;
-import cn.kdan.cloud.pdf.office.api.app.vo.ActivityInfoVO;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-
-/**
- * @author ComPDFKit-WPH 2023-01-10
- */
-public interface ActivityInformationService extends IService<ActivityInformation> {
-    /**
-     * 获取活动信息
-     *
-     * @param type 活动类型
-     * @return 活动信息
-     */
-    ActivityInfoVO getActivityInfoByType(String type);
-
-}

+ 0 - 31
pdf-office-app/src/main/java/cn/kdan/cloud/pdf/office/app/service/impl/ActivityInformationServiceImpl.java

@@ -1,31 +0,0 @@
-package cn.kdan.cloud.pdf.office.app.service.impl;
-
-import cn.kdan.cloud.pdf.office.app.entity.ActivityInformation;
-import cn.kdan.cloud.pdf.office.app.mapper.ActivityInformationMapper;
-import cn.kdan.cloud.pdf.office.app.service.ActivityInformationService;
-import cn.kdan.cloud.pdf.office.api.app.vo.ActivityInfoVO;
-import cn.kdan.cloud.pdf.office.common.exception.BackendRuntimeException;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * @author ComPDFKit-WPH 2023-01-10
- */
-@Service
-public class ActivityInformationServiceImpl extends ServiceImpl<ActivityInformationMapper, ActivityInformation> implements ActivityInformationService {
-
-
-    @Override
-    public ActivityInfoVO getActivityInfoByType(String type) {
-        ActivityInfoVO activityInfoVO = this.baseMapper.selectActivityInfoByType(type);
-        if (ObjectUtils.isNull(activityInfoVO)){
-            // TODO 查询数据为空抛出异常 没有当前活动类型信息
-            throw new BackendRuntimeException();
-        }
-        return activityInfoVO;
-    }
-}

+ 0 - 19
pdf-office-app/src/main/java/cn/kdan/cloud/pdf/office/app/service/impl/ActivityTypeServiceImpl.java

@@ -1,19 +0,0 @@
-package cn.kdan.cloud.pdf.office.app.service.impl;
-
-import cn.kdan.cloud.pdf.office.app.entity.ActivityType;
-import cn.kdan.cloud.pdf.office.app.mapper.ActivityTypeMapper;
-import cn.kdan.cloud.pdf.office.app.service.ActivityTypeService;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * @author ComPDFKit-WPH 2023-01-10
- */
-@Service
-public class ActivityTypeServiceImpl extends ServiceImpl<ActivityTypeMapper, ActivityType> implements ActivityTypeService {
-
-
-}

+ 82 - 0
pdf-office-pdf-website/pom.xml

@@ -16,4 +16,86 @@
         <maven.compiler.target>8</maven.compiler.target>
     </properties>
 
+
+    <dependencies>
+        <dependency>
+            <groupId>cn.kdan.pdf.office</groupId>
+            <artifactId>pdf-office-common</artifactId>
+            <version>0.0.1</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-amqp</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+            <scope>compile</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid-spring-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.kdan.pdf.office</groupId>
+            <artifactId>pdf-office-api-product</artifactId>
+            <version>0.0.1</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>cn.kdan.pdf.office</groupId>
+                    <artifactId>pdf-office-common</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+    </dependencies>
 </project>

+ 31 - 0
pdf-office-pdf-website/src/main/java/cn/kdan/cloud/pdf/office/website/PDFOfficeWebsiteApplication.java

@@ -0,0 +1,31 @@
+package cn.kdan.cloud.pdf.office.website;
+
+import cn.kdan.cloud.pdf.office.api.product.annotation.EnableProductApiClient;
+import cn.kdan.cloud.pdf.office.common.annotation.EnableCommonTools;
+import cn.kdan.cloud.pdf.office.common.annotation.EnableMybatisPlusConfig;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.netflix.hystrix.EnableHystrix;
+
+/**
+ * @author ComPDFKit-WPH 2023/1/12
+ */
+
+@SpringBootApplication
+@EnableDiscoveryClient
+@EnableHystrix
+@EnableMybatisPlusConfig
+@MapperScan("cn.kdan.cloud.pdf.office.website.mapper")
+@EnableCaching
+@EnableCommonTools
+@EnableProductApiClient
+public class PDFOfficeWebsiteApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(PDFOfficeWebsiteApplication.class, args);
+    }
+
+}

+ 7 - 0
pdf-office-pdf-website/src/main/java/cn/kdan/cloud/pdf/office/website/controller/ActivityController.java

@@ -0,0 +1,7 @@
+package cn.kdan.cloud.pdf.office.website.controller;
+
+/**
+ * @author ComPDFKit-WPH 2023/2/2
+ */
+public class ActivityController {
+}

+ 7 - 0
pdf-office-pdf-website/src/main/java/cn/kdan/cloud/pdf/office/website/controller/PayController.java

@@ -0,0 +1,7 @@
+package cn.kdan.cloud.pdf.office.website.controller;
+
+/**
+ * @author ComPDFKit-WPH 2023/2/2
+ */
+public class PayController {
+}

+ 37 - 0
pdf-office-pdf-website/src/main/java/cn/kdan/cloud/pdf/office/website/controller/ProductController.java

@@ -0,0 +1,37 @@
+package cn.kdan.cloud.pdf.office.website.controller;
+
+import cn.kdan.cloud.pdf.office.api.product.feign.ProductApi;
+import cn.kdan.cloud.pdf.office.api.product.vo.ProductVO;
+import cn.kdan.cloud.pdf.office.common.pojo.ResultMap;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author ComPDFKit-WPH 2023/2/2
+ */
+@RestController
+@RequestMapping("/website/product")
+@RequiredArgsConstructor
+public class ProductController {
+
+    private final ProductApi productApi;
+
+    /**
+     * 获取产品列表
+     *
+     * @param size size
+     * @param page page
+     * @return ProductVOs
+     */
+    @GetMapping("list")
+    public ResultMap<IPage<ProductVO>> getProductList(@RequestParam Long size,
+                                                      @RequestParam Long page){
+        return productApi.getProductList(size,page);
+    }
+
+
+}

+ 12 - 0
pdf-office-pdf-website/src/main/resources/bootstrap.properties

@@ -0,0 +1,12 @@
+spring.profiles.active=@spring.profiles.active@
+server.servlet.context-path=/
+spring.application.name=pdf-office-website
+spring.cloud.nacos.config.server-addr=http://106.55.99.175:8848
+spring.cloud.nacos.config.username=nacos
+spring.cloud.nacos.config.password=Nacos@123!
+spring.cloud.nacos.config.file-extension=yml
+spring.cloud.nacos.config.refresh-enabled=true
+
+spring.cloud.nacos.discovery.server-addr=http://localhost:8848
+spring.cloud.nacos.discovery.username=nacos
+spring.cloud.nacos.discovery.password=nacos

+ 73 - 0
pdf-office-pdf-website/src/main/resources/logback-spring.xml

@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false">
+    <!-- 引入spirng boot默认的logback配置文件 -->
+    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
+    <springProperty scope="context" name="logPath" source="log.path" />
+    <springProperty scope="context" name="logLevel" source="log.level" />
+    <!-- 控制台输出 -->
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
+        </encoder>
+    </appender>
+
+    <!-- 按照每天生成日志文件 info输出 -->
+    <appender name="FileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!--只输出INFO-->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!--过滤 INFO-->
+            <level>INFO</level>
+            <!--匹配到就禁止-->
+            <onMatch>ACCEPT</onMatch>
+            <!--没有匹配到就允许-->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+        <!--滚动策略-->
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <!--日志文件输出的文件名-->
+            <FileNamePattern>${logPath}/account-provider/account-provider_%d{yyyy-MM-dd}.%i.log</FileNamePattern>
+            <!--日志文件保留天数-->
+            <MaxHistory>30</MaxHistory>
+            <!--日志文件最大的大小-->
+            <MaxFileSize>300MB</MaxFileSize>
+        </rollingPolicy>
+        <!--格式化输出-->
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <!--warn文件输出-->
+    <!-- 按照每天和固定大小(10MB)生成日志文件【最新的日志,是日期最大数字最大的】 -->
+    <appender name="FileWarnLog"  class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <!--设置日志级别,过滤掉info日志,只输入warn日志-->
+            <level>WARN</level>
+        </filter>
+        <!--滚动策略-->
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <!--日志文件输出的文件名-->
+            <FileNamePattern>${logPath}/account-provider/account-provider_warn_%d{yyyy-MM-dd}.%i.log</FileNamePattern>
+            <!--日志文件保留天数-->
+            <MaxHistory>30</MaxHistory>
+            <!--日志文件最大的大小-->
+            <MaxFileSize>300MB</MaxFileSize>
+        </rollingPolicy>
+        <!--格式化输出-->
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+
+    <!-- 日志输出级别 -->
+    <root level="${logLevel}">
+        <appender-ref ref="STDOUT" />
+        <appender-ref ref="FileWarnLog" />
+        <appender-ref ref="FileInfoLog" />
+    </root>
+</configuration>

+ 3 - 3
pdf-office-app/src/main/java/cn/kdan/cloud/pdf/office/app/controller/ActivityInfoController.java

@@ -1,8 +1,8 @@
-package cn.kdan.cloud.pdf.office.app.controller;
+package cn.kdan.cloud.pdf.office.product.controller;
 
-import cn.kdan.cloud.pdf.office.app.service.ActivityInformationService;
-import cn.kdan.cloud.pdf.office.api.app.vo.ActivityInfoVO;
+import cn.kdan.cloud.pdf.office.api.product.vo.ActivityInfoVO;
 import cn.kdan.cloud.pdf.office.common.pojo.ResultMap;
+import cn.kdan.cloud.pdf.office.product.service.ActivityInformationService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;

+ 12 - 2
pdf-office-product/src/main/java/cn/kdan/cloud/pdf/office/product/controller/ProductController.java

@@ -1,9 +1,11 @@
 package cn.kdan.cloud.pdf.office.product.controller;
 
+import cn.kdan.cloud.pdf.office.api.product.dto.ProductListDTO;
 import cn.kdan.cloud.pdf.office.api.product.vo.ProductPriceVo;
 import cn.kdan.cloud.pdf.office.api.product.vo.ProductVO;
 import cn.kdan.cloud.pdf.office.common.pojo.ResultMap;
 import cn.kdan.cloud.pdf.office.product.service.ProductService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import lombok.RequiredArgsConstructor;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -24,8 +26,9 @@ public class ProductController {
     private final ProductService productService;
 
     @GetMapping("/getProductPrice")
-    public ResultMap<ProductPriceVo> getProductPrice(@Validated @NotNull(message = "产品id不能为空") @RequestParam("productId") String productId){
-        return ResultMap.success(productService.getProductPrice(productId));
+    public ResultMap<ProductPriceVo> getProductPrice(@Validated @NotNull(message = "产品id不能为空") @RequestParam("productId") String productId,
+                                                     @NotNull(message = "userId不能为空") @RequestParam("userId") String userId){
+        return ResultMap.success(productService.getProductPrice(productId,userId));
     }
 
 
@@ -34,4 +37,11 @@ public class ProductController {
         return ResultMap.success(productService.getProduct(productId));
     }
 
+    @GetMapping("/getProductList")
+    public ResultMap<IPage<ProductVO>> getProductList(@RequestParam Long size,@RequestParam Long page){
+        ProductListDTO productListDTO = new ProductListDTO();
+        productListDTO.setSize(size);
+        productListDTO.setPage(page);
+        return ResultMap.success(productService.page(productListDTO));
+    }
 }

+ 27 - 10
pdf-office-app/src/main/java/cn/kdan/cloud/pdf/office/app/entity/ActivityInformation.java

@@ -1,4 +1,4 @@
-package cn.kdan.cloud.pdf.office.app.entity;
+package cn.kdan.cloud.pdf.office.product.entity;
 
 import cn.kdan.cloud.pdf.office.common.base.BaseEntity;
 import com.baomidou.mybatisplus.annotation.IdType;
@@ -6,31 +6,48 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import java.math.BigDecimal;
 
 /**
- * @author ComPDFKit-WPH 2023-01-10
+ * @author ComPDFKit-WPH 2023-02-06
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
 @TableName("activity_information")
-public class ActivityInformation extends BaseEntity {
+public class ActivityInformation extends BaseEntity{
 
     /**
-     * 主键id
+     * 活动标题
      */
-    @TableId(type = IdType.ASSIGN_UUID)
-    private String id;
+    private String activityTitle;
     /**
-     * 活动类型id
+     * 活动类型id  1-新用户专用,2正常
      */
     private String activityTypeId;
     /**
      * 活动信息类容
      */
     private String contentInformation;
-
-    private String activityTitle;
-
+    /**
+     * 折扣
+     */
+    private BigDecimal discount;
+    /**
+     * 最终价格
+     */
+    private BigDecimal finalPrice;
+    /**
+     * 主键id
+     */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+    /**
+     * 是否启用,1启用,0禁用
+     */
     private Integer isEnable;
+    /**
+     * 产品id
+     */
+    private String productId;
 
 }

+ 1 - 1
pdf-office-app/src/main/java/cn/kdan/cloud/pdf/office/app/entity/ActivityType.java

@@ -1,4 +1,4 @@
-package cn.kdan.cloud.pdf.office.app.entity;
+package cn.kdan.cloud.pdf.office.product.entity;
 
 import cn.kdan.cloud.pdf.office.common.base.BaseEntity;
 import com.baomidou.mybatisplus.annotation.IdType;

+ 3 - 3
pdf-office-app/src/main/java/cn/kdan/cloud/pdf/office/app/mapper/ActivityInformationMapper.java

@@ -1,7 +1,7 @@
-package cn.kdan.cloud.pdf.office.app.mapper;
+package cn.kdan.cloud.pdf.office.product.mapper;
 
-import cn.kdan.cloud.pdf.office.app.entity.ActivityInformation;
-import cn.kdan.cloud.pdf.office.api.app.vo.ActivityInfoVO;
+import cn.kdan.cloud.pdf.office.api.product.vo.ActivityInfoVO;
+import cn.kdan.cloud.pdf.office.product.entity.ActivityInformation;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 

+ 2 - 2
pdf-office-app/src/main/java/cn/kdan/cloud/pdf/office/app/mapper/ActivityTypeMapper.java

@@ -1,6 +1,6 @@
-package cn.kdan.cloud.pdf.office.app.mapper;
+package cn.kdan.cloud.pdf.office.product.mapper;
 
-import cn.kdan.cloud.pdf.office.app.entity.ActivityType;
+import cn.kdan.cloud.pdf.office.product.entity.ActivityType;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**

+ 26 - 0
pdf-office-product/src/main/java/cn/kdan/cloud/pdf/office/product/service/ActivityInformationService.java

@@ -0,0 +1,26 @@
+package cn.kdan.cloud.pdf.office.product.service;
+
+import cn.kdan.cloud.pdf.office.api.product.vo.ActivityInfoVO;
+import cn.kdan.cloud.pdf.office.product.entity.ActivityInformation;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @author ComPDFKit-WPH 2023-01-10
+ */
+public interface ActivityInformationService extends IService<ActivityInformation> {
+    /**
+     * 获取活动信息
+     *
+     * @param type 活动类型
+     * @return 活动信息
+     */
+    ActivityInfoVO getActivityInfoByType(String type);
+
+    /**
+     * 获取活动信息
+     *
+     * @param productId productId
+     * @return ActivityInfoVO
+     */
+    ActivityInfoVO getActivityInfoByProductId(String productId);
+}

+ 2 - 3
pdf-office-app/src/main/java/cn/kdan/cloud/pdf/office/app/service/ActivityTypeService.java

@@ -1,8 +1,7 @@
-package cn.kdan.cloud.pdf.office.app.service;
+package cn.kdan.cloud.pdf.office.product.service;
 
-import cn.kdan.cloud.pdf.office.app.entity.ActivityType;
+import cn.kdan.cloud.pdf.office.product.entity.ActivityType;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 
 /**
  * @author ComPDFKit-WPH 2023-01-10

+ 2 - 1
pdf-office-product/src/main/java/cn/kdan/cloud/pdf/office/product/service/ProductService.java

@@ -23,9 +23,10 @@ public interface ProductService extends IService<Product> {
      * 获取产品价格
      *
      * @param productId 产品id
+     * @param userId userId
      * @return 价格
      */
-    ProductPriceVo getProductPrice(String productId);
+    ProductPriceVo getProductPrice(String productId,String userId);
 
     /**
      * 通过id 获取产品信息

+ 42 - 0
pdf-office-product/src/main/java/cn/kdan/cloud/pdf/office/product/service/impl/ActivityInformationServiceImpl.java

@@ -0,0 +1,42 @@
+package cn.kdan.cloud.pdf.office.product.service.impl;
+
+import cn.kdan.cloud.pdf.office.api.product.vo.ActivityInfoVO;
+import cn.kdan.cloud.pdf.office.common.exception.BackendRuntimeException;
+import cn.kdan.cloud.pdf.office.product.entity.ActivityInformation;
+import cn.kdan.cloud.pdf.office.product.mapper.ActivityInformationMapper;
+import cn.kdan.cloud.pdf.office.product.service.ActivityInformationService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author ComPDFKit-WPH 2023-01-10
+ */
+@Service
+public class ActivityInformationServiceImpl extends ServiceImpl<ActivityInformationMapper, ActivityInformation> implements ActivityInformationService {
+
+
+    @Override
+    public ActivityInfoVO getActivityInfoByType(String type) {
+        ActivityInfoVO activityInfoVO = this.baseMapper.selectActivityInfoByType(type);
+        if (ObjectUtils.isNull(activityInfoVO)){
+            // TODO 查询数据为空抛出异常 没有当前活动类型信息
+            throw new BackendRuntimeException();
+        }
+        return activityInfoVO;
+    }
+
+    @Override
+    public ActivityInfoVO getActivityInfoByProductId(String productId){
+        ActivityInformation activityInformation = this.baseMapper.selectOne(new LambdaQueryWrapper<ActivityInformation>()
+                .eq(ActivityInformation::getProductId, productId)
+                .eq(ActivityInformation::getIsEnable, 1));
+        ActivityInfoVO activityInfoVO = new ActivityInfoVO();
+        activityInfoVO.setActivityInfo(activityInformation.getContentInformation());
+        BeanUtils.copyProperties(activityInformation,activityInfoVO);
+        return activityInfoVO;
+    }
+
+}

+ 16 - 0
pdf-office-product/src/main/java/cn/kdan/cloud/pdf/office/product/service/impl/ActivityTypeServiceImpl.java

@@ -0,0 +1,16 @@
+package cn.kdan.cloud.pdf.office.product.service.impl;
+
+import cn.kdan.cloud.pdf.office.product.entity.ActivityType;
+import cn.kdan.cloud.pdf.office.product.mapper.ActivityTypeMapper;
+import cn.kdan.cloud.pdf.office.product.service.ActivityTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author ComPDFKit-WPH 2023-01-10
+ */
+@Service
+public class ActivityTypeServiceImpl extends ServiceImpl<ActivityTypeMapper, ActivityType> implements ActivityTypeService {
+
+
+}

+ 22 - 2
pdf-office-product/src/main/java/cn/kdan/cloud/pdf/office/product/service/impl/ProductServiceImpl.java

@@ -1,16 +1,21 @@
 package cn.kdan.cloud.pdf.office.product.service.impl;
 
 import cn.kdan.cloud.pdf.office.api.product.dto.ProductListDTO;
+import cn.kdan.cloud.pdf.office.api.product.vo.ActivityInfoVO;
 import cn.kdan.cloud.pdf.office.api.product.vo.ProductPriceVo;
 import cn.kdan.cloud.pdf.office.api.product.vo.ProductVO;
 import cn.kdan.cloud.pdf.office.common.utils.JsonUtils;
 import cn.kdan.cloud.pdf.office.product.entity.Product;
 import cn.kdan.cloud.pdf.office.product.mapper.ProductMapper;
+import cn.kdan.cloud.pdf.office.product.service.ActivityInformationService;
 import cn.kdan.cloud.pdf.office.product.service.ProductService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
@@ -20,8 +25,12 @@ import java.util.List;
  * @author ComPDFKit-WPH 2023-01-28
  */
 @Service
+@Slf4j
+@RequiredArgsConstructor
 public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
 
+    private final ActivityInformationService activityService;
+
     @Override
     public IPage<ProductVO> page(ProductListDTO query) {
         Page<Product> productPage = this.page(new Page<>(query.getPage(), query.getSize()), new LambdaQueryWrapper<>());
@@ -32,18 +41,29 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
     }
 
     @Override
-    public ProductPriceVo getProductPrice(String productId) {
+    public ProductPriceVo getProductPrice(String productId, String userId) {
         ProductPriceVo productPriceVo = new ProductPriceVo();
         BeanUtils.copyProperties(this.baseMapper.selectOne(new LambdaQueryWrapper<Product>()
                 .select(Product::getPrice, Product::getCnyPrice, Product::getPaddleProductId)
                 .eq(Product::getId, productId)), productPriceVo);
+
+        // 判断当前产品是否有活动 获取活动的最终价格
+        ActivityInfoVO activityInfo = activityService.getActivityInfoByProductId(productId);
+        if (!ObjectUtils.isEmpty(activityInfo)) {
+            // 判断是否是新用户专用
+            if (activityInfo.getActivityTypeId() == 1) {
+                // TODO 判断当前用户是否是新用户
+            }else {
+                productPriceVo.setPrice(activityInfo.getFinalPrice());
+            }
+        }
         return productPriceVo;
     }
 
     @Override
     public ProductVO getProduct(String productId) {
         ProductVO productVO = new ProductVO();
-        BeanUtils.copyProperties(this.baseMapper.selectOne(new LambdaQueryWrapper<Product>().eq(Product::getId,productId)),productVO);
+        BeanUtils.copyProperties(this.baseMapper.selectOne(new LambdaQueryWrapper<Product>().eq(Product::getId, productId)), productVO);
         return productVO;
     }
 

+ 3 - 3
pdf-office-app/src/main/resources/mapper/ActivityInformationMapper.xml

@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
-<mapper namespace="cn.kdan.cloud.pdf.office.app.mapper.ActivityInformationMapper">
+<mapper namespace="cn.kdan.cloud.pdf.office.product.mapper.ActivityInformationMapper">
 
     <!-- 可根据自己的需求,是否要使用 -->
-    <resultMap id="ActivityInformationResultMap" type="cn.kdan.cloud.pdf.office.app.entity.ActivityInformation">
+    <resultMap id="ActivityInformationResultMap" type="cn.kdan.cloud.pdf.office.product.entity.ActivityInformation">
         <result property="id" column="id" />
         <result property="activityTypeId" column="activity_type_id" />
         <result property="contentInformation" column="content_information" />
@@ -13,7 +13,7 @@
     </resultMap>
 
     <!-- ActivityInfoVOResultMap -->
-    <resultMap id="ActivityInfoVOResultMap" type="cn.kdan.cloud.pdf.office.api.app.vo.ActivityInfoVO">
+    <resultMap id="ActivityInfoVOResultMap" type="cn.kdan.cloud.pdf.office.api.product.vo.ActivityInfoVO">
         <result property="activityInfo" column="content_information" />
         <result property="activityTitle" column="activity_title" />
     </resultMap>

+ 2 - 2
pdf-office-app/src/main/resources/mapper/ActivityTypeMapper.xml

@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
-<mapper namespace="cn.kdan.cloud.pdf.office.app.mapper.ActivityTypeMapper">
+<mapper namespace="cn.kdan.cloud.pdf.office.product.mapper.ActivityTypeMapper">
 
     <!-- 可根据自己的需求,是否要使用 -->
-    <resultMap id="ActivityTypeResultMap" type="cn.kdan.cloud.pdf.office.app.entity.ActivityType">
+    <resultMap id="ActivityTypeResultMap" type="cn.kdan.cloud.pdf.office.product.entity.ActivityType">
         <result property="id" column="id" />
         <result property="activityType" column="activity_type" />
     </resultMap>