Jelajahi Sumber

feat: 第一次提交

bianzhenhua123 1 bulan lalu
melakukan
b40939c7c4
100 mengubah file dengan 7901 tambahan dan 0 penghapusan
  1. 60 0
      .gitignore
  2. 1 0
      README.md
  3. 395 0
      pom.xml
  4. 105 0
      poyee-activity/pom.xml
  5. 160 0
      poyee-activity/src/main/java/com/tzy/app/controller/AppActConfigController.java
  6. 129 0
      poyee-activity/src/main/java/com/tzy/app/controller/AppActGuessRecordController.java
  7. 224 0
      poyee-activity/src/main/java/com/tzy/app/controller/AppActGuessTeamController.java
  8. 269 0
      poyee-activity/src/main/java/com/tzy/app/controller/AppActManageController.java
  9. 425 0
      poyee-activity/src/main/java/com/tzy/app/controller/AppActPrizeController.java
  10. 250 0
      poyee-activity/src/main/java/com/tzy/app/controller/AppActPrizeRecordController.java
  11. 145 0
      poyee-activity/src/main/java/com/tzy/app/controller/AppActTaskController.java
  12. 99 0
      poyee-activity/src/main/java/com/tzy/app/controller/CompleteProfileController.java
  13. 142 0
      poyee-activity/src/main/java/com/tzy/app/controller/ConsumeLevelController.java
  14. 99 0
      poyee-activity/src/main/java/com/tzy/app/controller/CouponFetchController.java
  15. 184 0
      poyee-activity/src/main/java/com/tzy/app/controller/DrawCardGameController.java
  16. 49 0
      poyee-activity/src/main/java/com/tzy/app/controller/DrawGoodsController.java
  17. 180 0
      poyee-activity/src/main/java/com/tzy/app/controller/GroupDecrAmountController.java
  18. 185 0
      poyee-activity/src/main/java/com/tzy/app/controller/LuckyPointController.java
  19. 154 0
      poyee-activity/src/main/java/com/tzy/app/controller/QuizActivityController.java
  20. 111 0
      poyee-activity/src/main/java/com/tzy/app/controller/TenantInfoController.java
  21. 128 0
      poyee-activity/src/main/java/com/tzy/app/controller/UserActTimesController.java
  22. 77 0
      poyee-activity/src/main/java/com/tzy/app/controller/UserLivePrizeController.java
  23. 99 0
      poyee-activity/src/main/java/com/tzy/app/controller/WatchVideoController.java
  24. 108 0
      poyee-activity/src/main/java/com/tzy/app/domain/AppActConfig.java
  25. 89 0
      poyee-activity/src/main/java/com/tzy/app/domain/AppActGuessRecord.java
  26. 153 0
      poyee-activity/src/main/java/com/tzy/app/domain/AppActGuessTeam.java
  27. 128 0
      poyee-activity/src/main/java/com/tzy/app/domain/AppActManage.java
  28. 99 0
      poyee-activity/src/main/java/com/tzy/app/domain/AppActPrize.java
  29. 69 0
      poyee-activity/src/main/java/com/tzy/app/domain/AppActPrizeRecord.java
  30. 192 0
      poyee-activity/src/main/java/com/tzy/app/domain/AppActTaskManage.java
  31. 125 0
      poyee-activity/src/main/java/com/tzy/app/domain/GuessTeam.java
  32. 34 0
      poyee-activity/src/main/java/com/tzy/app/domain/QuizActivity.java
  33. 30 0
      poyee-activity/src/main/java/com/tzy/app/domain/QuizLib.java
  34. 74 0
      poyee-activity/src/main/java/com/tzy/app/domain/TenantInfo.java
  35. 138 0
      poyee-activity/src/main/java/com/tzy/app/domain/UserActTimes.java
  36. 39 0
      poyee-activity/src/main/java/com/tzy/app/dto/ActDto.java
  37. 24 0
      poyee-activity/src/main/java/com/tzy/app/dto/ActRuleConfig.java
  38. 25 0
      poyee-activity/src/main/java/com/tzy/app/dto/AmountActRule.java
  39. 161 0
      poyee-activity/src/main/java/com/tzy/app/dto/AppActGuessTeamDto.java
  40. 107 0
      poyee-activity/src/main/java/com/tzy/app/dto/AppActivityConfigDto.java
  41. 165 0
      poyee-activity/src/main/java/com/tzy/app/dto/AppActivityInfoDto.java
  42. 94 0
      poyee-activity/src/main/java/com/tzy/app/dto/AppActivityPrizeRecordDto.java
  43. 145 0
      poyee-activity/src/main/java/com/tzy/app/dto/AuctionLotGroupItemDto.java
  44. 28 0
      poyee-activity/src/main/java/com/tzy/app/dto/ConsumeLevelDTO.java
  45. 25 0
      poyee-activity/src/main/java/com/tzy/app/dto/ConsumeLevelPrizeDTO.java
  46. 13 0
      poyee-activity/src/main/java/com/tzy/app/dto/ConsumeRankDTO.java
  47. 17 0
      poyee-activity/src/main/java/com/tzy/app/dto/CountGuessResultDto.java
  48. 12 0
      poyee-activity/src/main/java/com/tzy/app/dto/CountSuccessTimesDto.java
  49. 35 0
      poyee-activity/src/main/java/com/tzy/app/dto/DrawCardGameDTO.java
  50. 34 0
      poyee-activity/src/main/java/com/tzy/app/dto/DrawCardGameLotteryDTO.java
  51. 17 0
      poyee-activity/src/main/java/com/tzy/app/dto/DrawCardGamePrizeDTO.java
  52. 18 0
      poyee-activity/src/main/java/com/tzy/app/dto/DrawCardGameStoresDTO.java
  53. 18 0
      poyee-activity/src/main/java/com/tzy/app/dto/DrawGoodsDTO.java
  54. 21 0
      poyee-activity/src/main/java/com/tzy/app/dto/DrawGoodsParamDTO.java
  55. 24 0
      poyee-activity/src/main/java/com/tzy/app/dto/DrawGoodsSkuDTO.java
  56. 29 0
      poyee-activity/src/main/java/com/tzy/app/dto/DrawOrderDTO.java
  57. 13 0
      poyee-activity/src/main/java/com/tzy/app/dto/DrawShipCardDTO.java
  58. 34 0
      poyee-activity/src/main/java/com/tzy/app/dto/DrawShipOrderDTO.java
  59. 71 0
      poyee-activity/src/main/java/com/tzy/app/dto/GiftRecordDTO.java
  60. 32 0
      poyee-activity/src/main/java/com/tzy/app/dto/GroupDecrAmountDTO.java
  61. 34 0
      poyee-activity/src/main/java/com/tzy/app/dto/ImportDrawPrizeDTO.java
  62. 24 0
      poyee-activity/src/main/java/com/tzy/app/dto/LuckyPointDrawListDto.java
  63. 38 0
      poyee-activity/src/main/java/com/tzy/app/dto/LuckyPointJoinRecordDto.java
  64. 40 0
      poyee-activity/src/main/java/com/tzy/app/dto/LuckyPointPrizeDto.java
  65. 20 0
      poyee-activity/src/main/java/com/tzy/app/dto/PrizeRecordQuery.java
  66. 32 0
      poyee-activity/src/main/java/com/tzy/app/dto/QuizActivityDto.java
  67. 28 0
      poyee-activity/src/main/java/com/tzy/app/dto/QuizLibDto.java
  68. 21 0
      poyee-activity/src/main/java/com/tzy/app/dto/RefActRule.java
  69. 14 0
      poyee-activity/src/main/java/com/tzy/app/dto/SendRankPrizeDto.java
  70. 14 0
      poyee-activity/src/main/java/com/tzy/app/dto/SendRemindDTO.java
  71. 19 0
      poyee-activity/src/main/java/com/tzy/app/dto/SyncGroupAmountDTO.java
  72. 65 0
      poyee-activity/src/main/java/com/tzy/app/mapper/AppActConfigMapper.java
  73. 80 0
      poyee-activity/src/main/java/com/tzy/app/mapper/AppActGuessRecordMapper.java
  74. 62 0
      poyee-activity/src/main/java/com/tzy/app/mapper/AppActGuessTeamMapper.java
  75. 88 0
      poyee-activity/src/main/java/com/tzy/app/mapper/AppActManageMapper.java
  76. 75 0
      poyee-activity/src/main/java/com/tzy/app/mapper/AppActPrizeMapper.java
  77. 96 0
      poyee-activity/src/main/java/com/tzy/app/mapper/AppActPrizeRecordMapper.java
  78. 17 0
      poyee-activity/src/main/java/com/tzy/app/mapper/AppActTaskManageMapper.java
  79. 29 0
      poyee-activity/src/main/java/com/tzy/app/mapper/ConsumeLevelMapper.java
  80. 36 0
      poyee-activity/src/main/java/com/tzy/app/mapper/DrawCardGameMapper.java
  81. 24 0
      poyee-activity/src/main/java/com/tzy/app/mapper/DrawGoodsMapper.java
  82. 29 0
      poyee-activity/src/main/java/com/tzy/app/mapper/GroupDecrAmountMapper.java
  83. 19 0
      poyee-activity/src/main/java/com/tzy/app/mapper/QuizActivityMapper.java
  84. 22 0
      poyee-activity/src/main/java/com/tzy/app/mapper/QuizLibMapper.java
  85. 64 0
      poyee-activity/src/main/java/com/tzy/app/mapper/TenantInfoMapper.java
  86. 68 0
      poyee-activity/src/main/java/com/tzy/app/mapper/UserActTimesMapper.java
  87. 32 0
      poyee-activity/src/main/java/com/tzy/app/service/CompleteProfileService.java
  88. 41 0
      poyee-activity/src/main/java/com/tzy/app/service/ConsumeLevelService.java
  89. 33 0
      poyee-activity/src/main/java/com/tzy/app/service/CouponFetchService.java
  90. 45 0
      poyee-activity/src/main/java/com/tzy/app/service/DrawCardGameService.java
  91. 14 0
      poyee-activity/src/main/java/com/tzy/app/service/DrawGoodsService.java
  92. 42 0
      poyee-activity/src/main/java/com/tzy/app/service/GroupDecrAmountService.java
  93. 65 0
      poyee-activity/src/main/java/com/tzy/app/service/IAppActConfigService.java
  94. 65 0
      poyee-activity/src/main/java/com/tzy/app/service/IAppActGuessRecordService.java
  95. 74 0
      poyee-activity/src/main/java/com/tzy/app/service/IAppActGuessTeamService.java
  96. 85 0
      poyee-activity/src/main/java/com/tzy/app/service/IAppActManageService.java
  97. 79 0
      poyee-activity/src/main/java/com/tzy/app/service/IAppActPrizeRecordService.java
  98. 69 0
      poyee-activity/src/main/java/com/tzy/app/service/IAppActPrizeService.java
  99. 43 0
      poyee-activity/src/main/java/com/tzy/app/service/IAppActTaskService.java
  100. 46 0
      poyee-activity/src/main/java/com/tzy/app/service/ILuckyPointService.java

+ 60 - 0
.gitignore

@@ -0,0 +1,60 @@
+
+.idea
+*.iml
+# Compiled class file
+*.class
+*.zip
+
+/tzy-admin/target/
+/tzy-api/target/
+/tzy-base/target/
+/tzy-common/target/
+/tzy-cust/target/
+/tzy-framework/target/
+/tzy-generator/target/
+/tzy-order/target/
+/tzy-quartz/target/
+/tzy-sportcard/target/
+/tzy-system/target/
+/weixin-api/target
+/target/*
+
+### Java template
+
+
+# Log file
+*.log
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+*.springBeans
+*.project
+*.classpath
+/tzy-base/.settings/
+/tzy-base/.mvn/
+/tzy-admin/.settings/
+/tzy-api/.settings/
+/tzy-api/.mvn/
+/tzy-common/.settings/
+/tzy-cust/.settings/
+/tzy-cust/.mvn/
+/tzy-framework/.settings/
+/tzy-generator/.settings/
+/tzy-order/.settings/
+/tzy-quartz/.settings/
+/tzy-system/.settings/
+/checkstyleidea.tmp/
+/bin/
+/poyee-partner/target/
+/poyee-activity/target
+/poyee-app/target
+/poyee-application/target
+/poyee-coupon/target
+/poyee-dashboard/target
+/poyee-finance/target
+/poyee-goods/target
+/poyee-group/target
+/poyee-living/target
+/poyee-merchant/target
+/poyee-pay/target
+/poyee-ierp/target

+ 1 - 0
README.md

@@ -0,0 +1 @@
+拍卖admin

+ 395 - 0
pom.xml

@@ -0,0 +1,395 @@
+<?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">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.tzy</groupId>
+    <artifactId>tzy</artifactId>
+    <version>4.5.0</version>
+
+    <name>poyee管理系统</name>
+    <description>平台管理系统</description>
+    
+    <properties>
+        <tzy.version>4.5.0</tzy.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <java.version>1.8</java.version>
+        <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
+        <shiro.version>1.6.0</shiro.version>
+        <thymeleaf.extras.shiro.version>2.0.0</thymeleaf.extras.shiro.version>
+        <druid.version>1.2.1</druid.version>
+        <bitwalker.version>1.19</bitwalker.version>
+        <kaptcha.version>2.3.2</kaptcha.version>
+        <swagger.version>2.9.2</swagger.version>
+        <pagehelper.boot.version>1.3.0</pagehelper.boot.version>
+        <fastjson.version>1.2.74</fastjson.version>
+        <oshi.version>5.2.5</oshi.version>
+        <jna.version>5.5.0</jna.version>
+        <commons.io.version>2.5</commons.io.version>
+        <commons.fileupload.version>1.3.3</commons.fileupload.version>
+        <poi.version>3.17</poi.version>
+        <velocity.version>1.7</velocity.version>
+        <skipTests>true</skipTests>
+    </properties>
+
+    <!-- 依赖声明 -->
+    <dependencyManagement>
+        <dependencies>
+        
+            <!-- SpringBoot的依赖配置-->
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>2.1.17.RELEASE</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-starter-test</artifactId>
+                <version>2.5.1</version>
+                <scope>test</scope>
+            </dependency>
+            
+            <!--阿里数据库连接池 -->
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>druid-spring-boot-starter</artifactId>
+                <version>${druid.version}</version>
+            </dependency>
+            
+            <!--验证码 -->
+            <dependency>
+                <groupId>com.github.penggle</groupId>
+                <artifactId>kaptcha</artifactId>
+                <version>${kaptcha.version}</version>
+            </dependency>
+
+            <!--Shiro核心框架 -->
+            <dependency>
+                <groupId>org.apache.shiro</groupId>
+                <artifactId>shiro-core</artifactId>
+                <version>${shiro.version}</version>
+            </dependency>
+
+            <!-- Shiro使用Spring框架 -->
+            <dependency>
+                <groupId>org.apache.shiro</groupId>
+                <artifactId>shiro-spring</artifactId>
+                <version>${shiro.version}</version>
+            </dependency>
+
+            <!-- Shiro使用EhCache缓存框架 -->
+            <dependency>
+                <groupId>org.apache.shiro</groupId>
+                <artifactId>shiro-ehcache</artifactId>
+                <version>${shiro.version}</version>
+            </dependency>
+    
+            <!-- thymeleaf模板引擎和shiro框架的整合 -->
+            <dependency>
+                <groupId>com.github.theborakompanioni</groupId>
+                <artifactId>thymeleaf-extras-shiro</artifactId>
+                <version>${thymeleaf.extras.shiro.version}</version>
+            </dependency>
+
+            <!-- 解析客户端操作系统、浏览器等 -->
+            <dependency>
+                <groupId>eu.bitwalker</groupId>
+                <artifactId>UserAgentUtils</artifactId>
+                <version>${bitwalker.version}</version>
+            </dependency>
+
+            <!-- pagehelper 分页插件 -->
+            <dependency>
+                <groupId>com.github.pagehelper</groupId>
+                <artifactId>pagehelper-spring-boot-starter</artifactId>
+                <version>${pagehelper.boot.version}</version>
+            </dependency>
+
+            <!-- 获取系统信息 -->
+            <dependency>
+                <groupId>com.github.oshi</groupId>
+                <artifactId>oshi-core</artifactId>
+                <version>${oshi.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>net.java.dev.jna</groupId>
+                <artifactId>jna</artifactId>
+                <version>${jna.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>net.java.dev.jna</groupId>
+                <artifactId>jna-platform</artifactId>
+                <version>${jna.version}</version>
+            </dependency>
+
+            <!-- swagger2-->
+            <dependency>
+                <groupId>io.springfox</groupId>
+                <artifactId>springfox-swagger2</artifactId>
+                <version>${swagger.version}</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>io.swagger</groupId>
+                        <artifactId>swagger-annotations</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>io.swagger</groupId>
+                        <artifactId>swagger-models</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+
+            <!-- swagger2-UI-->
+            <dependency>
+                <groupId>io.springfox</groupId>
+                <artifactId>springfox-swagger-ui</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            
+            <!--io常用工具类 -->
+            <dependency>
+                <groupId>commons-io</groupId>
+                <artifactId>commons-io</artifactId>
+                <version>${commons.io.version}</version>
+            </dependency>
+
+            <!--文件上传工具类 -->
+            <dependency>
+                <groupId>commons-fileupload</groupId>
+                <artifactId>commons-fileupload</artifactId>
+                <version>${commons.fileupload.version}</version>
+            </dependency>
+
+            <!-- excel工具 -->
+            <dependency>
+                <groupId>org.apache.poi</groupId>
+                <artifactId>poi-ooxml</artifactId>
+                <version>${poi.version}</version>
+            </dependency>
+
+            <!--velocity代码生成使用模板 -->
+            <dependency>
+                <groupId>org.apache.velocity</groupId>
+                <artifactId>velocity</artifactId>
+                <version>${velocity.version}</version>
+            </dependency>
+
+            <!-- 阿里JSON解析器 -->
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>fastjson</artifactId>
+                <version>${fastjson.version}</version>
+            </dependency>
+            
+            <!-- 定时任务-->
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>tzy-quartz</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+
+            <!-- 代码生成-->
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>tzy-generator</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+
+            <!-- knife4j 接口管理 -->
+            <dependency>
+                <groupId>com.github.xiaoymin</groupId>
+                <artifactId>knife4j-spring-boot-starter</artifactId>
+                <version>2.0.9</version>
+            </dependency>
+            <!-- 核心模块-->
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>tzy-framework</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+
+            <!-- 系统模块-->
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>tzy-system</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+
+            <!-- 通用工具-->
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>tzy-common</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+            
+            <!-- 基础模块-->
+			<dependency>
+				<groupId>com.tzy</groupId>
+				<artifactId>tzy-base</artifactId>
+				<version>${tzy.version}</version>
+			</dependency>
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>tzy-order</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+
+            <!-- 明星卡模块 -->
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>tzy-sportcard</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+            <!--  商品模块  -->
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>poyee-goods</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+            <!--  优惠券模块  -->
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>poyee-coupon</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+            <!--直播模块-->
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>poyee-living</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+            <!--商家管理模块-->
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>poyee-merchant</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>poyee-activity</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+            <!--支付管理模块-->
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>poyee-pay</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+            <!--dashboard-->
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>poyee-dashboard</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+            <!--finance-->
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>poyee-finance</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+            <!--app-->
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>poyee-app</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+            <!--ierp-->
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>poyee-ierp</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+            <!--application-->
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>poyee-application</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+
+            <!--weixin api-->
+            <dependency>
+                <groupId>com.tzy</groupId>
+                <artifactId>weixin-api</artifactId>
+                <version>${tzy.version}</version>
+            </dependency>
+
+
+        </dependencies>
+    </dependencyManagement>
+
+    <modules>
+        <module>tzy-admin</module>
+        <module>tzy-framework</module>
+        <module>tzy-system</module>
+        <module>tzy-quartz</module>
+        <module>tzy-generator</module>
+        <module>tzy-common</module>
+        <module>tzy-base</module>
+        <module>tzy-order</module>
+        <module>tzy-sportcard</module>
+        <module>weixin-api</module>
+        <module>poyee-goods</module>
+        <module>poyee-coupon</module>
+        <module>poyee-living</module>
+        <module>poyee-merchant</module>
+        <module>poyee-activity</module>
+        <module>poyee-pay</module>
+        <module>poyee-dashboard</module>
+        <module>poyee-finance</module>
+        <module>poyee-app</module>
+        <module>poyee-ierp</module>
+        <module>poyee-application</module>
+    </modules>
+    <packaging>pom</packaging>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.1</version>
+                <configuration>
+                    <source>${java.version}</source>
+                    <target>${java.version}</target>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>public</id>
+            <name>aliyun nexus</name>
+            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+        </repository>
+        <repository>
+            <id>zto-maven</id>
+            <url>https://dl.bintray.com/chocotan/maven</url>
+        </repository>
+    </repositories>
+
+    <pluginRepositories>
+        <pluginRepository>
+            <id>public</id>
+            <name>aliyun nexus</name>
+            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </pluginRepository>
+    </pluginRepositories>
+
+</project>

+ 105 - 0
poyee-activity/pom.xml

@@ -0,0 +1,105 @@
+<?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>tzy</artifactId>
+        <groupId>com.tzy</groupId>
+        <version>4.5.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <name>活动管理模块</name>
+    <artifactId>poyee-activity</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <!---->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-test</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpcore</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>net.sf.json-lib</groupId>
+            <artifactId>json-lib</artifactId>
+            <version>2.4</version>
+            <classifier>jdk15</classifier>
+        </dependency>
+        <dependency>
+            <groupId> org.springframework.boot </groupId>
+            <artifactId> spring-boot-configuration-processor </artifactId>
+            <optional> true </optional>
+        </dependency>
+        <!-- SpringBoot 拦截器 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
+            <version>2.3.23</version>
+        </dependency>
+        <dependency>
+            <groupId>org.bouncycastle</groupId>
+            <artifactId>bcprov-jdk15on</artifactId>
+            <version>1.59</version>
+        </dependency>
+        <!--防止进入swagger页面报类型转换错误,排除2.9.2中的引用,手动增加1.5.21版本-->
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-annotations</artifactId>
+            <version>1.5.21</version>
+        </dependency>
+
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-models</artifactId>
+            <version>1.5.21</version>
+        </dependency>
+        <!-- swagger2-UI-->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+        </dependency>
+
+        <!-- 通用工具-->
+        <dependency>
+            <groupId>com.tzy</groupId>
+            <artifactId>tzy-common</artifactId>
+        </dependency>
+        <!--        过滤器-->
+        <dependency>
+            <groupId>com.tzy</groupId>
+            <artifactId>tzy-framework</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.tzy</groupId>
+            <artifactId>poyee-coupon</artifactId>
+        </dependency>
+
+    </dependencies>
+</project>

+ 160 - 0
poyee-activity/src/main/java/com/tzy/app/controller/AppActConfigController.java

@@ -0,0 +1,160 @@
+package com.tzy.app.controller;
+
+import java.util.Arrays;
+import java.util.List;
+
+import com.github.pagehelper.PageHelper;
+import com.tzy.app.dto.ActDto;
+import com.tzy.app.dto.AppActivityConfigDto;
+import com.tzy.common.core.domain.MsgResult;
+import com.tzy.common.core.domain.entity.SysUser;
+import com.tzy.common.dto.OutDTO;
+import com.tzy.common.exception.ServiceException;
+import com.tzy.common.utils.ShiroUtils;
+import com.tzy.common.utils.StringUtils;
+import com.tzy.coupon.card.dto.CouponDto;
+import com.tzy.coupon.card.service.CardBaseInfoService;
+import com.tzy.coupon.card.service.CardRecordService;
+import com.tzy.coupon.card.service.IAppUserCardRecordService;
+import com.tzy.framework.util.RedisUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.beanutils.ConvertUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+import com.tzy.common.annotation.Log;
+import com.tzy.common.enums.BusinessType;
+import com.tzy.app.domain.AppActConfig;
+import com.tzy.app.service.IAppActConfigService;
+import com.tzy.common.core.controller.BaseController;
+import com.tzy.common.core.domain.AjaxResult;
+import com.tzy.common.utils.poi.ExcelUtil;
+import com.tzy.common.core.page.TableDataInfo;
+
+import javax.annotation.Resource;
+
+/**
+ * appActConfigController
+ * 
+ * @author tencheer
+ * @date 2022-08-08
+ */
+@Slf4j
+@Api("商家活动管理")
+@RestController
+@RequestMapping("/act/config")
+public class AppActConfigController extends BaseController {
+
+    @Resource private IAppActConfigService appActConfigService;
+
+    @Resource private CardBaseInfoService cardBaseInfoService;
+
+    @Resource private CardRecordService cardRecordService;
+
+    @Resource private RedisUtils redisUtils;
+
+    /**
+     * 查询appActConfig列表
+     */
+    @ApiOperation("获取商家活动列表")
+    @Log(title = "appActConfig", businessType = BusinessType.SEARCH)
+    @PostMapping("/page")
+    public TableDataInfo page(@RequestBody AppActConfig appActConfig) {
+        PageHelper.startPage(appActConfig.getPage(), appActConfig.getRows());
+        List<AppActivityConfigDto> actConfigList = appActConfigService.selectAppActConfigList(appActConfig);
+        return getDataTable(actConfigList);
+    }
+
+
+    /**
+     * 修改appActConfig
+     */
+    @ApiOperation("根据ID查询商家活动")
+    @Log(title = "appActConfig", businessType = BusinessType.SEARCH)
+    @GetMapping("/find/{id}")
+    public OutDTO find(@PathVariable("id") Long id) {
+        AppActivityConfigDto appActConfig = appActConfigService.selectAppActConfigById(id);
+        return OutDTO.ok().put("actConfig", appActConfig);
+    }
+
+    /**
+     * 新增保存appActConfig
+     */
+    @ApiOperation("新增商家活动")
+    @Log(title = "appActConfig", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public OutDTO addSave(@RequestBody AppActConfig appActConfig) {
+        appActConfigService.insertAppActConfig(appActConfig);
+        return OutDTO.ok();
+    }
+
+    /**
+     * 修改保存appActConfig
+     */
+    @ApiOperation("修改商家活动")
+    @Log(title = "appActConfig", businessType = BusinessType.UPDATE)
+    @PostMapping("/update")
+    public OutDTO editSave(@RequestBody AppActConfig appActConfig) {
+
+        appActConfigService.updateAppActConfig(appActConfig);
+        return OutDTO.ok();
+    }
+
+
+    /**
+     * 删除appActConfig
+     */
+    @ApiOperation("删除商家活动")
+    @Log(title = "appActConfig", businessType = BusinessType.DELETE)
+    @PostMapping( "/del")
+    public OutDTO delete(String ids) {
+
+        appActConfigService.deleteAppActConfigByIds(ids);
+        return OutDTO.ok();
+    }
+
+    @ApiOperation("获取商家活动绑定的优惠券")
+    @Log(title = "appActConfig", businessType = BusinessType.SEARCH)
+    @GetMapping( "/cards/{id}")
+    public OutDTO findByIds(@PathVariable("id") Long id){
+        // 根据ID查询活动
+        AppActivityConfigDto appActConfig = appActConfigService.selectAppActConfigById(id);
+        if(appActConfig == null){
+            throw new ServiceException("活动不存在");
+        }
+        String couponIds = appActConfig.getCouponIds();
+        if(StringUtils.isEmpty(couponIds)){
+            throw new ServiceException("优惠券信息不存在");
+        }
+        String[] splits = couponIds.split(",");
+        Long[] couponIdArr = (Long[]) ConvertUtils.convert(splits, Long.class);
+        List<CouponDto> couponDtoList = cardBaseInfoService.findCardByIds(couponIdArr);
+        couponDtoList.forEach(couponDto -> {
+            int usedNum = cardRecordService.countUsedByCardId(couponDto.getId()); // 优惠券已使用数量
+            couponDto.setUsedNum(usedNum);
+        });
+        return OutDTO.ok().put("couponList", couponDtoList);
+    }
+
+    @ApiOperation("开启关闭商家活动")
+    @Log(title = "appActConfig", businessType = BusinessType.UPDATE)
+    @PostMapping("/open")
+    public OutDTO open(@RequestBody AppActConfig appActConfig){
+
+        Long id = appActConfig.getId();
+        if(id == null){
+            throw new ServiceException("参数id不能为空");
+        }
+        Long status = appActConfig.getStatus();
+        if(status == null){
+            throw new ServiceException("参数status不能为空");
+        }
+        appActConfigService.updateStatus(id, status);
+        redisUtils.del("app_act_cache"); // 每次开启关闭商家活动删除缓存
+        return OutDTO.ok();
+    }
+}

+ 129 - 0
poyee-activity/src/main/java/com/tzy/app/controller/AppActGuessRecordController.java

@@ -0,0 +1,129 @@
+package com.tzy.app.controller;
+
+import java.util.List;
+
+import com.tzy.common.core.domain.MsgResult;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import com.tzy.common.annotation.Log;
+import com.tzy.common.enums.BusinessType;
+import com.tzy.app.domain.AppActGuessRecord;
+import com.tzy.app.service.IAppActGuessRecordService;
+import com.tzy.common.core.controller.BaseController;
+import com.tzy.common.core.domain.AjaxResult;
+import com.tzy.common.utils.poi.ExcelUtil;
+import com.tzy.common.core.page.TableDataInfo;
+
+/**
+ * 竞猜记录Controller
+ * 
+ * @author tencheer
+ * @date 2022-11-10
+ */
+@Controller
+@RequestMapping("/guess/record")
+public class AppActGuessRecordController extends BaseController
+{
+    private String prefix = "guess/record";
+
+    @Autowired
+    private IAppActGuessRecordService appActGuessRecordService;
+
+    @RequiresPermissions("guess:record:view")
+    @GetMapping()
+    public String record()
+    {
+        return prefix + "/record";
+    }
+
+    /**
+     * 查询竞猜记录列表
+     */
+    @RequiresPermissions("guess:record:list")
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(AppActGuessRecord appActGuessRecord)
+    {
+        startPage();
+        List<AppActGuessRecord> list = appActGuessRecordService.selectAppActGuessRecordList(appActGuessRecord);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出竞猜记录列表
+     */
+    @RequiresPermissions("guess:record:export")
+    @Log(title = "竞猜记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ResponseBody
+    public MsgResult export(AppActGuessRecord appActGuessRecord)
+    {
+        List<AppActGuessRecord> list = appActGuessRecordService.selectAppActGuessRecordList(appActGuessRecord);
+        ExcelUtil<AppActGuessRecord> util = new ExcelUtil<AppActGuessRecord>(AppActGuessRecord.class);
+        return util.exportExcel(list, "record");
+    }
+
+    /**
+     * 新增竞猜记录
+     */
+    @GetMapping("/add")
+    public String add()
+    {
+        return prefix + "/add";
+    }
+
+    /**
+     * 新增保存竞猜记录
+     */
+    @RequiresPermissions("guess:record:add")
+    @Log(title = "竞猜记录", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(AppActGuessRecord appActGuessRecord)
+    {
+        return toAjax(appActGuessRecordService.insertAppActGuessRecord(appActGuessRecord));
+    }
+
+    /**
+     * 修改竞猜记录
+     */
+    @GetMapping("/edit/{guessScoreStatus}")
+    public String edit(@PathVariable("guessScoreStatus") Long guessScoreStatus, ModelMap mmap)
+    {
+        AppActGuessRecord appActGuessRecord = appActGuessRecordService.selectAppActGuessRecordById(guessScoreStatus);
+        mmap.put("appActGuessRecord", appActGuessRecord);
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改保存竞猜记录
+     */
+    @RequiresPermissions("guess:record:edit")
+    @Log(title = "竞猜记录", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(AppActGuessRecord appActGuessRecord)
+    {
+        return toAjax(appActGuessRecordService.updateAppActGuessRecord(appActGuessRecord));
+    }
+
+    /**
+     * 删除竞猜记录
+     */
+    @RequiresPermissions("guess:record:remove")
+    @Log(title = "竞猜记录", businessType = BusinessType.DELETE)
+    @PostMapping( "/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids)
+    {
+        return toAjax(appActGuessRecordService.deleteAppActGuessRecordByIds(ids));
+    }
+
+}

+ 224 - 0
poyee-activity/src/main/java/com/tzy/app/controller/AppActGuessTeamController.java

@@ -0,0 +1,224 @@
+package com.tzy.app.controller;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+import com.github.pagehelper.PageHelper;
+import com.google.common.collect.Lists;
+import com.tzy.app.domain.AppActGuessRecord;
+import com.tzy.app.domain.GuessTeam;
+import com.tzy.app.dto.AppActGuessTeamDto;
+import com.tzy.app.dto.CountGuessResultDto;
+import com.tzy.app.service.IAppActGuessRecordService;
+import com.tzy.common.core.domain.MsgResult;
+import com.tzy.common.dto.OutDTO;
+import com.tzy.common.exception.ServiceException;
+import com.tzy.framework.util.RedisUtils;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+import com.tzy.common.annotation.Log;
+import com.tzy.common.enums.BusinessType;
+import com.tzy.app.domain.AppActGuessTeam;
+import com.tzy.app.service.IAppActGuessTeamService;
+import com.tzy.common.core.controller.BaseController;
+import com.tzy.common.core.domain.AjaxResult;
+import com.tzy.common.utils.poi.ExcelUtil;
+import com.tzy.common.core.page.TableDataInfo;
+
+import javax.annotation.Resource;
+
+/**
+ * 竞猜队伍Controller
+ * 
+ * @author tencheer
+ * @date 2022-11-10
+ */
+@Controller
+@RequestMapping("/guess/team")
+public class AppActGuessTeamController extends BaseController
+{
+    private String prefix = "guess/team";
+
+    @Autowired
+    private IAppActGuessTeamService appActGuessTeamService;
+
+    @Resource private IAppActGuessRecordService appActGuessRecordService;
+
+    @Resource private RedisUtils redisUtils;
+
+    @RequiresPermissions("guess:team:view")
+    @GetMapping()
+    public String team()
+    {
+        return prefix + "/team";
+    }
+
+    /**
+     * 查询竞猜队伍列表
+     */
+    //@RequiresPermissions("guess:team:list")
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(@RequestBody AppActGuessTeam appActGuessTeam)
+    {
+        PageHelper.startPage(appActGuessTeam.getPage(), appActGuessTeam.getRows());
+        List<AppActGuessTeamDto> list = appActGuessTeamService.selectAppActGuessTeamList(appActGuessTeam);
+        List<Long> idList = Lists.newArrayList();
+        list.forEach(appActGuessTeamDto -> {
+            // 收集当前页的竞猜活动ID
+            idList.add(appActGuessTeamDto.getId());
+        });
+        //如果查询条件查出的数据为空,不进行统计,直接返回
+        if(CollectionUtils.isEmpty(list))
+            return getDataTable(list);
+        List<Long> disActIdList = idList.stream().distinct().collect(Collectors.toList()); // 去重
+        // 批量统计参与人数和竞猜结果
+        List<CountGuessResultDto> countGuessResultDtoList = appActGuessRecordService.batchCountGuessByActTeamId(disActIdList.toArray(new Long[0]));
+        list.forEach(appActGuessTeamDto -> {
+            countGuessResultDtoList.forEach(countGuessResultDto -> {
+                if(appActGuessTeamDto.getId() == countGuessResultDto.getActTeamId()){
+                    appActGuessTeamDto.setTotal(countGuessResultDto.getTotal()); // 参与总人数
+                    appActGuessTeamDto.setWins(countGuessResultDto.getWins()); // 猜胜的人数
+                    appActGuessTeamDto.setDraws(countGuessResultDto.getDraws()); // 猜平的人数
+                    appActGuessTeamDto.setLosses(countGuessResultDto.getLosess()); // 猜负的人数
+                }
+            });
+        });
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出竞猜队伍列表
+     */
+    @RequiresPermissions("guess:team:export")
+    @Log(title = "竞猜队伍", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ResponseBody
+    public MsgResult export(AppActGuessTeam appActGuessTeam)
+    {
+        List<AppActGuessTeamDto> list = appActGuessTeamService.selectAppActGuessTeamList(appActGuessTeam);
+        ExcelUtil<AppActGuessTeamDto> util = new ExcelUtil<AppActGuessTeamDto>(AppActGuessTeamDto.class);
+        return util.exportExcel(list, "team");
+    }
+
+    /**
+     * 新增保存竞猜队伍
+     */
+    @RequiresPermissions("guess:team:add")
+    @Log(title = "竞猜队伍", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(@RequestBody AppActGuessTeam appActGuessTeam)
+    {
+        return toAjax(appActGuessTeamService.insertAppActGuessTeam(appActGuessTeam));
+    }
+    /**
+     * 新增竞猜队伍新版
+     */
+    @RequiresPermissions("guess:team:add")
+    @Log(title = "竞猜队伍", businessType = BusinessType.INSERT)
+    @PostMapping("/addTeam")
+    @ResponseBody
+    public AjaxResult addTeam(@RequestBody GuessTeam guessTeam){
+        AppActGuessTeam appActGuessTeam=new AppActGuessTeam();
+        BeanUtils.copyProperties(guessTeam,appActGuessTeam);
+        return toAjax(appActGuessTeamService.insertAppActGuessTeam(appActGuessTeam));
+    }
+
+    /**
+     * 修改保存竞猜队伍
+     */
+    @RequiresPermissions("guess:team:edit")
+    @Log(title = "竞猜队伍", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(@RequestBody AppActGuessTeam appActGuessTeam) {
+        if(null == appActGuessTeam.getId()) throw new ServiceException("ID不能为空");
+        return toAjax(appActGuessTeamService.updateAppActGuessTeam(appActGuessTeam));
+    }
+    @RequiresPermissions("guess:team:edit")
+    @Log(title = "竞猜队伍", businessType = BusinessType.UPDATE)
+    @PostMapping("/editTeam")
+    @ResponseBody
+    public AjaxResult editTeam(@RequestBody GuessTeam guessTeam) {
+        if(null == guessTeam.getId())
+            return AjaxResult.error("ID不能为空");
+        AppActGuessTeam appActGuessTeam=new AppActGuessTeam();
+        BeanUtils.copyProperties(guessTeam,appActGuessTeam);
+        return toAjax(appActGuessTeamService.updateAppActGuessTeam(appActGuessTeam));
+    }
+    /**
+     * 删除竞猜队伍
+     */
+    @RequiresPermissions("guess:team:remove")
+    @Log(title = "竞猜队伍", businessType = BusinessType.DELETE)
+    @PostMapping( "/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids)
+    {
+        return toAjax(appActGuessTeamService.deleteAppActGuessTeamByIds(ids));
+    }
+
+    @Log(title = "开奖", businessType = BusinessType.UPDATE)
+    @PostMapping("/lottery")
+    @ResponseBody
+    public OutDTO lottery(@RequestBody AppActGuessTeam appActGuessTeam){
+        return appActGuessTeamService.lottery(appActGuessTeam);
+    }
+
+    @Log(title = "发放奖品", businessType = BusinessType.UPDATE)
+    @PostMapping("/sendPrize/{id}")
+    @ResponseBody
+    public OutDTO sendPrize(@PathVariable("id") Long id){
+        return appActGuessTeamService.sendPrize(id);
+    }
+
+    /**
+     * 根据ID查询竞猜队伍
+     */
+    @Log(title = "根据ID查询竞猜队伍", businessType = BusinessType.SEARCH)
+    @PostMapping("/find/{id}")
+    @ResponseBody
+    public OutDTO findById(@PathVariable("id") Long id) {
+        AppActGuessTeam appActGuessTeam = appActGuessTeamService.selectAppActGuessTeamById(id);
+        return OutDTO.ok().put("appActGuessTeam", appActGuessTeam);
+    }
+
+    /**
+     * 竞猜队伍上下架
+     */
+    @Log(title = "竞猜队伍上下架", businessType = BusinessType.UPDATE)
+    @PostMapping("/updateUseStatus")
+    @ResponseBody
+    public OutDTO findById(@RequestBody AppActGuessTeam appActGuessTeam) {
+        AppActGuessTeam oldActGuessTeam = appActGuessTeamService.selectAppActGuessTeamById(appActGuessTeam.getId());
+        if(null == oldActGuessTeam) return OutDTO.error500("队伍不存在");
+        int result = appActGuessTeamService.updateAppActGuessTeam(appActGuessTeam);
+        String message = appActGuessTeam.getUseStatus() == 1 ? "上架" : "下架";
+        if (result == 0) {
+            return OutDTO.error500(message + "失败!");
+        }
+        // 删除redis缓存
+        Long actId = oldActGuessTeam.getActId(); // 关联活动id
+        String userGuessRankListKey = "cache_user_guess_rank_list_" + actId;
+        String guessRankListKey = "cache_guess_rank_list_" + actId;
+        redisUtils.del(userGuessRankListKey);
+        redisUtils.del(guessRankListKey);
+        return OutDTO.ok(message + "成功!");
+    }
+
+    /**
+     * 瓜分排行榜奖励
+     */
+    @Log(title = "瓜分排行榜奖励", businessType = BusinessType.UPDATE)
+    @PostMapping("/sendRankPrize")
+    @ResponseBody
+    public OutDTO sendRankPrize(Integer actId) {
+        return appActGuessTeamService.sendRankPrize(actId);
+    }
+}

+ 269 - 0
poyee-activity/src/main/java/com/tzy/app/controller/AppActManageController.java

@@ -0,0 +1,269 @@
+package com.tzy.app.controller;
+
+import java.util.List;
+
+import com.github.pagehelper.PageHelper;
+import com.tzy.app.dto.ActDto;
+import com.tzy.app.dto.AppActivityInfoDto;
+import com.tzy.app.service.IAppActPrizeRecordService;
+import com.tzy.common.core.domain.MsgResult;
+import com.tzy.common.core.domain.entity.SysUser;
+import com.tzy.common.utils.ShiroUtils;
+import com.tzy.common.utils.StringUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import com.tzy.common.annotation.Log;
+import com.tzy.common.enums.BusinessType;
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.service.IAppActManageService;
+import com.tzy.common.core.controller.BaseController;
+import com.tzy.common.core.domain.AjaxResult;
+import com.tzy.common.utils.poi.ExcelUtil;
+import com.tzy.common.core.page.TableDataInfo;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+/**
+ * actManagerController
+ * 
+ * @author tencheer
+ * @date 2022-08-08
+ */
+@Slf4j
+@Api("活动配置管理")
+@Controller
+@RequestMapping("/act/manager")
+public class AppActManageController extends BaseController
+{
+    private String prefix = "act/manager";
+
+    @Autowired
+    private IAppActManageService appActManageService;
+    @Resource
+    private IAppActPrizeRecordService appActPrizeRecordService;
+
+    @RequiresPermissions("act:manager:view")
+    @GetMapping()
+    public String manager()
+    {
+        return prefix + "/manager";
+    }
+
+    /**
+     * 查询actManager列表
+     */
+    @RequiresPermissions("act:manager:list")
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(AppActManage appActManage)
+    {
+        startPage();
+        List<AppActivityInfoDto> list = appActManageService.selectAppActManageList(appActManage);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询actManager列表
+     */
+    @ApiOperation("获取活动配置列表")
+    @RequiresPermissions("act:manager:list")
+    @PostMapping("/managers")
+    @ResponseBody
+    public TableDataInfo managers(@RequestBody AppActManage appActManage)
+    {
+        SysUser user = ShiroUtils.getSysUser();
+        log.debug(" 获取用户信息:{} ",user);
+        List<AppActivityInfoDto> list = appActManageService.selectAppActManageList(appActManage);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询活动列表
+     */
+    @ApiOperation("查询活动列表-拼团使用")
+    @RequiresPermissions("act:manager:list")
+    @Log(title = "查询活动列表", businessType = BusinessType.SEARCH)
+    @PostMapping("/actInfos")
+    @ResponseBody
+    public AjaxResult actInfos(@RequestBody ActDto actDto)
+    {
+        actDto.setStatus(1);//设置正常的活动
+        List<AppActivityInfoDto> appActivityInfoDtos = appActManageService.selectActInfos(actDto);
+        return AjaxResult.success(appActivityInfoDtos);
+    }
+
+    /**
+     * 导出活动列表
+     */
+    @RequiresPermissions("act:manager:export")
+    @Log(title = "actManager", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ResponseBody
+    public MsgResult export(AppActManage appActManage)
+    {
+        List<AppActivityInfoDto> list = appActManageService.selectAppActManageList(appActManage);
+        ExcelUtil<AppActivityInfoDto> util = new ExcelUtil<AppActivityInfoDto>(AppActivityInfoDto.class);
+        return util.exportExcel(list, "manager");
+    }
+
+    /**
+     * 新增actManager
+     */
+    @GetMapping("/add")
+    public String add()
+    {
+        return prefix + "/add";
+    }
+
+    /**
+     * 新增保存actManager
+     */
+    @RequiresPermissions("act:manager:add")
+    @Log(title = "actManager", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(@Valid AppActivityInfoDto appActivityInfoDto)
+    {
+        return appActManageService.insertAppActManage(appActivityInfoDto);
+    }
+
+    /**
+     * 新增活动配置
+     */
+    @ApiOperation("新增活动配置")
+    @RequiresPermissions("act:manager:add")
+    @Log(title = "actManager", businessType = BusinessType.INSERT)
+    @PostMapping("/addActManager")
+    @ResponseBody
+    public AjaxResult addActManager(@RequestBody @Valid AppActivityInfoDto appActivityInfoDto)
+    {
+        return appActManageService.insertAppActManage(appActivityInfoDto);
+    }
+
+    /**
+     * 修改actManager
+     */
+    @GetMapping("/edit/{id}")
+    public String edit(@PathVariable("id") Long id, ModelMap mmap)
+    {
+        AppActivityInfoDto appActManage = appActManageService.selectAppActManageById(id);
+        mmap.put("appActManage", appActManage);
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改保存actManager
+     */
+    @RequiresPermissions("act:manager:edit")
+    @Log(title = "actManager", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(AppActManage appActManage)
+    {
+        AppActivityInfoDto dto = appActManageService.selectAppActManageById(appActManage.getId());
+        if(null != dto && dto.getStatus() == 1){
+            return AjaxResult.error("活动正在进行中...");
+        }
+        return toAjax(appActManageService.updateAppActManage(appActManage));
+    }
+
+    /**
+     * 修改保存actManager
+     */
+    @ApiOperation("编辑活动配置")
+    @RequiresPermissions("act:manager:edit")
+    @Log(title = "actManager", businessType = BusinessType.UPDATE)
+    @PostMapping("/editActManager")
+    @ResponseBody
+    public AjaxResult editActManager(@RequestBody AppActManage appActManage)
+    {
+        AppActivityInfoDto dto = appActManageService.selectAppActManageById(appActManage.getId());
+        if(null != dto && dto.getStatus() == 1){
+            return AjaxResult.error("活动正在进行中...");
+        }
+        return toAjax(appActManageService.updateAppActManage(appActManage));
+    }
+
+    /**
+     * 删除actManager
+     */
+    @RequiresPermissions("act:manager:remove")
+    @Log(title = "actManager", businessType = BusinessType.DELETE)
+//    @PostMapping( "/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids)
+    {
+        return toAjax(appActManageService.deleteAppActManageByIds(ids));
+    }
+
+    /**
+     * 删除活动奖品
+     */
+//    @ApiOperation("删除活动配置")
+    @RequiresPermissions("act:manager:remove")
+    @Log(title = "actManager", businessType = BusinessType.DELETE)
+//    @PostMapping( "/removeActManager")
+    @ResponseBody
+    public AjaxResult remove(@RequestBody ActDto dto)
+    {
+        if(null != dto && StringUtils.isNotEmpty(dto.getIds())){
+            return toAjax(appActManageService.deleteAppActManageByIds(dto.getIds()));
+        }else{
+            return toAjax(0);
+        }
+    }
+
+    /**
+     * 活动克隆
+     */
+    @ApiOperation("活动克隆")
+    @RequiresPermissions("act:manager:copy")
+    @PostMapping("/copyAct")
+    @ResponseBody
+    public AjaxResult copyAct(@RequestBody ActDto dto)
+    {
+        return appActManageService.copyAct(dto);
+    }
+
+    /**
+     * 上架活动
+     */
+    @ApiOperation("上架活动")
+    @RequiresPermissions("act:manager:startAct")
+    @PostMapping("/startAct")
+    @ResponseBody
+    public AjaxResult startAct(@RequestBody ActDto dto)
+    {
+        dto.setStatus(1);
+        return appActManageService.changeActStatus(dto);
+    }
+    /**
+     * 下架活动
+     */
+    @ApiOperation("下架活动")
+    @RequiresPermissions("act:manager:lock")
+    @PostMapping("/lock")
+    @ResponseBody
+    public AjaxResult lock(@RequestBody ActDto dto)
+    {
+        dto.setStatus(0);
+        return appActManageService.changeActStatus(dto);
+    }
+
+
+    @Log(title = "actManager", businessType = BusinessType.SEARCH)
+    @GetMapping( "/countActPoints")
+    @ResponseBody
+    public AjaxResult countActPoints() {
+        return AjaxResult.success(appActPrizeRecordService.countActPoints());
+    }
+
+}

+ 425 - 0
poyee-activity/src/main/java/com/tzy/app/controller/AppActPrizeController.java

@@ -0,0 +1,425 @@
+package com.tzy.app.controller;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import com.github.pagehelper.PageHelper;
+import com.tzy.app.domain.AppActConfig;
+import com.tzy.app.dto.ActDto;
+import com.tzy.app.dto.AppActivityInfoDto;
+import com.tzy.app.service.IAppActManageService;
+import com.tzy.common.core.domain.MsgResult;
+import com.tzy.common.core.domain.entity.SysUser;
+import com.tzy.common.core.text.Convert;
+import com.tzy.common.utils.ShiroUtils;
+import com.tzy.common.utils.StringUtils;
+import com.tzy.sportcard.group.dto.MerchantInfoDto;
+import com.tzy.system.service.ITzyQiniuConfigService;
+import io.jsonwebtoken.lang.Collections;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+import com.tzy.common.annotation.Log;
+import com.tzy.common.enums.BusinessType;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.service.IAppActPrizeService;
+import com.tzy.common.core.controller.BaseController;
+import com.tzy.common.core.domain.AjaxResult;
+import com.tzy.common.utils.poi.ExcelUtil;
+import com.tzy.common.core.page.TableDataInfo;
+
+import javax.validation.Valid;
+
+/**
+ * 活动奖品
+ * appActPrizeController
+ * 
+ * @author tencheer
+ * @date 2022-08-08
+ */
+@Slf4j
+@Api("活动奖品管理")
+@Controller
+@RequestMapping("/act/prize")
+public class AppActPrizeController extends BaseController
+{
+    private String prefix = "act/prize";
+
+    @Autowired
+    private IAppActPrizeService appActPrizeService;
+    @Autowired
+    private IAppActManageService appActManageService;
+    private static String host = "";
+    @Autowired
+    private ITzyQiniuConfigService tzyQiniuConfigService;
+
+
+    @RequiresPermissions("act:prize:view")
+    @GetMapping("/{id}")
+    public String prize(@PathVariable("id") Long id, ModelMap mmap)
+    {
+        if(0 == id){
+            id = null;
+        }
+        host = (String) tzyQiniuConfigService.initQiniuConfig().get("img_static_qiniu_host");
+        mmap.put("host", host);
+        mmap.put("actId",id);
+        return prefix + "/prize";
+    }
+
+    /**
+     * 查询appActPrize列表
+     */
+    @RequiresPermissions("act:prize:list")
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(AppActPrize appActPrize)
+    {
+        startPage();
+        List<AppActPrize> list = appActPrizeService.selectAppActPrizeList(appActPrize);
+        return getDataTable(list);
+    }
+
+    /**
+     * 获取活动奖品列表
+     */
+    @ApiOperation("获取活动奖品列表")
+    @RequiresPermissions("act:prize:list")
+    @PostMapping("/prizes")
+    @ResponseBody
+    public TableDataInfo prizes(@RequestBody AppActPrize appActPrize)
+    {
+//        startPage();
+        SysUser user = ShiroUtils.getSysUser();
+        log.debug(" 获取用户信息:{} ",user);
+        //startPage();
+        int page = appActPrize.getPage() == null ? 1 : appActPrize.getPage();
+        int rows = appActPrize.getRows() == null ? 1 : appActPrize.getRows();
+        PageHelper.startPage(page,rows);
+        List<AppActPrize> list = appActPrizeService.selectAppActPrizeList(appActPrize);
+        if(!Collections.isEmpty(list)){
+            list.forEach(prize ->{
+               prize.setTotalSend(appActPrizeService.countPrizeRecords(prize.getActId(), prize.getId()));
+            });
+        }
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出appActPrize列表
+     */
+    @RequiresPermissions("act:prize:export")
+    @Log(title = "appActPrize", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ResponseBody
+    public MsgResult export(AppActPrize appActPrize)
+    {
+        List<AppActPrize> list = appActPrizeService.selectAppActPrizeList(appActPrize);
+        ExcelUtil<AppActPrize> util = new ExcelUtil<AppActPrize>(AppActPrize.class);
+        return util.exportExcel(list, "prize");
+    }
+
+    /**
+     * 新增appActPrize
+     */
+    @GetMapping("/add")
+    public String add()
+    {
+        return prefix + "/add";
+    }
+
+    /**
+     * 新增保存appActPrize
+     */
+    @RequiresPermissions("act:prize:add")
+    @Log(title = "appActPrize", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(AppActPrize appActPrize)
+    {
+        if(null != appActPrize && null != appActPrize.getActId()){
+            //判断活动是否已经在进行中
+            AppActivityInfoDto appActivityInfoDto = appActManageService.selectAppActManageById(appActPrize.getActId());
+            if(null == appActivityInfoDto){
+                return AjaxResult.error("添加失败,未找到该活动信息,可刷新重试");
+            }else if(1 == appActivityInfoDto.getStatus()){
+                return AjaxResult.error("添加失败,该活动正在进行中,禁止添加奖品");
+            }
+            //计算该活动下概率总和
+            //判断奖品概率 是否 为 1
+            //查询奖品列表
+            AppActPrize actPrize = new AppActPrize();
+            actPrize.setActId(appActPrize.getActId());
+            actPrize.setStatus(1L);
+            List<AppActPrize> appActPrizes = appActPrizeService.selectAppActPrizeList(actPrize);
+            final BigDecimal[] probability = {new BigDecimal(0)};
+            appActPrizes.forEach(item -> {
+                probability[0] = probability[0].add(StringUtils.isEmpty(item.getProbability()) ? new BigDecimal(0) : new BigDecimal(item.getProbability()));
+            });
+            probability[0] = probability[0].add(StringUtils.isEmpty(appActPrize.getProbability()) ? new BigDecimal(0) : new BigDecimal(appActPrize.getProbability()));
+            BigDecimal one =new BigDecimal(1);
+            if(one.compareTo(probability[0]) < 0 ){
+                return AjaxResult.error("本次活动奖品的中奖概率总和为"+probability[0]+"(大于1),当前奖品的概率为:"+appActPrize.getProbability()+" 请检查奖品设置");
+            }
+            int i = appActPrizeService.insertAppActPrize(appActPrize);
+            if(i == 1) {
+                return AjaxResult.success("操作成功,本次活动奖品的中奖概率总和为:" + probability[0] + ",当前奖品的概率为:" + appActPrize.getProbability());
+            }else{
+                return toAjax(i);
+            }
+        }else{
+            return AjaxResult.error("添加失败,请刷新重试");
+        }
+    }
+
+    /**
+     *  新增活动奖品
+     * @param appActPrize
+     * @return
+     */
+    @ApiOperation("新增活动奖品")
+    @RequiresPermissions("act:prize:add")
+    @Log(title = "addActPrize", businessType = BusinessType.INSERT)
+    @PostMapping("/addActPrize")
+    @ResponseBody
+    public AjaxResult addActPrize(@RequestBody @Valid AppActPrize appActPrize)
+    {
+        if(null != appActPrize && null != appActPrize.getActId()) {
+            //判断活动是否已经在进行中
+            AppActivityInfoDto appActivityInfoDto = appActManageService.selectAppActManageById(appActPrize.getActId());
+            if(null == appActivityInfoDto){
+                return AjaxResult.error("添加失败,未找到该活动信息,可刷新重试");
+            }else if(1 == appActivityInfoDto.getStatus()){
+                return AjaxResult.error("添加失败,该活动正在进行中,禁止添加奖品");
+            }
+            //计算该活动下概率总和
+            //判断奖品概率 是否 为 1
+            //查询奖品列表
+            AppActPrize actPrize = new AppActPrize();
+            actPrize.setActId(appActPrize.getActId());
+            actPrize.setStatus(1L);
+            List<AppActPrize> appActPrizes = appActPrizeService.selectAppActPrizeList(actPrize);
+            final BigDecimal[] probability = {new BigDecimal(0)};
+            BigDecimal one = new BigDecimal(1);
+            if(null != appActPrizes && appActPrizes.size() > 0) {
+                appActPrizes.forEach(item -> {
+                    probability[0] = probability[0].add(StringUtils.isEmpty(item.getProbability()) ? new BigDecimal(0) : new BigDecimal(item.getProbability()));
+                });
+                //判断当前编辑的奖品状态
+                if( 1 == appActPrize.getStatus()){
+                    probability[0] = probability[0].add(StringUtils.isEmpty(appActPrize.getProbability()) ? new BigDecimal(0) : new BigDecimal(appActPrize.getProbability()));
+                    if(one.compareTo(probability[0]) < 0 ){
+                        return AjaxResult.error("本次活动奖品的中奖概率总和为"+probability[0]+"(大于1),当前奖品的概率为:"+appActPrize.getProbability()+" 请检查奖品设置");
+                    }
+                }
+//                probability[0] = probability[0].add(StringUtils.isEmpty(appActPrize.getProbability()) ? new BigDecimal(0) : new BigDecimal(appActPrize.getProbability()));
+//                if (one.compareTo(probability[0]) < 0) {
+//                    return AjaxResult.error("本次活动奖品的中奖概率总和为" + probability[0] + "(大于1),当前奖品的概率为:" + appActPrize.getProbability() + " 请检查奖品设置");
+//                }
+            }
+            // 如果奖品是积分或金额,value不能为空
+            if("point".equals(appActPrize.getType()) || "amount".equals(appActPrize.getType())){
+                if(appActPrize.getValue() == null){
+                    return AjaxResult.error("积分或者金额不能为空");
+                }
+            }
+            int i = appActPrizeService.insertAppActPrize(appActPrize);
+            if(one.compareTo(probability[0]) > 0 && i == 1){
+                return AjaxResult.success("操作成功,本次活动奖品的中奖概率总和为:"+probability[0]+",当前奖品的概率为:"+appActPrize.getProbability());
+            }
+            return toAjax(i);
+        }else{
+            return AjaxResult.error("添加失败,请刷新重试");
+        }
+    }
+
+    /**
+     * 修改appActPrize
+     */
+    @GetMapping("/edit/{id}")
+    public String edit(@PathVariable("id") Long id, ModelMap mmap)
+    {
+        AppActPrize appActPrize = appActPrizeService.selectAppActPrizeById(id);
+        mmap.put("host", tzyQiniuConfigService.initQiniuConfig().get("img_static_qiniu_host"));
+        mmap.put("appActPrize", appActPrize);
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改保存appActPrize
+     */
+    @RequiresPermissions("act:prize:edit")
+    @Log(title = "appActPrize", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(AppActPrize appActPrize)
+    {
+        if(null != appActPrize && null != appActPrize.getActId()) {
+            //判断活动是否已经在进行中
+            AppActivityInfoDto appActivityInfoDto = appActManageService.selectAppActManageById(appActPrize.getActId());
+            if(null == appActivityInfoDto){
+                return AjaxResult.error("操作失败,未找到该活动信息,可刷新重试");
+            }else if(1 == appActivityInfoDto.getStatus()){
+                return AjaxResult.error("操作失败,该活动正在进行中,禁止编辑奖品");
+            }
+            //计算该活动下概率总和
+            //判断奖品概率 是否 为 1
+            //查询奖品列表
+            AppActPrize actPrize = new AppActPrize();
+            actPrize.setActId(appActPrize.getActId());
+            actPrize.setStatus(1L);
+            List<AppActPrize> appActPrizes = appActPrizeService.selectAppActPrizeList(actPrize);
+            final BigDecimal[] probability = {new BigDecimal(0)};
+            if(null != appActPrizes && appActPrizes.size() > 0) {
+                appActPrizes.forEach(item -> {
+                    if(null != appActPrize.getId() && !appActPrize.getId().equals(item.getId())){
+                        probability[0] = probability[0].add(StringUtils.isEmpty(item.getProbability()) ? new BigDecimal(0) : new BigDecimal(item.getProbability()));
+                    }
+                });
+            }
+            //判断当前编辑的奖品状态
+            AppActPrize appActPrize1 = appActPrizeService.selectAppActPrizeById(appActPrize.getPrizeId());
+            BigDecimal one =new BigDecimal(1);
+            if(null != appActPrize1 && 1 == appActPrize1.getStatus() || 1 == appActPrize.getStatus()){
+                probability[0] = probability[0].add(StringUtils.isEmpty(appActPrize.getProbability()) ? new BigDecimal(0) : new BigDecimal(appActPrize.getProbability()));
+                if(one.compareTo(probability[0]) < 0 ){
+                    return AjaxResult.error("本次活动奖品的中奖概率总和为"+probability[0]+"(大于1),当前奖品的概率为:"+appActPrize.getProbability()+" 请检查奖品设置");
+                }
+            }
+            int i = appActPrizeService.updateAppActPrize(appActPrize);
+            if(one.compareTo(probability[0]) > 0 && i == 1){
+                return AjaxResult.success("操作成功,本次活动奖品的中奖概率总和为:"+probability[0]+",当前奖品的概率为:"+appActPrize.getProbability());
+            }
+            return toAjax(i);
+        }else{
+            return AjaxResult.error("添加失败,请刷新重试");
+        }
+    }
+
+    /**
+     * 修改保存appActPrize
+     */
+    @ApiOperation("修改活动奖品")
+    @RequiresPermissions("act:prize:edit")
+    @Log(title = "appActPrize", businessType = BusinessType.UPDATE)
+    @PostMapping("/editActPrize")
+    @ResponseBody
+    public AjaxResult editActPrize(@RequestBody AppActPrize appActPrize)
+    {
+        if(null != appActPrize && null != appActPrize.getActId()) {
+            //判断活动是否已经在进行中
+            AppActivityInfoDto appActivityInfoDto = appActManageService.selectAppActManageById(appActPrize.getActId());
+            if (null == appActivityInfoDto) {
+                return AjaxResult.error("操作失败,未找到该活动信息,可刷新重试");
+            } else if (1 == appActivityInfoDto.getStatus()) {
+                return AjaxResult.error("操作失败,该活动正在进行中,禁止编辑奖品");
+            }
+            //计算该活动下概率总和
+            //判断奖品概率 是否 为 1
+            //查询奖品列表
+            AppActPrize actPrize = new AppActPrize();
+            actPrize.setActId(appActPrize.getActId());
+            actPrize.setStatus(1L);
+            List<AppActPrize> appActPrizes = appActPrizeService.selectAppActPrizeList(actPrize);
+            final BigDecimal[] probability = {new BigDecimal(0)};
+            if(null != appActPrizes && appActPrizes.size() > 0) {
+                appActPrizes.forEach(item -> {
+                    if(null != appActPrize.getId() && !appActPrize.getId().equals(item.getId())){
+                        probability[0] = probability[0].add(StringUtils.isEmpty(item.getProbability()) ? new BigDecimal(0) : new BigDecimal(item.getProbability()));
+                    }
+                });
+            }
+            BigDecimal one =new BigDecimal(1);
+            //判断当前编辑的奖品状态
+            AppActPrize appActPrize1 = appActPrizeService.selectAppActPrizeById(appActPrize.getPrizeId());
+            if(null != appActPrize1 && 1 == appActPrize1.getStatus() || 1 == appActPrize.getStatus()){
+                probability[0] = probability[0].add(StringUtils.isEmpty(appActPrize.getProbability()) ? new BigDecimal(0) : new BigDecimal(appActPrize.getProbability()));
+                if(one.compareTo(probability[0]) < 0 ){
+                    return AjaxResult.error("本次活动奖品的中奖概率总和为"+probability[0]+"(大于1),当前奖品的概率为:"+appActPrize.getProbability()+" 请检查奖品设置");
+                }
+            }
+//            probability[0] = probability[0].add(StringUtils.isEmpty(appActPrize.getProbability()) ? new BigDecimal(0) : new BigDecimal(appActPrize.getProbability()));
+//            if(one.compareTo(probability[0]) < 0 ){
+//                return AjaxResult.error("本次活动奖品的中奖概率总和为"+probability[0]+"(大于1),当前奖品的概率为:"+appActPrize.getProbability()+" 请检查奖品设置");
+//            }
+            int i = appActPrizeService.updateAppActPrize(appActPrize);
+            if (one.compareTo(probability[0]) > 0 && i == 1) {
+                return AjaxResult.success("操作成功,本次活动奖品的中奖概率总和为:" + probability[0] + ",当前奖品的概率为:" + appActPrize.getProbability());
+            }
+            return toAjax(i);
+        }else{
+            return AjaxResult.error("添加失败,请刷新重试");
+        }
+    }
+
+    /**
+     * 删除appActPrize
+     */
+    @RequiresPermissions("act:prize:remove")
+    @Log(title = "appActPrize", businessType = BusinessType.DELETE)
+    @PostMapping( "/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids)
+    {
+        return toAjax(appActPrizeService.deleteAppActPrizeByIds(ids));
+    }
+
+
+    /**
+     * 删除活动奖品
+     */
+    @ApiOperation("删除活动奖品")
+    @RequiresPermissions("act:config:remove")
+    @Log(title = "appActPrize", businessType = BusinessType.DELETE)
+    @PostMapping( "/removeActPrize")
+    @ResponseBody
+    public AjaxResult remove(@RequestBody ActDto dto)
+    {
+        if(null != dto && StringUtils.isNotEmpty(dto.getIds())){
+            //计算该活动下概率总和
+            //判断奖品概率 是否 为 1
+            //查询奖品列表
+            AppActPrize appActPrize = appActPrizeService.selectAppActPrizeById(Convert.toLongArray(dto.getIds())[0]);
+            AppActPrize actPrize = new AppActPrize();
+            actPrize.setActId(appActPrize.getActId());
+            actPrize.setStatus(1L);
+            int i = appActPrizeService.deleteAppActPrizeByIds(dto.getIds());
+            List<AppActPrize> appActPrizes = appActPrizeService.selectAppActPrizeList(actPrize);
+            final BigDecimal[] probability = {new BigDecimal(0)};
+            if(appActPrizes != null && appActPrizes.size() > 0) {
+                appActPrizes.forEach(item -> {
+                    probability[0] = probability[0].add(StringUtils.isEmpty(item.getProbability()) ? new BigDecimal(0) : new BigDecimal(item.getProbability())).setScale(BigDecimal.ROUND_DOWN, 4);
+                });
+            }
+            BigDecimal one =new BigDecimal(1);
+            if(one.compareTo(probability[0]) < 0 && i >= 1){
+                return AjaxResult.error("操作成功,本次活动奖品的中奖概率总和为"+probability[0]+"(大于1) 请检查奖品设置");
+            }else if(one.compareTo(probability[0]) > 0 && i >= 1 ){
+                return AjaxResult.success("操作成功,本次活动奖品的中奖概率总和为:"+probability[0]+"(小于1) 请检查奖品设置");
+            }
+            return toAjax(i);
+        }else{
+            return toAjax(0);
+        }
+    }
+
+    /**
+     * 切换活动奖品状态
+     */
+    @RequiresPermissions("act:config:changePrizeStatus")
+    @Log(title = "切换活动奖品状态", businessType = BusinessType.UPDATE)
+    @PostMapping("/changePrizeStatus")
+    @ResponseBody
+    public AjaxResult changePrizeStatus(@RequestBody ActDto dto)
+    {
+        return appActPrizeService.changePrizeStatus(dto);
+    }
+
+
+
+}

+ 250 - 0
poyee-activity/src/main/java/com/tzy/app/controller/AppActPrizeRecordController.java

@@ -0,0 +1,250 @@
+package com.tzy.app.controller;
+
+import com.github.pagehelper.PageHelper;
+import com.tzy.app.domain.AppActPrizeRecord;
+import com.tzy.app.dto.ActDto;
+import com.tzy.app.dto.AppActivityInfoDto;
+import com.tzy.app.dto.AppActivityPrizeRecordDto;
+import com.tzy.app.dto.PrizeRecordQuery;
+import com.tzy.app.service.IAppActManageService;
+import com.tzy.app.service.IAppActPrizeRecordService;
+import com.tzy.common.annotation.Log;
+import com.tzy.common.core.controller.BaseController;
+import com.tzy.common.core.domain.AjaxResult;
+import com.tzy.common.core.domain.entity.SysUser;
+import com.tzy.common.core.page.TableDataInfo;
+import com.tzy.common.enums.BusinessType;
+import com.tzy.common.utils.ShiroUtils;
+import com.tzy.common.utils.StringUtils;
+import com.tzy.common.utils.poi.ExcelUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * actPrizeRecordController
+ * 
+ * @author tencheer
+ * @date 2022-08-08
+ */
+@Slf4j
+@Api("活动奖品领取记录")
+@Controller
+@RequestMapping("/act/actPrizeRecord")
+public class AppActPrizeRecordController extends BaseController
+{
+    private String prefix = "act/actPrizeRecord";
+
+    @Autowired
+    private IAppActPrizeRecordService appActPrizeRecordService;
+    @Autowired
+    private IAppActManageService appActManageService;
+
+    @RequiresPermissions("act:actPrizeRecord:view")
+    @GetMapping()
+    public String actPrizeRecord()
+    {
+        return prefix + "/actPrizeRecord";
+    }
+
+    /**
+     *
+     * @return
+     */
+    @RequiresPermissions("act:actPrizeRecord:list")
+    @GetMapping("/prizeRecords/{id}")
+    public String prizeRecords(@PathVariable("id") Long id, ModelMap mmap)
+    {
+        //查询活动信息
+        AppActivityInfoDto appActivityInfoDto = appActManageService.selectAppActManageById(id);
+
+        mmap.put("actId",id);
+        if(null != appActivityInfoDto){
+            mmap.put("actName",appActivityInfoDto.getName());
+        }
+        return prefix + "/actPrizeRecord";
+    }
+
+    /**
+     * 查询actPrizeRecord列表
+     */
+    @RequiresPermissions("act:actPrizeRecord:list")
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(AppActPrizeRecord appActPrizeRecord)
+    {
+        startPage();
+        List<AppActivityPrizeRecordDto> list = appActPrizeRecordService.selectAppActPrizeRecordList(appActPrizeRecord);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询actPrizeRecord列表
+     */
+    @ApiOperation("查询活动奖品领取记录")
+    @RequiresPermissions("act:actPrizeRecord:list")
+    @PostMapping("/actPrizeRecords")
+    @ResponseBody
+    public TableDataInfo actPrizeRecord(@RequestBody AppActPrizeRecord appActPrizeRecord)
+    {
+        SysUser user = ShiroUtils.getSysUser();
+        log.debug(" 获取用户信息:{} ",user);
+        //startPage();
+        int page = appActPrizeRecord.getPage() == null ? 1 : appActPrizeRecord.getPage();
+        int rows = appActPrizeRecord.getRows() == null ? 1 : appActPrizeRecord.getRows();
+        PageHelper.startPage(page,rows);
+        List<AppActivityPrizeRecordDto> list = appActPrizeRecordService.selectAppActPrizeRecordList(appActPrizeRecord);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出actPrizeRecord列表
+     */
+    @ApiOperation("查询活动奖品领取记录")
+    @RequiresPermissions("act:actPrizeRecord:export")
+    @Log(title = "actPrizeRecord", businessType = BusinessType.EXPORT)
+    @PostMapping(value = "/export/check")
+    @ResponseBody
+    public AjaxResult checkExport(@RequestBody(required = false) ActDto dto, ActDto dto1 )
+    {
+        if(null == dto ){
+            dto = dto1;
+        }
+        if(null == dto){
+            return AjaxResult.error("未查到数据或参数不合法!");
+        }
+        if(null != dto && StringUtils.isNotEmpty(dto.getIds()) && dto.getIds().indexOf(",") == -1 ){
+            AppActPrizeRecord appActPrizeRecord = new AppActPrizeRecord();
+            appActPrizeRecord.setActId(Long.valueOf(dto.getIds()));
+            appActPrizeRecord.setPrizeName(dto.getPrizeName());
+            appActPrizeRecord.setNickname(dto.getNickname());
+            return AjaxResult.success(appActPrizeRecordService.selectAppActPrizeRecordListCount(appActPrizeRecord));
+        }
+        return AjaxResult.error("未查到数据或参数不合法!");
+    }
+    @ApiOperation("查询活动奖品领取记录")
+    @RequiresPermissions("act:actPrizeRecord:export")
+    @Log(title = "actPrizeRecord", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ResponseBody
+    public void export(@RequestBody ActDto dto, HttpServletResponse response)
+    {
+        if(null != dto && StringUtils.isNotEmpty(dto.getIds()) && !dto.getIds().contains(",")) {
+            AppActPrizeRecord appActPrizeRecord = new AppActPrizeRecord();
+            appActPrizeRecord.setActId(Long.valueOf(dto.getIds()));
+            appActPrizeRecord.setPrizeName(dto.getPrizeName());
+            appActPrizeRecord.setNickname(dto.getNickname());
+            int rows = appActPrizeRecordService.selectAppActPrizeRecordListCount(appActPrizeRecord);
+            if (rows > 0) {
+                int start = null == appActPrizeRecord.getStart() ? 0 : appActPrizeRecord.getStart();
+                if (start == 0) {
+                    appActPrizeRecord.setColumnsearch(" limit 1000 ");
+                } else {
+                    appActPrizeRecord.setColumnsearch(" limit 1000 offset " + start);
+                }
+                List<AppActivityPrizeRecordDto> list = new ArrayList<>();
+                if (StringUtils.isNotEmpty(dto.getIds()) && !dto.getIds().contains(",")) {
+                    list = appActPrizeRecordService.selectAppActPrizeRecordList(appActPrizeRecord);
+                }
+                ExcelUtil<AppActivityPrizeRecordDto> util = new ExcelUtil<AppActivityPrizeRecordDto>(AppActivityPrizeRecordDto.class);
+                util.exportExcelHttp(list, response, "奖品领取记录");
+            }
+        }
+    }
+
+    /**
+     * 新增actPrizeRecord
+     */
+    @GetMapping("/add")
+    public String add()
+    {
+        return prefix + "/add";
+    }
+
+    /**
+     * 新增保存actPrizeRecord
+     */
+    @RequiresPermissions("act:actPrizeRecord:add")
+    @Log(title = "actPrizeRecord", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(AppActPrizeRecord appActPrizeRecord)
+    {
+        return toAjax(appActPrizeRecordService.insertAppActPrizeRecord(appActPrizeRecord));
+    }
+
+    /**
+     * 修改actPrizeRecord
+     */
+    @GetMapping("/edit/{id}")
+    public String edit(@PathVariable("id") Long id, ModelMap mmap)
+    {
+        AppActivityPrizeRecordDto appActPrizeRecord = appActPrizeRecordService.selectAppActPrizeRecordById(id);
+        mmap.put("appActPrizeRecord", appActPrizeRecord);
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改保存actPrizeRecord
+     */
+    @RequiresPermissions("act:actPrizeRecord:edit")
+    @Log(title = "actPrizeRecord", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(AppActPrizeRecord appActPrizeRecord)
+    {
+        return toAjax(appActPrizeRecordService.updateAppActPrizeRecord(appActPrizeRecord));
+    }
+
+    /**
+     * 删除actPrizeRecord
+     */
+    @RequiresPermissions("act:actPrizeRecord:remove")
+    @Log(title = "actPrizeRecord", businessType = BusinessType.DELETE)
+    @PostMapping( "/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids)
+    {
+        return toAjax(appActPrizeRecordService.deleteAppActPrizeRecordByIds(ids));
+    }
+
+
+    /**
+     * 查询actPrizeRecord
+     */
+    @ApiOperation("查询奖品领取记录")
+    @RequiresPermissions("act:actPrizeRecord:detail")
+    @Log(title = "actPrizeRecord", businessType = BusinessType.SEARCH)
+    @PostMapping( "/detailById")
+    @ResponseBody
+    public AjaxResult detailById(@RequestBody ActDto dto)
+    {
+        if(null != dto && StringUtils.isNotEmpty(dto.getIds())){
+            return AjaxResult.success(appActPrizeRecordService.selectAppActPrizeRecordById(Long.valueOf(dto.getIds())));
+        }else{
+            return toAjax(0);
+        }
+    }
+
+
+    @ApiOperation("商家赠品记录")
+    @RequiresPermissions("act:merchant:gift")
+    @Log(title = "merchant gift record", businessType = BusinessType.SEARCH)
+    @PostMapping( "/merchant/gift")
+    @ResponseBody
+    public AjaxResult getMerchantGiftRecord(@RequestBody PrizeRecordQuery query) {
+        return AjaxResult.success(appActPrizeRecordService.getMerchantGiftRecords(query));
+    }
+
+
+
+}

+ 145 - 0
poyee-activity/src/main/java/com/tzy/app/controller/AppActTaskController.java

@@ -0,0 +1,145 @@
+package com.tzy.app.controller;
+
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.domain.AppActTaskManage;
+import com.tzy.app.dto.AppActivityInfoDto;
+import com.tzy.app.service.IAppActTaskService;
+import com.tzy.common.annotation.ApiLog;
+import com.tzy.common.core.controller.BaseController;
+import com.tzy.common.core.domain.AjaxResult;
+import com.tzy.common.enums.BusinessType;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@Slf4j
+@Api("带子任务的活动管理")
+@RestController
+@RequestMapping("/act/task")
+public class AppActTaskController extends BaseController {
+
+    @Resource
+    private IAppActTaskService appActTaskService;
+
+    @ApiLog(title = "新增子任务的活动", businessType = BusinessType.INSERT)
+    @ApiOperation("新增用户信息完善活动")
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody AppActManage appActManage){
+        return toAjax(appActTaskService.add(appActManage));
+    }
+
+    @ApiLog(title = "编辑用户信息完善活动", businessType = BusinessType.UPDATE)
+    @ApiOperation("编辑用户信息完善活动")
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody AppActManage appActManage){
+        return toAjax(appActTaskService.edit(appActManage));
+    }
+
+    @ApiLog(title = "上下架用户信息完善活动", businessType = BusinessType.UPDATE)
+    @ApiOperation("上下架用户信息完善活动")
+    @PostMapping("/publish")
+    public AjaxResult publish(@RequestBody AppActManage appActManage){
+        return toAjax(appActTaskService.publish(appActManage));
+    }
+
+    @ApiLog(title = "克隆活动", businessType = BusinessType.UPDATE)
+    @ApiOperation("克隆活动")
+    @PostMapping("/clone")
+    public AjaxResult clone(@RequestBody AppActManage appActManage){
+        return toAjax(appActTaskService.clone(appActManage));
+    }
+
+    @ApiLog(title = "用户信息完善活动列表", businessType = BusinessType.SEARCH)
+    @ApiOperation("用户信息完善活动列表")
+    @PostMapping("/page")
+    public AjaxResult page(@RequestBody AppActManage appActManage){
+        PageInfo<AppActivityInfoDto> page = appActTaskService.page(appActManage);
+        return AjaxResult.success(page);
+    }
+
+    @ApiLog(title = "新增奖品", businessType = BusinessType.INSERT)
+    @ApiOperation("新增奖品")
+    @PostMapping("/addPrize")
+    public AjaxResult addPrize(@RequestBody AppActPrize appActPrize){
+        return toAjax(appActTaskService.addPrize(appActPrize));
+    }
+
+    @ApiLog(title = "编辑奖品", businessType = BusinessType.UPDATE)
+    @ApiOperation("编辑奖品")
+    @PostMapping("/editPrize")
+    public AjaxResult editPrize(@RequestBody AppActPrize appActPrize){
+        return toAjax(appActTaskService.editPrize(appActPrize));
+    }
+
+    @ApiLog(title = "奖品列表", businessType = BusinessType.SEARCH)
+    @ApiOperation("奖品列表")
+    @PostMapping("/prizePage")
+    public AjaxResult prizePage(@RequestBody AppActPrize appActPrize){
+        Long actId = appActPrize.getActId();
+        if(null == actId){
+            return AjaxResult.error("actId不能为空");
+        }
+        PageInfo<AppActPrize> page = appActTaskService.prizePage(appActPrize);
+        page.getList().forEach(prize -> {
+            if ("common".equals(prize.getSubType())){
+                prize.setValue(prize.getValue() / 100);
+            }
+        });
+        return AjaxResult.success(page);
+    }
+
+    @ApiLog(title = "上下架奖品", businessType = BusinessType.UPDATE)
+    @ApiOperation("上下架奖品")
+    @PostMapping("/publishPrize")
+    public AjaxResult publishPrize(@RequestBody AppActPrize appActPrize) {
+        return toAjax(appActTaskService.publishPrize(appActPrize.getId(), appActPrize.getStatus()));
+    }
+
+
+    //region task
+    @ApiLog(title = "新增任务", businessType = BusinessType.INSERT)
+    @ApiOperation("新增任务")
+    @PostMapping("/addTask")
+    public AjaxResult addPrize(@RequestBody AppActTaskManage task){
+        return toAjax(appActTaskService.addTask(task));
+    }
+
+    @ApiLog(title = "编辑任务", businessType = BusinessType.UPDATE)
+    @ApiOperation("编辑任务")
+    @PostMapping("/editTask")
+    public AjaxResult editPrize(@RequestBody AppActTaskManage task){
+        return toAjax(appActTaskService.editTask(task));
+    }
+
+    @ApiLog(title = "任务列表", businessType = BusinessType.SEARCH)
+    @ApiOperation("任务列表")
+    @PostMapping("/taskPage")
+    public AjaxResult prizePage(@RequestBody AppActTaskManage task){
+        Long actId = task.getActId().longValue();
+        if(null == actId){
+            return AjaxResult.error("actId不能为空");
+        }
+        AppActivityInfoDto actManageExist = appActTaskService.get(actId);
+        PageInfo<AppActTaskManage> page = appActTaskService.taskPage(task);
+        page.getList().forEach(prize -> {
+            prize.setActStatus(actManageExist.getStatus());
+        });
+        return AjaxResult.success(page);
+    }
+
+    @ApiLog(title = "上下架任务", businessType = BusinessType.UPDATE)
+    @ApiOperation("上下架任务")
+    @PostMapping("/publishTask")
+    public AjaxResult publishPrize(@RequestBody AppActTaskManage task) {
+        return toAjax(appActTaskService.publishTask(task.getId(), task.getEnabled()));
+    }
+    //endregion
+}

+ 99 - 0
poyee-activity/src/main/java/com/tzy/app/controller/CompleteProfileController.java

@@ -0,0 +1,99 @@
+package com.tzy.app.controller;
+
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.dto.AppActivityInfoDto;
+import com.tzy.app.dto.ConsumeLevelDTO;
+import com.tzy.app.dto.ConsumeLevelPrizeDTO;
+import com.tzy.app.service.CompleteProfileService;
+import com.tzy.common.annotation.ApiLog;
+import com.tzy.common.core.controller.BaseController;
+import com.tzy.common.core.domain.AjaxResult;
+import com.tzy.common.enums.BusinessType;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@Slf4j
+@Api("完善用户信息活动管理")
+@RestController
+@RequestMapping("/complete/profile")
+public class CompleteProfileController extends BaseController {
+
+    @Resource
+    private CompleteProfileService completeProfileService;
+
+    @ApiLog(title = "新增用户信息完善活动", businessType = BusinessType.INSERT)
+    @ApiOperation("新增用户信息完善活动")
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody AppActManage appActManage){
+        return toAjax(completeProfileService.add(appActManage));
+    }
+
+    @ApiLog(title = "编辑用户信息完善活动", businessType = BusinessType.UPDATE)
+    @ApiOperation("编辑用户信息完善活动")
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody AppActManage appActManage){
+        return toAjax(completeProfileService.edit(appActManage));
+    }
+
+    @ApiLog(title = "上下架用户信息完善活动", businessType = BusinessType.UPDATE)
+    @ApiOperation("上下架用户信息完善活动")
+    @PostMapping("/publish")
+    public AjaxResult publish(@RequestBody AppActManage appActManage){
+        return toAjax(completeProfileService.publish(appActManage));
+    }
+
+    @ApiLog(title = "用户信息完善活动列表", businessType = BusinessType.SEARCH)
+    @ApiOperation("用户信息完善活动列表")
+    @PostMapping("/page")
+    public AjaxResult page(@RequestBody AppActManage appActManage){
+        PageInfo<AppActivityInfoDto> page = completeProfileService.page(appActManage);
+        return AjaxResult.success(page);
+    }
+
+    @ApiLog(title = "新增奖品", businessType = BusinessType.INSERT)
+    @ApiOperation("新增奖品")
+    @PostMapping("/addPrize")
+    public AjaxResult addPrize(@RequestBody AppActPrize appActPrize){
+        return toAjax(completeProfileService.addPrize(appActPrize));
+    }
+
+    @ApiLog(title = "编辑奖品", businessType = BusinessType.UPDATE)
+    @ApiOperation("编辑奖品")
+    @PostMapping("/editPrize")
+    public AjaxResult editPrize(@RequestBody AppActPrize appActPrize){
+        return toAjax(completeProfileService.editPrize(appActPrize));
+    }
+
+    @ApiLog(title = "奖品列表", businessType = BusinessType.SEARCH)
+    @ApiOperation("奖品列表")
+    @PostMapping("/prizePage")
+    public AjaxResult prizePage(@RequestBody AppActPrize appActPrize){
+        Long actId = appActPrize.getActId();
+        if(null == actId){
+            return AjaxResult.error("actId不能为空");
+        }
+        PageInfo<AppActPrize> page = completeProfileService.prizePage(appActPrize);
+        page.getList().forEach(prize -> {
+            if ("common".equals(prize.getSubType())){
+                prize.setValue(prize.getValue() / 100);
+            }
+        });
+        return AjaxResult.success(page);
+    }
+
+    @ApiLog(title = "上下架奖品", businessType = BusinessType.UPDATE)
+    @ApiOperation("上下架奖品")
+    @PostMapping("/publishPrize")
+    public AjaxResult publishPrize(@RequestBody AppActPrize appActPrize) {
+        return toAjax(completeProfileService.publishPrize(appActPrize.getId(), appActPrize.getStatus()));
+    }
+}

+ 142 - 0
poyee-activity/src/main/java/com/tzy/app/controller/ConsumeLevelController.java

@@ -0,0 +1,142 @@
+package com.tzy.app.controller;
+
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.domain.AppActPrizeRecord;
+import com.tzy.app.dto.ConsumeLevelDTO;
+import com.tzy.app.dto.ConsumeLevelPrizeDTO;
+import com.tzy.app.dto.ConsumeRankDTO;
+import com.tzy.app.dto.DrawCardGameLotteryDTO;
+import com.tzy.app.service.ConsumeLevelService;
+import com.tzy.common.annotation.ApiLog;
+import com.tzy.common.core.controller.BaseController;
+import com.tzy.common.core.domain.AjaxResult;
+import com.tzy.common.enums.BusinessType;
+import com.tzy.common.exception.ServiceException;
+import com.tzy.common.utils.DateUtils;
+import com.tzy.common.utils.poi.ExcelUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+@Slf4j
+@Api("消费达标管理")
+@RestController
+@RequestMapping("/consume/level")
+public class ConsumeLevelController extends BaseController {
+
+    @Resource
+    private ConsumeLevelService consumeLevelService;
+
+    @ApiLog(title = "新增消费达标", businessType = BusinessType.INSERT)
+    @ApiOperation("新增消费达标")
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody AppActManage appActManage){
+        return toAjax(consumeLevelService.add(appActManage));
+    }
+
+    @ApiLog(title = "编辑消费达标", businessType = BusinessType.UPDATE)
+    @ApiOperation("编辑消费达标")
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody AppActManage appActManage){
+        return toAjax(consumeLevelService.edit(appActManage));
+    }
+
+    @ApiLog(title = "上下架消费达标", businessType = BusinessType.UPDATE)
+    @ApiOperation("上下架消费达标")
+    @PostMapping("/publish")
+    public AjaxResult publish(@RequestBody AppActManage appActManage){
+        return toAjax(consumeLevelService.publish(appActManage));
+    }
+
+    @ApiLog(title = "消费达标列表", businessType = BusinessType.SEARCH)
+    @ApiOperation("消费达标列表")
+    @PostMapping("/page")
+    public AjaxResult page(@RequestBody AppActManage appActManage){
+        PageInfo<ConsumeLevelDTO> page = consumeLevelService.page(appActManage);
+        return AjaxResult.success(page);
+    }
+
+    @ApiLog(title = "新增奖品", businessType = BusinessType.INSERT)
+    @ApiOperation("新增奖品")
+    @PostMapping("/addPrize")
+    public AjaxResult addPrize(@RequestBody AppActPrize appActPrize){
+        return toAjax(consumeLevelService.addPrize(appActPrize));
+    }
+
+    @ApiLog(title = "编辑奖品", businessType = BusinessType.UPDATE)
+    @ApiOperation("编辑奖品")
+    @PostMapping("/editPrize")
+    public AjaxResult editPrize(@RequestBody AppActPrize appActPrize){
+        return toAjax(consumeLevelService.editPrize(appActPrize));
+    }
+
+    @ApiLog(title = "奖品列表", businessType = BusinessType.SEARCH)
+    @ApiOperation("奖品列表")
+    @PostMapping("/prizePage")
+    public AjaxResult prizePage(@RequestBody AppActPrize appActPrize){
+        Long actId = appActPrize.getActId();
+        if(null == actId){
+            return AjaxResult.error("actId不能为空");
+        }
+        PageInfo<ConsumeLevelPrizeDTO> page = consumeLevelService.prizePage(appActPrize);
+        page.getList().forEach(prize -> {
+            if ("common".equals(prize.getSubType())){
+                prize.setValue(prize.getValue() / 100);
+            }
+        });
+        return AjaxResult.success(page);
+    }
+
+    @ApiLog(title = "上下架奖品", businessType = BusinessType.UPDATE)
+    @ApiOperation("上下架奖品")
+    @PostMapping("/publishPrize")
+    public AjaxResult publishPrize(@RequestBody AppActPrize appActPrize) {
+        return toAjax(consumeLevelService.publishPrize(appActPrize.getId(), appActPrize.getStatus()));
+    }
+
+    @ApiLog(title = "抽奖记录", businessType = BusinessType.SEARCH)
+    @ApiOperation("抽奖记录")
+    @PostMapping("/drawRecords")
+    public AjaxResult drawRecords(@RequestBody AppActPrizeRecord appActPrizeRecord){
+        Long actId = appActPrizeRecord.getActId();
+        if(null == actId){
+            return AjaxResult.error("actId不能为空");
+        }
+        PageInfo<DrawCardGameLotteryDTO> page = consumeLevelService.drawRecords(appActPrizeRecord);
+        return AjaxResult.success(page);
+    }
+
+    @ApiOperation("导出抽奖记录")
+    @ApiLog(title = "导出抽奖记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(@RequestBody AppActPrizeRecord appActPrizeRecord, HttpServletResponse response){
+        Long actId = appActPrizeRecord.getActId();
+        if(null == actId) {
+            throw new ServiceException(500, "actId不能为空");
+        }
+        List<DrawCardGameLotteryDTO> list = consumeLevelService.allDrawRecords(actId);
+        ExcelUtil<DrawCardGameLotteryDTO> util = new ExcelUtil<>(DrawCardGameLotteryDTO.class);
+        util.exportExcelHttp(list, response, "抽奖记录");
+    }
+
+    @ApiLog(title = "消费排行榜", businessType = BusinessType.SEARCH)
+    @ApiOperation("消费排行榜")
+    @GetMapping("/rank")
+    public AjaxResult consumelRank(){
+        ConsumeLevelDTO consumeLevel = consumeLevelService.getByType("consume_level");
+        if(consumeLevel == null){
+            return AjaxResult.success(null);
+        }
+        String startTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD,consumeLevel.getStartTime());
+        String endTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD,consumeLevel.getEndTime());
+        List<ConsumeRankDTO> list = consumeLevelService.consumelRank(startTime, endTime);
+        return AjaxResult.success(list);
+    }
+}

+ 99 - 0
poyee-activity/src/main/java/com/tzy/app/controller/CouponFetchController.java

@@ -0,0 +1,99 @@
+package com.tzy.app.controller;
+
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.dto.AppActivityInfoDto;
+import com.tzy.app.dto.ConsumeLevelDTO;
+import com.tzy.app.dto.ConsumeLevelPrizeDTO;
+import com.tzy.app.service.CouponFetchService;
+import com.tzy.common.annotation.ApiLog;
+import com.tzy.common.core.controller.BaseController;
+import com.tzy.common.core.domain.AjaxResult;
+import com.tzy.common.enums.BusinessType;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@Slf4j
+@Api("完善用户信息管理")
+@RestController
+@RequestMapping("/coupon/fetch")
+public class CouponFetchController extends BaseController {
+
+    @Resource
+    private CouponFetchService couponFetchService;
+
+    @ApiLog(title = "新增用户信息完善活动", businessType = BusinessType.INSERT)
+    @ApiOperation("新增用户信息完善活动")
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody AppActManage appActManage){
+        return toAjax(couponFetchService.add(appActManage));
+    }
+
+    @ApiLog(title = "编辑用户信息完善活动", businessType = BusinessType.UPDATE)
+    @ApiOperation("编辑用户信息完善活动")
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody AppActManage appActManage){
+        return toAjax(couponFetchService.edit(appActManage));
+    }
+
+    @ApiLog(title = "上下架用户信息完善活动", businessType = BusinessType.UPDATE)
+    @ApiOperation("上下架用户信息完善活动")
+    @PostMapping("/publish")
+    public AjaxResult publish(@RequestBody AppActManage appActManage){
+        return toAjax(couponFetchService.publish(appActManage));
+    }
+
+    @ApiLog(title = "用户信息完善活动列表", businessType = BusinessType.SEARCH)
+    @ApiOperation("用户信息完善活动列表")
+    @PostMapping("/page")
+    public AjaxResult page(@RequestBody AppActManage appActManage){
+        PageInfo<AppActivityInfoDto> page = couponFetchService.page(appActManage);
+        return AjaxResult.success(page);
+    }
+
+    @ApiLog(title = "新增奖品", businessType = BusinessType.INSERT)
+    @ApiOperation("新增奖品")
+    @PostMapping("/addPrize")
+    public AjaxResult addPrize(@RequestBody AppActPrize appActPrize){
+        return toAjax(couponFetchService.addPrize(appActPrize));
+    }
+
+    @ApiLog(title = "编辑奖品", businessType = BusinessType.UPDATE)
+    @ApiOperation("编辑奖品")
+    @PostMapping("/editPrize")
+    public AjaxResult editPrize(@RequestBody AppActPrize appActPrize){
+        return toAjax(couponFetchService.editPrize(appActPrize));
+    }
+
+    @ApiLog(title = "奖品列表", businessType = BusinessType.SEARCH)
+    @ApiOperation("奖品列表")
+    @PostMapping("/prizePage")
+    public AjaxResult prizePage(@RequestBody AppActPrize appActPrize){
+        Long actId = appActPrize.getActId();
+        if(null == actId){
+            return AjaxResult.error("actId不能为空");
+        }
+        PageInfo<AppActPrize> page = couponFetchService.prizePage(appActPrize);
+        page.getList().forEach(prize -> {
+            if ("common".equals(prize.getSubType())){
+                prize.setValue(prize.getValue() / 100);
+            }
+        });
+        return AjaxResult.success(page);
+    }
+
+    @ApiLog(title = "上下架奖品", businessType = BusinessType.UPDATE)
+    @ApiOperation("上下架奖品")
+    @PostMapping("/publishPrize")
+    public AjaxResult publishPrize(@RequestBody AppActPrize appActPrize) {
+        return toAjax(couponFetchService.publishPrize(appActPrize.getId(), appActPrize.getStatus()));
+    }
+}

+ 184 - 0
poyee-activity/src/main/java/com/tzy/app/controller/DrawCardGameController.java

@@ -0,0 +1,184 @@
+package com.tzy.app.controller;
+
+
+
+import com.alibaba.excel.EasyExcel;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.domain.AppActPrizeRecord;
+import com.tzy.app.dto.*;
+import com.tzy.app.service.DrawCardGameService;
+import com.tzy.common.annotation.ApiLog;
+import com.tzy.common.annotation.Log;
+import com.tzy.common.core.controller.BaseController;
+import com.tzy.common.core.domain.AjaxResult;
+import com.tzy.common.enums.BusinessType;
+import com.tzy.common.exception.ServiceException;
+import com.tzy.common.utils.poi.ExcelUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+
+@Slf4j
+@Api("抽卡机管理")
+@RestController
+@RequestMapping("/dcGame")
+public class DrawCardGameController extends BaseController {
+
+    @Resource
+    private DrawCardGameService drawCardGameService;
+
+    @ApiLog(title = "抽奖机列表", businessType = BusinessType.SEARCH)
+    @ApiOperation("抽奖机列表")
+    @PostMapping("/page")
+    public AjaxResult page(@RequestBody AppActManage appActManage){
+        if(StringUtils.isEmpty(appActManage.getType())){
+            appActManage.setType("draw_card_game");
+        }
+        PageInfo<DrawCardGameDTO> page = drawCardGameService.page(appActManage);
+        return AjaxResult.success(page);
+    }
+
+    @ApiLog(title = "新增抽奖机", businessType = BusinessType.INSERT)
+    @ApiOperation("新增抽奖机")
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody AppActManage appActManage){
+        return toAjax(drawCardGameService.add(appActManage));
+    }
+
+    @ApiLog(title = "编辑抽奖机", businessType = BusinessType.UPDATE)
+    @ApiOperation("编辑抽奖机")
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody AppActManage appActManage){
+        return toAjax(drawCardGameService.edit(appActManage));
+    }
+
+    @ApiLog(title = "上下架抽奖机", businessType = BusinessType.UPDATE)
+    @ApiOperation("上下架抽奖机")
+    @PostMapping("/publish")
+    public AjaxResult publish(@RequestBody AppActManage appActManage){
+        return toAjax(drawCardGameService.publish(appActManage.getId(), appActManage.getStatus()));
+    }
+
+    @ApiLog(title = "新增奖品", businessType = BusinessType.INSERT)
+    @ApiOperation("新增奖品")
+    @PostMapping("/addPrize")
+    public AjaxResult addPrize(@RequestBody List<AppActPrize> appActPrizeList){
+        return toAjax(drawCardGameService.addPrize(appActPrizeList));
+    }
+
+    @ApiLog(title = "编辑奖品", businessType = BusinessType.UPDATE)
+    @ApiOperation("编辑奖品")
+    @PostMapping("/editPrize")
+    public AjaxResult editPrize(@RequestBody AppActPrize appActPrize){
+        return toAjax(drawCardGameService.editPrize(appActPrize));
+    }
+
+    @ApiLog(title = "奖品列表", businessType = BusinessType.SEARCH)
+    @ApiOperation("奖品列表")
+    @PostMapping("/prizePage")
+    public AjaxResult prizePage(@RequestBody AppActPrize appActPrize){
+        Long actId = appActPrize.getActId();
+        if(null == actId){
+            return AjaxResult.error("actId不能为空");
+        }
+        return AjaxResult.success(drawCardGameService.prizePage(appActPrize));
+    }
+
+    @ApiLog(title = "上下架奖品", businessType = BusinessType.UPDATE)
+    @ApiOperation("上下架奖品")
+    @PostMapping("/publishPrize")
+    public AjaxResult publishPrize(@RequestBody AppActPrize appActPrize) {
+        return toAjax(drawCardGameService.publishPrize(appActPrize.getId(), appActPrize.getStatus()));
+    }
+
+    @ApiLog(title = "抽奖记录", businessType = BusinessType.SEARCH)
+    @ApiOperation("抽奖记录")
+    @PostMapping("/drawRecords")
+    public AjaxResult drawRecords(@RequestBody AppActPrizeRecord appActPrizeRecord){
+        Long actId = appActPrizeRecord.getActId();
+        if(null == actId){
+            return AjaxResult.error("actId不能为空");
+        }
+        PageInfo<DrawCardGameLotteryDTO> page = drawCardGameService.drawRecords(appActPrizeRecord);
+        return AjaxResult.success(page);
+    }
+
+    @ApiOperation("导出抽奖记录")
+    @ApiLog(title = "导出抽奖记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(@RequestBody AppActPrizeRecord appActPrizeRecord, HttpServletResponse response){
+        Long actId = appActPrizeRecord.getActId();
+        if(null == actId) {
+            throw new ServiceException(500, "actId不能为空");
+        }
+        List<DrawCardGameLotteryDTO> list = drawCardGameService.allDrawRecords(actId);
+        ExcelUtil<DrawCardGameLotteryDTO> util = new ExcelUtil<>(DrawCardGameLotteryDTO.class);
+        util.exportExcelHttp(list, response, "抽奖记录");
+    }
+
+    @ApiLog(title = "卡片库", businessType = BusinessType.SEARCH)
+    @ApiOperation("卡片库")
+    @PostMapping("/prizeStores")
+    public AjaxResult prizeStores(@RequestBody DrawCardGameStoresDTO drawCardGameStoresDTO){
+        PageInfo<DrawCardGameStoresDTO> page = drawCardGameService.prizeStores(drawCardGameStoresDTO);
+        return AjaxResult.success(page);
+    }
+
+    @ApiOperation("批量导入奖品")
+    @PostMapping("/import/prize")
+    public AjaxResult importPrize(MultipartFile file, Integer tenantId, Long actId){
+        if(file.isEmpty()){
+            return AjaxResult.error("文件为空");
+        }
+        try {
+            List<ImportDrawPrizeDTO> list = EasyExcel.read(file.getInputStream()).head(ImportDrawPrizeDTO.class).sheet().doReadSync();
+            drawCardGameService.saveDrawPrizes(list, tenantId, actId);
+        } catch (IOException e) {
+            e.printStackTrace();
+            return AjaxResult.error("解析数据异常");
+        }
+        return AjaxResult.success();
+    }
+
+    @ApiLog(title = "抽卡机订单", businessType = BusinessType.SEARCH)
+    @ApiOperation("抽卡机订单")
+    @PostMapping("/draw/orders")
+    public AjaxResult drawOrders(@RequestBody DrawOrderDTO drawOrderDTO){
+        PageInfo<DrawOrderDTO> page = drawCardGameService.drawOrders(drawOrderDTO);
+        return AjaxResult.success(page);
+    }
+
+    @ApiLog(title = "抽卡机发货订单", businessType = BusinessType.SEARCH)
+    @ApiOperation("抽卡机发货订单")
+    @PostMapping("/ship/orders")
+    public AjaxResult drawShipOrders(@RequestBody DrawShipOrderDTO drawShipOrderDTO){
+        PageInfo<DrawShipOrderDTO> page = drawCardGameService.drawShipOrders(drawShipOrderDTO);
+        return AjaxResult.success(page);
+    }
+
+    @ApiLog(title = "抽卡机发货订单卡片明细", businessType = BusinessType.SEARCH)
+    @ApiOperation("抽卡机发货订单卡片明细")
+    @PostMapping("/ship/cards")
+    public AjaxResult drawShipCards(@RequestBody DrawShipCardDTO drawShipCardDTO){
+        PageInfo<DrawShipCardDTO> page = drawCardGameService.drawShipCards(drawShipCardDTO);
+        return AjaxResult.success(page);
+    }
+
+    @ApiLog(title = "审核发货订单地址", businessType = BusinessType.UPDATE)
+    @ApiOperation("审核发货订单地址")
+    @PostMapping("/review/address")
+    public AjaxResult reviewOrderAddress(@RequestParam("orderId") Long orderId, @RequestParam("agree") Integer agree){
+        return toAjax(drawCardGameService.reviewOrderAddress(orderId, agree));
+    }
+}

+ 49 - 0
poyee-activity/src/main/java/com/tzy/app/controller/DrawGoodsController.java

@@ -0,0 +1,49 @@
+package com.tzy.app.controller;
+
+
+
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.dto.DrawGoodsDTO;
+import com.tzy.app.dto.DrawGoodsParamDTO;
+import com.tzy.app.service.DrawGoodsService;
+import com.tzy.common.annotation.ApiLog;
+import com.tzy.common.core.controller.BaseController;
+import com.tzy.common.core.domain.AjaxResult;
+import com.tzy.common.enums.BusinessType;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@RequestMapping("/draw/goods")
+@RestController
+public class DrawGoodsController extends BaseController {
+
+    @Resource
+    private DrawGoodsService drawGoodsService;
+
+    @ApiLog(title = "抽奖机商品列表", businessType = BusinessType.SEARCH)
+    @ApiOperation("抽奖机商品列表")
+    @PostMapping("/page")
+    public AjaxResult page(@RequestBody DrawGoodsDTO drawGoodsDTO){
+        PageInfo<DrawGoodsDTO> page = drawGoodsService.page(drawGoodsDTO);
+        return AjaxResult.success(page);
+    }
+
+    @ApiLog(title = "新增抽奖机商品", businessType = BusinessType.INSERT)
+    @ApiOperation("新增抽奖机商品")
+    @PostMapping("/save")
+    public AjaxResult save(@RequestBody DrawGoodsParamDTO drawGoodsParamDTO){
+        return toAjax(drawGoodsService.save(drawGoodsParamDTO));
+    }
+
+    @ApiLog(title = "编辑抽奖机商品", businessType = BusinessType.INSERT)
+    @ApiOperation("编辑抽奖机商品")
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody DrawGoodsParamDTO drawGoodsParamDTO){
+        return toAjax(drawGoodsService.edit(drawGoodsParamDTO));
+    }
+}

+ 180 - 0
poyee-activity/src/main/java/com/tzy/app/controller/GroupDecrAmountController.java

@@ -0,0 +1,180 @@
+package com.tzy.app.controller;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.dto.GroupDecrAmountDTO;
+import com.tzy.common.constant.Constants;
+import com.tzy.common.dto.InDto;
+import com.tzy.common.dto.OutDTO;
+import com.tzy.common.dto.UserInfo;
+import com.tzy.common.utils.StringUtils;
+import com.tzy.common.utils.UserType;
+import com.tzy.shipping.goods.dto.SkuDTO2;
+import com.tzy.shipping.goods.service.ISkuService;
+import com.tzy.sportcard.group.dto.GroupDecrAmountParam;
+import com.tzy.app.service.GroupDecrAmountService;
+import com.tzy.base.service.SysBaseService;
+import com.tzy.common.annotation.ApiLog;
+import com.tzy.common.core.controller.BaseController;
+import com.tzy.common.core.domain.AjaxResult;
+import com.tzy.common.core.domain.entity.SysUser;
+import com.tzy.common.enums.BusinessType;
+import com.tzy.common.utils.ShiroUtils;
+import io.swagger.annotations.ApiOperation;
+import org.apache.logging.log4j.util.Strings;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Objects;
+
+
+/**
+ * 2024-618砍一刀活动
+ * 2025-618砍一刀活动
+ */
+@RestController
+@RequestMapping("/decr/amount")
+public class GroupDecrAmountController extends BaseController {
+    @Resource
+    private GroupDecrAmountService groupDecrAmountService;
+    @Resource
+    private SysBaseService sysBaseService;
+    @Autowired
+    private ISkuService skuService;
+
+    @ApiLog(title = "新增砍一刀活动", businessType = BusinessType.INSERT)
+    @ApiOperation("新增砍一刀活动")
+    @PostMapping("/save")
+    public AjaxResult save(@RequestBody AppActManage appActManage){
+        return toAjax(groupDecrAmountService.save(appActManage));
+    }
+
+    @ApiLog(title = "编辑砍一刀活动", businessType = BusinessType.UPDATE)
+    @ApiOperation("编辑砍一刀活动")
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody AppActManage appActManage){
+        return toAjax(groupDecrAmountService.edit(appActManage));
+    }
+
+    @ApiLog(title = "上下架砍一刀活动", businessType = BusinessType.UPDATE)
+    @ApiOperation("上下架砍一刀活动")
+    @PostMapping("/publish")
+    public AjaxResult publish(@RequestBody AppActManage appActManage){
+        return toAjax(groupDecrAmountService.publish(appActManage));
+    }
+
+    @ApiLog(title = "砍一刀活动列表", businessType = BusinessType.SEARCH)
+    @ApiOperation("砍一刀活动列表")
+    @PostMapping("/page")
+    public AjaxResult page(@RequestBody AppActManage appActManage){
+        PageInfo<GroupDecrAmountDTO> page = groupDecrAmountService.page(appActManage);
+        return AjaxResult.success(page);
+    }
+
+
+
+    @ApiLog(title = "价格详情", businessType = BusinessType.SEARCH)
+    @ApiOperation("价格详情")
+    @PostMapping("/detail")
+    public AjaxResult getPriceInfo(@RequestBody GroupDecrAmountParam param){
+        if(param == null || param.getId() == null){
+            return AjaxResult.error("参数为空");
+        }
+        return AjaxResult.success(groupDecrAmountService.getPriceInfo(param.getId()));
+    }
+
+    @ApiLog(title = "同步价格", businessType = BusinessType.UPDATE)
+    @ApiOperation("同步价格")
+    @PostMapping("/sync")
+    public AjaxResult syncPrice(@RequestBody GroupDecrAmountParam param){
+        if(param == null || param.getId() == null){
+            return AjaxResult.error("参数为空");
+        }
+        return toAjax(groupDecrAmountService.syncPrice(param.getId()));
+    }
+
+    @ApiLog(title = "商家下的拼团", businessType = BusinessType.SEARCH)
+    @ApiOperation("商家下的拼团")
+    @PostMapping("/groups")
+    public AjaxResult selectByMerchantId(@RequestBody GroupDecrAmountParam param) {
+        // 取得当前登陆用户的信息
+        SysUser user = ShiroUtils.getSysUser();
+        if (user == null) {
+            return AjaxResult.error("请先登录");
+        }
+        if (param == null || Strings.isEmpty(param.getGroupInfoCode())) {
+            return AjaxResult.error("参数为空");
+        }
+        // 取得当前登陆用户的信息
+        if (user.getMerchantInfo() != null) {
+            param.setMerchantId(user.getMerchantInfo().getId());
+        }
+        return AjaxResult.success(groupDecrAmountService.selectByMerchantId(param));
+    }
+
+    @ApiLog(title = "修改绑定拼团商家", businessType = BusinessType.UPDATE)
+    @ApiOperation("修改绑定拼团商家")
+    @PostMapping("/bind/merchant")
+    public AjaxResult bindMerchant(@RequestBody GroupDecrAmountParam param) {
+        if (param == null || param.getId() == null) {
+            return AjaxResult.error("参数为空");
+        }
+        return toAjax(groupDecrAmountService.bindMerchant(param));
+    }
+
+    //region 2025-618砍一刀活动
+
+    @ApiLog(title = "618活动商品查询", businessType = BusinessType.SEARCH)
+    @ResponseBody
+    @PostMapping("/goods/act")
+    @ApiOperation("618活动商品查询")
+    public OutDTO getActGoods(@RequestBody InDto inDto) {
+        SkuDTO2 sku = new SkuDTO2();
+        String actType = inDto.getString("actType");
+        Long merchantId = Long.valueOf(inDto.getString("merchantId"));
+        actType = StringUtils.isEmpty(actType) ? "act_goods_sale" : actType;
+        sku.setActType(actType);
+        sku.setMerchantId(merchantId);
+        PageHelper.startPage(inDto.getPageNo(), inDto.getPageSize());
+        List<SkuDTO2> list = skuService.selectSkuList2(sku);
+        return OutDTO.ok().put("goods",list);
+    }
+
+    @ApiLog(title = "砍一刀活动绑定拼团", businessType = BusinessType.UPDATE)
+    @ApiOperation("砍一刀活动绑定拼团")
+    @PostMapping("/bind")
+    public AjaxResult bindGroup(@RequestBody GroupDecrAmountParam param){
+        if(param != null && param.getBindType() == null){
+            if(param.getId() == null){
+                return AjaxResult.error("参数为空");
+            }
+            return toAjax(groupDecrAmountService.bindGroup(param.getId(), param.getGroupInfoId()));
+        } else if (param != null && param.getBindType() != null) {
+            switch (param.getBindType()) {
+                case Constants.BIND_TYPE_GROUP:
+                    if (param.getId() == null || param.getBindId() == null) {
+                        return AjaxResult.error("参数为空");
+                    }
+                    return toAjax(groupDecrAmountService.bindActGroup(param.getId(), param.getBindId()));
+                case Constants.BIND_TYPE_GOODS:
+                    if (param.getId() == null || param.getBindId() == null) {
+                        return AjaxResult.error("参数为空");
+                    }
+                    return toAjax(groupDecrAmountService.bindGoods(param.getId(), param.getBindId()));
+                case Constants.BIND_TYPE_BIDS:
+                    if (param.getId() == null || param.getBindId() == null) {
+                        return AjaxResult.error("参数为空");
+                    }
+                    return toAjax(groupDecrAmountService.bindBid(param.getId(), param.getBindId()));
+            }
+        }
+        else{
+            return AjaxResult.error("参数为空");
+        }
+        return AjaxResult.error("参数为空");
+    }
+    //endregion
+}

+ 185 - 0
poyee-activity/src/main/java/com/tzy/app/controller/LuckyPointController.java

@@ -0,0 +1,185 @@
+package com.tzy.app.controller;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.dto.*;
+import com.tzy.app.service.IAppActPrizeService;
+import com.tzy.app.service.ILuckyPointService;
+import com.tzy.common.annotation.ApiLog;
+import com.tzy.common.annotation.Log;
+import com.tzy.common.core.controller.BaseController;
+import com.tzy.common.core.domain.AjaxResult;
+import com.tzy.common.core.domain.MsgResult;
+import com.tzy.common.dto.InDto;
+import com.tzy.common.dto.OutDTO;
+import com.tzy.common.enums.BusinessType;
+import com.tzy.common.exception.ServiceException;
+import com.tzy.common.utils.poi.ExcelUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletWebRequest;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 新年攒鸿运活动
+ */
+@Api("新年攒鸿运活动")
+@RestController
+@RequestMapping("/lucky/point")
+public class LuckyPointController extends BaseController {
+
+    @Resource private ILuckyPointService luckyPointService;
+
+    @ApiLog(title = "新增活动", businessType = BusinessType.INSERT)
+    @ApiOperation("新增活动")
+    @PostMapping("/addAct")
+    public OutDTO addAct(@RequestBody AppActManage appActManage){
+        luckyPointService.addAct(appActManage);
+        return OutDTO.ok();
+    }
+
+    @ApiLog(title = "编辑活动", businessType = BusinessType.UPDATE)
+    @ApiOperation("编辑活动")
+    @PostMapping("/editAct")
+    public OutDTO editAct(@RequestBody AppActManage appActManage){
+        luckyPointService.editAct(appActManage);
+        return OutDTO.ok();
+    }
+
+    @ApiLog(title = "审核活动", businessType = BusinessType.UPDATE)
+    @ApiOperation("审核活动")
+    @PostMapping("/auditing")
+    public OutDTO updateActAuditing(@RequestBody AppActManage appActManage){
+        luckyPointService.updateActAuditing(appActManage.getId().intValue(), appActManage.getAuditingStatus());
+        return OutDTO.ok();
+    }
+
+    @ApiLog(title = "上下架活动", businessType = BusinessType.UPDATE)
+    @ApiOperation("上下架活动")
+    @PostMapping("/startAct")
+    public OutDTO startAct(@RequestBody AppActManage appActManage) {
+        luckyPointService.updateActStatus(appActManage.getId().intValue(), appActManage.getStatus().intValue());
+        return OutDTO.ok();
+    }
+
+    @ApiLog(title = "新增奖品", businessType = BusinessType.INSERT)
+    @ApiOperation("新增奖品")
+    @PostMapping("/addPrize")
+    public OutDTO addPrize(@RequestBody AppActPrize appActPrize){
+        luckyPointService.addPrize(appActPrize);
+        return OutDTO.ok();
+    }
+
+    @ApiLog(title = "编辑奖品", businessType = BusinessType.UPDATE)
+    @ApiOperation("编辑奖品")
+    @PostMapping("/editPrize")
+    public OutDTO editPrize(@RequestBody AppActPrize appActPrize){
+        luckyPointService.editPrize(appActPrize);
+        return OutDTO.ok();
+    }
+
+    @ApiLog(title = "参与记录", businessType = BusinessType.SEARCH)
+    @ApiOperation("参与记录")
+    @PostMapping("/joinRecords")
+    public AjaxResult findJoinRecords(@RequestBody AppActPrize appActPrize){
+        Long actId = appActPrize.getActId();
+        if(null == actId) return AjaxResult.error("活动ID不能为空");
+        PageHelper.startPage(appActPrize.getPage(), appActPrize.getRows());
+        List<LuckyPointJoinRecordDto> joinRecordList = luckyPointService.findJoinRecords(actId);
+        PageInfo pageInfo = new PageInfo(joinRecordList);
+        return AjaxResult.success(pageInfo);
+    }
+
+    @ApiLog(title = "中奖记录", businessType = BusinessType.SEARCH)
+    @ApiOperation("中奖记录")
+    @PostMapping("/drawLists")
+    public AjaxResult findDrawLists(@RequestBody AppActPrize appActPrize){
+        Long actId = appActPrize.getActId();
+        if(null == actId) return AjaxResult.error("活动ID不能为空");
+        PageHelper.startPage(appActPrize.getPage(), appActPrize.getRows());
+        List<LuckyPointDrawListDto> drwaLists = luckyPointService.findDrawLists(actId);
+        PageInfo pageInfo = new PageInfo(drwaLists);
+        return AjaxResult.success(pageInfo);
+    }
+
+    @ApiLog(title = "复制奖品", businessType = BusinessType.INSERT)
+    @ApiOperation("复制奖品")
+    @PostMapping("/copyPrize")
+    public OutDTO copyPrize(@RequestBody AppActManage appActManage){
+        luckyPointService.copyPrize(appActManage.getId());
+        return OutDTO.ok();
+    }
+
+    @ApiLog(title = "奖品列表", businessType = BusinessType.SEARCH)
+    @ApiOperation("奖品列表")
+    @PostMapping("/prizeList")
+    public AjaxResult findLuckyPointPrizes(@RequestBody AppActPrize appActPrize){
+        Long actId = appActPrize.getActId();
+        if(null == actId) return AjaxResult.error("活动ID不能为空");
+        PageHelper.startPage(appActPrize.getPage(), appActPrize.getRows());
+        List<LuckyPointPrizeDto> prizeList = luckyPointService.findLuckyPointPrizes(actId);
+        PageInfo pageInfo = new PageInfo(prizeList);
+        return AjaxResult.success(pageInfo);
+    }
+
+    @ApiLog(title = "上下架奖品", businessType = BusinessType.UPDATE)
+    @ApiOperation("上下架奖品")
+    @PostMapping("/startPrize")
+    public OutDTO startPrize(@RequestBody AppActPrize appActPrize) {
+        luckyPointService.updatePrizeStatus(appActPrize);
+        return OutDTO.ok();
+    }
+
+    @ApiLog(title = "开奖通知", businessType = BusinessType.SEARCH)
+    @ApiOperation("开奖通知")
+    @PostMapping("/drawNotice")
+    public OutDTO drawNotice(@RequestBody AppActManage appActManage){
+        Long id = appActManage.getId();
+        if(null == id) return OutDTO.error500("活动ID不能为空");
+        luckyPointService.drawNotice(id);
+        return OutDTO.ok();
+    }
+
+    @ApiOperation("导出参与记录")
+    @ApiLog(title = "导出参与记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(@RequestBody AppActPrize appActPrize, HttpServletResponse response){
+        Long actId = appActPrize.getActId();
+        if(null == actId) {
+            throw new ServiceException(500, "活动ID不能为空");
+        }
+        List<LuckyPointJoinRecordDto> joinRecordList = luckyPointService.findJoinRecords(actId);
+        ExcelUtil<LuckyPointJoinRecordDto> util = new ExcelUtil<>(LuckyPointJoinRecordDto.class);
+        util.exportExcelHttp(joinRecordList, response, "活动参与记录");
+    }
+
+    @ApiOperation("单个退还积分")
+    @ApiLog(title = "单个退还积分", businessType = BusinessType.UPDATE)
+    @PostMapping("/signRefund/{id}")
+    public AjaxResult refundPointByRecord(@PathVariable("id") Long id){
+        return toAjax(luckyPointService.refundPointByRecord(id));
+    }
+
+    @ApiLog(title = "自动延期活动", businessType = BusinessType.INSERT)
+    @ApiOperation("自动延期活动")
+    @PostMapping("/copyPrizeNew/{id}")
+    public AjaxResult copyActNew(@PathVariable("id") Long id){
+        return toAjax(luckyPointService.copyActNew(id));
+    }
+
+    @ApiOperation("退还积分")
+    @ApiLog(title = "退还积分", businessType = BusinessType.UPDATE)
+    @PostMapping("/refundPoint/{id}")
+    public AjaxResult refundPoint(@PathVariable("id") Long id){
+        luckyPointService.refundPointById(id);
+        return AjaxResult.success();
+    }
+}

+ 154 - 0
poyee-activity/src/main/java/com/tzy/app/controller/QuizActivityController.java

@@ -0,0 +1,154 @@
+package com.tzy.app.controller;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.domain.QuizActivity;
+import com.tzy.app.domain.QuizLib;
+import com.tzy.app.dto.QuizActivityDto;
+import com.tzy.app.dto.QuizLibDto;
+import com.tzy.app.service.QuizActivityService;
+import com.tzy.app.service.QuizLibService;
+import com.tzy.common.core.domain.AjaxResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 答题活动管理
+ */
+@RestController
+@RequestMapping("/quiz/activity")
+@Api(tags = "答题活动管理")
+public class QuizActivityController {
+
+    @Autowired
+    private QuizActivityService quizActivityService;
+    @Autowired
+    private QuizLibService quizLibService;
+
+    //答题活动创建
+    @PostMapping("/create")
+    @ApiOperation("创建答题活动")
+    public AjaxResult create(@RequestBody QuizActivity quizActivity){
+        int count = quizActivityService.createActivity(quizActivity);
+        if (count>0)
+            return AjaxResult.success("创建任务成功");
+        return AjaxResult.error("创建任务失败");
+    }
+
+    @PostMapping("/edit")
+    @ApiOperation("编辑答题活动")
+    public AjaxResult edit(@RequestBody QuizActivity quizActivity){
+        //判断当前活动状态
+        QuizActivityDto quizActivityDto = quizActivityService.getQuizActivityById(quizActivity.getId());
+        if(quizActivityDto.getStatus()==1){
+            return AjaxResult.error("当前活动已启用,编辑活动失败");
+        }
+        int count = quizActivityService.editActivity(quizActivity);
+        if (count>0)
+            return AjaxResult.success("编辑成功");
+        return AjaxResult.error();
+    }
+    //答题活动列表查询接口
+    @PostMapping("/list")
+    @ApiOperation("答题活动分页查询")
+    public AjaxResult list(@RequestBody QuizActivity quizActivity){
+        PageHelper.startPage(quizActivity.getPage(),quizActivity.getRows());
+        List<QuizActivityDto> activityList = quizActivityService.queryQuizActivityList(quizActivity);
+        PageInfo<QuizActivityDto> quizActivityDtoPageInfo = new PageInfo<>(activityList);
+        return AjaxResult.success(quizActivityDtoPageInfo);
+    }
+
+    @PostMapping("/publish")
+    @ApiOperation("发布答题活动")
+    public AjaxResult publish(@RequestBody QuizActivity quizActivity){
+        if (quizActivity.getStatus()==null){
+            return AjaxResult.error("参数为空");
+        }
+        if (quizActivity.getId()==null){
+            return AjaxResult.error("id为空");
+        }
+        //如果是上架问卷
+        if (quizActivity.getStatus()==1){
+            //判断题库启用状态的数量是否小于答题数
+            QuizActivityDto quizActivityDto = quizActivityService.getQuizActivityById(quizActivity.getId());
+            int countQuizLib = quizLibService.countQuizLib(quizActivity.getId());
+            if (countQuizLib<quizActivityDto.getQuestionNum()){
+                return AjaxResult.error("发布活动失败,启用的题库题目数量不足");
+            }
+        }
+        int i = quizActivityService.publishActivity(quizActivity);
+        if (i>0)
+            return AjaxResult.success();
+        return AjaxResult.error("发布失败");
+    }
+
+    //新建题目
+    @PostMapping("/createQuestion")
+    @ApiOperation("创建答题题目")
+    public AjaxResult createQuestion(@RequestBody QuizLib quizLib){
+        //判断当前活动状态
+        QuizActivityDto quizActivityDto = quizActivityService.getQuizActivityById(quizLib.getActivityId());
+        if(quizActivityDto.getStatus()==1){
+            return AjaxResult.error("当前活动已启用,新增题目失败");
+        }
+        int count = quizLibService.addQuizLib(quizLib);
+        if (count>0)
+            return AjaxResult.success();
+        return AjaxResult.error("新建题库失败!");
+    }
+    //编辑题目
+    @PostMapping("/editQuestion")
+    @ApiOperation("编辑答题题目")
+    public AjaxResult editQuestion(@RequestBody QuizLib quizLib){
+        //判断当前活动状态
+        QuizActivityDto quizActivityDto = quizActivityService.getQuizActivityById(quizLib.getActivityId());
+        if(quizActivityDto.getStatus()==1){
+            return AjaxResult.error("当前活动已启用,编辑题目失败");
+        }
+        int count = quizLibService.editQuizLib(quizLib);
+        if (count>0)
+            return AjaxResult.success();
+        return AjaxResult.error("编辑题目失败!");
+    }
+    //答题活动题目查询
+    @PostMapping("/quizLib/list")
+    @ApiOperation("分页查询答题题目")
+    public AjaxResult queryQuizLib(@RequestBody QuizLib quizLib){
+        PageHelper.startPage(quizLib.getPage(),quizLib.getRows());
+        List<QuizLibDto> quizLibDtos = quizLibService.queryQuizLibList(quizLib.getActivityId());
+        PageInfo<QuizLibDto> quizLibDtoPageInfo = new PageInfo<>(quizLibDtos);
+        return AjaxResult.success(quizLibDtoPageInfo);
+    }
+    @PostMapping("/quizLib/updateStatus")
+    @ApiOperation(value = "更新答题题目状态",notes = "status:0、禁用,1、启用")
+    public AjaxResult updateStatus(@RequestBody QuizLib quizLib){
+        if (quizLib.getStatus()==null){
+            return AjaxResult.error("参数为空");
+        }
+        if (quizLib.getId()==null){
+            return AjaxResult.error("id为空");
+        }
+        QuizLibDto quizLibDto = quizLibService.queryQuizLibById(quizLib.getId());
+        if (quizLibDto==null){
+            return AjaxResult.error("题目信息不存在");
+        }
+        QuizActivityDto quizActivityDto = quizActivityService.getQuizActivityById(quizLibDto.getActivityId());
+        if(quizActivityDto.getStatus()==1&&quizLib.getStatus()==0){
+            return AjaxResult.error("当前活动已启用,禁用题目失败");
+        }
+        int count = quizLibService.updateStatus(quizLib.getStatus(), quizLib.getId());
+        if (count>0)
+            return AjaxResult.success();
+        return AjaxResult.error("更新状态失败!");
+    }
+
+
+
+}

+ 111 - 0
poyee-activity/src/main/java/com/tzy/app/controller/TenantInfoController.java

@@ -0,0 +1,111 @@
+package com.tzy.app.controller;
+
+import java.util.List;
+
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.domain.TenantInfo;
+import com.tzy.app.service.ITenantInfoService;
+import com.tzy.common.annotation.ApiLog;
+import com.tzy.common.core.controller.BaseController;
+import com.tzy.common.core.domain.AjaxResult;
+import com.tzy.common.enums.BusinessType;
+import org.apache.logging.log4j.util.Strings;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * 租户信息Controller
+ * 
+ * @author tencheer
+ * @date 2023-12-18
+ */
+@RestController
+@RequestMapping("/tenant/info")
+public class TenantInfoController extends BaseController {
+
+    @Resource
+    private ITenantInfoService tenantInfoService;
+
+    /**
+     * 查询租户信息列表
+     */
+    @ApiLog(title = "分页查询租户信息列表", businessType = BusinessType.SEARCH)
+    @PostMapping("/page")
+    public AjaxResult page(@RequestBody TenantInfo tenantInfo) {
+        PageInfo<TenantInfo> page = tenantInfoService.selectTenantInfoList(tenantInfo);
+        return AjaxResult.success(page);
+    }
+
+    @ApiLog(title = "查询租户信息列表", businessType = BusinessType.SEARCH)
+    @PostMapping("/list")
+    public AjaxResult list(@RequestBody TenantInfo tenantInfo) {
+        List<TenantInfo> list = tenantInfoService.list(tenantInfo);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 导出租户信息列表
+     */
+    /*@ApiLog(title = "租户信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public MsgResult export(@RequestBody TenantInfo tenantInfo) {
+        List<TenantInfo> list = tenantInfoService.selectTenantInfoList(tenantInfo);
+        ExcelUtil<TenantInfo> util = new ExcelUtil<TenantInfo>(TenantInfo.class);
+        return util.exportExcel(list, "info");
+    }*/
+
+    /**
+     * 新增保存租户信息
+     */
+    @ApiLog(title = "新增租户信息", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult addSave(@RequestBody TenantInfo tenantInfo) {
+        return toAjax(tenantInfoService.insertTenantInfo(tenantInfo));
+    }
+
+    /**
+     * 修改保存租户信息
+     */
+    @ApiLog(title = "修改保存租户信息", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult editSave(@RequestBody TenantInfo tenantInfo) {
+        if(null == tenantInfo){
+            return AjaxResult.error("参数不能为空");
+        }
+        if(null == tenantInfo.getId()){
+            return AjaxResult.error("id不能为空");
+        }
+        return toAjax(tenantInfoService.updateTenantInfo(tenantInfo));
+    }
+
+    /**
+     * 删除租户信息
+     */
+    @ApiLog(title = "删除租户信息", businessType = BusinessType.DELETE)
+    @PostMapping( "/remove")
+    public AjaxResult remove(@RequestBody TenantInfo tenantInfo) {
+        if(null == tenantInfo.getId()){
+            return AjaxResult.error("id不能为空");
+        }
+        return toAjax(tenantInfoService.deleteTenantInfoById(tenantInfo.getId()));
+    }
+
+    /**
+     * 修改保存租户信息
+     */
+    @ApiLog(title = "重置租户密钥", businessType = BusinessType.UPDATE)
+    @PostMapping("/resetSecret")
+    public AjaxResult resetSecret(@RequestBody TenantInfo tenantInfo) {
+        if(null == tenantInfo){
+            return AjaxResult.error("参数不能为空");
+        }
+        if(Strings.isEmpty(tenantInfo.getCode())){
+            return AjaxResult.error("code不能为空");
+        }
+        return toAjax(tenantInfoService.resetSecret(tenantInfo));
+    }
+}

+ 128 - 0
poyee-activity/src/main/java/com/tzy/app/controller/UserActTimesController.java

@@ -0,0 +1,128 @@
+package com.tzy.app.controller;
+
+import java.util.List;
+
+import com.tzy.common.core.domain.MsgResult;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import com.tzy.common.annotation.Log;
+import com.tzy.common.enums.BusinessType;
+import com.tzy.app.domain.UserActTimes;
+import com.tzy.app.service.IUserActTimesService;
+import com.tzy.common.core.controller.BaseController;
+import com.tzy.common.core.domain.AjaxResult;
+import com.tzy.common.utils.poi.ExcelUtil;
+import com.tzy.common.core.page.TableDataInfo;
+
+/**
+ * 活动奖励Controller
+ * 
+ * @author tencheer
+ * @date 2022-11-15
+ */
+@Controller
+@RequestMapping("/act/times")
+public class UserActTimesController extends BaseController
+{
+    private String prefix = "act/times";
+
+    @Autowired
+    private IUserActTimesService userActTimesService;
+
+    @RequiresPermissions("act:times:view")
+    @GetMapping()
+    public String times()
+    {
+        return prefix + "/times";
+    }
+
+    /**
+     * 查询活动奖励列表
+     */
+    @RequiresPermissions("act:times:list")
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(UserActTimes userActTimes)
+    {
+        startPage();
+        List<UserActTimes> list = userActTimesService.selectUserActTimesList(userActTimes);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出活动奖励列表
+     */
+    @RequiresPermissions("act:times:export")
+    @Log(title = "活动奖励", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ResponseBody
+    public MsgResult export(UserActTimes userActTimes)
+    {
+        List<UserActTimes> list = userActTimesService.selectUserActTimesList(userActTimes);
+        ExcelUtil<UserActTimes> util = new ExcelUtil<UserActTimes>(UserActTimes.class);
+        return util.exportExcel(list, "times");
+    }
+
+    /**
+     * 新增活动奖励
+     */
+    @GetMapping("/add")
+    public String add()
+    {
+        return prefix + "/add";
+    }
+
+    /**
+     * 新增保存活动奖励
+     */
+    @RequiresPermissions("act:times:add")
+    @Log(title = "活动奖励", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(UserActTimes userActTimes)
+    {
+        return toAjax(userActTimesService.insertUserActTimes(userActTimes));
+    }
+
+    /**
+     * 修改活动奖励
+     */
+    @GetMapping("/edit/{id}")
+    public String edit(@PathVariable("id") Long id, ModelMap mmap)
+    {
+        UserActTimes userActTimes = userActTimesService.selectUserActTimesById(id);
+        mmap.put("userActTimes", userActTimes);
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改保存活动奖励
+     */
+    @RequiresPermissions("act:times:edit")
+    @Log(title = "活动奖励", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(UserActTimes userActTimes)
+    {
+        return toAjax(userActTimesService.updateUserActTimes(userActTimes));
+    }
+
+    /**
+     * 删除活动奖励
+     */
+    @RequiresPermissions("act:times:remove")
+    @Log(title = "活动奖励", businessType = BusinessType.DELETE)
+    @PostMapping( "/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids)
+    {
+        return toAjax(userActTimesService.deleteUserActTimesByIds(ids));
+    }
+}

+ 77 - 0
poyee-activity/src/main/java/com/tzy/app/controller/UserLivePrizeController.java

@@ -0,0 +1,77 @@
+package com.tzy.app.controller;
+
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.service.IUserLivePrizeService;
+import com.tzy.common.annotation.Log;
+import com.tzy.common.core.controller.BaseController;
+import com.tzy.common.dto.OutDTO;
+import com.tzy.common.enums.BusinessType;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Api("用户直播")
+@RestController
+@RequestMapping("/userLivePrize")
+public class UserLivePrizeController extends BaseController {
+
+    @Resource private IUserLivePrizeService userLivePrizeService;
+
+    @Log(title = "新增用户直播活动", businessType = BusinessType.INSERT)
+    @PostMapping("/saveAct")
+    @ResponseBody
+    public OutDTO saveUserLiveAct(@RequestBody AppActManage appActManage) {
+        int rs = userLivePrizeService.saveUserLiveAct(appActManage);
+        if(rs == 0) return OutDTO.error500("新增活动失败");
+        return OutDTO.ok();
+    }
+
+    @Log(title = "编辑用户直播活动", businessType = BusinessType.INSERT)
+    @PostMapping("/editAct")
+    @ResponseBody
+    public OutDTO updateUserLiveAct(@RequestBody AppActManage appActManage) {
+        int rs = userLivePrizeService.updateUserLiveAct(appActManage);
+        if(rs == 0) return OutDTO.error500("编辑活动失败");
+        return OutDTO.ok();
+    }
+
+    @Log(title = "新增用户直播奖励", businessType = BusinessType.INSERT)
+    @PostMapping("/save")
+    @ResponseBody
+    public OutDTO saveUserLivePrize(@RequestBody AppActPrize appActPrize) {
+        int rs = userLivePrizeService.saveUserLivePrize(appActPrize);
+        if(rs == 0) return OutDTO.error500("新增用户直播奖励失败");
+        return OutDTO.ok();
+    }
+
+    @Log(title = "编辑用户直播奖励", businessType = BusinessType.INSERT)
+    @PostMapping("/edit")
+    @ResponseBody
+    public OutDTO updateUserLivePrize(@RequestBody AppActPrize appActPrize) {
+        int rs = userLivePrizeService.updateUserLivePrize(appActPrize);
+        if(rs == 0) return OutDTO.error500("编辑用户直播奖励失败");
+        return OutDTO.ok();
+    }
+
+    @Log(title = "发放用户直播奖励", businessType = BusinessType.INSERT)
+    @PostMapping("/sendPrize")
+    @ResponseBody
+    public OutDTO sendPrize(Long orderListId, Long prizeId) {
+        int rs = userLivePrizeService.sendPrize(orderListId, prizeId);
+        if(rs == 0) return OutDTO.error500("发放奖励失败");
+        return OutDTO.ok();
+    }
+
+    @ApiOperation("查询用户直播奖品")
+    @Log(title = "查询用户直播奖品", businessType = BusinessType.SEARCH)
+    @PostMapping("/prizeList")
+    @ResponseBody
+    public OutDTO findUserLivePrizes(Long orderId){
+        List<AppActPrize> appActPrizeList = userLivePrizeService.findUserLivePrizes(orderId);
+        return OutDTO.ok().put("appActPrizeList", appActPrizeList);
+    }
+}

+ 99 - 0
poyee-activity/src/main/java/com/tzy/app/controller/WatchVideoController.java

@@ -0,0 +1,99 @@
+package com.tzy.app.controller;
+
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.dto.AppActivityInfoDto;
+import com.tzy.app.dto.ConsumeLevelDTO;
+import com.tzy.app.dto.ConsumeLevelPrizeDTO;
+import com.tzy.app.service.WatchVideoService;
+import com.tzy.common.annotation.ApiLog;
+import com.tzy.common.core.controller.BaseController;
+import com.tzy.common.core.domain.AjaxResult;
+import com.tzy.common.enums.BusinessType;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@Slf4j
+@Api("完善用户信息管理")
+@RestController
+@RequestMapping("/watch/video")
+public class WatchVideoController extends BaseController {
+
+    @Resource
+    private WatchVideoService watchVideoService;
+
+    @ApiLog(title = "新增用户信息完善活动", businessType = BusinessType.INSERT)
+    @ApiOperation("新增用户信息完善活动")
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody AppActManage appActManage){
+        return toAjax(watchVideoService.add(appActManage));
+    }
+
+    @ApiLog(title = "编辑用户信息完善活动", businessType = BusinessType.UPDATE)
+    @ApiOperation("编辑用户信息完善活动")
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody AppActManage appActManage){
+        return toAjax(watchVideoService.edit(appActManage));
+    }
+
+    @ApiLog(title = "上下架用户信息完善活动", businessType = BusinessType.UPDATE)
+    @ApiOperation("上下架用户信息完善活动")
+    @PostMapping("/publish")
+    public AjaxResult publish(@RequestBody AppActManage appActManage){
+        return toAjax(watchVideoService.publish(appActManage));
+    }
+
+    @ApiLog(title = "用户信息完善活动列表", businessType = BusinessType.SEARCH)
+    @ApiOperation("用户信息完善活动列表")
+    @PostMapping("/page")
+    public AjaxResult page(@RequestBody AppActManage appActManage){
+        PageInfo<AppActivityInfoDto> page = watchVideoService.page(appActManage);
+        return AjaxResult.success(page);
+    }
+
+    @ApiLog(title = "新增奖品", businessType = BusinessType.INSERT)
+    @ApiOperation("新增奖品")
+    @PostMapping("/addPrize")
+    public AjaxResult addPrize(@RequestBody AppActPrize appActPrize){
+        return toAjax(watchVideoService.addPrize(appActPrize));
+    }
+
+    @ApiLog(title = "编辑奖品", businessType = BusinessType.UPDATE)
+    @ApiOperation("编辑奖品")
+    @PostMapping("/editPrize")
+    public AjaxResult editPrize(@RequestBody AppActPrize appActPrize){
+        return toAjax(watchVideoService.editPrize(appActPrize));
+    }
+
+    @ApiLog(title = "奖品列表", businessType = BusinessType.SEARCH)
+    @ApiOperation("奖品列表")
+    @PostMapping("/prizePage")
+    public AjaxResult prizePage(@RequestBody AppActPrize appActPrize){
+        Long actId = appActPrize.getActId();
+        if(null == actId){
+            return AjaxResult.error("actId不能为空");
+        }
+        PageInfo<AppActPrize> page = watchVideoService.prizePage(appActPrize);
+        page.getList().forEach(prize -> {
+            if ("common".equals(prize.getSubType())){
+                prize.setValue(prize.getValue() / 100);
+            }
+        });
+        return AjaxResult.success(page);
+    }
+
+    @ApiLog(title = "上下架奖品", businessType = BusinessType.UPDATE)
+    @ApiOperation("上下架奖品")
+    @PostMapping("/publishPrize")
+    public AjaxResult publishPrize(@RequestBody AppActPrize appActPrize) {
+        return toAjax(watchVideoService.publishPrize(appActPrize.getId(), appActPrize.getStatus()));
+    }
+}

+ 108 - 0
poyee-activity/src/main/java/com/tzy/app/domain/AppActConfig.java

@@ -0,0 +1,108 @@
+package com.tzy.app.domain;
+
+import com.tzy.common.annotation.Excel;
+import com.tzy.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.ToString;
+
+import java.util.Date;
+
+/**
+ * appActConfig对象 app_act_config
+ * 
+ * @author tencheer
+ * @date 2022-08-08
+ */
+@Data
+@ToString
+public class AppActConfig extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long id;
+
+    /** 参加活动要求类型:user_growth,sets,buy */
+    @Excel(name = "参加活动要求类型:user_growth,sets,buy")
+    private String type;
+
+    /** 关联活动id */
+    private Long actId;
+
+    /** 用户消费金额 */
+    @Excel(name = "用户消费金额")
+    private Long userGrowth;
+
+    /** 拼团id */
+    private Long groupInfoId;
+
+    /** 用户购买过的卡组 */
+    @Excel(name = "用户购买过的卡组")
+    private String set;
+
+    /** 购买过活动商家商品,1和0 */
+    @Excel(name = "购买过活动商家商品,1和0")
+    private Long buyHistory;
+
+    /** 状态:1开启,0关闭 */
+    @Excel(name = "状态:1开启,0关闭")
+    private Long status;
+
+    /** 描述 */
+    @Excel(name = "描述")
+    private String description;
+
+    /** 活动名称 **/
+    private String actName;
+
+    /** 活动开始时间 **/
+    private Date startTime;
+
+    /** 活动结束时间 **/
+    private Date endTime;
+
+    /** 优惠券ID **/
+    private String couponIds;
+
+    /** 历史购买天数 **/
+    private Integer historyLimitDay;
+
+    /** 当天开始时间 0-24 **/
+    private Integer startHour;
+
+    /** 当天结束时间 0-24 **/
+    private Integer endHour;
+
+    /** 活动图片 **/
+    private String actImg;
+
+    /** 跳转链接 **/
+    private String actUrl;
+
+    /** 排序时间 **/
+    private Integer sortValue;
+
+    /** 提醒时间间隔 小时 默认0 **/
+    private Integer remindTime;
+
+    /** 点击区域,默认0,任意点击,1区域点击 **/
+    private Integer clickType;
+
+    /** 持续时间,默认5秒 **/
+    private Integer lastTime;
+
+    /** 开屏广告:open_ad,首页推广:first_page **/
+    private String subType;
+
+    /** 参加活动要求类型:消费金额:user_growth,序列sets,buy **/
+    private String joinType;
+
+    /** 条件1:and 0:or **/
+    private Integer op;
+
+    /** 图片:img,视频:video,动图:gif **/
+    private String imgType;
+    /**标签id*/
+    private Long catId;
+
+}

+ 89 - 0
poyee-activity/src/main/java/com/tzy/app/domain/AppActGuessRecord.java

@@ -0,0 +1,89 @@
+package com.tzy.app.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.tzy.common.annotation.Excel;
+import com.tzy.common.core.domain.BaseEntity;
+
+import java.math.BigDecimal;
+
+/**
+ * 竞猜记录对象 app_act_guess_record
+ * 
+ * @author tencheer
+ * @date 2022-11-10
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AppActGuessRecord extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 积分竞猜状态,默认0,正确1,错误-1 */
+    @Excel(name = "积分竞猜状态,默认0,正确1,错误-1")
+    private Long guessScoreStatus;
+
+    /** 关联奖品id */
+    @Excel(name = "关联奖品id")
+    private Long prizeRefId;
+
+    /**  */
+    private Long id;
+
+    /** 关联竞猜活动id */
+    @Excel(name = "关联竞猜活动id")
+    private Long actId;
+
+    /** 消耗积分 */
+    @Excel(name = "消耗积分")
+    private Long point;
+
+    /** 用户竞猜结果,1负2平3胜 */
+    @Excel(name = "用户竞猜结果,1负2平3胜")
+    private Long userGuessResult;
+
+    /** 用户竞猜队伍1比分 */
+    @Excel(name = "用户竞猜队伍1比分")
+    private Long userTeamPreScore;
+
+    /** 用户竞猜队伍2比分 */
+    @Excel(name = "用户竞猜队伍2比分")
+    private Long userTeamAftScore;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 昵称 */
+    @Excel(name = "昵称")
+    private String nickname;
+
+    /** 头像 */
+    @Excel(name = "头像")
+    private String avatar;
+
+    /** 结果状态,默认0,正确1,错误-1 */
+    @Excel(name = "结果状态,默认0,正确1,错误-1")
+    private Long status;
+
+    /** 奖品类型,金额amount.优惠劵coupon,商品goods */
+    @Excel(name = "奖品类型,金额amount.优惠劵coupon,商品goods")
+    private String prizeType;
+
+    /** 奖品金额 */
+    @Excel(name = "奖品金额")
+    private BigDecimal prizeAmount;
+
+    /** 竞猜奖品关联订单id */
+    @Excel(name = "竞猜奖品关联订单id")
+    private Long refOrderId;
+
+    /** 竞猜队伍id **/
+    private Long actTeamId;
+
+
+}

+ 153 - 0
poyee-activity/src/main/java/com/tzy/app/domain/AppActGuessTeam.java

@@ -0,0 +1,153 @@
+package com.tzy.app.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.tzy.common.annotation.Excel;
+import com.tzy.common.core.domain.BaseEntity;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 竞猜队伍对象 app_act_guess_team
+ * 
+ * @author tencheer
+ * @date 2022-11-10
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AppActGuessTeam extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 关联奖品id */
+    @Excel(name = "关联奖品id")
+    private Long prizeRefId;
+
+    /**  */
+    private Long id;
+
+    /** 类型 */
+    @Excel(name = "类型")
+    @NotEmpty(message = "类型不能为空")
+    private String type;
+
+    /** 关联活动id */
+    @NotNull(message = "关联活动id不能为空")
+    @Excel(name = "关联活动id")
+    private Long actId;
+
+    /** 奖品金额 */
+    @Excel(name = "奖品金额")
+    private BigDecimal prizeAmount;
+
+    /** 奖品类型,金额amount.优惠劵coupon,商品goods */
+    @Excel(name = "奖品类型,金额amount.优惠劵coupon,商品goods,区块链blockchain")
+    private String prizeType;
+
+    /** 奖品描述 */
+    @Excel(name = "奖品描述")
+    private String prizeDesc;
+
+    /** 竞猜队伍1 */
+    @Excel(name = "竞猜队伍1")
+    private String guessTeamPre;
+
+    /** 队伍1图片 */
+    @Excel(name = "队伍1图片")
+    private String teamPreImg;
+
+    /** 队伍1json配置 */
+    @Excel(name = "队伍1json配置")
+    private String teamPreDesc;
+
+    /** 竞猜队伍2 */
+    @Excel(name = "竞猜队伍2")
+    private String guessTeamAft;
+
+    /** 队伍2图片 */
+    @Excel(name = "队伍2图片")
+    private String teamAftImg;
+
+    /** 队伍2json配置 */
+    @Excel(name = "队伍2json配置")
+    private String teamAftDesc;
+
+    /** 竞猜开始时间 */
+    @Excel(name = "竞猜开始时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date startTime;
+
+    /** 竞猜结束时间 */
+    @Excel(name = "竞猜结束时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date endTime;
+
+    /** 场次描述,限长128字符 */
+    @Excel(name = "场次描述,限长128字符")
+    private String actDesc;
+
+    /** 结果,默认0:结果未出,1负2平3胜 */
+    @Excel(name = "结果,默认0:结果未出,1负2平3胜")
+    private Long guessResult;
+
+    /** 消耗积分 */
+    @Excel(name = "消耗积分")
+    private Long point;
+
+    /** 排序值 */
+    @Excel(name = "排序值")
+    private Long sortValue;
+
+    /** 队伍1比分 */
+    @Excel(name = "队伍1比分")
+    private Long teamPreScore;
+
+    /** 队伍2比分 */
+    @Excel(name = "队伍2比分")
+    private Long teamAftScore;
+
+    /** 用户均分金额 */
+    @Excel(name = "用户均分金额")
+    private Long userAssignAmount;
+
+    /** 公布结果时间 **/
+    private Date publishResultTime;
+
+    /** 转盘活动ID **/
+    private Long turntableId;
+
+    /** 赠送转盘次数 **/
+    private Integer turntableNum;
+
+    /** 商家ID **/
+    private Integer merchantId;
+
+    /** 商家LOGO **/
+    private String merchantLogo;
+
+    /** 商家名字 **/
+    private String merchantName;
+
+    /** 冠名banner **/
+    private String merchantBanner;
+
+    /** 是否已发放奖励:0未发放,1已发放 **/
+    private Long sendFlg;
+
+    /** 比赛开始时间 **/
+    private Date matchStartTime;
+
+    /** 比赛结束时间 **/
+    private Date matchEndTime;
+
+    /** 上下架状态:0下架,1上架 **/
+    private Long useStatus;
+    /**区块链id*/
+    private Long blockchainId;
+}

+ 128 - 0
poyee-activity/src/main/java/com/tzy/app/domain/AppActManage.java

@@ -0,0 +1,128 @@
+package com.tzy.app.domain;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.ToString;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.tzy.common.annotation.Excel;
+import com.tzy.common.core.domain.BaseEntity;
+
+/**
+ * actManager对象 app_act_manage
+ * 
+ * @author tencheer
+ * @date 2022-08-08
+ */
+@Data
+@ToString
+public class
+AppActManage extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long id;
+    /** 单位时间数量 */
+    private Long limitTimeNum;
+
+    /** 商家id */
+    private Long merchantId;
+
+    /** 商家name */
+    @Excel(name = "商家name")
+    private String merchantName;
+
+    /** 状态:1开启,0关闭 202超时未组齐, 203组齐待公布, 205结果已公布  */
+    @Excel(name = "状态:1开启,0关闭")
+    private Long status;
+
+    /** 满足条件:and 或者 or */
+    private String op;
+
+    /**  */
+    private Long allUser;
+
+    /** 开始时间 */
+    private Date startTime;
+
+    /** 结束时间 */
+    private Date endTime;
+
+    /** 活动类型 */
+    @Excel(name = "活动类型")
+    private String type;
+
+    /** 子类型 point:消耗积分抽取  times:消耗次数抽取 */
+    @Excel(name = "子类型")
+    private String subType;
+
+    /** 活动名称 */
+    @Excel(name = "活动名称")
+    private String name;
+
+    /** 活动图片 */
+    private String imgUrl;
+
+    /** 描述 */
+    private String description;
+
+    /** 积分要求 */
+    private Long point;
+
+    /** 奖品单位时间限制类似,按小时:hour,按天:day,整期活动:all */
+    private String limitTimeType;
+
+    /** 单位时间 */
+    private Long limitTime;
+
+    /** 初始免费次数,默认0 **/
+    private Integer defaultTimes;
+
+    /** 排行榜奖励图片 **/
+    private String rankPrizeImg;
+
+    /** 最终大奖 **/
+    private String lastPrizeDesc;
+
+    /** 是否发放瓜分奖励:0未发放,1已发放 **/
+    private Integer prizeFlag;
+
+    /** 活动总份数 **/
+    private Integer totalNum;
+
+    /** 已售出份数 **/
+    private Integer soldNum;
+
+    /** 审核状态:0.待审核,1.已审核 **/
+    private Integer auditingStatus;
+    /** 奖品详情 **/
+    private String prizeDetail;
+    /** 消耗积分类型 */
+    private String pointType;
+    private Date groupFullTime; // 成团时间
+    private Date publicCodeTime; // 开奖时间
+    private String[] types;
+    private int period; // 活动期数
+    private int autoAddOnce; // 默认0关闭 1开启复制功能
+    private int intervalTime; // 延期间隔时间,单位小时,默认0
+    private String defaultPrizeConfig; // 默认奖品配置json(prizeId,name)
+    private Date actOverTime; // 活动最后参与(兑换)时间
+    private String ruleConfig; // 活动规则配置json
+    private Integer tenantId; // 租户ID
+    private Integer diySort; //自定义排序
+    private String bannerUrl; // banner图
+    private Integer dayLimitNum; // 每日限购总数
+    /** 2024-618活动新增字段 **/
+    private Long refActId; // 关联活动id
+    private String refSubType; // 关联特殊活动类型:会员砍一刀次数达标:spec_member_num
+    private Integer refActEnable; // 关联活动是否满足条件开启 默认0否 1是
+    private Integer openPopup; // 是否打开弹窗 默认0否 1是
+    private String popupUrl;  // 弹窗跳转路径
+    private String popupImg; // 弹窗图
+    private String popupConfig; // 弹窗额外配置:json
+    private String defaultTimesType; // 赠送默认次数类型,天:day,周:week,月:month,整期:all (默认all, 大转盘活动接收)
+    private String drawType; // 开奖方式:默认null 组齐开奖, ACT_EXPIRE 到期自动开奖
+}

+ 99 - 0
poyee-activity/src/main/java/com/tzy/app/domain/AppActPrize.java

@@ -0,0 +1,99 @@
+package com.tzy.app.domain;
+
+import lombok.Data;
+import lombok.ToString;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.tzy.common.annotation.Excel;
+import com.tzy.common.core.domain.BaseEntity;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * appActPrize对象 app_act_prize
+ * 
+ * @author tencheer
+ * @date 2022-08-08
+ */
+@Data
+@ToString
+public class AppActPrize extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /**  */
+    private Long id;
+
+    /** 奖品类型,goods 商城商品sku ,coupon 优惠劵,point 积分,amount金额 */
+    @Excel(name = "奖品类型,goods 商城商品sku ,coupon 优惠劵,point 积分,amount金额")
+    @NotEmpty(message = "奖品类型不能为空")
+    private String type;
+
+    /** 关联活动id */
+    @NotNull(message = "请关联活动")
+    private Long actId;
+
+    /**  */
+    private String subType;
+
+    /** 奖品名称 */
+    @Excel(name = "奖品名称")
+    @NotEmpty(message = "奖品名称不能为空")
+    private String name;
+
+    /** 奖品图片 */
+    @Excel(name = "奖品图片")
+    @NotEmpty(message = "奖品图片不能为空")
+    private String url;
+
+    /** 奖品关联id */
+    private Long prizeId;
+
+    /** 奖品概率,小于1,0.001 */
+    @Excel(name = "奖品概率,小于1,0.001")
+    @NotEmpty(message = "奖品概率不能为空")
+    private String probability;
+
+    /** 奖品最大个数 */
+    @Excel(name = "奖品最大个数")
+    @NotNull(message = "奖品最大个数不能为空")
+    private Long maxNum;
+
+    /** 积分或者金额 */
+    @Excel(name = "积分或者金额")
+    //@NotNull(message = "积分或者金额不能为空")
+    private Long value;
+
+    /** 描述 */
+    private String description;
+
+    /** 奖品单位时间限制类似,按小时:hour,按天:day,整期活动:all */
+    @NotEmpty(message = "奖品单位时间限制不能为空")
+    private String limitTimeType;
+
+    /** 奖品限制单位时间 */
+    @NotNull(message = "奖品限制单位时间不能为空")
+    private Long limitTime;
+
+    /** 奖品单位时间最大个数 */
+    @NotNull(message = "奖品单位时间最大个数不能为空")
+    private Long limitPrizeNum;
+
+    /** 状态:1开启,0关闭 */
+    @Excel(name = "状态:1开启,0关闭")
+    private Long status;
+
+    /** 是否展示:1开启,0关闭 */
+    @Excel(name = "是否展示:1开启,0关闭")
+    private Long showStatus;
+    //排序
+    private Integer sortQuery;
+
+    private String prizeName; // 关联奖品名称
+
+    private String prizeProp; // 奖品额外信息 队伍:team,卡种:card_set,系列:sets,星级:starLevel,品类:cat;
+
+    private int totalSend; // 总发放数量
+}

+ 69 - 0
poyee-activity/src/main/java/com/tzy/app/domain/AppActPrizeRecord.java

@@ -0,0 +1,69 @@
+package com.tzy.app.domain;
+
+import lombok.Data;
+import lombok.ToString;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.tzy.common.annotation.Excel;
+import com.tzy.common.core.domain.BaseEntity;
+
+/**
+ * actPriceRecord对象 app_act_prize_record
+ *
+ * @author tencheer
+ * @date 2022-08-08
+ */
+@Data
+@ToString
+public class AppActPrizeRecord extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long id;
+
+    /** 奖品名称 */
+    @Excel(name = "奖品名称")
+    private String prizeName;
+
+    /** 消耗积分 */
+    private Long point;
+
+    /** 用户id */
+    private Long userId;
+
+    /** 昵称 */
+    @Excel(name = "昵称")
+    private String nickname;
+
+    /** 头像 */
+    private String avatar;
+
+    /** 状态 */
+    @Excel(name = "状态")
+    private Long status;
+
+    /** 奖品类型 */
+    @Excel(name = "奖品类型")
+    private String prizeType;
+
+    /** 关联订单id,实物奖品有订单 */
+    private Long orderId;
+
+    /** 是否展示飘屏 */
+    private Long showStatus;
+
+    /** 关联活动id */
+    @Excel(name = "关联活动id")
+    private Long actId;
+
+    /** 奖品关联id */
+    private Long prizeId;
+
+    /** 中奖的订单ID **/
+    private Long baseOrderId;
+
+    private String userCode;
+
+    private String actName;
+}

+ 192 - 0
poyee-activity/src/main/java/com/tzy/app/domain/AppActTaskManage.java

@@ -0,0 +1,192 @@
+package com.tzy.app.domain;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+import java.util.Date;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.util.StdConverter;
+import lombok.Data;
+import lombok.ToString;
+import com.tzy.common.annotation.Excel;
+import com.tzy.common.core.domain.BaseEntity;
+
+/**
+ * actManager对象 app_act_task_manage
+ *
+ */
+@Data
+@ToString
+public class AppActTaskManage extends BaseEntity {
+    /**
+     * 主键自增id
+     */
+    private Integer id;
+    /**
+     * 主活动id
+     */
+    @Excel(name = "act_id")
+    private Integer actId;
+    /**
+     * 任务类型:打卡/消费/完善信息/邀请助力/消费达标
+     */
+    @Excel(name = "type")
+    private String type;
+    /**
+     * 任务名
+     */
+    @Excel(name = "name")
+    private String name;
+    /**
+     * 任务解释性文本
+     */
+    @Excel(name = "description")
+    private String description;
+    /**
+     * 任务图
+     */
+    @Excel(name = "img_url")
+    private String imgUrl;
+
+    /**
+     * 任务状态:未上架/待开奖/结果已公布
+     */
+    @Excel(name = "status")
+    private String status;
+    /**
+     * 上架状态
+     */
+    @Excel(name = "enabled")
+    private Integer enabled;
+
+    /**
+     * 弹窗文本
+     */
+    @Excel(name = "popup")
+    private String popup;
+    /**
+     * 奖励类型
+     */
+    @Excel(name = "reward")
+    private String reward;
+    /**
+     * 奖励类型
+     */
+    @Excel(name = "reward_id")
+    private Integer rewardId;
+
+    /**
+     * 单次任务奖励份数
+     */
+    @Excel(name = "reward_count")
+    private Integer rewardCount;
+
+    /**
+     * 单任务最大奖励份数
+     */
+    @Excel(name = "reward_limit")
+    private Integer rewardLimit;
+    /**
+     * 是否使用用户等级差异
+     */
+    @Excel(name = "level_diff")
+    private Integer levelDiff;
+    /**
+     * 用户等级差异规则
+     */
+    @Excel(name = "level_rule")
+    private String levelRule;
+
+    /**
+     * 任务规则
+     */
+    @Excel(name = "task_rule")
+    private String taskRule;
+    /**
+     * 任务是否支持重置
+     */
+    @Excel(name = "reset")
+    private Integer reset;
+    /**
+     * 任务图标
+     */
+    @Excel(name = "icon")
+    private String icon;
+    /**
+     * create_time
+     */
+    @Excel(name = "create_time")
+    private Date createTime;
+    /**
+     * update_time
+     */
+    @Excel(name = "update_time")
+    private Date updateTime;
+    /**
+     * 开始时间
+     */
+    @Excel(name = "start_time")
+    private Date startTime;
+    /**
+     * 结束时间
+     */
+    @Excel(name = "end_time")
+
+    private Date endTime;
+    /**
+     * 活动当天开始的时间
+     */
+    @Excel(name = "start_time_in_day")
+    @JsonDeserialize(converter = StringToDateConverter.class)
+    private Date startTimeInDay;
+    /**
+     * 活动当天结束的时间
+     */
+    @Excel(name = "end_time_in_day")
+    @JsonDeserialize(converter = StringToDateConverter.class)
+    private Date endTimeInDay;
+
+    /**
+     * 任务分享有效时间(分钟)
+     */
+    @Excel(name = "share_effect")
+    private Integer shareEffect;
+
+    /**
+     * 基础库信息
+     */
+    @Excel(name = "list_info")
+    private String listInfo;
+
+    private Long actStatus;
+
+    public static class StringToDateConverter extends StdConverter<String, Date> {
+        @Override
+        public Date convert(String timeStr) {
+            try {
+                // 尝试解析纯时间格式(HH:mm:ss)
+                LocalTime localTime = LocalTime.parse(timeStr);
+                return Date.from(
+                        localTime.atDate(LocalDate.of(1970, 1, 1))
+                                .atZone(ZoneId.systemDefault())
+                                .toInstant()
+                );
+            } catch (DateTimeParseException e1) {
+                try {
+                    // 尝试解析完整日期时间格式(yyyy-MM-dd HH:mm:ss)
+                    LocalDateTime localDateTime = LocalDateTime.parse(
+                            timeStr,
+                            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
+                    );
+                    return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
+                } catch (DateTimeParseException e2) {
+                    throw new IllegalArgumentException("Unsupported time format: " + timeStr);
+                }
+            }
+        }
+    }
+}

+ 125 - 0
poyee-activity/src/main/java/com/tzy/app/domain/GuessTeam.java

@@ -0,0 +1,125 @@
+package com.tzy.app.domain;
+
+import com.tzy.common.annotation.Excel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class GuessTeam {
+    private static final long serialVersionUID = 1L;
+
+    /** 关联奖品id */
+    @Excel(name = "关联奖品id")
+    private Long prizeRefId;
+
+    /**  */
+    private Long id;
+
+    /** 类型 */
+    @Excel(name = "类型")
+    @NotEmpty(message = "类型不能为空")
+    private String type;
+
+    /** 关联活动id */
+    @NotNull(message = "关联活动id不能为空")
+    @Excel(name = "关联活动id")
+    private Long actId;
+
+    /** 奖品金额 */
+    @Excel(name = "奖品金额")
+    private BigDecimal prizeAmount;
+
+    /** 奖品类型,金额amount.优惠劵coupon,商品goods */
+    @Excel(name = "奖品类型,金额amount.优惠劵coupon,商品goods,区块链blockchain")
+    private String prizeType;
+
+    /** 竞猜队伍1 */
+    @Excel(name = "竞猜队伍1")
+    private String guessTeamPre;
+
+    /** 队伍1图片 */
+    @Excel(name = "队伍1图片")
+    private String teamPreImg;
+
+    /** 队伍1json配置 */
+    @Excel(name = "队伍1json配置")
+    private String teamPreDesc;
+
+    /** 竞猜队伍2 */
+    @Excel(name = "竞猜队伍2")
+    private String guessTeamAft;
+
+    /** 队伍2图片 */
+    @Excel(name = "队伍2图片")
+    private String teamAftImg;
+
+    /** 队伍2json配置 */
+    @Excel(name = "队伍2json配置")
+    private String teamAftDesc;
+
+    /** 竞猜开始时间 */
+    @Excel(name = "竞猜开始时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date startTime;
+
+    /** 竞猜结束时间 */
+    @Excel(name = "竞猜结束时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date endTime;
+
+    /** 场次描述,限长128字符 */
+    @Excel(name = "场次描述,限长128字符")
+    private String actDesc;
+
+    /** 结果,默认0:结果未出,1负2平3胜 */
+    @Excel(name = "结果,默认0:结果未出,1负2平3胜")
+    private Long guessResult;
+
+    /** 消耗积分 */
+    @Excel(name = "消耗积分")
+    private Long point;
+
+    /** 排序值 */
+    @Excel(name = "排序值")
+    private Long sortValue;
+
+    /** 队伍1比分 */
+    @Excel(name = "队伍1比分")
+    private Long teamPreScore;
+
+    /** 队伍2比分 */
+    @Excel(name = "队伍2比分")
+    private Long teamAftScore;
+
+    /** 用户均分金额 */
+    @Excel(name = "用户均分金额")
+    private Long userAssignAmount;
+
+    /** 公布结果时间 **/
+    private Date publishResultTime;
+
+    /** 转盘活动ID **/
+    private Long turntableId;
+    /**区块链id*/
+    private Long blockchainId;
+
+
+
+    /** 是否已发放奖励:0未发放,1已发放 **/
+    private Long sendFlg;
+
+    /** 比赛开始时间 **/
+    private Date matchStartTime;
+
+    /** 比赛结束时间 **/
+    private Date matchEndTime;
+
+    /** 上下架状态:0下架,1上架 **/
+    private Long useStatus;
+}

+ 34 - 0
poyee-activity/src/main/java/com/tzy/app/domain/QuizActivity.java

@@ -0,0 +1,34 @@
+package com.tzy.app.domain;
+
+import com.tzy.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+//答题活动
+@Data
+@ApiModel("答题活动信息")
+public class QuizActivity extends BaseEntity {
+    @ApiModelProperty("活动id")
+    private Long id;
+    @ApiModelProperty("答题活动名称")
+    private String activityName;
+    @ApiModelProperty("开始时间")
+    private Date startTime;
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+    @ApiModelProperty("刷新周期")
+    private Integer refreshCycle;
+    @ApiModelProperty("题目数量")
+    private Integer quizNum;
+    @ApiModelProperty("状态:0、未启用;1、已启用")
+    private Integer status;
+    @ApiModelProperty("大转盘1id")
+    private Long actId1;
+    @ApiModelProperty("大转盘2id")
+    private Long actId2;
+    @ApiModelProperty("创建时间")
+    private Date createTime;
+}

+ 30 - 0
poyee-activity/src/main/java/com/tzy/app/domain/QuizLib.java

@@ -0,0 +1,30 @@
+package com.tzy.app.domain;
+
+import com.tzy.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel("答题活动题目")
+public class QuizLib extends BaseEntity {
+
+    @ApiModelProperty("题目id")
+    private Long id;
+    @ApiModelProperty("答题活动id")
+    private Long activityId;
+    @ApiModelProperty("题目类型:choice_single,选择题多选:choice_multi,文字:text")
+    private String type;
+    @ApiModelProperty("题目内容")
+    private String questionText;
+    @ApiModelProperty("题目选项,json格式")
+    private String questionChoiceText;
+    @ApiModelProperty("创建时间")
+    private Date createTime;
+    @ApiModelProperty("是否必答题")
+    private Integer required;
+    @ApiModelProperty("状态:0、未启用,1、已启用")
+    private Integer status;
+}

+ 74 - 0
poyee-activity/src/main/java/com/tzy/app/domain/TenantInfo.java

@@ -0,0 +1,74 @@
+package com.tzy.app.domain;
+
+import lombok.Data;
+import lombok.ToString;
+
+import java.util.Date;
+
+/**
+ * 租户信息对象 tenant_info
+ * 
+ * @author tencheer
+ * @date 2023-12-18
+ */
+@Data
+@ToString
+public class TenantInfo {
+
+    /**  */
+    private Long id;
+
+    /**  */
+    private Long userId;
+
+    /**  */
+    private String username;
+
+    /**  */
+    private String name;
+
+    /**  */
+    private String avatar;
+
+    /**  */
+    private String code;
+
+    /**  */
+    private String secretKey;
+
+    /**  */
+    private Long status;
+
+    /**  */
+    private String linkName;
+
+    /**  */
+    private String linkPhone;
+
+    /**  */
+    private String address;
+
+    /**  */
+    private String propJson;
+
+    /**  */
+    private String prop1;
+
+    /**  */
+    private String prop2;
+
+    private Date createTime;
+
+    private Date updateTime;
+
+    private Integer page;
+
+    private Integer rows;
+
+    private String remark;
+
+    private String createBy;
+
+    private String updateBy;
+
+}

+ 138 - 0
poyee-activity/src/main/java/com/tzy/app/domain/UserActTimes.java

@@ -0,0 +1,138 @@
+package com.tzy.app.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.tzy.common.annotation.Excel;
+import com.tzy.common.core.domain.BaseEntity;
+
+/**
+ * 活动奖励对象 user_act_times
+ * 
+ * @author tencheer
+ * @date 2022-11-15
+ */
+public class UserActTimes extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /**  */
+    private Long id;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 来源类型:卡密,goods,消费金额:amount */
+    @Excel(name = "来源类型:卡密,goods,消费金额:amount")
+    private String refType;
+
+    /** 来源id,卡密对于卡密id,金额对应订单id */
+    @Excel(name = "来源id,卡密对于卡密id,金额对应订单id")
+    private Long refId;
+
+    /** 类型为金额时,记录当前消费金额 */
+    @Excel(name = "类型为金额时,记录当前消费金额")
+    private Long currentAmount;
+
+    /** 活动类型,大转盘等 */
+    @Excel(name = "活动类型,大转盘等")
+    private String actType;
+
+    /** 活动id */
+    @Excel(name = "活动id")
+    private Long actId;
+
+    /** 状态,初始0,已使用1 */
+    @Excel(name = "状态,初始0,已使用1")
+    private Long status;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setUserId(Long userId) 
+    {
+        this.userId = userId;
+    }
+
+    public Long getUserId() 
+    {
+        return userId;
+    }
+    public void setRefType(String refType) 
+    {
+        this.refType = refType;
+    }
+
+    public String getRefType() 
+    {
+        return refType;
+    }
+    public void setRefId(Long refId) 
+    {
+        this.refId = refId;
+    }
+
+    public Long getRefId() 
+    {
+        return refId;
+    }
+    public void setCurrentAmount(Long currentAmount) 
+    {
+        this.currentAmount = currentAmount;
+    }
+
+    public Long getCurrentAmount() 
+    {
+        return currentAmount;
+    }
+    public void setActType(String actType) 
+    {
+        this.actType = actType;
+    }
+
+    public String getActType() 
+    {
+        return actType;
+    }
+    public void setActId(Long actId) 
+    {
+        this.actId = actId;
+    }
+
+    public Long getActId() 
+    {
+        return actId;
+    }
+    public void setStatus(Long status) 
+    {
+        this.status = status;
+    }
+
+    public Long getStatus() 
+    {
+        return status;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("userId", getUserId())
+            .append("refType", getRefType())
+            .append("refId", getRefId())
+            .append("currentAmount", getCurrentAmount())
+            .append("actType", getActType())
+            .append("actId", getActId())
+            .append("status", getStatus())
+            .append("createTime", getCreateTime())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 39 - 0
poyee-activity/src/main/java/com/tzy/app/dto/ActDto.java

@@ -0,0 +1,39 @@
+package com.tzy.app.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import java.util.Date;
+
+@Data
+@ToString
+public class ActDto {
+
+    //需要删除的ids
+    @ApiModelProperty(value = "传入id,可多选使用逗号分隔")
+    private String ids;
+
+    @ApiModelProperty(value = "活动名称")
+    private String name;
+    @ApiModelProperty(value = "活动名称")
+    private String prizeName;
+    @ApiModelProperty(value = "活动名称")
+    private String nickname;
+
+    @ApiModelProperty(value = "开始时间")
+    private Date startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private Date endTime;
+    //活动状态
+    private Integer status;
+    @ApiModelProperty(value = "开始",hidden = true)
+    private Integer start;
+    @ApiModelProperty(value = "结束",hidden = true)
+    private Integer end;
+    @ApiModelProperty(value = "条件",hidden = true)
+    private String columnsearch;
+    @ApiModelProperty(value = "活动类型")
+    private String type;
+}

+ 24 - 0
poyee-activity/src/main/java/com/tzy/app/dto/ActRuleConfig.java

@@ -0,0 +1,24 @@
+package com.tzy.app.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class ActRuleConfig {
+    /**拼团原总价*/
+    private BigDecimal totalUnitPrice;
+    /**拼团最低总价*/
+    private BigDecimal totalMinPrice;
+    //拼团id
+    private Long groupInfoId;
+    /**拼团卡密数量*/
+    private Long groupNum;
+    /**关联活动配置*/
+    private RefActRule refActRule;
+    /**砍一刀配置*/
+    private List<AmountActRule> amountActRules;
+    /**活动参与奖规则,同一次数支持配置多个奖品*/
+    private List<RefActRule> jointRules;
+}

+ 25 - 0
poyee-activity/src/main/java/com/tzy/app/dto/AmountActRule.java

@@ -0,0 +1,25 @@
+package com.tzy.app.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class AmountActRule {
+    /**会员最小等级*/
+    private Integer memberLevel;
+    /**单次最小金额,单位分*/
+    private BigDecimal singleMinAmount;
+    /**单次最大金额,单位分*/
+    private BigDecimal singleMaxAmount;
+    /**砍一刀单次金额剩余比例,*/
+    private int lessAmountRate;
+    /**用户参与次数*/
+    private Integer userJoinCount;
+    /**用户通过分享参与次数*/
+    private Integer userShareCount;
+    /**次数是否共享,默认0,不共享,1共享次数*/
+    private Integer countOpType;
+    /**用户限制类型,0不限制,不同用户即可,1:设备id 2:实名*/
+    private Integer userLimitType;
+}

+ 161 - 0
poyee-activity/src/main/java/com/tzy/app/dto/AppActGuessTeamDto.java

@@ -0,0 +1,161 @@
+package com.tzy.app.dto;
+
+import com.tzy.common.annotation.Excel;
+import com.tzy.common.core.domain.BaseEntity;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 竞猜队伍对象 app_act_guess_team
+ * 
+ * @author tencheer
+ * @date 2022-11-10
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AppActGuessTeamDto {
+    private static final long serialVersionUID = 1L;
+
+    /** 关联奖品id */
+    @Excel(name = "关联奖品id")
+    private long prizeRefId;
+
+    /**  */
+    private long id;
+
+    /** 类型 */
+    @Excel(name = "类型")
+    private String type;
+
+    /** 关联活动id */
+    @NotNull(message = "关联活动id不能为空")
+    @Excel(name = "关联活动id")
+    private long actId;
+
+    /** 奖品金额 */
+    @Excel(name = "奖品金额")
+    private BigDecimal prizeAmount;
+
+    /** 奖品类型,金额amount.优惠劵coupon,商品goods */
+    @Excel(name = "奖品类型,金额amount.优惠劵coupon,商品goods")
+    private String prizeType;
+
+    /** 奖品描述 */
+    @Excel(name = "奖品描述")
+    private String prizeDesc;
+
+    /** 竞猜队伍1 */
+    @Excel(name = "竞猜队伍1")
+    private String guessTeamPre;
+
+    /** 队伍1图片 */
+    @Excel(name = "队伍1图片")
+    private String teamPreImg;
+
+    /** 队伍1json配置 */
+    @Excel(name = "队伍1json配置")
+    private String teamPreDesc;
+
+    /** 竞猜队伍2 */
+    @Excel(name = "竞猜队伍2")
+    private String guessTeamAft;
+
+    /** 队伍2图片 */
+    @Excel(name = "队伍2图片")
+    private String teamAftImg;
+
+    /** 队伍2json配置 */
+    @Excel(name = "队伍2json配置")
+    private String teamAftDesc;
+
+    /** 竞猜开始时间 */
+    @Excel(name = "竞猜开始时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date startTime;
+
+    /** 竞猜结束时间 */
+    @Excel(name = "竞猜结束时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date endTime;
+
+    /** 场次描述,限长128字符 */
+    @Excel(name = "场次描述,限长128字符")
+    private String actDesc;
+
+    /** 结果,默认0:结果未出,1负2平3胜 */
+    @Excel(name = "结果,默认0:结果未出,1负2平3胜")
+    private long guessResult;
+
+    /** 消耗积分 */
+    @Excel(name = "消耗积分")
+    private long point;
+
+    /** 排序值 */
+    @Excel(name = "排序值")
+    private long sortValue;
+
+    /** 队伍1比分 */
+    @Excel(name = "队伍1比分")
+    private long teamPreScore;
+
+    /** 队伍2比分 */
+    @Excel(name = "队伍2比分")
+    private long teamAftScore;
+
+    /** 用户均分金额 */
+    @Excel(name = "用户均分金额")
+    private long userAssignAmount;
+
+    /** 公布结果时间 **/
+    private Date publishResultTime;
+
+    /** 转盘活动ID **/
+    private long turntableId;
+
+    private long blockchainId;
+
+    /** 赠送转盘次数 **/
+    private int turntableNum;
+
+    /** 商家ID **/
+    private int merchantId;
+
+    /** 商家LOGO **/
+    private String merchantLogo;
+
+    /** 商家名字 **/
+    private String merchantName;
+
+    /** 冠名banner **/
+    private String merchantBanner;
+
+    /** 参与本次竞猜总人数 **/
+    private int total;
+
+    /** 本次竞猜猜胜人数 **/
+    private int wins;
+
+    /** 本次竞猜猜平人数 **/
+    private int draws;
+
+    /** 本次竞猜猜负人数 **/
+    private int losses;
+
+    /** 是否已发放奖励:0未发放,1已发放 **/
+    private long sendFlg;
+
+    /** 比赛开始时间 **/
+    private Date matchStartTime;
+
+    /** 比赛结束时间 **/
+    private Date matchEndTime;
+
+    /** 上下架状态:0下架,1上架 **/
+    private long useStatus;
+}

+ 107 - 0
poyee-activity/src/main/java/com/tzy/app/dto/AppActivityConfigDto.java

@@ -0,0 +1,107 @@
+package com.tzy.app.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.tzy.common.annotation.Excel;
+import com.tzy.coupon.card.dto.CouponDto;
+import lombok.Data;
+import lombok.ToString;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+@ToString
+public class AppActivityConfigDto {
+
+    private Long id;
+
+    private Long actId;
+
+    /** 参加活动要求类型:user_growth,sets,buy */
+    @Excel(name = "参加活动要求类型:user_growth,sets,buy")
+    private String type;
+
+    /** 用户消费金额 */
+    @Excel(name = "用户消费金额")
+    private Long userGrowth;
+
+    /** 拼团id */
+    private Long groupInfoId;
+
+    /** 用户购买过的卡组 */
+    @Excel(name = "用户购买过的卡组")
+    private String set;
+
+    /** 购买过活动商家商品,1和0 */
+    @Excel(name = "购买过活动商家商品,1和0")
+    private Long buyHistory;
+
+    /** 状态:1开启,0关闭 */
+    @Excel(name = "状态:1开启,0关闭")
+    private Long status;
+
+    /** 描述 */
+    @Excel(name = "描述")
+    private String description;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /** 活动名称 **/
+    private String actName;
+
+    /** 活动开始时间 **/
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
+
+    /** 活动结束时间 **/
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTime;
+
+    /** 优惠券ID **/
+    private String couponIds;
+
+    /** 历史购买天数 **/
+    private Integer historyLimitDay;
+
+    /** 当天开始时间 0-24 **/
+    private Integer startHour;
+
+    /** 当天结束时间 0-24 **/
+    private Integer endHour;
+
+    /** 活动图片 **/
+    private String actImg;
+
+    /** 跳转链接 **/
+    private String actUrl;
+
+    /** 排序时间 **/
+    private Integer sortValue;
+
+    /** 提醒时间间隔 小时 默认0 **/
+    private Integer remindTime;
+
+    /** 点击区域,默认0,任意点击,1区域点击 **/
+    private Integer clickType;
+
+    /** 持续时间,默认5秒 **/
+    private Integer lastTime;
+
+    /** 开屏广告:open_ad,首页推广:first_page **/
+    private String subType;
+
+    /** 参加活动要求类型:消费金额:user_growth,序列sets,buy **/
+    private String joinType;
+
+    /** 条件1:and 0:or **/
+    private Integer op;
+
+    /** 图片:img,视频:video,动图:gif **/
+    private String imgType;
+
+    /**标签id*/
+    private Long catId;
+
+    List<CouponDto> couponList;
+}

+ 165 - 0
poyee-activity/src/main/java/com/tzy/app/dto/AppActivityInfoDto.java

@@ -0,0 +1,165 @@
+package com.tzy.app.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.tzy.app.domain.AppActManage;
+import com.tzy.common.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 活动信息
+ */
+@Data
+@ToString
+public class AppActivityInfoDto {
+
+    @ApiModelProperty(value = "id")
+    private Long Id;
+    /** 活动名称 */
+    @ApiModelProperty(value = "活动名称")
+    @Excel(name = "活动名称")
+    @NotEmpty(message = "活动名称不能为空")
+    private String name;
+
+    /** 商家id */
+    @ApiModelProperty(value = "商家id")
+    private Long merchantId;
+
+    /** 商家名称 */
+    @ApiModelProperty(value = "商家名称")
+    @Excel(name = "商家名称")
+    private String merchantName;
+
+    /** 状态:1开启,0关闭 */
+    @ApiModelProperty(value = "状态:1开启,0关闭")
+    @Excel(name = "状态:1开启,0关闭")
+    private Long status;
+
+    /** 满足条件:and 或者 or */
+    @ApiModelProperty(value = "满足条件:全部/匹配")
+    private String op;
+
+    /**  */
+    @ApiModelProperty(value = "参与人:是否全体")
+    private Long allUser;
+
+    /** 开始时间 */
+    @ApiModelProperty(value = "开始时间")
+    @NotNull(message = "开始时间不能为空")
+    private Date startTime;
+
+    /** 结束时间 */
+    @ApiModelProperty(value = "结束时间")
+    @NotNull(message = "结束时间不能为空")
+    private Date endTime;
+
+    /** 活动类型 */
+    @ApiModelProperty(value = "活动类型")
+    @Excel(name = "活动类型")
+    @NotEmpty(message = "活动类型不能为空")
+    private String type;
+
+    /** 子类型 */
+    @ApiModelProperty(value = "子类型")
+    @Excel(name = "子类型")
+    private String subType;
+
+    /** 活动图片 */
+    @ApiModelProperty(value = "活动图片")
+    private String imgUrl;
+
+    /** 积分要求 */
+    @ApiModelProperty(value = "积分要求")
+    @NotNull(message = "积分要求不能为空")
+    private Long point;
+
+    /** 奖品单位时间限制类似,按小时:hour,按天:day,整期活动:all */
+    @ApiModelProperty(value = "单位时间限制类似,按小时:hour,按天:day,整期活动:all")
+    @NotBlank(message = "奖品单位时间限制不能为空")
+    private String limitTimeType;
+    /** 单位时间 */
+    @ApiModelProperty(value = "单位时间")
+    @NotNull(message = "单位时间不能为空")
+    private Long limitTime;
+    /** 单位时间数量 */
+    @ApiModelProperty(value = "单位时间数量")
+    @NotNull(message = "单位时间数量不能为空")
+    private Long limitTimeNum;
+    /** 描述 */
+    @ApiModelProperty(value = "描述")
+    @NotEmpty(message = "描述不能为空")
+    private String description;
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /** 更新时间 */
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+    /**考虑到多条规则*/
+    @ApiModelProperty(value = "活动规则",dataType="java.util.List")
+    private List<AppActivityConfigDto> config;
+
+    @ApiModelProperty(value = "默认次数")
+    private Integer defaultTimes;
+
+    @ApiModelProperty(value = "排行榜奖励图片")
+    private String rankPrizeImg;
+
+    @ApiModelProperty(value = "最终大奖")
+    private String lastPrizeDesc;
+
+    @ApiModelProperty(value = "是否发放瓜分奖励:0未发放,1已发放")
+    private int prizeFlag;
+
+    /** 活动总份数 **/
+    private int totalNum;
+
+    /** 已售出份数 **/
+    private int soldNum;
+
+    /** 审核状态:0.待审核,1.已审核 **/
+    private int auditingStatus;
+    /** 奖品详情 **/
+    private String prizeDetail;
+    private String pointType; // 积分类型
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date groupFullTime; // 成团时间
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date publicCodeTime; // 开奖时间
+    private int period; // 活动期数
+    private int autoAddOnce; // 默认0关闭 1开启复制功能
+    private int intervalTime; // 延期间隔时间,单位小时,默认0
+    private String defaultPrizeConfig; // 默认奖品配置json(prizeId,name)
+    private int prizeTotalPay; // 奖品应发数量
+    private int prizeFinalPay; // 奖品实发数量
+    private int defaultTotalPay; // 参与奖应发数量
+    private int defaultFinalPay; // 参与奖实发数量
+    private Long prizeId; // 关联奖品ID
+    private String prizeName; // 奖品名称
+    private String prizeRefName; // 关联奖品名称
+    private String prizeType; // 奖品类型
+    private Integer diySort; // 自定义排序
+    private Integer dayLimitNum; // 每日限购总数
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date actOverTime; // 最后抽奖时间
+    private String ruleConfig; // 规则设置
+    private String drawType;    // 开奖方式:默认null 组齐开奖, ACT_EXPIRE 到期自动开奖
+    private Long refActId; // 关联活动id
+    private String refType; // 关联活动类型
+    private String refName; // 关联活动类型
+    private String refPointType; // 关联活动积分类型
+    private String popupUrl;
+    private String popupImg;
+    private String popupConfig;
+
+
+
+
+}

+ 94 - 0
poyee-activity/src/main/java/com/tzy/app/dto/AppActivityPrizeRecordDto.java

@@ -0,0 +1,94 @@
+package com.tzy.app.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.format.DateTimeFormat;
+import com.tzy.common.annotation.Excel;
+import com.tzy.common.easy.annotion.ReadConverterExpFormat;
+import lombok.Data;
+import lombok.ToString;
+
+import java.util.Date;
+
+@Data
+@ToString
+public class AppActivityPrizeRecordDto {
+
+    /** id */
+    private Long id;
+
+    /** 活动名称 */
+    @Excel(name = "活动名称")
+    @ExcelProperty(value = "活动名称")
+    private String actName;
+
+    /** 消耗积分 */
+    @Excel(name = "消耗积分")
+    @ExcelProperty(value = "消耗积分")
+    private Long point;
+
+    /** 用户id */
+    private Long userId;
+
+    /** 昵称 */
+    @Excel(name = "中奖用户昵称")
+    @ExcelProperty(value = "中奖用户昵称")
+    private String nickname;
+    /** 中奖用户code */
+    @Excel(name = "中奖用户code")
+    @ExcelProperty(value = "中奖用户code")
+    private String userCode;
+
+    /** 头像 */
+    private String avatar;
+
+    /** 状态 */
+//    @Excel(name = "状态")
+    private Long status;
+
+    /** 奖品类型 */
+    @Excel(name = "奖品类型",readConverterExp = "goods=实物商品,coupon=优惠券,point=积分,amount=现金")
+    @ReadConverterExpFormat(value="goods=实物商品,coupon=优惠券,point=积分,amount=现金")
+    @ExcelProperty(value = "奖品类型")
+    private String prizeType;
+
+    /** 奖品关联id */
+    @Excel(name = "奖品Id")
+    @ExcelProperty(value = "奖品Id")
+    private Long prizeId;
+
+    /** 奖品名称 */
+    @Excel(name = "奖品名称")
+    @ExcelProperty(value = "奖品名称")
+    private String prizeName;
+
+    /** 订单编码 */
+    @Excel(name = "订单编码")
+    @ExcelProperty(value = "订单编码")
+    private String orderNo;
+
+    /** 关联订单id,实物奖品有订单 */
+    private Long orderId;
+
+    /** 是否展示飘屏 */
+    private Long showStatus;
+
+    /** 关联活动id */
+    private Long actId;
+
+
+    /** 抽奖时间 */
+    @Excel(name = "抽奖时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
+    @ExcelProperty(value = "抽奖时间")
+    private Date createTime;
+
+    private Date updateTime;
+
+    /** 中奖的订单ID **/
+    private Integer baseOrderId;
+
+    /** 中奖的订单No **/
+    private String baseOrderNo;
+
+    private Integer qty;
+}

+ 145 - 0
poyee-activity/src/main/java/com/tzy/app/dto/AuctionLotGroupItemDto.java

@@ -0,0 +1,145 @@
+package com.tzy.app.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.ToString;
+
+import javax.validation.constraints.NotBlank;
+import java.math.BigDecimal;
+import java.util.Date;
+@Data
+@ToString
+public class AuctionLotGroupItemDto {
+    private Long id;
+
+    /** 商品ID */
+    @NotBlank(message = "goodsId is empty")
+    private String goodsId;
+
+    private String goodsName;
+
+    @NotBlank(message = "goodsType is empty")
+    private String goodsType;
+
+    /** 拍卖会ID */
+    private Long auctionId;
+
+    /** 拍品名称 */
+    private String name;
+
+    private Long merchantId;
+
+    private String merchantName;
+
+    private String merchantAvatar;
+
+    /** 拍品数量 */
+    private Long num;
+
+    /** 数量单位 */
+    private String unit;
+
+    /** 拍品图片 */
+    private String imgs;
+
+    /** 轮播图片 */
+    private String carouselImgs;
+
+    /** 拍品介绍 */
+    private String detail;
+
+    /** 是否发布(0:未发布;1:已发布) */
+    private Integer pubStatus;
+
+    /** 发布时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date pubTime;
+
+    /** 拍卖状态(Waiting:未开始;Starting:开启中;Bidding:进行中;Finished:拍卖结束;Cancelled:撤拍;Pass:流拍;Sold:成交) */
+    private String status;
+
+    /** 拍卖开始时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+
+    /** 拍卖结束时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+    /** 实际结束时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date realEndTime;
+
+    /** 规则类型 */
+    private String ruleType;
+
+    /** 规则内容 */
+    private String ruleContent;
+
+    /** 最新出价 */
+    private BigDecimal lastPrice;
+
+    /** 最新出价时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date lastPriceTime;
+
+    /** 成交价 */
+    private BigDecimal dealPrice;
+
+    /** 成交时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date dealTime;
+
+    /** 成交用过id */
+    private String dealAccountId;
+
+    /** 成交用户 */
+    private String dealAccount;
+
+    /** 已支付 */
+    private Long paid;
+
+    /** 订单id */
+    private String orderId;
+
+    /** 出价次数 */
+    private Long bidCount;
+
+    /** 出价人数 */
+    private Long bidPersionCount;
+
+    /** 0:未删除;1:已删除 */
+    private Integer delFlag;
+
+    /** 排序 */
+    private Integer sort;
+
+    /** 是否是私域 0 不是  1 是 */
+    private Integer privateDomain;
+
+    private String delayPublish;
+
+    private Integer delay;
+
+    private Long liveId;
+
+    private Long startNum;
+
+    private Long finishNum;
+
+    private Long soldNum;
+
+    // 指向正在进行的lot
+    private Long lotId;
+
+    // 指向下一个将要进行的lot
+    private Long nextLotId;
+
+    private String sellPoint;
+
+    private Long skuStock;
+
+    private String skuCode;
+
+    private String liveName;
+}

+ 28 - 0
poyee-activity/src/main/java/com/tzy/app/dto/ConsumeLevelDTO.java

@@ -0,0 +1,28 @@
+package com.tzy.app.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ConsumeLevelDTO {
+    
+    private Long id; // 活动ID,
+    private String name; // 活动名称,
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime; // 活动开始时间,
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTime; // 活动结束时间,
+    private String description; // 活动规则,
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date actOverTime; // 最后兑换时间,
+    private Integer status; // 状态:1开启,0关闭 默认
+	private String type; // consume_level,
+    private String subType; // payes_amount,
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime; // 创建时间,
+    private String imgUrl; // 活动图片
+    private String ruleConfig;
+    private String pointType;
+}

+ 25 - 0
poyee-activity/src/main/java/com/tzy/app/dto/ConsumeLevelPrizeDTO.java

@@ -0,0 +1,25 @@
+package com.tzy.app.dto;
+
+import lombok.Data;
+
+@Data
+public class ConsumeLevelPrizeDTO {
+
+    private Long id; // 奖品ID
+    private String name; // 奖品名称
+    private String url; // 奖品图片
+    private Long prizeId; //奖品关联ID
+    private String subType; // 奖品子类别
+    private Integer sortQuery; // 奖励阶段
+    private Integer maxNum; // 消费XX金额达标
+    private Integer value; // 赠送积分
+    private Integer status; // 奖品上下架状态:0下架 1上架
+    private Long actId; // 活动ID
+    private String type; // 奖品类型 goods 商城商品,coupon 优惠劵, point 积分
+    /** 奖品单位时间限制类似,按小时:hour,按天:day,整期活动:all */
+    private String limitTimeType;
+    /** 奖品限制单位时间 */
+    private Long limitTime;
+    /** 奖品单位时间最大个数 */
+    private Long limitPrizeNum;
+}

+ 13 - 0
poyee-activity/src/main/java/com/tzy/app/dto/ConsumeRankDTO.java

@@ -0,0 +1,13 @@
+package com.tzy.app.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class ConsumeRankDTO {
+
+    private Long userId;
+    private String nickname;
+    private BigDecimal totalPayment;
+}

+ 17 - 0
poyee-activity/src/main/java/com/tzy/app/dto/CountGuessResultDto.java

@@ -0,0 +1,17 @@
+package com.tzy.app.dto;
+
+import lombok.Data;
+
+@Data
+public class CountGuessResultDto {
+
+    private Long actTeamId;
+
+    private int total;
+
+    private int wins;
+
+    private int draws;
+
+    private int losess;
+}

+ 12 - 0
poyee-activity/src/main/java/com/tzy/app/dto/CountSuccessTimesDto.java

@@ -0,0 +1,12 @@
+package com.tzy.app.dto;
+
+import lombok.Data;
+
+@Data
+public class CountSuccessTimesDto {
+
+    private Integer rank; // 排名
+    private Integer times; // 竞猜成功次数
+    private Integer userId; // 用户ID
+    //private Integer prePrizes; // 预计中奖人数
+}

+ 35 - 0
poyee-activity/src/main/java/com/tzy/app/dto/DrawCardGameDTO.java

@@ -0,0 +1,35 @@
+package com.tzy.app.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class DrawCardGameDTO {
+
+    private long id;
+    private String type; // 类型(双十一活动、日常活动)
+    private String name; // 抽卡机名称
+    private long merchantId;
+    private String merchantName;
+    private String imgUrl; // 抽卡机图片
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime; // 开始时间
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTime; // 结束时间
+    private int point; // 单价
+    private String pointType; // 单价类型(双十一为活动币、日常为价格或积分)
+    private String ruleConfig; // 抽奖机规则设置
+    private int status; // 状态:1开启,0关闭 默认
+    private String description; // 活动说明
+    private String prizeDetail; // 产品详情
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date actOverTime; // 最后兑换时间
+    private Integer tenantId; // 租户ID
+    private String tenantName; // 租户名称
+    private String bannerUrl; // banner图
+    private int totalNum;
+    private String subType;
+    private String popupConfig;
+}

+ 34 - 0
poyee-activity/src/main/java/com/tzy/app/dto/DrawCardGameLotteryDTO.java

@@ -0,0 +1,34 @@
+package com.tzy.app.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.format.DateTimeFormat;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.tzy.common.annotation.Excel;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class DrawCardGameLotteryDTO {
+
+    private Long id;
+    @Excel(name = "用户昵称")
+    @ExcelProperty(value = "用户昵称")
+    private String nickname;
+    @Excel(name = "用户code")
+    @ExcelProperty(value = "用户code")
+    private String code;
+    @Excel(name = "领奖次数")
+    @ExcelProperty(value = "领奖次数")
+    private Integer qty; // 抽奖次数
+    @Excel(name = "领奖时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
+    @ExcelProperty(value = "领奖时间")
+    private Date createTime; // 抽奖时间
+    @Excel(name = "奖品名称")
+    @ExcelProperty(value = "奖品名称")
+    private String name; // 奖品名称
+    /*@Excel(name = "奖品类型")
+    private String subType; // 奖品类型*/
+}

+ 17 - 0
poyee-activity/src/main/java/com/tzy/app/dto/DrawCardGamePrizeDTO.java

@@ -0,0 +1,17 @@
+package com.tzy.app.dto;
+
+import lombok.Data;
+
+@Data
+public class DrawCardGamePrizeDTO {
+
+    private Long id;
+    private String name;
+    private String url;
+    private Long prizeId;
+    private String subType;
+    private String type;
+    private Integer sortQuery;
+    private Long status;
+    private String prizeProp;
+}

+ 18 - 0
poyee-activity/src/main/java/com/tzy/app/dto/DrawCardGameStoresDTO.java

@@ -0,0 +1,18 @@
+package com.tzy.app.dto;
+
+
+import lombok.Data;
+
+@Data
+public class DrawCardGameStoresDTO {
+
+    private Long id; // skuId
+    private String skuName; //sku名称
+    private String firstCatName; // 一级分类
+    private String secondCatName; // 二级分类
+    private String carouselImgUrl; // 商品轮播图
+    private Integer page;
+    private Integer rows;
+    private String type;
+    private String merchantName; // 商家名称
+}

+ 18 - 0
poyee-activity/src/main/java/com/tzy/app/dto/DrawGoodsDTO.java

@@ -0,0 +1,18 @@
+package com.tzy.app.dto;
+
+import lombok.Data;
+
+@Data
+public class DrawGoodsDTO {
+
+    private Long spuId; // spuId
+    private String spuName;
+    private String carouselImgUrl;
+    private Long tenantId;
+    private String merchantName;
+    private Integer soldStock; // 总销量
+    private Integer totalStock; // 总库存
+
+    private Integer page;
+    private Integer rows;
+}

+ 21 - 0
poyee-activity/src/main/java/com/tzy/app/dto/DrawGoodsParamDTO.java

@@ -0,0 +1,21 @@
+package com.tzy.app.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+@Data
+public class DrawGoodsParamDTO {
+    private Long spuId;
+    @NotEmpty(message = "商品标题不能为空")
+    private String title; // 商品标题
+    @NotEmpty(message = "商品主图不能为空")
+    private String carouselImgUrl; // 商品主图
+    @NotEmpty(message = "商品类型不能为空")
+    private String actType; // 商品类型
+    private Long merchantId;
+    private Integer tenantId; // 租户ID
+    private String spuName;
+    private List<DrawGoodsSkuDTO> skus;
+}

+ 24 - 0
poyee-activity/src/main/java/com/tzy/app/dto/DrawGoodsSkuDTO.java

@@ -0,0 +1,24 @@
+package com.tzy.app.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+@Data
+public class DrawGoodsSkuDTO {
+
+    private Long skuId;
+    private String title;
+    @NotEmpty(message = "sku规格图片不能为空")
+    private String skuCarouselImgUrl; // sku规格图片
+    @NotEmpty(message = "sku名称不能为空")
+    private String skuName; // sku名称
+    @NotNull(message = "sku库存不能为空")
+    private Integer skuStock; // sku库存
+    @NotEmpty(message = "sku类型不能为空")
+    private String secondCatName; // sku类型(二级分类)
+    private String actType;
+    private Long spuId;
+    private Long merchantId;
+}

+ 29 - 0
poyee-activity/src/main/java/com/tzy/app/dto/DrawOrderDTO.java

@@ -0,0 +1,29 @@
+package com.tzy.app.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class DrawOrderDTO {
+    private Long id;
+    private String name;
+    private Long userId;
+    private String nickname;
+    private String orderNo;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date paymentSuccessTime;
+    private Integer purchaseCount;
+    private BigDecimal actualPayment;
+    private Integer status;
+    private String merchantName;
+    private Integer tenantId;
+    private Long actId;
+
+    private Integer page;
+    private Integer rows;
+}

+ 13 - 0
poyee-activity/src/main/java/com/tzy/app/dto/DrawShipCardDTO.java

@@ -0,0 +1,13 @@
+package com.tzy.app.dto;
+
+import lombok.Data;
+
+@Data
+public class DrawShipCardDTO {
+    private Long orderId;
+    private String prizeName;
+    private String prizeImg;
+    private Integer qty;
+    private int page;
+    private int rows;
+}

+ 34 - 0
poyee-activity/src/main/java/com/tzy/app/dto/DrawShipOrderDTO.java

@@ -0,0 +1,34 @@
+package com.tzy.app.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+@Data
+public class DrawShipOrderDTO {
+
+    private Long id;
+    private String name;
+    private Long userId;
+    private String nickname;
+    private String orderNo;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date paymentSuccessTime;
+    private Integer purchaseCount;
+    private BigDecimal actualPayment;
+    private Integer status;
+    private String shippingAddress; // 收货地址
+    private String shippingAddressLinkname; // 收货姓名
+    private String shippingAddressPhone; //  联系电话
+    private String courierNum; // 快递单号
+    private String merchantName;
+    private Integer tenantId;
+    private Long actId;
+    private String courierCompany;
+
+    private Integer page;
+    private Integer rows;
+}

+ 71 - 0
poyee-activity/src/main/java/com/tzy/app/dto/GiftRecordDTO.java

@@ -0,0 +1,71 @@
+package com.tzy.app.dto;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.tzy.common.utils.bean.JSONTools;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Accessors(chain = true)
+public class GiftRecordDTO implements Serializable {
+    private Long id;
+    private Integer groupInfoId;
+    private Integer recordId;
+    private Integer merchantId;
+    private String merchantName;
+    private String infoName;
+    private String infoCode;
+    private Integer userId;
+    private Integer totalNum;
+    private String userCode;
+    private String nickname;
+    private String prizeType;
+    private String actImg;
+    private String courierCompany;
+    private String courierNum;
+    private Date shipTime;
+    @JsonIgnore
+    private String actDesc;
+    private String prizeName;
+    private String actName;
+    private String cdKey;
+    private String amountValue;
+    private Integer status;
+
+    public String getActName() {
+        if (StringUtils.isNotEmpty(actDesc)) {
+            try {
+                JSONObject desc = JSONTools.parseObject(actDesc);
+                return desc.getString("actName");
+            } catch (Exception ignore) {}
+        }
+        return actName;
+    }
+
+    public String getCdKey() {
+        if (StringUtils.isNotEmpty(actDesc)) {
+            try {
+                JSONObject desc = JSONTools.parseObject(actDesc);
+                return desc.getString("cdKey");
+            } catch (Exception ignore) {}
+        }
+        return cdKey;
+    }
+
+    public String getActAmount() {
+        if (StringUtils.isNotEmpty(actDesc)) {
+            try {
+                JSONObject desc = JSONTools.parseObject(actDesc);
+                return desc.getString("amountValue");
+            } catch (Exception ignore) {}
+        }
+        return amountValue;
+    }
+}

+ 32 - 0
poyee-activity/src/main/java/com/tzy/app/dto/GroupDecrAmountDTO.java

@@ -0,0 +1,32 @@
+package com.tzy.app.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class GroupDecrAmountDTO {
+    private Long id;
+    private String name;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTime;
+    private Integer status;
+    private String ruleConfig;
+    private String description;
+    private String imgUrl;
+    private Long refActId; // 关联活动id
+    private String refSubType; // 关联特殊活动类型:会员砍一刀次数达标:spec_member_num
+    private Integer refActEnable; // 关联活动是否满足条件开启 默认0否 1是
+    private Integer openPopup; // 是否打开弹窗 默认0否 1是
+    private String popupUrl;  // 弹窗跳转路径
+    private String popupImg; // 弹窗图
+    private String popupConfig; // 弹窗额外配置:json
+    private String defaultTimesType; // 赠送默认次数类型,天:day,周:week,月:month,整期:all (默认all, 大转盘活动接收)
+    private Long merchantId;
+    private String merchantName;
+    private String subType;
+    private String rankPrizeImg;
+}

+ 34 - 0
poyee-activity/src/main/java/com/tzy/app/dto/ImportDrawPrizeDTO.java

@@ -0,0 +1,34 @@
+package com.tzy.app.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+/**
+ * 抽卡机奖品
+ */
+@Data
+public class ImportDrawPrizeDTO {
+    @ExcelProperty(value = "奖品图片路径", index = 0)
+    private String url; // 奖品图片路径
+    @ExcelProperty(value = "奖品名称", index = 1)
+    private String name; // 奖品名称
+    @ExcelProperty(value = "奖品类型", index = 2)
+    private String subType; // 奖品分类
+    @ExcelProperty(value = "库存", index = 3)
+    private Integer stock; // 奖品库存
+    @ExcelProperty(value = "排序", index = 4)
+    private Integer sortQuery; // 奖品排序
+    @ExcelProperty(value = "队伍", index = 5)
+    private String team; // 队伍
+    @ExcelProperty(value = "卡种", index = 6)
+    private String cardSet; // 卡种
+    @ExcelProperty(value = "系列", index = 7)
+    private String sets; // 系列
+    @ExcelProperty(value = "星级", index = 8)
+    private String starLevel; // 星级
+    @ExcelProperty(value = "卡号", index = 9)
+    private String cardNo; // 卡号
+    @ExcelProperty(value = "品类", index = 10)
+    private String cat; // 品类
+    private Long prizeId; // 关联skuId
+}

+ 24 - 0
poyee-activity/src/main/java/com/tzy/app/dto/LuckyPointDrawListDto.java

@@ -0,0 +1,24 @@
+package com.tzy.app.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 新年攒鸿运活动中奖名单
+ */
+@Data
+public class LuckyPointDrawListDto {
+
+    private String nickName; // 用户昵称
+
+    private String userCode; // 用户code
+
+    private String drawNum; // 抽奖号
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date drawDate; // 中奖时间
+
+    private String resultCode; // 开奖结果
+}

+ 38 - 0
poyee-activity/src/main/java/com/tzy/app/dto/LuckyPointJoinRecordDto.java

@@ -0,0 +1,38 @@
+package com.tzy.app.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.format.DateTimeFormat;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.tzy.common.annotation.Excel;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 新年攒鸿运活动参与记录
+ */
+@Data
+public class LuckyPointJoinRecordDto {
+
+    private Long id;
+    @Excel(name = "用户id")
+    private Long userId;
+    @Excel(name = "用户昵称")
+    @ExcelProperty(value = "用户昵称")
+    private String nickName; // 用户昵称
+    @Excel(name = "用户code")
+    @ExcelProperty(value = "用户code")
+    private String userCode; // 用户code
+    @Excel(name = "参与份数")
+    @ExcelProperty(value = "参与份数")
+    private int joinNum; // 参与份数
+    @Excel(name = "抽奖号")
+    @ExcelProperty(value = "抽奖号")
+    private String drawNum; // 抽奖号
+    @Excel(name = "参与时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
+    @ExcelProperty(value = "参与时间")
+    private Date joinDate; // 参与时间
+    private Long status;
+}

+ 40 - 0
poyee-activity/src/main/java/com/tzy/app/dto/LuckyPointPrizeDto.java

@@ -0,0 +1,40 @@
+package com.tzy.app.dto;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 新年攒鸿运活动奖品列表
+ */
+@Data
+public class LuckyPointPrizeDto {
+
+    private Long id;
+
+    private String name; // 奖品名称
+
+    private Date saleDate; // 开售时间
+
+    private String type; // 奖品类型
+
+    private int maxNum; // 奖品总份量
+
+    private int soldNum; // 已购买数量
+
+    private int totalNum; // 拼团总数量
+
+    private int point; // 每份鸿运值
+
+    private String url; // 奖品主图
+
+    private Long prizeId; // 奖品ID
+
+    private String description; // 奖品规则
+
+    private int sortQuery; // 排序
+
+    private int status; // 奖品上下架状态
+
+    private String prizeName; // 关联奖品名称
+}

+ 20 - 0
poyee-activity/src/main/java/com/tzy/app/dto/PrizeRecordQuery.java

@@ -0,0 +1,20 @@
+package com.tzy.app.dto;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.tzy.common.core.domain.BaseParam;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Accessors(chain = true)
+public class PrizeRecordQuery extends BaseParam {
+    private Integer merchantId;
+    private String merchantName;
+    private String infoCode;
+    private String userCode;
+    private String nickname;
+    private Integer status;
+}

+ 32 - 0
poyee-activity/src/main/java/com/tzy/app/dto/QuizActivityDto.java

@@ -0,0 +1,32 @@
+package com.tzy.app.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel("答题活动信息")
+public class QuizActivityDto {
+    @ApiModelProperty("答题活动id")
+    private Long id;
+    @ApiModelProperty("答题活动名称")
+    private String activityName;
+    @ApiModelProperty("开始时间")
+    private Date startTime;
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+    @ApiModelProperty("刷新周期")
+    private Integer refreshCycle;
+    @ApiModelProperty("题目数量")
+    private Integer questionNum;
+    @ApiModelProperty("状态:0、未启用;1、已启用")
+    private Integer status;
+    @ApiModelProperty("大转盘1id")
+    private Long actId1;
+    @ApiModelProperty("大转盘2id")
+    private Long actId2;
+    @ApiModelProperty("创建时间")
+    private Date createTime;
+}

+ 28 - 0
poyee-activity/src/main/java/com/tzy/app/dto/QuizLibDto.java

@@ -0,0 +1,28 @@
+package com.tzy.app.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel("答题活动题目")
+public class QuizLibDto {
+    @ApiModelProperty("题目id")
+    private Long id;
+    @ApiModelProperty("答题活动id")
+    private Long activityId;
+    @ApiModelProperty("题目类型:choice_single,选择题多选:choice_multi,文字:text")
+    private String type;
+    @ApiModelProperty("题目内容")
+    private String questionText;
+    @ApiModelProperty("题目选项,json格式")
+    private String questionChoiceText;
+    @ApiModelProperty("创建时间")
+    private Date createTime;
+    @ApiModelProperty("是否必刷题")
+    private Integer required;
+    @ApiModelProperty("状态:0、未启用,1、已启用")
+    private Integer status;
+}

+ 21 - 0
poyee-activity/src/main/java/com/tzy/app/dto/RefActRule.java

@@ -0,0 +1,21 @@
+package com.tzy.app.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class RefActRule {
+    /**条件类型,会员数量:member_num,次数奖励:joint_num*/
+    private String type;
+    /**条件子类型:钻石会员类型:3,all:累积参与次数,包含分享*/
+    private String subType;
+    /**奖品类型,商品:goods,优惠券:coupon,积分:point,抽奖次数:turntable*/
+    private String prizeType;
+    /**活动满足条件*/
+    private BigDecimal condValue;
+    /**参数次数*/
+    private Integer joinNum;
+    /**关联活动id,优惠劵id等*/
+    private Long refId;
+}

+ 14 - 0
poyee-activity/src/main/java/com/tzy/app/dto/SendRankPrizeDto.java

@@ -0,0 +1,14 @@
+package com.tzy.app.dto;
+
+import com.tzy.app.domain.AppActPrizeRecord;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SendRankPrizeDto {
+
+    private List<CountSuccessTimesDto> rankPrizeList; // 有排行奖励资格的用户
+
+    private List<AppActPrizeRecord> prizeQualifyList; // 抽中瓜分资格的用户
+}

+ 14 - 0
poyee-activity/src/main/java/com/tzy/app/dto/SendRemindDTO.java

@@ -0,0 +1,14 @@
+package com.tzy.app.dto;
+
+import lombok.Data;
+
+@Data
+public class SendRemindDTO {
+
+    private Long id; // 活动ID
+    private Long userId;
+    private String nickname;
+    private String smsRegisterId; // 设备id
+    private String groupInfoName; // 拼团名称
+    private Integer notifyFlag;
+}

+ 19 - 0
poyee-activity/src/main/java/com/tzy/app/dto/SyncGroupAmountDTO.java

@@ -0,0 +1,19 @@
+package com.tzy.app.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class SyncGroupAmountDTO {
+
+    private Long id; // 拼团id
+    private String code;
+    private String name;
+    private BigDecimal totalUnitPrice; // 拼团原总价
+    //private BigDecimal totalMinPrice; // 拼团最低总价
+    private BigDecimal totalDecrPrice; //已砍总价
+    private BigDecimal totalActPrice; // 当前活动价 = 拼团原总价 - 已砍总价
+    private BigDecimal unitPrice; // 原单价
+    private BigDecimal actUnitPrice; // 活动单价 (已砍总价 / 数量)
+}

+ 65 - 0
poyee-activity/src/main/java/com/tzy/app/mapper/AppActConfigMapper.java

@@ -0,0 +1,65 @@
+package com.tzy.app.mapper;
+
+import java.util.List;
+import com.tzy.app.domain.AppActConfig;
+import com.tzy.app.dto.AppActivityConfigDto;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * appActConfigMapper接口
+ * 
+ * @author tencheer
+ * @date 2022-08-08
+ */
+public interface AppActConfigMapper 
+{
+    /**
+     * 查询appActConfig
+     * 
+     * @param id appActConfigID
+     * @return appActConfig
+     */
+    public AppActivityConfigDto selectAppActConfigById(Long id);
+
+    /**
+     * 查询appActConfig列表
+     * 
+     * @param appActConfig appActConfig
+     * @return appActConfig集合
+     */
+    public List<AppActivityConfigDto> selectAppActConfigList(AppActConfig appActConfig);
+
+    /**
+     * 新增appActConfig
+     * 
+     * @param appActConfig appActConfig
+     * @return 结果
+     */
+    public int insertAppActConfig(AppActConfig appActConfig);
+
+    /**
+     * 修改appActConfig
+     * 
+     * @param appActConfig appActConfig
+     * @return 结果
+     */
+    public int updateAppActConfig(AppActConfig appActConfig);
+
+    /**
+     * 删除appActConfig
+     * 
+     * @param id appActConfigID
+     * @return 结果
+     */
+    public int deleteAppActConfigById(Long id);
+
+    /**
+     * 批量删除appActConfig
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteAppActConfigByIds(Long[] ids);
+
+    int updateStatus(@Param("id") Long id, @Param("status") Long status);
+}

+ 80 - 0
poyee-activity/src/main/java/com/tzy/app/mapper/AppActGuessRecordMapper.java

@@ -0,0 +1,80 @@
+package com.tzy.app.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+import com.tzy.app.domain.AppActGuessRecord;
+import com.tzy.app.dto.CountGuessResultDto;
+import com.tzy.app.dto.CountSuccessTimesDto;
+import io.swagger.models.auth.In;
+import org.apache.ibatis.annotations.MapKey;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 竞猜记录Mapper接口
+ * 
+ * @author tencheer
+ * @date 2022-11-10
+ */
+public interface AppActGuessRecordMapper 
+{
+    /**
+     * 查询竞猜记录
+     * 
+     * @param guessScoreStatus 竞猜记录ID
+     * @return 竞猜记录
+     */
+    public AppActGuessRecord selectAppActGuessRecordById(Long guessScoreStatus);
+
+    /**
+     * 查询竞猜记录列表
+     * 
+     * @param appActGuessRecord 竞猜记录
+     * @return 竞猜记录集合
+     */
+    public List<AppActGuessRecord> selectAppActGuessRecordList(AppActGuessRecord appActGuessRecord);
+
+    /**
+     * 新增竞猜记录
+     * 
+     * @param appActGuessRecord 竞猜记录
+     * @return 结果
+     */
+    public int insertAppActGuessRecord(AppActGuessRecord appActGuessRecord);
+
+    /**
+     * 修改竞猜记录
+     * 
+     * @param appActGuessRecord 竞猜记录
+     * @return 结果
+     */
+    public int updateAppActGuessRecord(AppActGuessRecord appActGuessRecord);
+
+    /**
+     * 删除竞猜记录
+     * 
+     * @param guessScoreStatus 竞猜记录ID
+     * @return 结果
+     */
+    public int deleteAppActGuessRecordById(Long guessScoreStatus);
+
+    /**
+     * 批量删除竞猜记录
+     * 
+     * @param guessScoreStatuss 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteAppActGuessRecordByIds(String[] guessScoreStatuss);
+
+    /**
+     * 批量统计参与人数
+     * @param actTeamIds 竞猜队伍ID
+     * @return
+     */
+    List<CountGuessResultDto> batchCountGuessByActTeamId(Long[] actTeamIds);
+
+    int batchUpdateAppActGuessRecord(List<AppActGuessRecord> appActGuessRecordList);
+
+    List<CountSuccessTimesDto> countSuccessTimes(Integer actId);
+
+}

+ 62 - 0
poyee-activity/src/main/java/com/tzy/app/mapper/AppActGuessTeamMapper.java

@@ -0,0 +1,62 @@
+package com.tzy.app.mapper;
+
+import java.util.List;
+import com.tzy.app.domain.AppActGuessTeam;
+import com.tzy.app.dto.AppActGuessTeamDto;
+
+/**
+ * 竞猜队伍Mapper接口
+ * 
+ * @author tencheer
+ * @date 2022-11-10
+ */
+public interface AppActGuessTeamMapper 
+{
+    /**
+     * 查询竞猜队伍
+     * 
+     * @param prizeRefId 竞猜队伍ID
+     * @return 竞猜队伍
+     */
+    public AppActGuessTeam selectAppActGuessTeamById(Long prizeRefId);
+
+    /**
+     * 查询竞猜队伍列表
+     * 
+     * @param appActGuessTeam 竞猜队伍
+     * @return 竞猜队伍集合
+     */
+    public List<AppActGuessTeamDto> selectAppActGuessTeamList(AppActGuessTeam appActGuessTeam);
+
+    /**
+     * 新增竞猜队伍
+     * 
+     * @param appActGuessTeam 竞猜队伍
+     * @return 结果
+     */
+    public int insertAppActGuessTeam(AppActGuessTeam appActGuessTeam);
+
+    /**
+     * 修改竞猜队伍
+     * 
+     * @param appActGuessTeam 竞猜队伍
+     * @return 结果
+     */
+    public int updateAppActGuessTeam(AppActGuessTeam appActGuessTeam);
+
+    /**
+     * 删除竞猜队伍
+     * 
+     * @param prizeRefId 竞猜队伍ID
+     * @return 结果
+     */
+    public int deleteAppActGuessTeamById(Long prizeRefId);
+
+    /**
+     * 批量删除竞猜队伍
+     * 
+     * @param prizeRefIds 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteAppActGuessTeamByIds(String[] prizeRefIds);
+}

+ 88 - 0
poyee-activity/src/main/java/com/tzy/app/mapper/AppActManageMapper.java

@@ -0,0 +1,88 @@
+package com.tzy.app.mapper;
+
+import java.util.List;
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.dto.ActDto;
+import com.tzy.app.dto.AppActivityInfoDto;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * actManagerMapper接口
+ * 
+ * @author tencheer
+ * @date 2022-08-08
+ */
+public interface AppActManageMapper 
+{
+    /**
+     * 查询actManager
+     * 
+     * @param id actManagerID
+     * @return actManager
+     */
+    public AppActivityInfoDto selectAppActManageById(Long id);
+    public AppActManage selectAppActManageByIdForClone(Long id);
+
+    /**
+     * 查询actManager列表
+     * 
+     * @param appActManage actManager
+     * @return actManager集合
+     */
+    public List<AppActivityInfoDto> selectAppActManageList(AppActManage appActManage);
+
+    /**
+     * 新增actManager
+     * 
+     * @param appActManage actManager
+     * @return 结果
+     */
+    public int insertAppActManage(AppActManage appActManage);
+
+    /**
+     * 修改actManager
+     * 
+     * @param appActManage actManager
+     * @return 结果
+     */
+    public int updateAppActManage(AppActManage appActManage);
+
+    /**
+     * 删除actManager
+     * 
+     * @param id actManagerID
+     * @return 结果
+     */
+    public int deleteAppActManageById(Long id);
+
+    /**
+     * 批量删除actManager
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteAppActManageByIds(Long[] ids);
+
+    /**
+     * 更新活动状态
+     * @param dto
+     * @param id
+     * @return
+     */
+    public int updateActStatus(@Param("actDto") ActDto dto,@Param("id") Integer id);
+
+    /**
+     * 查询指定的活动
+     * @param actDto
+     * @return
+     */
+    public List<AppActivityInfoDto> selectActInfos(ActDto actDto);
+
+    int updateActAuditing(@Param("id") Integer id, @Param("status") Integer status);
+
+    List<AppActivityInfoDto> findCopyActs();
+
+    List<AppActivityInfoDto> findUnGroupedActs();
+
+    List<AppActivityInfoDto> selectAppActManageListWithRef(AppActManage appActManage);
+}

+ 75 - 0
poyee-activity/src/main/java/com/tzy/app/mapper/AppActPrizeMapper.java

@@ -0,0 +1,75 @@
+package com.tzy.app.mapper;
+
+import java.util.List;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.dto.LuckyPointPrizeDto;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * appActPrizeMapper接口
+ * 
+ * @author tencheer
+ * @date 2022-08-08
+ */
+public interface AppActPrizeMapper 
+{
+    /**
+     * 查询appActPrize
+     * 
+     * @param id appActPrizeID
+     * @return appActPrize
+     */
+    public AppActPrize selectAppActPrizeById(Long id);
+
+    /**
+     * 查询appActPrize列表
+     * 
+     * @param appActPrize appActPrize
+     * @return appActPrize集合
+     */
+    public List<AppActPrize> selectAppActPrizeList(AppActPrize appActPrize);
+
+    /**
+     * 新增appActPrize
+     * 
+     * @param appActPrize appActPrize
+     * @return 结果
+     */
+    public int insertAppActPrize(AppActPrize appActPrize);
+
+    /**
+     * 修改appActPrize
+     * 
+     * @param appActPrize appActPrize
+     * @return 结果
+     */
+    public int updateAppActPrize(AppActPrize appActPrize);
+
+    /**
+     * 删除appActPrize
+     * 
+     * @param id appActPrizeID
+     * @return 结果
+     */
+    public int deleteAppActPrizeById(Long id);
+
+    /**
+     * 批量删除appActPrize
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteAppActPrizeByIds(Long[] ids);
+
+    public int selectProbability(AppActPrize appActPrize);
+
+    public int changePrizeStatus(AppActPrize appActPrize);
+
+    List<AppActPrize> findUserLivePrizes(Long merchantId);
+
+    List<LuckyPointPrizeDto> findLuckyPointPrizes(Long actId);
+
+    int batchInsertAppActPrize(List<AppActPrize> appActPrizeList);
+
+    int countPrizeRecords(@Param("actId") Long actId, @Param("id") Long id);
+}

+ 96 - 0
poyee-activity/src/main/java/com/tzy/app/mapper/AppActPrizeRecordMapper.java

@@ -0,0 +1,96 @@
+package com.tzy.app.mapper;
+
+import com.tzy.app.domain.AppActPrizeRecord;
+import com.tzy.app.dto.*;
+import org.apache.ibatis.annotations.MapKey;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * actPriceRecordMapper接口
+ * 
+ * @author tencheer
+ * @date 2022-08-08
+ */
+public interface AppActPrizeRecordMapper 
+{
+    /**
+     * 查询actPriceRecord
+     * 
+     * @param id actPriceRecordID
+     * @return actPriceRecord
+     */
+    public AppActivityPrizeRecordDto selectAppActPrizeRecordById(Long id);
+
+    /**
+     * 查询actPriceRecord列表
+     * 
+     * @param appActPrizeRecord actPriceRecord
+     * @return actPriceRecord集合
+     */
+    public int selectAppActPrizeRecordListCount(AppActPrizeRecord appActPrizeRecord);
+    public List<AppActivityPrizeRecordDto> selectAppActPrizeRecordList(AppActPrizeRecord appActPrizeRecord);
+
+    /**
+     * 新增actPriceRecord
+     * 
+     * @param appActPrizeRecord actPriceRecord
+     * @return 结果
+     */
+    public int insertAppActPrizeRecord(AppActPrizeRecord appActPrizeRecord);
+
+    /**
+     * 修改actPriceRecord
+     * 
+     * @param appActPrizeRecord actPriceRecord
+     * @return 结果
+     */
+    public int updateAppActPrizeRecord(AppActPrizeRecord appActPrizeRecord);
+
+    /**
+     * 删除actPriceRecord
+     * 
+     * @param id actPriceRecordID
+     * @return 结果
+     */
+    public int deleteAppActPrizeRecordById(Long id);
+
+    /**
+     * 批量删除actPriceRecord
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteAppActPrizeRecordByIds(Long[] ids);
+
+    List<AppActivityPrizeRecordDto> findPrizeQualify(@Param("actId") int actId, @Param("prizeIds") int[] prizeIds);
+
+    List<LuckyPointJoinRecordDto> findJoinRecords(Long actId);
+
+    List<LuckyPointDrawListDto> findDrawLists(Long actId);
+
+    List<AppActivityPrizeRecordDto> selectAppActPrizeRecordByActId(Long actId);
+
+    @MapKey("actday")
+    List<Map<String, Object>> countAllPoints(@Param("masterStartTime") String masterStartTime, @Param("masterEndTime") String masterEndTime,
+                                       @Param("slaveStartTime") String slaveStartTime, @Param("slaveEndTime") String slaveEndTime);
+
+    @MapKey("actday")
+    List<Map<String, Object>> countFreezePoints(@Param("masterStartTime") String masterStartTime, @Param("masterEndTime") String masterEndTime,
+                                       @Param("slaveStartTime") String slaveStartTime, @Param("slaveEndTime") String slaveEndTime);
+
+    @MapKey("actday")
+    List<Map<String, Object>> countConsumPoints(@Param("startTime") String masterStartTime, @Param("endTime") String masterEndTime);
+
+    void batchUpdateAppActPrizeRecord(List<Long> collect);
+
+    int countByActId(@Param("actId") Long actId, @Param("prizeId") Long prizeId);
+
+    int countUnDraw(Long actId);
+
+    List<GiftRecordDTO> getMerchantGiftRecords(PrizeRecordQuery query);
+
+    List<AppActPrizeRecord> selectLuckyCodeFail();
+}

+ 17 - 0
poyee-activity/src/main/java/com/tzy/app/mapper/AppActTaskManageMapper.java

@@ -0,0 +1,17 @@
+package com.tzy.app.mapper;
+
+import com.tzy.app.domain.AppActTaskManage;
+
+import java.util.List;
+
+public interface AppActTaskManageMapper
+{
+    public AppActTaskManage selectAppActTaskManageById(Long id);
+
+    public List<AppActTaskManage> selectAppActTaskManageList(AppActTaskManage AppActTaskManage);
+
+    public int insertAppActTaskManage(AppActTaskManage AppActTaskManage);
+
+    public int updateAppActTaskManage(AppActTaskManage AppActTaskManage);
+
+}

+ 29 - 0
poyee-activity/src/main/java/com/tzy/app/mapper/ConsumeLevelMapper.java

@@ -0,0 +1,29 @@
+package com.tzy.app.mapper;
+
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.dto.ConsumeLevelDTO;
+import com.tzy.app.dto.ConsumeLevelPrizeDTO;
+import com.tzy.app.dto.ConsumeRankDTO;
+import com.tzy.app.dto.DrawCardGameLotteryDTO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+
+public interface ConsumeLevelMapper {
+
+    List<ConsumeLevelDTO> page(AppActManage appActManage);
+
+    ConsumeLevelDTO queryById(Long id);
+
+    List<ConsumeLevelPrizeDTO> prizePage(AppActPrize appActPrize);
+
+    ConsumeLevelPrizeDTO queryPrizeById(Long id);
+
+    List<DrawCardGameLotteryDTO> drawRecords(Long actId);
+
+    ConsumeLevelDTO getByType(String type);
+
+    List<ConsumeRankDTO> consumelRank(@Param("startTime") String startTime, @Param("endTime") String endTime);
+}

+ 36 - 0
poyee-activity/src/main/java/com/tzy/app/mapper/DrawCardGameMapper.java

@@ -0,0 +1,36 @@
+package com.tzy.app.mapper;
+
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.dto.*;
+import com.tzy.sportcard.group.domain.CardGroupOrderInfo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface DrawCardGameMapper {
+
+    List<DrawCardGameDTO> page(AppActManage appActManage);
+
+    DrawCardGameDTO queryById(Long id);
+
+    int publish(@Param("id") Long id, @Param("status") Long stauts);
+
+    int publishPrize(@Param("id") Long id, @Param("status") Long stauts);
+
+    List<DrawCardGamePrizeDTO> prizePage(AppActPrize appActPrize);
+
+    DrawCardGamePrizeDTO queryPrizeById(Long id);
+
+    List<DrawCardGameLotteryDTO> drawRecords(Long actId);
+
+    List<DrawCardGameStoresDTO> prizeStores(DrawCardGameStoresDTO drawCardGameStoresDTO);
+
+    List<DrawOrderDTO> getDrawOrders(DrawOrderDTO drawOrderDTO);
+
+    List<DrawShipOrderDTO> getDrawShipOrders(DrawShipOrderDTO drawShipOrderDTO);
+
+    List<DrawShipCardDTO> getDrawShipCards(DrawShipCardDTO drawShipCardDTO);
+
+    int updateAddressEditJson(CardGroupOrderInfo order);
+}

+ 24 - 0
poyee-activity/src/main/java/com/tzy/app/mapper/DrawGoodsMapper.java

@@ -0,0 +1,24 @@
+package com.tzy.app.mapper;
+
+
+import com.tzy.app.dto.DrawGoodsDTO;
+import com.tzy.app.dto.DrawGoodsParamDTO;
+import com.tzy.app.dto.DrawGoodsSkuDTO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface DrawGoodsMapper {
+
+    List<DrawGoodsDTO> page(DrawGoodsDTO drawGoodsDTO);
+
+    int saveSpu(DrawGoodsParamDTO drawGoodsParamDTO);
+
+    int batchSaveSku(List<DrawGoodsSkuDTO> drawGoodsSkuDTO);
+
+    int saveSku(DrawGoodsSkuDTO drawGoodsSkuDTO);
+
+    int editSpu(DrawGoodsParamDTO drawGoodsParamDTO);
+
+    int editSku(DrawGoodsSkuDTO drawGoodsSkuDTO);
+}

+ 29 - 0
poyee-activity/src/main/java/com/tzy/app/mapper/GroupDecrAmountMapper.java

@@ -0,0 +1,29 @@
+package com.tzy.app.mapper;
+
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.dto.GroupDecrAmountDTO;
+import com.tzy.app.dto.SendRemindDTO;
+import com.tzy.sportcard.group.domain.CardGroupInfo;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+public interface GroupDecrAmountMapper {
+    List<GroupDecrAmountDTO> selectGroupDecrAmounts(AppActManage appActManage);
+
+    int updatePriceByAct(@Param("infoId") Long infoId, @Param("totalUnitPrice") BigDecimal totalUnitPrice,
+                         @Param("unitPrice") BigDecimal unitPrice);
+
+    int updateRuleConfig(@Param("id") Long id, @Param("ruleConfig") String ruleConfig);
+
+    CardGroupInfo getGroup(Long actId);
+
+    List<SendRemindDTO> sendRemind();
+
+    BigDecimal getTotalDecrPrice(Long actId); // 获取已砍总价
+
+    int updateActId(@Param("groupInfoId") Long groupInfoId, @Param("actId") Long id);
+
+    List<SendRemindDTO> groupSaleRemind();
+}

+ 19 - 0
poyee-activity/src/main/java/com/tzy/app/mapper/QuizActivityMapper.java

@@ -0,0 +1,19 @@
+package com.tzy.app.mapper;
+
+import com.tzy.app.domain.QuizActivity;
+import com.tzy.app.dto.QuizActivityDto;
+
+import java.util.List;
+
+public interface QuizActivityMapper {
+
+    int createQuizActivity(QuizActivity quizActivity);
+
+    int editQuizActivity(QuizActivity quizActivity);
+
+    int publish(QuizActivity quizActivity);
+
+    QuizActivityDto getQuizActivityById(Long id);
+
+    List<QuizActivityDto> queryQuizActivity(QuizActivity quizActivity);
+}

+ 22 - 0
poyee-activity/src/main/java/com/tzy/app/mapper/QuizLibMapper.java

@@ -0,0 +1,22 @@
+package com.tzy.app.mapper;
+
+import com.tzy.app.domain.QuizLib;
+import com.tzy.app.dto.QuizLibDto;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface QuizLibMapper {
+
+    int addQuizLib(QuizLib quizLib);
+
+    List<QuizLibDto> queryQuizLibByActivityId(long activityId);
+
+    int updateStatus(@Param("status") int status,@Param("id") long id);
+
+    int editQuizLib(QuizLib quizLib);
+
+    int countQuizLibByActivity(Long activityId);
+
+    QuizLibDto getQuizLib(Long id);
+}

+ 64 - 0
poyee-activity/src/main/java/com/tzy/app/mapper/TenantInfoMapper.java

@@ -0,0 +1,64 @@
+package com.tzy.app.mapper;
+
+import java.util.List;
+
+import com.tzy.app.domain.TenantInfo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 租户信息Mapper接口
+ * 
+ * @author tencheer
+ * @date 2023-12-18
+ */
+public interface TenantInfoMapper {
+    /**
+     * 查询租户信息
+     * 
+     * @param id 租户信息ID
+     * @return 租户信息
+     */
+    TenantInfo selectTenantInfoById(Long id);
+
+    /**
+     * 查询租户信息列表
+     * 
+     * @param tenantInfo 租户信息
+     * @return 租户信息集合
+     */
+    List<TenantInfo> selectTenantInfoList(TenantInfo tenantInfo);
+
+    /**
+     * 新增租户信息
+     * 
+     * @param tenantInfo 租户信息
+     * @return 结果
+     */
+    int insertTenantInfo(TenantInfo tenantInfo);
+
+    /**
+     * 修改租户信息
+     * 
+     * @param tenantInfo 租户信息
+     * @return 结果
+     */
+    int updateTenantInfo(TenantInfo tenantInfo);
+
+    int updateByCode(@Param("secretKey") String secretKey, @Param("code") String code);
+
+    /**
+     * 删除租户信息
+     * 
+     * @param id 租户信息ID
+     * @return 结果
+     */
+    int deleteTenantInfoById(Long id);
+
+    /**
+     * 批量删除租户信息
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    int deleteTenantInfoByIds(String[] ids);
+}

+ 68 - 0
poyee-activity/src/main/java/com/tzy/app/mapper/UserActTimesMapper.java

@@ -0,0 +1,68 @@
+package com.tzy.app.mapper;
+
+import java.util.List;
+import com.tzy.app.domain.UserActTimes;
+
+/**
+ * 活动奖励Mapper接口
+ * 
+ * @author tencheer
+ * @date 2022-11-15
+ */
+public interface UserActTimesMapper 
+{
+    /**
+     * 查询活动奖励
+     * 
+     * @param id 活动奖励ID
+     * @return 活动奖励
+     */
+    public UserActTimes selectUserActTimesById(Long id);
+
+    /**
+     * 查询活动奖励列表
+     * 
+     * @param userActTimes 活动奖励
+     * @return 活动奖励集合
+     */
+    public List<UserActTimes> selectUserActTimesList(UserActTimes userActTimes);
+
+    /**
+     * 新增活动奖励
+     * 
+     * @param userActTimes 活动奖励
+     * @return 结果
+     */
+    public int insertUserActTimes(UserActTimes userActTimes);
+
+    /**
+     * 修改活动奖励
+     * 
+     * @param userActTimes 活动奖励
+     * @return 结果
+     */
+    public int updateUserActTimes(UserActTimes userActTimes);
+
+    /**
+     * 删除活动奖励
+     * 
+     * @param id 活动奖励ID
+     * @return 结果
+     */
+    public int deleteUserActTimesById(Long id);
+
+    /**
+     * 批量删除活动奖励
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteUserActTimesByIds(String[] ids);
+
+    /**
+     * 批量插入活动奖励
+     * @param userActTimesList
+     * @return
+     */
+    int batchInsertUserActTimes(List<UserActTimes> userActTimesList);
+}

+ 32 - 0
poyee-activity/src/main/java/com/tzy/app/service/CompleteProfileService.java

@@ -0,0 +1,32 @@
+package com.tzy.app.service;
+
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.domain.AppActPrizeRecord;
+import com.tzy.app.dto.*;
+
+import java.util.List;
+
+
+public interface CompleteProfileService {
+
+    int add(AppActManage appActManage);
+
+    int edit(AppActManage appActManage);
+
+    int publish(AppActManage appActManage);
+
+    PageInfo<AppActivityInfoDto> page(AppActManage appActManage);
+
+    int addPrize(AppActPrize appActPrizeList);
+
+    int editPrize(AppActPrize appActPrize);
+
+    PageInfo<AppActPrize> prizePage(AppActPrize appActPrize);
+
+    int publishPrize(Long id, Long status);
+
+    PageInfo<DrawCardGameLotteryDTO> drawRecords(AppActPrizeRecord appActPrizeRecord);
+
+}

+ 41 - 0
poyee-activity/src/main/java/com/tzy/app/service/ConsumeLevelService.java

@@ -0,0 +1,41 @@
+package com.tzy.app.service;
+
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.domain.AppActPrizeRecord;
+import com.tzy.app.dto.ConsumeLevelDTO;
+import com.tzy.app.dto.ConsumeLevelPrizeDTO;
+import com.tzy.app.dto.ConsumeRankDTO;
+import com.tzy.app.dto.DrawCardGameLotteryDTO;
+
+import java.util.Date;
+import java.util.List;
+
+
+public interface ConsumeLevelService {
+
+    int add(AppActManage appActManage);
+
+    int edit(AppActManage appActManage);
+
+    int publish(AppActManage appActManage);
+
+    PageInfo<ConsumeLevelDTO> page(AppActManage appActManage);
+
+    int addPrize(AppActPrize appActPrizeList);
+
+    int editPrize(AppActPrize appActPrize);
+
+    PageInfo<ConsumeLevelPrizeDTO> prizePage(AppActPrize appActPrize);
+
+    int publishPrize(Long id, Long status);
+
+    PageInfo<DrawCardGameLotteryDTO> drawRecords(AppActPrizeRecord appActPrizeRecord);
+
+    List<DrawCardGameLotteryDTO> allDrawRecords(Long actId);
+
+    ConsumeLevelDTO getByType(String type);
+
+    List<ConsumeRankDTO> consumelRank(String startTime, String endTime);
+}

+ 33 - 0
poyee-activity/src/main/java/com/tzy/app/service/CouponFetchService.java

@@ -0,0 +1,33 @@
+package com.tzy.app.service;
+
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.domain.AppActPrizeRecord;
+import com.tzy.app.dto.AppActivityInfoDto;
+import com.tzy.app.dto.ConsumeLevelDTO;
+import com.tzy.app.dto.ConsumeLevelPrizeDTO;
+import com.tzy.app.dto.DrawCardGameLotteryDTO;
+
+
+public interface CouponFetchService {
+
+    int add(AppActManage appActManage);
+
+    int edit(AppActManage appActManage);
+
+    int publish(AppActManage appActManage);
+
+    PageInfo<AppActivityInfoDto> page(AppActManage appActManage);
+
+    int addPrize(AppActPrize appActPrizeList);
+
+    int editPrize(AppActPrize appActPrize);
+
+    PageInfo<AppActPrize> prizePage(AppActPrize appActPrize);
+
+    int publishPrize(Long id, Long status);
+
+    PageInfo<DrawCardGameLotteryDTO> drawRecords(AppActPrizeRecord appActPrizeRecord);
+
+}

+ 45 - 0
poyee-activity/src/main/java/com/tzy/app/service/DrawCardGameService.java

@@ -0,0 +1,45 @@
+package com.tzy.app.service;
+
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.domain.AppActPrizeRecord;
+import com.tzy.app.dto.*;
+
+import java.util.List;
+
+
+public interface DrawCardGameService {
+
+    PageInfo<DrawCardGameDTO> page(AppActManage appActManage);
+
+    int add(AppActManage appActManage);
+
+    int edit(AppActManage appActManage);
+
+    int publish(Long id, Long status);
+
+    int addPrize(List<AppActPrize> appActPrizeList);
+
+    int editPrize(AppActPrize appActPrize);
+
+    int publishPrize(Long id, Long status);
+
+    PageInfo<DrawCardGamePrizeDTO> prizePage(AppActPrize appActPrize);
+
+    PageInfo<DrawCardGameLotteryDTO> drawRecords(AppActPrizeRecord appActPrizeRecord);
+
+    List<DrawCardGameLotteryDTO> allDrawRecords(Long actId);
+
+    PageInfo<DrawCardGameStoresDTO> prizeStores(DrawCardGameStoresDTO drawCardGameStoresDTO);
+
+    void saveDrawPrizes(List<ImportDrawPrizeDTO> list, Integer tenantId, Long actId);
+
+    PageInfo<DrawOrderDTO> drawOrders(DrawOrderDTO drawOrderDTO);
+
+    PageInfo<DrawShipOrderDTO> drawShipOrders(DrawShipOrderDTO drawShipOrderDTO);
+
+    PageInfo<DrawShipCardDTO> drawShipCards(DrawShipCardDTO drawShipCardDTO);
+
+    int reviewOrderAddress(Long orderId, Integer agree);
+}

+ 14 - 0
poyee-activity/src/main/java/com/tzy/app/service/DrawGoodsService.java

@@ -0,0 +1,14 @@
+package com.tzy.app.service;
+
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.dto.DrawGoodsDTO;
+import com.tzy.app.dto.DrawGoodsParamDTO;
+
+public interface DrawGoodsService {
+
+    PageInfo<DrawGoodsDTO> page(DrawGoodsDTO drawGoodsDTO);
+
+    int save(DrawGoodsParamDTO drawGoodsParamDTO);
+
+    int edit(DrawGoodsParamDTO drawGoodsParamDTO);
+}

+ 42 - 0
poyee-activity/src/main/java/com/tzy/app/service/GroupDecrAmountService.java

@@ -0,0 +1,42 @@
+package com.tzy.app.service;
+
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.dto.GroupDecrAmountDTO;
+import com.tzy.sportcard.group.dto.GroupDecrAmountParam;
+import com.tzy.app.dto.SyncGroupAmountDTO;
+import com.tzy.sportcard.group.dto.MerchantGroupInfoDTO;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+public interface GroupDecrAmountService {
+
+    int save(AppActManage appActManage);
+
+    int edit(AppActManage appActManage);
+
+    int publish(AppActManage appActManage);
+
+    PageInfo<GroupDecrAmountDTO> page(AppActManage appActManage);
+
+    int editGroupPrice(Long infoId, BigDecimal totalUnitPrice, long goodsNum, int remainderPoint);
+
+    int bindGroup(Long id, Long groupInfoId);
+
+    SyncGroupAmountDTO getPriceInfo(Long id);
+
+    int syncPrice(Long id);
+
+    List<MerchantGroupInfoDTO> selectByMerchantId(GroupDecrAmountParam param);
+
+    int bindMerchant(GroupDecrAmountParam param);
+
+    int bindGoods(Long id, Long goodsId);
+
+    int bindBid(Long id, Long bidId);
+
+    int updateGroupGoodsBidAct(long id,String subType);
+
+    int bindActGroup(Long id, Long groupInfoId);
+}

+ 65 - 0
poyee-activity/src/main/java/com/tzy/app/service/IAppActConfigService.java

@@ -0,0 +1,65 @@
+package com.tzy.app.service;
+
+import java.util.List;
+import com.tzy.app.domain.AppActConfig;
+import com.tzy.app.dto.AppActivityConfigDto;
+import com.tzy.coupon.card.dto.CouponDto;
+
+/**
+ * appActConfigService接口
+ * 
+ * @author tencheer
+ * @date 2022-08-08
+ */
+public interface IAppActConfigService 
+{
+    /**
+     * 查询appActConfig
+     * 
+     * @param id appActConfigID
+     * @return appActConfig
+     */
+    public AppActivityConfigDto selectAppActConfigById(Long id);
+
+    /**
+     * 查询appActConfig列表
+     * 
+     * @param appActConfig appActConfig
+     * @return appActConfig集合
+     */
+    public List<AppActivityConfigDto> selectAppActConfigList(AppActConfig appActConfig);
+
+    /**
+     * 新增appActConfig
+     * 
+     * @param appActConfig appActConfig
+     * @return 结果
+     */
+    public int insertAppActConfig(AppActConfig appActConfig);
+
+    /**
+     * 修改appActConfig
+     * 
+     * @param appActConfig appActConfig
+     * @return 结果
+     */
+    public int updateAppActConfig(AppActConfig appActConfig);
+
+    /**
+     * 批量删除appActConfig
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteAppActConfigByIds(String ids);
+
+    /**
+     * 删除appActConfig信息
+     * 
+     * @param id appActConfigID
+     * @return 结果
+     */
+    public int deleteAppActConfigById(Long id);
+
+    int updateStatus(Long id, Long status);
+}

+ 65 - 0
poyee-activity/src/main/java/com/tzy/app/service/IAppActGuessRecordService.java

@@ -0,0 +1,65 @@
+package com.tzy.app.service;
+
+import java.util.List;
+import com.tzy.app.domain.AppActGuessRecord;
+import com.tzy.app.domain.AppActGuessTeam;
+import com.tzy.app.dto.CountGuessResultDto;
+
+/**
+ * 竞猜记录Service接口
+ * 
+ * @author tencheer
+ * @date 2022-11-10
+ */
+public interface IAppActGuessRecordService 
+{
+    /**
+     * 查询竞猜记录
+     * 
+     * @param guessScoreStatus 竞猜记录ID
+     * @return 竞猜记录
+     */
+    public AppActGuessRecord selectAppActGuessRecordById(Long guessScoreStatus);
+
+    /**
+     * 查询竞猜记录列表
+     * 
+     * @param appActGuessRecord 竞猜记录
+     * @return 竞猜记录集合
+     */
+    public List<AppActGuessRecord> selectAppActGuessRecordList(AppActGuessRecord appActGuessRecord);
+
+    /**
+     * 新增竞猜记录
+     * 
+     * @param appActGuessRecord 竞猜记录
+     * @return 结果
+     */
+    public int insertAppActGuessRecord(AppActGuessRecord appActGuessRecord);
+
+    /**
+     * 修改竞猜记录
+     * 
+     * @param appActGuessRecord 竞猜记录
+     * @return 结果
+     */
+    public int updateAppActGuessRecord(AppActGuessRecord appActGuessRecord);
+
+    /**
+     * 批量删除竞猜记录
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteAppActGuessRecordByIds(String ids);
+
+    /**
+     * 删除竞猜记录信息
+     * 
+     * @param guessScoreStatus 竞猜记录ID
+     * @return 结果
+     */
+    public int deleteAppActGuessRecordById(Long guessScoreStatus);
+
+    List<CountGuessResultDto> batchCountGuessByActTeamId(Long[] actTeamId);
+}

+ 74 - 0
poyee-activity/src/main/java/com/tzy/app/service/IAppActGuessTeamService.java

@@ -0,0 +1,74 @@
+package com.tzy.app.service;
+
+import java.util.List;
+import com.tzy.app.domain.AppActGuessTeam;
+import com.tzy.app.dto.AppActGuessTeamDto;
+import com.tzy.common.dto.OutDTO;
+
+/**
+ * 竞猜队伍Service接口
+ * 
+ * @author tencheer
+ * @date 2022-11-10
+ */
+public interface IAppActGuessTeamService 
+{
+    /**
+     * 查询竞猜队伍
+     * 
+     * @param prizeRefId 竞猜队伍ID
+     * @return 竞猜队伍
+     */
+    public AppActGuessTeam selectAppActGuessTeamById(Long prizeRefId);
+
+    /**
+     * 查询竞猜队伍列表
+     * 
+     * @param appActGuessTeam 竞猜队伍
+     * @return 竞猜队伍集合
+     */
+    public List<AppActGuessTeamDto> selectAppActGuessTeamList(AppActGuessTeam appActGuessTeam);
+
+    /**
+     * 新增竞猜队伍
+     * 
+     * @param appActGuessTeam 竞猜队伍
+     * @return 结果
+     */
+    public int insertAppActGuessTeam(AppActGuessTeam appActGuessTeam);
+
+    /**
+     * 修改竞猜队伍
+     * 
+     * @param appActGuessTeam 竞猜队伍
+     * @return 结果
+     */
+    public int updateAppActGuessTeam(AppActGuessTeam appActGuessTeam);
+
+    /**
+     * 批量删除竞猜队伍
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteAppActGuessTeamByIds(String ids);
+
+    /**
+     * 删除竞猜队伍信息
+     * 
+     * @param prizeRefId 竞猜队伍ID
+     * @return 结果
+     */
+    public int deleteAppActGuessTeamById(Long prizeRefId);
+
+    /**
+     * 公布竞猜结果
+     * @param appActGuessTeam
+     * @return
+     */
+    OutDTO lottery(AppActGuessTeam appActGuessTeam);
+
+    OutDTO sendPrize(Long id);
+
+    OutDTO sendRankPrize(Integer actId);
+}

+ 85 - 0
poyee-activity/src/main/java/com/tzy/app/service/IAppActManageService.java

@@ -0,0 +1,85 @@
+package com.tzy.app.service;
+
+import java.util.List;
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.dto.ActDto;
+import com.tzy.app.dto.AppActivityInfoDto;
+import com.tzy.common.core.domain.AjaxResult;
+
+/**
+ * actManagerService接口
+ * 
+ * @author tencheer
+ * @date 2022-08-08
+ */
+public interface IAppActManageService 
+{
+    /**
+     * 查询actManager
+     * 
+     * @param id actManagerID
+     * @return actManager
+     */
+    public AppActivityInfoDto selectAppActManageById(Long id);
+
+    /**
+     * 查询actManager列表
+     * 
+     * @param appActManage actManager
+     * @return actManager集合
+     */
+    public List<AppActivityInfoDto> selectAppActManageList(AppActManage appActManage);
+
+    /**
+     * 新增actManager
+     * 
+     * @param appActivityInfoDto appActivityInfoDto
+     * @return 结果
+     */
+    public AjaxResult insertAppActManage(AppActivityInfoDto appActivityInfoDto);
+
+    /**
+     * 修改actManager
+     * 
+     * @param appActManage actManager
+     * @return 结果
+     */
+    public int updateAppActManage(AppActManage appActManage);
+
+    /**
+     * 批量删除actManager
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteAppActManageByIds(String ids);
+
+    /**
+     * 删除actManager信息
+     * 
+     * @param id id
+     * @return 结果
+     */
+    public int deleteAppActManageById(Long id);
+
+    /**
+     * 活动克隆
+     * @return
+     */
+    public AjaxResult copyAct(ActDto dto);
+
+    /**
+     * 改变活动状态
+     * @return
+     */
+    public AjaxResult changeActStatus(ActDto dto);
+
+    /**
+     * 查询指定的活动
+     * @param actDto
+     * @return
+     */
+    public List<AppActivityInfoDto> selectActInfos(ActDto actDto);
+
+    List<AppActivityInfoDto> findUnGroupedActs();
+}

+ 79 - 0
poyee-activity/src/main/java/com/tzy/app/service/IAppActPrizeRecordService.java

@@ -0,0 +1,79 @@
+package com.tzy.app.service;
+
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.domain.AppActPrizeRecord;
+import com.tzy.app.dto.AppActivityPrizeRecordDto;
+import com.tzy.app.dto.GiftRecordDTO;
+import com.tzy.app.dto.PrizeRecordQuery;
+
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * actPriceRecordService接口
+ * 
+ * @author tencheer
+ * @date 2022-08-08
+ */
+public interface IAppActPrizeRecordService 
+{
+    /**
+     * 查询actPriceRecord
+     * 
+     * @param id actPriceRecordID
+     * @return actPriceRecord
+     */
+    public AppActivityPrizeRecordDto selectAppActPrizeRecordById(Long id);
+
+    /**
+     * 查询actPriceRecord列表
+     * 
+     * @param appActPrizeRecord actPriceRecord
+     * @return actPriceRecord集合
+     */
+    public int selectAppActPrizeRecordListCount(AppActPrizeRecord appActPrizeRecord);
+    public List<AppActivityPrizeRecordDto> selectAppActPrizeRecordList(AppActPrizeRecord appActPrizeRecord);
+
+    /**
+     * 新增actPriceRecord
+     * 
+     * @param appActPrizeRecord actPriceRecord
+     * @return 结果
+     */
+    public int insertAppActPrizeRecord(AppActPrizeRecord appActPrizeRecord);
+
+    /**
+     * 修改actPriceRecord
+     * 
+     * @param appActPrizeRecord actPriceRecord
+     * @return 结果
+     */
+    public int updateAppActPrizeRecord(AppActPrizeRecord appActPrizeRecord);
+
+    /**
+     * 批量删除actPriceRecord
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteAppActPrizeRecordByIds(String ids);
+
+    /**
+     * 删除actPriceRecord信息
+     * 
+     * @param id actPriceRecordID
+     * @return 结果
+     */
+    public int deleteAppActPrizeRecordById(Long id);
+
+    List<AppActivityPrizeRecordDto> selectAppActPrizeRecordByActId(Long actId);
+
+    LinkedList<LinkedHashMap<String, Object>> countActPoints();
+
+    void batchUpdateAppActPrizeRecord(List<Long> collect);
+
+    PageInfo<GiftRecordDTO> getMerchantGiftRecords(PrizeRecordQuery query);
+
+    List<AppActPrizeRecord> selectLuckyCodeFail();
+}

+ 69 - 0
poyee-activity/src/main/java/com/tzy/app/service/IAppActPrizeService.java

@@ -0,0 +1,69 @@
+package com.tzy.app.service;
+
+import java.util.List;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.dto.ActDto;
+import com.tzy.common.core.domain.AjaxResult;
+
+/**
+ * appActPrizeService接口
+ * 
+ * @author tencheer
+ * @date 2022-08-08
+ */
+public interface IAppActPrizeService 
+{
+    /**
+     * 查询appActPrize
+     * 
+     * @param id appActPrizeID
+     * @return appActPrize
+     */
+    public AppActPrize selectAppActPrizeById(Long id);
+
+    /**
+     * 查询appActPrize列表
+     * 
+     * @param appActPrize appActPrize
+     * @return appActPrize集合
+     */
+    public List<AppActPrize> selectAppActPrizeList(AppActPrize appActPrize);
+
+    /**
+     * 新增appActPrize
+     * 
+     * @param appActPrize appActPrize
+     * @return 结果
+     */
+    public int insertAppActPrize(AppActPrize appActPrize);
+
+    /**
+     * 修改appActPrize
+     * 
+     * @param appActPrize appActPrize
+     * @return 结果
+     */
+    public int updateAppActPrize(AppActPrize appActPrize);
+
+    /**
+     * 批量删除appActPrize
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteAppActPrizeByIds(String ids);
+
+    /**
+     * 删除appActPrize信息
+     * 
+     * @param id appActPrizeID
+     * @return 结果
+     */
+    public int deleteAppActPrizeById(Long id);
+
+    public int selectProbability(AppActPrize appActPrize);
+
+    public AjaxResult changePrizeStatus(ActDto dto);
+
+    int countPrizeRecords(Long actId, Long id);
+}

+ 43 - 0
poyee-activity/src/main/java/com/tzy/app/service/IAppActTaskService.java

@@ -0,0 +1,43 @@
+package com.tzy.app.service;
+
+import com.github.pagehelper.PageInfo;
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.domain.AppActPrizeRecord;
+import com.tzy.app.domain.AppActTaskManage;
+import com.tzy.app.dto.AppActivityInfoDto;
+import com.tzy.app.dto.DrawCardGameLotteryDTO;
+
+
+public interface IAppActTaskService {
+
+    int add(AppActManage appActManage);
+    AppActivityInfoDto get(Long id);
+
+    int edit(AppActManage appActManage);
+
+    int clone(AppActManage appActManage);
+
+    int publish(AppActManage appActManage);
+
+    PageInfo<AppActivityInfoDto> page(AppActManage appActManage);
+
+    int addPrize(AppActPrize appActPrizeList);
+
+    int editPrize(AppActPrize appActPrize);
+
+    PageInfo<AppActPrize> prizePage(AppActPrize appActPrize);
+
+    int publishPrize(Long id, Long status);
+
+    int addTask(AppActTaskManage task);
+
+    int editTask(AppActTaskManage task);
+
+    PageInfo<AppActTaskManage> taskPage(AppActTaskManage task);
+
+    int publishTask(Integer id, Integer status);
+
+    PageInfo<DrawCardGameLotteryDTO> drawRecords(AppActPrizeRecord appActPrizeRecord);
+
+}

+ 46 - 0
poyee-activity/src/main/java/com/tzy/app/service/ILuckyPointService.java

@@ -0,0 +1,46 @@
+package com.tzy.app.service;
+
+import com.tzy.app.domain.AppActManage;
+import com.tzy.app.domain.AppActPrize;
+import com.tzy.app.dto.AppActivityInfoDto;
+import com.tzy.app.dto.LuckyPointDrawListDto;
+import com.tzy.app.dto.LuckyPointJoinRecordDto;
+import com.tzy.app.dto.LuckyPointPrizeDto;
+import com.tzy.common.core.domain.AjaxResult;
+
+import java.util.List;
+
+public interface ILuckyPointService {
+
+    int addAct(AppActManage appActManage);
+
+    int editAct(AppActManage appActManage);
+
+    int updateActStatus(Integer actId, Integer status);
+
+    int addPrize(AppActPrize appActPrize);
+
+    int editPrize(AppActPrize appActPrize);
+
+    List<LuckyPointJoinRecordDto> findJoinRecords(Long actId);
+
+    List<LuckyPointDrawListDto> findDrawLists(Long actId);
+
+    int copyPrize(Long actId);
+
+    List<LuckyPointPrizeDto> findLuckyPointPrizes(Long actId);
+
+    int updateActAuditing(Integer id, Integer status);
+
+    int updatePrizeStatus(AppActPrize appActPrize);
+
+    void drawNotice(Long id);
+
+    int refundPointByRecord(Long recordId);
+
+    int copyActNew(Long id);
+
+    List<AppActivityInfoDto> findCopyActs();
+
+    void refundPointById(Long id);
+}

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini