Browse Source

Merge branch 'test'

# Conflicts:
#	ruixuan-admin/src/main/java/com/ruixuan/RuiXuanApplication.java
zhaoxian 3 years ago
parent
commit
e95e879ed2
39 changed files with 2248 additions and 279 deletions
  1. 276 259
      pom.xml
  2. 15 1
      ruixuan-admin/pom.xml
  3. 3 3
      ruixuan-admin/src/main/java/com/ruixuan/web/controller/tool/SwaggerController.java
  4. 4 4
      ruixuan-admin/src/main/java/com/ruixuan/web/core/config/SwaggerConfig.java
  5. 5 7
      ruixuan-admin/src/main/resources/application-dev.yml
  6. 3 2
      ruixuan-admin/src/main/resources/logback.xml
  7. 1 1
      ruixuan-admin/src/main/resources/mybatis/mybatis-config.xml
  8. 98 0
      ruixuan-common/src/main/java/com/ruixuan/common/core/domain/ResultResponse.java
  9. 12 0
      ruixuan-common/src/main/java/com/ruixuan/common/utils/DateUtils.java
  10. 39 0
      ruixuan-common/src/main/java/com/ruixuan/common/utils/file/FileTypeUtils.java
  11. 7 2
      ruixuan-framework/src/main/java/com/ruixuan/framework/config/SecurityConfig.java
  12. 66 0
      ruixuan-live/pom.xml
  13. 67 0
      ruixuan-salesLeads/pom.xml
  14. 148 0
      ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/controller/DemoController.java
  15. 93 0
      ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/controller/SaleClueInfoController.java
  16. 42 0
      ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/mapper/SaleClueInfoMapper.java
  17. 25 0
      ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/mapper/SaleClueRecordInfoMapper.java
  18. 25 0
      ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/mapper/SaleQuotaInfoMapper.java
  19. 19 0
      ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/mapper/TestMapper.java
  20. 104 0
      ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/pojo/SaleClueInfoPojo.java
  21. 54 0
      ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/pojo/SaleClueRecordInfoPojo.java
  22. 53 0
      ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/pojo/SaleQuotaInfoPojo.java
  23. 34 0
      ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/pojo/TestPojo.java
  24. 25 0
      ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/service/ISaleClueInfoService.java
  25. 17 0
      ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/service/ITestService.java
  26. 180 0
      ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/service/impl/SaleClueInfoServiceImpl.java
  27. 34 0
      ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/service/impl/TestServiceImpl.java
  28. 163 0
      ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/utils/CsvImportUtil.java
  29. 142 0
      ruixuan-salesLeads/src/main/java/com/ruixuan/salesLeads/listener/ImportExcelListener.java
  30. 116 0
      ruixuan-salesLeads/src/main/resources/mapper/salesLeads/SaleClueInfoMapper.xml
  31. 38 0
      ruixuan-salesLeads/src/main/resources/mapper/salesLeads/SaleClueRecordInfoMapper.xml
  32. 40 0
      ruixuan-salesLeads/src/main/resources/mapper/salesLeads/SaleQuotaInfoMapper.xml
  33. 18 0
      ruixuan-salesLeads/src/main/resources/mapper/salesLeads/TestMapper.xml
  34. 105 0
      ruixuan-system/src/main/java/com/ruixuan/system/domain/SysAreaInfo.java
  35. 96 0
      ruixuan-system/src/main/java/com/ruixuan/system/domain/SysIndustryInfo.java
  36. 22 0
      ruixuan-system/src/main/java/com/ruixuan/system/mapper/SysAreaInfoMapper.java
  37. 25 0
      ruixuan-system/src/main/java/com/ruixuan/system/mapper/SysIndustryInfoMapper.java
  38. 17 0
      ruixuan-system/src/main/resources/mapper/system/SysAreaMapper.xml
  39. 17 0
      ruixuan-system/src/main/resources/mapper/system/SysIndustryMapper.xml

+ 276 - 259
pom.xml

@@ -1,260 +1,277 @@
-<?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.ruixuan</groupId>
-    <artifactId>ruixuan</artifactId>
-    <version>3.8.2</version>
-
-  <!--  <name>ruixuan</name>
-    <url>http://www.ruixuan.vip</url>
-    <description>若依管理系统</description>-->
-    
-    <properties>
-        <ruixuan.version>3.8.2</ruixuan.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>
-        <druid.version>1.2.8</druid.version>
-        <bitwalker.version>1.21</bitwalker.version>
-        <swagger.version>3.0.0</swagger.version>
-        <kaptcha.version>2.3.2</kaptcha.version>
-        <mybatis-spring-boot.version>2.2.2</mybatis-spring-boot.version>
-        <pagehelper.boot.version>1.4.1</pagehelper.boot.version>
-        <fastjson.version>1.2.80</fastjson.version>
-        <oshi.version>6.1.2</oshi.version>
-        <jna.version>5.10.0</jna.version>
-        <commons.io.version>2.11.0</commons.io.version>
-        <commons.fileupload.version>1.4</commons.fileupload.version>
-        <commons.collections.version>3.2.2</commons.collections.version>
-        <poi.version>4.1.2</poi.version>
-        <velocity.version>2.3</velocity.version>
-        <jwt.version>0.9.1</jwt.version>
-    </properties>
-	
-    <!-- 依赖声明 -->
-    <dependencyManagement>
-        <dependencies>
-
-            <!-- SpringBoot的依赖配置-->
-            <dependency>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-dependencies</artifactId>
-                <version>2.5.12</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-
-            <!-- 阿里数据库连接池 -->
-            <dependency>
-                <groupId>com.alibaba</groupId>
-                <artifactId>druid-spring-boot-starter</artifactId>
-                <version>${druid.version}</version>
-            </dependency>
-
-            <!-- 解析客户端操作系统、浏览器等 -->
-            <dependency>
-                <groupId>eu.bitwalker</groupId>
-                <artifactId>UserAgentUtils</artifactId>
-                <version>${bitwalker.version}</version>
-            </dependency>
-
-            <!-- SpringBoot集成mybatis框架 -->
-            <dependency>
-                <groupId>org.mybatis.spring.boot</groupId>
-                <artifactId>mybatis-spring-boot-starter</artifactId>
-                <version>${mybatis-spring-boot.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>
-
-            <!-- Swagger3依赖 -->
-            <dependency>
-                <groupId>io.springfox</groupId>
-                <artifactId>springfox-boot-starter</artifactId>
-                <version>${swagger.version}</version>
-                <exclusions>
-                    <exclusion>
-                        <groupId>io.swagger</groupId>
-                        <artifactId>swagger-models</artifactId>
-                    </exclusion>
-                </exclusions>
-            </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-engine-core</artifactId>
-                <version>${velocity.version}</version>
-            </dependency>
-
-            <!-- collections工具类 -->
-            <dependency>
-                <groupId>commons-collections</groupId>
-                <artifactId>commons-collections</artifactId>
-                <version>${commons.collections.version}</version>
-            </dependency>
-
-            <!-- 阿里JSON解析器 -->
-            <dependency>
-                <groupId>com.alibaba</groupId>
-                <artifactId>fastjson</artifactId>
-                <version>${fastjson.version}</version>
-            </dependency>
-
-            <!-- Token生成与解析-->
-            <dependency>
-                <groupId>io.jsonwebtoken</groupId>
-                <artifactId>jjwt</artifactId>
-                <version>${jwt.version}</version>
-            </dependency>
-
-            <!-- 验证码 -->
-            <dependency>
-                <groupId>com.github.penggle</groupId>
-                <artifactId>kaptcha</artifactId>
-                <version>${kaptcha.version}</version>
-            </dependency>
-
-            <!-- 定时任务-->
-            <dependency>
-                <groupId>com.ruixuan</groupId>
-                <artifactId>ruixuan-quartz</artifactId>
-                <version>${ruixuan.version}</version>
-            </dependency>
-
-            <!-- 代码生成-->
-            <dependency>
-                <groupId>com.ruixuan</groupId>
-                <artifactId>ruixuan-generator</artifactId>
-                <version>${ruixuan.version}</version>
-            </dependency>
-
-            <!-- 核心模块-->
-            <dependency>
-                <groupId>com.ruixuan</groupId>
-                <artifactId>ruixuan-framework</artifactId>
-                <version>${ruixuan.version}</version>
-            </dependency>
-
-            <!-- 系统模块-->
-            <dependency>
-                <groupId>com.ruixuan</groupId>
-                <artifactId>ruixuan-system</artifactId>
-                <version>${ruixuan.version}</version>
-            </dependency>
-
-            <!-- 通用工具-->
-            <dependency>
-                <groupId>com.ruixuan</groupId>
-                <artifactId>ruixuan-common</artifactId>
-                <version>${ruixuan.version}</version>
-            </dependency>
-
-        </dependencies>
-    </dependencyManagement>
-
-    <modules>
-        <module>ruixuan-admin</module>
-        <module>ruixuan-framework</module>
-        <module>ruixuan-system</module>
-        <module>ruixuan-quartz</module>
-        <module>ruixuan-generator</module>
-        <module>ruixuan-common</module>
-    </modules>
-    <packaging>pom</packaging>
-
-
-    <dependencies>
-
-    </dependencies>
-
-    <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>https://maven.aliyun.com/repository/public</url>
-            <releases>
-                <enabled>true</enabled>
-            </releases>
-        </repository>
-    </repositories>
-
-    <pluginRepositories>
-        <pluginRepository>
-            <id>public</id>
-            <name>aliyun nexus</name>
-            <url>https://maven.aliyun.com/repository/public</url>
-            <releases>
-                <enabled>true</enabled>
-            </releases>
-            <snapshots>
-                <enabled>false</enabled>
-            </snapshots>
-        </pluginRepository>
-    </pluginRepositories>
-
+<?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.ruixuan</groupId>
+    <artifactId>ruixuan</artifactId>
+    <version>3.8.2</version>
+
+  <!--  <name>ruixuan</name>
+    <url>http://www.ruixuan.vip</url>
+    <description>若依管理系统</description>-->
+    
+    <properties>
+        <ruixuan.version>3.8.2</ruixuan.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>
+        <druid.version>1.2.8</druid.version>
+        <bitwalker.version>1.21</bitwalker.version>
+        <swagger.version>3.0.0</swagger.version>
+        <kaptcha.version>2.3.2</kaptcha.version>
+        <mybatis-spring-boot.version>2.2.2</mybatis-spring-boot.version>
+        <pagehelper.boot.version>1.4.1</pagehelper.boot.version>
+        <fastjson.version>1.2.80</fastjson.version>
+        <oshi.version>6.1.2</oshi.version>
+        <jna.version>5.10.0</jna.version>
+        <commons.io.version>2.11.0</commons.io.version>
+        <commons.fileupload.version>1.4</commons.fileupload.version>
+        <commons.collections.version>3.2.2</commons.collections.version>
+        <poi.version>4.1.2</poi.version>
+        <velocity.version>2.3</velocity.version>
+        <jwt.version>0.9.1</jwt.version>
+    </properties>
+	
+    <!-- 依赖声明 -->
+    <dependencyManagement>
+        <dependencies>
+
+            <!-- SpringBoot的依赖配置-->
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>2.5.12</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+            <!-- 阿里数据库连接池 -->
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>druid-spring-boot-starter</artifactId>
+                <version>${druid.version}</version>
+            </dependency>
+
+            <!-- 解析客户端操作系统、浏览器等 -->
+            <dependency>
+                <groupId>eu.bitwalker</groupId>
+                <artifactId>UserAgentUtils</artifactId>
+                <version>${bitwalker.version}</version>
+            </dependency>
+
+            <!-- SpringBoot集成mybatis框架 -->
+            <dependency>
+                <groupId>org.mybatis.spring.boot</groupId>
+                <artifactId>mybatis-spring-boot-starter</artifactId>
+                <version>${mybatis-spring-boot.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>
+
+            <!-- Swagger3依赖 -->
+            <dependency>
+                <groupId>io.springfox</groupId>
+                <artifactId>springfox-boot-starter</artifactId>
+                <version>${swagger.version}</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>io.swagger</groupId>
+                        <artifactId>swagger-models</artifactId>
+                    </exclusion>
+                </exclusions>
+            </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-engine-core</artifactId>
+                <version>${velocity.version}</version>
+            </dependency>
+
+            <!-- collections工具类 -->
+            <dependency>
+                <groupId>commons-collections</groupId>
+                <artifactId>commons-collections</artifactId>
+                <version>${commons.collections.version}</version>
+            </dependency>
+
+            <!-- 阿里JSON解析器 -->
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>fastjson</artifactId>
+                <version>${fastjson.version}</version>
+            </dependency>
+
+            <!-- Token生成与解析-->
+            <dependency>
+                <groupId>io.jsonwebtoken</groupId>
+                <artifactId>jjwt</artifactId>
+                <version>${jwt.version}</version>
+            </dependency>
+
+            <!-- 验证码 -->
+            <dependency>
+                <groupId>com.github.penggle</groupId>
+                <artifactId>kaptcha</artifactId>
+                <version>${kaptcha.version}</version>
+            </dependency>
+
+            <!-- 定时任务-->
+            <dependency>
+                <groupId>com.ruixuan</groupId>
+                <artifactId>ruixuan-quartz</artifactId>
+                <version>${ruixuan.version}</version>
+            </dependency>
+
+            <!-- 代码生成-->
+            <dependency>
+                <groupId>com.ruixuan</groupId>
+                <artifactId>ruixuan-generator</artifactId>
+                <version>${ruixuan.version}</version>
+            </dependency>
+
+            <!-- 核心模块-->
+            <dependency>
+                <groupId>com.ruixuan</groupId>
+                <artifactId>ruixuan-framework</artifactId>
+                <version>${ruixuan.version}</version>
+            </dependency>
+
+            <!-- 系统模块-->
+            <dependency>
+                <groupId>com.ruixuan</groupId>
+                <artifactId>ruixuan-system</artifactId>
+                <version>${ruixuan.version}</version>
+            </dependency>
+
+            <!-- 通用工具-->
+            <dependency>
+                <groupId>com.ruixuan</groupId>
+                <artifactId>ruixuan-common</artifactId>
+                <version>${ruixuan.version}</version>
+            </dependency>
+
+
+            <!-- 销售线索模块-->
+            <dependency>
+                <groupId>com.ruixuan</groupId>
+                <artifactId>ruixuan-salesLeads</artifactId>
+                <version>${ruixuan.version}</version>
+            </dependency>
+
+            <!-- 直播业务模块-->
+            <dependency>
+                <groupId>com.ruixuan</groupId>
+                <artifactId>ruixuan-live</artifactId>
+                <version>${ruixuan.version}</version>
+            </dependency>
+
+        </dependencies>
+    </dependencyManagement>
+
+    <modules>
+        <module>ruixuan-admin</module>
+        <module>ruixuan-framework</module>
+        <module>ruixuan-system</module>
+        <module>ruixuan-quartz</module>
+        <module>ruixuan-generator</module>
+        <module>ruixuan-common</module>
+        <module>ruixuan-salesLeads</module>
+        <module>ruixuan-live</module>
+    </modules>
+    <packaging>pom</packaging>
+
+
+    <dependencies>
+
+    </dependencies>
+
+    <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>https://maven.aliyun.com/repository/public</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+        </repository>
+    </repositories>
+
+    <pluginRepositories>
+        <pluginRepository>
+            <id>public</id>
+            <name>aliyun nexus</name>
+            <url>https://maven.aliyun.com/repository/public</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </pluginRepository>
+    </pluginRepositories>
+
 </project>
 </project>

+ 15 - 1
ruixuan-admin/pom.xml

@@ -61,8 +61,22 @@
             <artifactId>ruixuan-generator</artifactId>
             <artifactId>ruixuan-generator</artifactId>
         </dependency>
         </dependency>
 
 
-    </dependencies>
 
 
+         <!-- 销售线索模块-->
+        <dependency>
+            <groupId>com.ruixuan</groupId>
+            <artifactId>ruixuan-salesLeads</artifactId>
+        </dependency>
+
+
+         <!-- 直播业务模块-->
+        <dependency>
+            <groupId>com.ruixuan</groupId>
+            <artifactId>ruixuan-live</artifactId>
+        </dependency>
+
+
+    </dependencies>
 
 
     <build>
     <build>
         <resources>
         <resources>

+ 3 - 3
ruixuan-admin/src/main/java/com/ruixuan/web/controller/tool/SwaggerController.java

@@ -12,13 +12,13 @@ import com.ruixuan.common.core.controller.BaseController;
  * @author ruixuan
  * @author ruixuan
  */
  */
 @Controller
 @Controller
-@RequestMapping("/tool/swagger")
+@RequestMapping("/swagger")
 public class SwaggerController extends BaseController
 public class SwaggerController extends BaseController
 {
 {
-    @PreAuthorize("@ss.hasPermi('tool:swagger:view')")
+    //@PreAuthorize("@ss.hasPermi('tool:swagger:view')")
     @GetMapping()
     @GetMapping()
     public String index()
     public String index()
     {
     {
-        return redirect("/swagger-ui.html");
+        return redirect("/swagger-ui/index.html");
     }
     }
 }
 }

+ 4 - 4
ruixuan-admin/src/main/java/com/ruixuan/web/core/config/SwaggerConfig.java

@@ -64,8 +64,8 @@ public class SwaggerConfig
                 .build()
                 .build()
                 /* 设置安全模式,swagger可以设置访问token */
                 /* 设置安全模式,swagger可以设置访问token */
                 .securitySchemes(securitySchemes())
                 .securitySchemes(securitySchemes())
-                .securityContexts(securityContexts())
-                .pathMapping(pathMapping);
+                .securityContexts(securityContexts());
+                //.pathMapping(pathMapping);
     }
     }
 
 
     /**
     /**
@@ -113,9 +113,9 @@ public class SwaggerConfig
         // 用ApiInfoBuilder进行定制
         // 用ApiInfoBuilder进行定制
         return new ApiInfoBuilder()
         return new ApiInfoBuilder()
                 // 设置标题
                 // 设置标题
-                .title("标题:若依管理系统_接口文档")
+                .title("直播数据分析系统-接口文档")
                 // 描述
                 // 描述
-                .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
+                .description("描述:用于管理系统的业务逻辑信息,目前包括[销售线索收集]模块(不包含系统基础信息模块)")
                 // 作者信息
                 // 作者信息
                 .contact(new Contact(ruoyiConfig.getName(), null, null))
                 .contact(new Contact(ruoyiConfig.getName(), null, null))
                 // 版本
                 // 版本

+ 5 - 7
ruixuan-admin/src/main/resources/application-dev.yml

@@ -47,9 +47,9 @@ spring:
     druid:
     druid:
       # 主库数据源
       # 主库数据源
       master:
       master:
-        url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-        username: root
-        password: password
+        url: jdbc:mysql://139.186.165.84:3306/ruixuan?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        username: hcst
+        password: hcst@2020
       # 从库数据源
       # 从库数据源
       slave:
       slave:
         # 从数据源开关/默认关闭
         # 从数据源开关/默认关闭
@@ -100,8 +100,6 @@ spring:
   messages:
   messages:
     # 国际化资源文件路径
     # 国际化资源文件路径
     basename: i18n/messages
     basename: i18n/messages
-  profiles: 
-    active: druid
   # 文件上传
   # 文件上传
   servlet:
   servlet:
      multipart:
      multipart:
@@ -117,13 +115,13 @@ spring:
   # redis 配置
   # redis 配置
   redis:
   redis:
     # 地址
     # 地址
-    host: localhost
+    host: 127.0.0.1
     # 端口,默认为6379
     # 端口,默认为6379
     port: 6379
     port: 6379
     # 数据库索引
     # 数据库索引
     database: 0
     database: 0
     # 密码
     # 密码
-    password: 
+    password:
     # 连接超时时间
     # 连接超时时间
     timeout: 10s
     timeout: 10s
     lettuce:
     lettuce:

+ 3 - 2
ruixuan-admin/src/main/resources/logback.xml

@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
 <configuration>
     <!-- 日志存放路径 -->
     <!-- 日志存放路径 -->
-	<property name="log.path" value="/home/ruoyi/logs" />
+	<property name="log.path" value="../ruixuanLogs" />
+
     <!-- 日志输出格式 -->
     <!-- 日志输出格式 -->
 	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
 	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
 
 
@@ -72,7 +73,7 @@
     </appender>
     </appender>
 	
 	
 	<!-- 系统模块日志级别控制  -->
 	<!-- 系统模块日志级别控制  -->
-	<logger name="com.ruoyi" level="info" />
+	<logger name="com.ruixuan" level="debug" />
 	<!-- Spring日志级别控制  -->
 	<!-- Spring日志级别控制  -->
 	<logger name="org.springframework" level="warn" />
 	<logger name="org.springframework" level="warn" />
 
 

+ 1 - 1
ruixuan-admin/src/main/resources/mybatis/mybatis-config.xml

@@ -14,7 +14,7 @@ PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 		<!-- 指定 MyBatis 所用日志的具体实现 -->
 		<!-- 指定 MyBatis 所用日志的具体实现 -->
         <setting name="logImpl"                  value="SLF4J"  />
         <setting name="logImpl"                  value="SLF4J"  />
         <!-- 使用驼峰命名法转换字段 -->
         <!-- 使用驼峰命名法转换字段 -->
-		<!-- <setting name="mapUnderscoreToCamelCase" value="true"/> -->
+		 <setting name="mapUnderscoreToCamelCase" value="true"/>
 	</settings>
 	</settings>
 	
 	
 </configuration>
 </configuration>

+ 98 - 0
ruixuan-common/src/main/java/com/ruixuan/common/core/domain/ResultResponse.java

@@ -0,0 +1,98 @@
+package com.ruixuan.common.core.domain;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: 返回数据统一处理结果
+ *       框架自带的处理返回结果 com.ruixuan.common.core.domain.AjaxResult 不支持swagger 显示返回数据结果
+ * @CreateDate: 2022-05-19
+ * ****************************************************
+ */
+
+
+public class ResultResponse<T> {
+
+
+    /**
+     * 返回状态码
+     */
+    private final int code;
+
+    /**
+     * 返回消息
+     */
+    private final String msg;
+
+    /**
+     * 返回数据
+     */
+    private final T data;
+
+
+    public int getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public T getData() {
+        return data;
+    }
+
+    private ResultResponse(int code, String msg, T data) {
+        this.code = code;
+        this.msg = msg;
+        this.data = data;
+    }
+
+    public static <T> ResultResponse<T> result(int code, String msg, T data) {
+        return new ResultResponse<>(code, msg, data);
+    }
+
+    public static <T> ResultResponse<T> successMsg(String msg, T data) {
+        return new ResultResponse<>(200, msg, data);
+    }
+
+
+
+    public static <T> ResultResponse<T> success() {
+        return success(null);
+    }
+
+    public static <T> ResultResponse<T> success(T data) {
+        return result(200, Constant.SUCCESS, data);
+    }
+
+    public static <T> ResultResponse<T> error(int code, String msg) {
+        return error(code, msg, null);
+    }
+
+    public static <T> ResultResponse<T> error(int code, String msg, T data) {
+        return result(code, msg, data);
+    }
+
+    public static <T> ResultResponse<T> error(String msg, T data) {
+        return error(5001, msg, data);
+    }
+
+    public static <T> ResultResponse<T> error(String msg) {
+        return error(msg, null);
+    }
+
+    public static <T> ResultResponse<T> error() {
+        return error(Constant.ERROR);
+    }
+
+    public static class Constant {
+
+        private Constant() {
+        }
+
+        public static final String SUCCESS = "success";
+
+        public static final String ERROR = "error";
+    }
+}

+ 12 - 0
ruixuan-common/src/main/java/com/ruixuan/common/utils/DateUtils.java

@@ -184,4 +184,16 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
         ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
         return Date.from(zdt.toInstant());
         return Date.from(zdt.toInstant());
     }
     }
+
+
+    /**
+     * 时间字符串转long类型
+     *  2022-05-01 ===>>>> 20220501
+     * @param date
+     * @return
+     */
+    public static Long strDateToInt(String date){
+
+        return Long.getLong(date.replaceAll("-",""));
+    }
 }
 }

+ 39 - 0
ruixuan-common/src/main/java/com/ruixuan/common/utils/file/FileTypeUtils.java

@@ -2,6 +2,7 @@ package com.ruixuan.common.utils.file;
 
 
 import java.io.File;
 import java.io.File;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.multipart.MultipartFile;
 
 
 /**
 /**
  * 文件类型工具类
  * 文件类型工具类
@@ -73,4 +74,42 @@ public class FileTypeUtils
         }
         }
         return strFileExtendName;
         return strFileExtendName;
     }
     }
+
+
+    /**
+     * 判断文件是否为excel 或 csv
+     * @param file
+     * @return
+     */
+    public static boolean fileNameSuffix(MultipartFile file){
+        String fileName = file.getOriginalFilename();
+
+        if (fileName.endsWith(".xls") || fileName.endsWith(".xlsx") || fileName.endsWith(".csv")){
+            return true;
+        }
+
+        return false;
+    }
+
+
+     /**
+     * 返回文件类型 - excel 或者 csv
+     * @param file
+     * @return
+     */
+    public static String gerFileTypeXlsOrCsv(MultipartFile file){
+        String fileName = file.getOriginalFilename();
+
+        if (fileName.endsWith(".xls") || fileName.endsWith(".xlsx")){
+            return "excel";
+        }
+        if (fileName.endsWith(".csv")){
+            return "csv";
+        }
+        return null;
+    }
+
+
+
+
 }
 }

+ 7 - 2
ruixuan-framework/src/main/java/com/ruixuan/framework/config/SecurityConfig.java

@@ -72,7 +72,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
     /**
     /**
      * anyRequest          |   匹配所有请求路径
      * anyRequest          |   匹配所有请求路径
      * access              |   SpringEl表达式结果为true时可以访问
      * access              |   SpringEl表达式结果为true时可以访问
-     * anonymous           |   匿名可以访问
+     * anonymous           |   匿名可以访问 所有人都能访问,但是带上 token 访问后会报错
      * denyAll             |   用户不能访问
      * denyAll             |   用户不能访问
      * fullyAuthenticated  |   用户完全认证可以访问(非remember-me下自动登录)
      * fullyAuthenticated  |   用户完全认证可以访问(非remember-me下自动登录)
      * hasAnyAuthority     |   如果有参数,参数表示权限,则其中任何一个权限可以访问
      * hasAnyAuthority     |   如果有参数,参数表示权限,则其中任何一个权限可以访问
@@ -80,7 +80,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
      * hasAuthority        |   如果有参数,参数表示权限,则其权限可以访问
      * hasAuthority        |   如果有参数,参数表示权限,则其权限可以访问
      * hasIpAddress        |   如果有参数,参数表示IP地址,如果用户IP和参数匹配,则可以访问
      * hasIpAddress        |   如果有参数,参数表示IP地址,如果用户IP和参数匹配,则可以访问
      * hasRole             |   如果有参数,参数表示角色,则其角色可以访问
      * hasRole             |   如果有参数,参数表示角色,则其角色可以访问
-     * permitAll           |   用户可以任意访问
+     * permitAll           |   用户可以任意访问 方法所有人都能访问,包括带上 token 访问
      * rememberMe          |   允许通过remember-me登录的用户访问
      * rememberMe          |   允许通过remember-me登录的用户访问
      * authenticated       |   用户登录后可访问
      * authenticated       |   用户登录后可访问
      */
      */
@@ -112,6 +112,11 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .antMatchers("/webjars/**").anonymous()
                 .antMatchers("/webjars/**").anonymous()
                 .antMatchers("/*/api-docs").anonymous()
                 .antMatchers("/*/api-docs").anonymous()
                 .antMatchers("/druid/**").anonymous()
                 .antMatchers("/druid/**").anonymous()
+                    .antMatchers("/swagger/**").permitAll()
+                    .antMatchers("/test/**").permitAll()
+                    .antMatchers("/demoController/**").permitAll()
+                    .antMatchers("/sale/**").permitAll()
+
                 // 除上面外的所有请求全部需要鉴权认证
                 // 除上面外的所有请求全部需要鉴权认证
                 .anyRequest().authenticated()
                 .anyRequest().authenticated()
                 .and()
                 .and()

+ 66 - 0
ruixuan-live/pom.xml

@@ -0,0 +1,66 @@
+<?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>ruixuan</artifactId>
+        <groupId>com.ruixuan</groupId>
+        <version>3.8.2</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>ruixuan-live</artifactId>
+
+    <description>
+        直播业务模块
+    </description>
+
+    <dependencies>
+
+        <!-- 通用工具-->
+        <dependency>
+            <groupId>com.ruixuan</groupId>
+            <artifactId>ruixuan-common</artifactId>
+        </dependency>
+
+        <!-- system-->
+        <dependency>
+            <groupId>com.ruixuan</groupId>
+            <artifactId>ruixuan-system</artifactId>
+        </dependency>
+
+
+        <!-- 防止进入swagger页面报类型转换错误,排除3.0.0中的引用,手动增加1.6.2版本 -->
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-models</artifactId>
+            <version>1.6.2</version>
+        </dependency>
+
+        <!-- lombok-->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.16.20</version>
+            <scope>provided</scope>
+        </dependency>
+
+
+        <!-- excel-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>3.0.5</version>
+        </dependency>
+
+
+        <!-- csv -->
+        <dependency>
+            <groupId>de.siegmar</groupId>
+            <artifactId>fastcsv</artifactId>
+            <version>1.0.3</version>
+        </dependency>
+
+    </dependencies>
+
+</project>

+ 67 - 0
ruixuan-salesLeads/pom.xml

@@ -0,0 +1,67 @@
+<?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>ruixuan</artifactId>
+        <groupId>com.ruixuan</groupId>
+        <version>3.8.2</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>ruixuan-salesLeads</artifactId>
+
+
+    <description>
+        销售线索模块
+    </description>
+
+    <dependencies>
+
+        <!-- 通用工具-->
+        <dependency>
+            <groupId>com.ruixuan</groupId>
+            <artifactId>ruixuan-common</artifactId>
+        </dependency>
+
+        <!-- system-->
+        <dependency>
+            <groupId>com.ruixuan</groupId>
+            <artifactId>ruixuan-system</artifactId>
+        </dependency>
+
+
+        <!-- 防止进入swagger页面报类型转换错误,排除3.0.0中的引用,手动增加1.6.2版本 -->
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-models</artifactId>
+            <version>1.6.2</version>
+        </dependency>
+
+        <!-- lombok-->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.16.20</version>
+            <scope>provided</scope>
+        </dependency>
+
+
+        <!-- excel-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>3.0.5</version>
+        </dependency>
+
+
+        <!-- csv -->
+        <dependency>
+            <groupId>de.siegmar</groupId>
+            <artifactId>fastcsv</artifactId>
+            <version>1.0.3</version>
+        </dependency>
+
+    </dependencies>
+
+</project>

+ 148 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/controller/DemoController.java

@@ -0,0 +1,148 @@
+package com.ruixuan.salesLeads.controller;
+
+import com.alibaba.excel.EasyExcel;
+import com.ruixuan.common.core.controller.BaseController;
+import com.ruixuan.common.core.domain.AjaxResult;
+import com.ruixuan.common.core.domain.ResultResponse;
+import com.ruixuan.common.utils.StringUtils;
+import com.ruixuan.common.utils.poi.ExcelUtil;
+import com.ruixuan.salesLeads.listener.ImportExcelListener;
+import com.ruixuan.salesLeads.pojo.SaleClueInfoPojo;
+import com.ruixuan.salesLeads.pojo.TestPojo;
+import com.ruixuan.salesLeads.service.ITestService;
+import de.siegmar.fastcsv.reader.CsvContainer;
+import de.siegmar.fastcsv.reader.CsvReader;
+import de.siegmar.fastcsv.reader.CsvRow;
+import io.swagger.annotations.*;
+import org.apache.poi.ss.formula.functions.T;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.lang.reflect.Field;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: demo测试
+ * @CreateDate: 2022-05-19
+ * ****************************************************
+ */
+
+
+@Api(tags = "测试",description = "demoController")
+@RestController
+@RequestMapping("/demoController")
+public class DemoController extends BaseController {
+
+
+    @Autowired
+    private ITestService testServiceImpl;
+
+
+
+
+    @ApiOperation("获取用户列表")
+    @GetMapping("/demoList")
+    public ResultResponse<List<TestPojo>> userList()
+    {
+
+        //startPage();
+        return testServiceImpl.selectDemoList();
+    }
+
+
+
+
+    @ApiOperation(value = "导入",notes = "swagger不支持上传,请移步使用postman上传仅支持form-data。")
+    @PostMapping(value = "/importExcel")
+    public ResultResponse importExcel(@ModelAttribute
+                                      //@ApiParam("wenjianwenjian") @RequestParam("file") MultipartFile file,
+                                      //@ApiParam("aaa") @RequestParam("aa") String aa,
+                                       TestPojo testPojo) throws Exception{
+
+
+
+         //读取Excel
+        EasyExcel.read(testPojo.getFile().getInputStream(),null,
+                    new ImportExcelListener()).sheet().headRowNumber(1).doRead();
+
+
+        // 从监听中获取结果集
+        List<Map<String,String>> dataList = ImportExcelListener.importDataList;
+        Map<Integer, String> headList = ImportExcelListener.importHeadList;
+
+        logger.info("--结果shuju---{}",dataList);
+        logger.info("--结果表头---{}",headList);
+
+
+
+        //System.out.println("--转化--"+SalesleadsInfoPojo.SalesleadsInfoPojoInit(dataList));
+
+        ImportExcelListener.importDataList.clear();
+        ImportExcelListener.importHeadList.clear();
+
+
+
+
+//        // 得到Class类对象
+//        Class<?> clazz = Class.forName("com.ruixuan.salesLeads.pojo.SalesleadsInfoPojo");
+//
+//        // 获取类的所有属性
+//        Field[] fields = clazz.getDeclaredFields();
+//
+//
+//        Map<String,String> map = new HashMap<>();
+//
+//
+//        for (int i = 0; i < headList.size(); i++) {
+//
+//
+//            for (Field field : fields) {
+//                ApiModelProperty myField2 = field.getAnnotation(ApiModelProperty.class);
+//
+//                System.out.println(myField2.value());
+//                System.out.println(field.getName());
+//
+//                if (headList.containsKey(myField2.value())){
+//                    System.out.println("包含属性---"+field.getName());
+//                }
+//
+//            }
+//
+//        }
+
+        //startPage();
+        return ResultResponse.successMsg("cheng.",null);
+    }
+
+    @ApiOperation(value = "导入",notes = "swagger不支持上传,请移步使用postman上传仅支持form-data。")
+    @PostMapping(value = "/importCsv")
+    public ResultResponse importExcel(
+                                      @ApiParam("wenjianwenjian") @RequestParam("file") MultipartFile file
+
+                                       ) throws Exception{
+
+
+
+
+
+
+
+
+
+        //logger.info("jieguo====>>>{}",lisMap);
+
+
+
+        return ResultResponse.successMsg("cheng.",null);
+    }
+
+}

+ 93 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/controller/SaleClueInfoController.java

@@ -0,0 +1,93 @@
+package com.ruixuan.salesLeads.controller;
+
+import com.alibaba.excel.EasyExcel;
+import com.ruixuan.common.core.controller.BaseController;
+import com.ruixuan.common.core.domain.ResultResponse;
+import com.ruixuan.common.utils.DateUtils;
+import com.ruixuan.common.utils.StringUtils;
+import com.ruixuan.common.utils.file.FileTypeUtils;
+import com.ruixuan.salesLeads.listener.ImportExcelListener;
+import com.ruixuan.salesLeads.pojo.SaleClueInfoPojo;
+import com.ruixuan.salesLeads.pojo.TestPojo;
+import com.ruixuan.salesLeads.service.ISaleClueInfoService;
+import com.ruixuan.salesLeads.service.ITestService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: 销售线索
+ * @CreateDate: 2022-05-19
+ * ****************************************************
+ */
+
+
+@Api(tags = "销售线索",description = "saleClueInfoController")
+@RestController
+@RequestMapping("sale/saleClueInfoController")
+public class SaleClueInfoController extends BaseController {
+
+
+    @Autowired
+    private ISaleClueInfoService saleClueInfoServiceImpl;
+
+
+
+
+
+
+
+    @ApiOperation(value = "销售线索上传",notes = "swagger不支持上传,请使用postman上传,支持form-data。文件绑定参数为files,支持文件数组")
+    @PostMapping(value = "/importSaleExcelOrCsv")
+    public ResultResponse importSaleExcelOrCsv(
+                                      @ApiParam("文件数组") @RequestParam("files") List<MultipartFile> files,
+                                      @ApiParam("销售线索类型1:50W低潜;2:50W中高潜;3:200W高潜;4:200W-500w;5:500W") @RequestParam("salesLeadsType") int salesLeadsType,
+                                      @ApiParam("年-月") @RequestParam("uploadDate") String uploadDate,
+                                      @ApiParam("创建人") @RequestParam("createUserId") Long createUserId
+                                      ) throws Exception{
+        if (files.isEmpty()){
+            return ResultResponse.error("文件不能为空,请选择文件!");
+        }
+        for (MultipartFile file : files) {
+           if (!FileTypeUtils.fileNameSuffix(file)){
+               return ResultResponse.error("请上传正确格式的文件,支持扩展名.xls;.xlsx;.csv");
+           }
+        }
+        Long year = DateUtils.strDateToInt(uploadDate);
+        return saleClueInfoServiceImpl.importSaleExcelOrCsv(files,salesLeadsType,year,createUserId);
+    }
+
+
+
+
+
+    @ApiOperation(value = "销售线索列表查询",notes = "销售线索列表查询,查询条件为空时,所对应的字段可以不传。")
+    @GetMapping(value = "/selectSaleClueInfoList")
+    public ResultResponse<List<SaleClueInfoPojo>> selectSaleClueInfoList(
+            @ApiParam("卖家昵称") @RequestParam(value = "sellerName",required = false) String sellerName,
+            @ApiParam("年-月") @RequestParam(value = "uploadDate", required = false) String uploadDate,
+            @ApiParam("是否分配销售 0-否 1-是") @RequestParam(value = "distributionSaleFlag",required = false)String distributionSaleFlag,
+            @ApiParam("行业id") @RequestParam(value = "industryId",required = false)String industryId,
+            @ApiParam("粉丝量级 1:0~50w 2:50W~200W 3:200W~500W 4:500W以上") @RequestParam(value = "fansType",required = false)String fansType,
+            @ApiParam("创建人") @RequestParam(value = "createUserId",required = false) Long createUserId) throws Exception{
+
+        return saleClueInfoServiceImpl.selectSaleClueInfoList(sellerName,
+                StringUtils.isEmpty(uploadDate) ? null : DateUtils.strDateToInt(uploadDate),
+                distributionSaleFlag,industryId,fansType, createUserId);
+
+    }
+
+
+
+
+}

+ 42 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/mapper/SaleClueInfoMapper.java

@@ -0,0 +1,42 @@
+package com.ruixuan.salesLeads.mapper;
+
+import com.ruixuan.salesLeads.pojo.SaleClueInfoPojo;
+import com.ruixuan.salesLeads.pojo.TestPojo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: 销售线索
+ * @CreateDate: 2022-05-19
+ * ****************************************************
+ */
+public interface SaleClueInfoMapper {
+
+
+    /**
+     * 批量新增销售线索
+     * @param saleClueList
+     */
+    void replaceSaleClueInfoBatch(@Param(value = "saleClueList") List<SaleClueInfoPojo> saleClueList);
+
+    /**
+     * 查询销售线索信息
+     * @param sellerName 卖家昵称
+     * @param uploadDate 上传日期 202205
+     * @param distributionSaleFlag 是否分配销售 0-否 1-是
+     * @param industryId 行业id
+     * @param fansType 粉丝类别
+     * @param createUserId
+     * @return
+     */
+    List<SaleClueInfoPojo> selectSaleClueInfoList(@Param(value = "sellerName") String sellerName,
+                                                  @Param(value = "uploadDate") Long uploadDate,
+                                                  @Param(value = "distributionSaleFlag") String distributionSaleFlag,
+                                                  @Param(value = "industryId") String industryId,
+                                                  @Param(value = "fansType") String fansType,
+                                                  @Param(value = "createUserId") Long createUserId);
+}

+ 25 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/mapper/SaleClueRecordInfoMapper.java

@@ -0,0 +1,25 @@
+package com.ruixuan.salesLeads.mapper;
+
+import com.ruixuan.salesLeads.pojo.SaleClueRecordInfoPojo;
+import com.ruixuan.salesLeads.pojo.SaleQuotaInfoPojo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: 销售线索-跟进记录
+ * @CreateDate: 2022-05-30
+ * ****************************************************
+ */
+public interface SaleClueRecordInfoMapper {
+
+
+    /**
+     *
+     * @param
+     */
+    SaleClueRecordInfoPojo getSaleClueRecordNumber(@Param(value = "sellerId") Long sellerId, @Param(value = "number")int number);
+}

+ 25 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/mapper/SaleQuotaInfoMapper.java

@@ -0,0 +1,25 @@
+package com.ruixuan.salesLeads.mapper;
+
+import com.ruixuan.salesLeads.pojo.SaleClueInfoPojo;
+import com.ruixuan.salesLeads.pojo.SaleQuotaInfoPojo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: 销售线索-额度
+ * @CreateDate: 2022-05-19
+ * ****************************************************
+ */
+public interface SaleQuotaInfoMapper {
+
+
+    /**
+     * 批量新增销售线索-额度
+     * @param saleQuotaList
+     */
+    void replaceSaleQuotaInfoBatch(@Param(value = "saleQuotaList") List<SaleQuotaInfoPojo> saleQuotaList);
+}

+ 19 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/mapper/TestMapper.java

@@ -0,0 +1,19 @@
+package com.ruixuan.salesLeads.mapper;
+
+import com.ruixuan.salesLeads.pojo.TestPojo;
+
+import java.util.List;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: TODO
+ * @CreateDate: 2022-05-19
+ * ****************************************************
+ */
+public interface TestMapper {
+
+
+    List<TestPojo> selectDemoList();
+}

+ 104 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/pojo/SaleClueInfoPojo.java

@@ -0,0 +1,104 @@
+package com.ruixuan.salesLeads.pojo;
+
+import com.ruixuan.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: 销售线索信息表
+ * @CreateDate: 2022-05-24
+ * ****************************************************
+ */
+
+
+@Data
+@ApiModel(value = "saleClueInfoPojo", description = "销售线索")
+public class SaleClueInfoPojo {
+
+
+    private int id;
+
+    @ApiModelProperty("销售线索类型1:50W低潜;2:50W中高潜;3:200W高潜;4:200W-500w;5:500W")
+    private int salesLeadsType;
+
+    @ApiModelProperty("卖家id")
+    private Long sellerId;
+
+    @ApiModelProperty("'卖家昵称'")
+    private String sellerName;
+
+    @ApiModelProperty("粉丝数")
+    private Long fans;
+
+    @ApiModelProperty("所属行业")
+    private int industryId;
+    @ApiModelProperty("所属行业")
+    private String industryName;
+
+    @ApiModelProperty("常驻省份")
+    private int provinceId;
+    @ApiModelProperty("常驻省份")
+    private String provinceName;
+
+    @ApiModelProperty("常驻城市")
+    private int cityId;
+    @ApiModelProperty("常驻城市")
+    private String cityName;
+
+    @ApiModelProperty("联系方式")
+    private Long telephone;
+
+    @ApiModelProperty("卖家是否绑定服务商 0-否 1-是'")
+    private int providerFlag;
+
+    @ApiModelProperty("是否跃迁 0-否 1-是'")
+    private int transitionFlag;
+
+    @ApiModelProperty("月份")
+    private int uploadDate;
+
+    @ApiModelProperty("是否分配销售 0-否 1-是'")
+    private int distributionSaleFlag;
+
+    @ApiModelProperty("销售人员id")
+    private Long saleId;
+
+    @ApiModelProperty("进行状态 1-未开始 2-进行中 3-已结束")
+    private int state;
+
+    @ApiModelProperty("是否转面销 0-否 1-是")
+    private int offlineSaleFlag;
+
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+
+    @ApiModelProperty("创建时间")
+    private String createTime;
+
+    @ApiModelProperty("更新人")
+    private Long updateUserId;
+
+    @ApiModelProperty("更新时间")
+    private String updateTime;
+
+
+    @ApiModelProperty("第一次跟进情况")
+    private SaleClueRecordInfoPojo firstRecord;
+    @ApiModelProperty("第二次跟进情况")
+    private SaleClueRecordInfoPojo secondRecord;
+
+
+
+
+
+
+
+}

+ 54 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/pojo/SaleClueRecordInfoPojo.java

@@ -0,0 +1,54 @@
+package com.ruixuan.salesLeads.pojo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: 销售线索-跟进记录信息表
+ * @CreateDate: 2022-05-30
+ * ****************************************************
+ */
+
+
+@Data
+@ApiModel(value = "saleClueRecordInfoPojo", description = "销售线索-跟进记录信息表")
+public class SaleClueRecordInfoPojo {
+
+
+    private int id;
+
+    @ApiModelProperty("卖家id")
+    private Long sellerId;
+
+    @ApiModelProperty("当前跟进次数")
+    private int recordTimes;
+
+    @ApiModelProperty("跟进话术1-扶持 2-活动")
+    private int recordScript;
+
+    @ApiModelProperty("是否继续跟进 1-继续跟进 2-意向合作 3-跟进完成无合作")
+    private int continueFlag;
+
+    @ApiModelProperty("意向合作 1-不合作可跟进 2-添加微信 3-操盘合作 4-服务商合作 5-金牛合作 6-无法添加微信")
+    private int intendedCooperation;
+
+    @ApiModelProperty("跟进详情")
+    private String recordInfo;
+
+    @ApiModelProperty("备注")
+    private String remarks;
+
+
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+
+    @ApiModelProperty("创建时间")
+    private String createTime;
+
+
+
+}

+ 53 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/pojo/SaleQuotaInfoPojo.java

@@ -0,0 +1,53 @@
+package com.ruixuan.salesLeads.pojo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: 销售线索-额度信息表
+ * @CreateDate: 2022-05-24
+ * ****************************************************
+ */
+
+
+@Data
+@ApiModel(value = "saleQuotaInfoPojo", description = "销售线索-额度")
+public class SaleQuotaInfoPojo {
+
+
+    private int id;
+
+
+    @ApiModelProperty("卖家id")
+    private Long sellerId;
+
+    @ApiModelProperty("'近30天'")
+    private String nearlyThirtyDays;
+
+    @ApiModelProperty("gmv月份")
+    private Long gmvMonth;
+
+    @ApiModelProperty("gmv")
+    private String gmv;
+
+    @ApiModelProperty("mtd日期")
+    private Long mtdDate;
+
+    @ApiModelProperty("mtd")
+    private String mtd;
+
+
+
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+
+    @ApiModelProperty("创建时间")
+    private String createTime;
+
+
+
+}

+ 34 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/pojo/TestPojo.java

@@ -0,0 +1,34 @@
+package com.ruixuan.salesLeads.pojo;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: demo测试
+ * @CreateDate: 2022-05-19
+ * ****************************************************
+ */
+
+@Data
+@ApiModel(value = "testPojo", description = "测试demo")
+public class TestPojo {
+
+
+    @ApiModelProperty("用户ID")
+    private Long userId;
+
+    @ApiModelProperty("角色ID")
+    private Long roleId;
+
+    @ApiModelProperty("实体中的文件")
+    private MultipartFile file;
+
+}

+ 25 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/service/ISaleClueInfoService.java

@@ -0,0 +1,25 @@
+package com.ruixuan.salesLeads.service;
+
+import com.ruixuan.common.core.domain.ResultResponse;
+import com.ruixuan.salesLeads.pojo.SaleClueInfoPojo;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: demo测试
+ * @CreateDate: 2022-05-19
+ * ****************************************************
+ */
+public interface ISaleClueInfoService {
+
+
+    ResultResponse importSaleExcelOrCsv(List<MultipartFile> files,int salesLeadsType,Long uploadDate,Long createUserId)throws Exception;
+
+
+    ResultResponse<List<SaleClueInfoPojo>> selectSaleClueInfoList(String sellerName, Long uploadDate, String distributionSaleFlag, String industryId, String fansType, Long createUserId)throws Exception;
+}

+ 17 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/service/ITestService.java

@@ -0,0 +1,17 @@
+package com.ruixuan.salesLeads.service;
+
+import com.ruixuan.common.core.domain.ResultResponse;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: demo测试
+ * @CreateDate: 2022-05-19
+ * ****************************************************
+ */
+public interface ITestService {
+
+
+    ResultResponse selectDemoList();
+}

+ 180 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/service/impl/SaleClueInfoServiceImpl.java

@@ -0,0 +1,180 @@
+package com.ruixuan.salesLeads.service.impl;
+
+import com.alibaba.excel.EasyExcel;
+import com.ruixuan.common.core.domain.ResultResponse;
+import com.ruixuan.common.utils.PageUtils;
+import com.ruixuan.common.utils.StringUtils;
+import com.ruixuan.common.utils.file.FileTypeUtils;
+import com.ruixuan.salesLeads.listener.ImportExcelListener;
+import com.ruixuan.salesLeads.mapper.SaleClueInfoMapper;
+import com.ruixuan.salesLeads.mapper.SaleClueRecordInfoMapper;
+import com.ruixuan.salesLeads.mapper.SaleQuotaInfoMapper;
+import com.ruixuan.salesLeads.pojo.SaleClueInfoPojo;
+import com.ruixuan.salesLeads.pojo.SaleQuotaInfoPojo;
+import com.ruixuan.salesLeads.service.ISaleClueInfoService;
+import com.ruixuan.salesLeads.utils.CsvImportUtil;
+import com.ruixuan.system.domain.SysAreaInfo;
+import com.ruixuan.system.domain.SysIndustryInfo;
+import com.ruixuan.system.mapper.SysAreaInfoMapper;
+import com.ruixuan.system.mapper.SysIndustryInfoMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: demo测试
+ * @CreateDate: 2022-05-19
+ * ****************************************************
+ */
+@Service
+@Slf4j
+public class SaleClueInfoServiceImpl implements ISaleClueInfoService {
+
+
+    @Autowired
+    private SaleClueInfoMapper saleClueInfoMapper;
+
+
+    @Autowired
+    private SaleQuotaInfoMapper saleQuotaInfoMapper;
+
+    @Autowired
+    private SysIndustryInfoMapper sysIndustryInfoMapper;
+
+    @Autowired
+    private SysAreaInfoMapper sysAreaInfoMapper;
+
+
+
+
+    /**
+     * Author: zianY
+     * Description: 销售线索添加
+     * 支持excel 和 csv 文件上传
+     *------------
+     * @param files
+     * @param salesLeadsType 销售线索类型1:50W低潜;2:50W中高潜;3:200W高潜;4:200W-500w;5:500W
+     * @param uploadDate 时间 格式为202205
+     * @param createUserId
+     *------------
+     * Return com.ruixuan.common.core.domain.ResultResponse
+     */
+    @Override
+    public ResultResponse importSaleExcelOrCsv(List<MultipartFile> files, int salesLeadsType, Long uploadDate, Long createUserId) throws Exception{
+
+        List<Map<String,String>> dataList = new ArrayList<>();
+        for (MultipartFile file : files) {
+            //文件类型
+            String fileType = FileTypeUtils.gerFileTypeXlsOrCsv(file);
+            if (StringUtils.equals("excel",fileType)){
+                //读取Excel
+                EasyExcel.read(file.getInputStream(),null,
+                            new ImportExcelListener()).sheet().headRowNumber(1).doRead();
+                //头 信息
+                //Map<Integer, String> headList = ImportExcelListener.importHeadList;
+                //结果集
+                dataList = ImportExcelListener.importDataList;
+
+            }
+
+            if (StringUtils.equals("csv",fileType)){
+                dataList = CsvImportUtil.readCSV(file);
+            }
+            //处理数据结果
+            resultData(dataList,salesLeadsType,createUserId);
+
+            //excel 清除监听数据
+            ImportExcelListener.importDataList.clear();
+            ImportExcelListener.importHeadList.clear();
+        }
+
+        return ResultResponse.successMsg("保存成功",null);
+    }
+
+
+    /**
+     * 处理销售线索 数据结果
+     * @param dataList
+     * @param salesLeadsType
+     * @param createUserId
+     */
+    public void resultData(List<Map<String,String>> dataList,int salesLeadsType,Long createUserId){
+        List<SaleClueInfoPojo> clueList = new ArrayList<>();
+        List<SaleQuotaInfoPojo> quotaList = new ArrayList<>();
+        for (Map<String, String> dataMap : dataList) {
+            SaleClueInfoPojo clue = new SaleClueInfoPojo();
+            SaleQuotaInfoPojo quota = new SaleQuotaInfoPojo();
+
+            clue.setSalesLeadsType(salesLeadsType);
+            clue.setSellerId(Long.valueOf(dataMap.get("sellerId")));
+            clue.setSellerName(dataMap.get("sellerName"));
+            clue.setFans(Long.valueOf(dataMap.get("fans")));
+            clue.setTelephone(Long.valueOf(dataMap.get("telephone")));
+            clue.setProviderFlag(dataMap.get("providerFlag").equals("否") ? 0 : 1);
+            clue.setTransitionFlag(Integer.valueOf(dataMap.get("transitionFlag")));
+            clue.setCreateUserId(createUserId);
+            //查询行业
+            SysIndustryInfo industryInfo = sysIndustryInfoMapper.getIndustryInfoByName(dataMap.get("industryId"));
+            clue.setIndustryId(StringUtils.isNull(industryInfo) ? 0 : industryInfo.getId());
+            //根据城市查询 省市id
+            SysAreaInfo areaInfo = sysAreaInfoMapper.getAreaInfoByName(dataMap.get("cityId"));
+            clue.setProvinceId(areaInfo.getParentCode());
+            clue.setCityId(areaInfo.getCode());
+
+            quota.setNearlyThirtyDays(dataMap.get("NearlyThirtyDays"));
+            quota.setGmvMonth(Long.valueOf(dataMap.get("gmvMonth")));
+            quota.setGmv(dataMap.get("gmv"));
+
+            quota.setMtdDate(Long.valueOf(dataMap.get("mtdDate")));
+            quota.setMtd(dataMap.get("mtd"));
+            quota.setCreateUserId(createUserId);
+            quota.setSellerId(Long.valueOf(dataMap.get("sellerId")));
+
+            clueList.add(clue);
+            quotaList.add(quota);
+        }
+
+        //销售线索
+        saleClueInfoMapper.replaceSaleClueInfoBatch(clueList);
+        //线索-额度
+        saleQuotaInfoMapper.replaceSaleQuotaInfoBatch(quotaList);
+
+    }
+
+
+
+    @Autowired
+    private SaleClueRecordInfoMapper saleClueRecordInfoMapper;
+
+    @Override
+    public ResultResponse<List<SaleClueInfoPojo>> selectSaleClueInfoList(String sellerName, Long uploadDate, String distributionSaleFlag, String industryId, String fansType, Long createUserId) throws Exception {
+
+        PageUtils.startPage();
+        List<SaleClueInfoPojo> saleList =  saleClueInfoMapper.selectSaleClueInfoList(sellerName,uploadDate,distributionSaleFlag,industryId,fansType, createUserId);
+        saleList.forEach(clue ->{
+            clue.setFirstRecord(saleClueRecordInfoMapper.getSaleClueRecordNumber(clue.getSellerId(),1));
+            clue.setSecondRecord(saleClueRecordInfoMapper.getSaleClueRecordNumber(clue.getSellerId(),2));
+        });
+
+
+
+
+
+        return ResultResponse.successMsg("查询成功。",saleList);
+    }
+
+
+
+
+
+
+
+}

+ 34 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/service/impl/TestServiceImpl.java

@@ -0,0 +1,34 @@
+package com.ruixuan.salesLeads.service.impl;
+
+import com.ruixuan.common.core.domain.ResultResponse;
+import com.ruixuan.common.utils.PageUtils;
+import com.ruixuan.salesLeads.mapper.TestMapper;
+import com.ruixuan.salesLeads.pojo.TestPojo;
+import com.ruixuan.salesLeads.service.ITestService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: demo测试
+ * @CreateDate: 2022-05-19
+ * ****************************************************
+ */
+@Service
+public class TestServiceImpl implements ITestService {
+
+
+    @Autowired
+    private TestMapper testMapper;
+
+    @Override
+    public ResultResponse selectDemoList() {
+        PageUtils.startPage();
+        List<TestPojo> list = testMapper.selectDemoList();
+        return ResultResponse.successMsg("成功",list);
+    }
+}

+ 163 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/utils/CsvImportUtil.java

@@ -0,0 +1,163 @@
+package com.ruixuan.salesLeads.utils;
+
+
+import com.ruixuan.common.utils.StringUtils;
+import de.siegmar.fastcsv.reader.CsvContainer;
+import de.siegmar.fastcsv.reader.CsvReader;
+import de.siegmar.fastcsv.reader.CsvRow;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: 销售线索-csv 格式读取
+ * @CreateDate: 2022-05-26
+ * ****************************************************
+ */
+@Slf4j
+public class CsvImportUtil {
+
+
+    /**
+     * 读取csv数据
+     * @param multipartFile
+     * @return
+     * @throws Exception
+     */
+    public static List<Map<String,String>> readCSV(MultipartFile multipartFile)throws Exception {
+
+        //multipartFile 转 file
+        File file = CsvImportUtil.multipartFile2File(multipartFile);
+
+        CsvReader csvReader = new CsvReader();
+        csvReader.setContainsHeader(true);
+
+        CsvContainer csv = csvReader.read(file, StandardCharsets.UTF_8);
+        //log.info("csv====>>>{}",csv.getRows());
+
+        //行数据
+        List<CsvRow> rows = csv.getRows();
+
+        //List<String> header = csv.getHeader();
+
+        List<Map<String,String>> lisMap = new ArrayList<>();
+
+        for (int i = 0; i < rows.size(); i++) {
+
+            Map<String, String> objectMap = new HashMap<>();
+
+            Map<String,String> rowMap = rows.get(i).getFieldMap();
+
+            rowMap.forEach((key,vlue)->{
+
+                switch (key){
+                    case "卖家ID":
+
+                        objectMap.put("sellerId",vlue);
+                        break;
+
+
+                    case "卖家昵称":
+
+                        objectMap.put("sellerName",vlue);
+                        break;
+
+
+                    case "粉丝数":
+
+                        objectMap.put("fans",vlue);
+                        break;
+
+                    case "所属行业":
+
+                        objectMap.put("industryId",vlue);
+                        break;
+
+
+                    case "常驻省份":
+
+                        objectMap.put("provinceId",vlue);
+                        break;
+
+
+                    case "常驻城市":
+
+                        objectMap.put("cityId",vlue);
+                        break;
+
+
+                    case "联系方式":
+
+                        objectMap.put("telephone",vlue);
+                        break;
+
+
+                    case "卖家是否绑定服务商":
+
+                        objectMap.put("providerFlag", StringUtils.isEmpty(vlue) ? "否" : vlue);
+                        break;
+
+                    case "是否跃迁":
+
+                        objectMap.put("transitionFlag",StringUtils.isEmpty(vlue) ? "0" : vlue);
+                        break;
+
+                }
+
+
+                if ((key).contains("30天")){
+                    objectMap.put("NearlyThirtyDays",vlue);
+                }
+
+                if ((key).contains("gmv")){
+                    objectMap.put("gmvMonth",key.substring(0,key.indexOf("gmv")));
+                    objectMap.put("gmv",vlue);
+                }
+
+                if (key.contains("mtd")){
+                    objectMap.put("mtdDate",key.substring(0,key.indexOf("mtd")));
+                    objectMap.put("mtd",vlue);
+                }
+
+
+            });
+
+
+            lisMap.add(objectMap);
+
+        }
+
+
+        return lisMap;
+
+    }
+
+
+    /**
+     * multipartFile转File
+     **/
+    public static File multipartFile2File(MultipartFile multipartFile){
+        File file = null;
+        if (multipartFile != null){
+            try {
+                file=File.createTempFile("tmp", null);
+                multipartFile.transferTo(file);
+                System.gc();
+                file.deleteOnExit();
+            }catch (Exception e){
+                e.printStackTrace();
+                log.warn("multipartFile转File发生异常:"+e);
+            }
+        }
+        return file;
+    }
+}

+ 142 - 0
ruixuan-salesLeads/src/main/java/com/ruixuan/salesLeads/listener/ImportExcelListener.java

@@ -0,0 +1,142 @@
+package com.ruixuan.salesLeads.listener;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.fastjson.JSON;
+import com.ruixuan.common.utils.StringUtils;
+import org.apache.poi.ss.formula.functions.T;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: TODO
+ * @CreateDate: 2022-05-24
+ * ****************************************************
+ */
+
+public class ImportExcelListener extends AnalysisEventListener<Map<Integer, String>> {
+
+
+    private static final Logger log = LoggerFactory.getLogger(ImportExcelListener.class);
+
+    public static List<Map<String,String>> importDataList = new ArrayList<>();
+
+    public static Map<Integer, String> importHeadList = new HashMap<>();
+
+
+
+    @Override
+    public void invoke(Map<Integer, String> data, AnalysisContext analysisContext) {
+
+        Map<String, String> ObjectMap = new HashMap<>();
+
+
+
+        log.info("解析到的一条数据=====excelRow = {}", JSON.toJSONString(data));
+
+        data.forEach((key,vlue) ->{
+            Object mapKey = importHeadList.get(key);
+            if (StringUtils.isNotNull(mapKey)){
+
+
+                String keyStr = (String)mapKey;
+
+                switch (keyStr){
+                    case "卖家ID":
+
+                        ObjectMap.put("sellerId",vlue);
+                        break;
+
+
+                    case "卖家昵称":
+
+                        ObjectMap.put("sellerName",vlue);
+                        break;
+
+
+                    case "粉丝数":
+
+                        ObjectMap.put("fans",vlue);
+                        break;
+
+                    case "所属行业":
+
+                        ObjectMap.put("industryId",vlue);
+                        break;
+
+
+                    case "常驻省份":
+
+                        ObjectMap.put("provinceId",vlue);
+                        break;
+
+
+                    case "常驻城市":
+
+                        ObjectMap.put("cityId",vlue);
+                        break;
+
+
+                    case "联系方式":
+
+                        ObjectMap.put("telephone",vlue);
+                        break;
+
+
+                    case "卖家是否绑定服务商":
+
+                        ObjectMap.put("providerFlag",StringUtils.isEmpty(vlue) ? "否" : vlue);
+                        break;
+
+                    case "是否跃迁":
+
+                        ObjectMap.put("transitionFlag",StringUtils.isEmpty(vlue) ? "0" : vlue);
+                        break;
+
+                }
+
+
+                if ((keyStr).contains("30天")){
+                    ObjectMap.put("NearlyThirtyDays",vlue);
+                }
+
+                if ((keyStr).contains("gmv")){
+                    ObjectMap.put("gmvMonth",keyStr.substring(0,keyStr.indexOf("gmv")));
+                    ObjectMap.put("gmv",vlue);
+                }
+
+                if (keyStr.contains("mtd")){
+                    ObjectMap.put("mtdDate",keyStr.substring(0,keyStr.indexOf("mtd")));
+                    ObjectMap.put("mtd",vlue);
+                }
+
+            }
+        });
+
+        importDataList.add(ObjectMap);
+
+
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+        log.info("解析完所有数据===={}",importDataList);
+
+    }
+
+    @Override
+    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
+        log.info("表头数据===excelHead-->>>{}", headMap);
+        importHeadList.putAll(headMap);
+    }
+
+
+}

+ 116 - 0
ruixuan-salesLeads/src/main/resources/mapper/salesLeads/SaleClueInfoMapper.xml

@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruixuan.salesLeads.mapper.SaleClueInfoMapper">
+
+	<!-- 批量新增销售线索-->
+	<insert id="replaceSaleClueInfoBatch">
+		replace into sale_clue_info(
+		sales_leads_type,
+		seller_id,
+		seller_name,
+		fans,
+		industry_id,
+		province_id,
+		city_id,
+		telephone,
+		provider_flag,
+		transition_flag,
+		upload_date,
+		distribution_sale_flag,
+		sale_id,
+		state,
+		offline_sale_flag,
+		create_user_id,
+		create_time)
+		values
+		<foreach collection="saleClueList" item="info" separator=",">
+			(
+			#{info.salesLeadsType},
+			#{info.sellerId},
+			#{info.sellerName},
+			#{info.fans},
+			#{info.industryId},
+			#{info.provinceId},
+			#{info.cityId},
+			#{info.telephone},
+			#{info.providerFlag},
+			#{info.transitionFlag},
+			#{info.uploadDate},
+			#{info.distributionSaleFlag},
+			#{info.saleId},
+			#{info.state},
+			#{info.offlineSaleFlag},
+			#{info.createUserId},
+			NOW()
+			)
+		</foreach>
+	</insert>
+
+	<select id="selectSaleClueInfoList" resultType="com.ruixuan.salesLeads.pojo.SaleClueInfoPojo">
+		SELECT
+			s.id,
+			s.sales_leads_type,
+			s.seller_id,
+			s.seller_name,
+			s.fans,
+			s.industry_id,
+			(SELECT name from sys_industry_info i where i.id = s.industry_id) industryName,
+			s.province_id,
+			(SELECT name from sys_area_info a WHERE a.`code` = s.province_id) provinceName,
+			s.city_id,
+			(SELECT name from sys_area_info a WHERE a.`code` = s.city_id) cityName,
+			s.telephone,
+			s.provider_flag,
+			s.transition_flag,
+			s.upload_date,
+			s.distribution_sale_flag,
+			s.sale_id,
+			(SELECT u.nick_name FROM sys_user u WHERE u.user_id = s.sale_id ) saleName,
+			s.state,
+			s.offline_sale_flag,
+			s.create_user_id,
+			s.create_time
+		FROM
+			sale_clue_info s
+		<where>
+			<if test="sellerName !=null and sellerName != ''">
+				and s.seller_name like CONCAT('%', CONCAT(#{sellerName}, '%')) or s.seller_id like CONCAT('%', CONCAT(#{sellerName}, '%'))
+			</if>
+			<if test="uploadDate !=null and uploadDate != ''">
+				and s.upload_date = #{uploadDate}
+			</if>
+			<if test="distributionSaleFlag !=null and distributionSaleFlag != ''" >
+				and s.distribution_sale_flag = #{distributionSaleFlag}
+			</if>
+			<if test="industryId !=null and industryId != ''">
+				and s.industry_id = #{industryId}
+			</if>
+			<if test="fansType == '1'.toString()">
+				and s.fans BETWEEN 0 AND 500000
+			</if>
+			<if test="fansType == '2'.toString()">
+				and s.fans BETWEEN 500000 AND 2000000
+			</if>
+			<if test="fansType == '3'.toString()">
+				and s.fans BETWEEN 2000000 AND 5000000
+			</if>
+			<if test="fansType == '4'.toString()">
+				and s.fans &gt;=5000000
+			</if>
+
+		</where>
+
+
+
+
+
+
+
+	</select>
+
+
+
+
+</mapper> 

+ 38 - 0
ruixuan-salesLeads/src/main/resources/mapper/salesLeads/SaleClueRecordInfoMapper.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruixuan.salesLeads.mapper.SaleClueRecordInfoMapper">
+
+
+	<select id="getSaleClueRecordNumber" resultType="com.ruixuan.salesLeads.pojo.SaleClueRecordInfoPojo">
+		SELECT
+		r.id,
+		r.seller_id,
+		r.record_times,
+		r.record_script,
+		r.continue_flag,
+		r.intended_cooperation,
+		r.record_info,
+		r.remarks,
+		r.create_user_id,
+		r.create_time
+		FROM
+		sale_clue_record_info r
+		<where>
+			<if test="sellerId !=null and sellerId != ''">
+				and r.seller_id = #{sellerId}
+			</if>
+			<if test="number !=null and number != ''">
+				and r.record_times = #{number}
+			</if>
+		</where>
+		LIMIT 1
+	</select>
+
+
+
+
+
+
+</mapper> 

+ 40 - 0
ruixuan-salesLeads/src/main/resources/mapper/salesLeads/SaleQuotaInfoMapper.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruixuan.salesLeads.mapper.SaleQuotaInfoMapper">
+
+
+	
+
+
+<!-- 批量新增销售线索额度信息-->
+	<insert id="replaceSaleQuotaInfoBatch">
+		replace into sale_quota_info(
+
+		seller_id,
+		nearly_thirty_days,
+		gmv_month,
+		gmv,
+		mtd_date,
+		mtd,
+		create_user_id,
+		create_time)
+		values
+		<foreach collection="saleQuotaList" item="info" separator=",">
+			(
+			#{info.sellerId},
+			#{info.nearlyThirtyDays},
+			#{info.gmvMonth},
+			#{info.gmv},
+			#{info.mtdDate},
+			#{info.mtd},
+			#{info.createUserId},
+			NOW()
+			)
+		</foreach>
+	</insert>
+
+
+
+</mapper> 

+ 18 - 0
ruixuan-salesLeads/src/main/resources/mapper/salesLeads/TestMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruixuan.salesLeads.mapper.TestMapper">
+
+
+	
+	<select id="selectDemoList" resultType="com.ruixuan.salesLeads.pojo.TestPojo">
+
+		select * from test
+
+	</select>
+	
+
+
+
+</mapper> 

+ 105 - 0
ruixuan-system/src/main/java/com/ruixuan/system/domain/SysAreaInfo.java

@@ -0,0 +1,105 @@
+package com.ruixuan.system.domain;
+
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: 地区信息表
+ * @CreateDate: 2022-05-24
+ * ****************************************************
+ */
+
+
+
+public class SysAreaInfo {
+
+
+    private Long id;
+
+    //地区名称
+    private String name;
+
+    private int code;
+
+    //父id
+    private int parentCode;
+
+
+    //级别
+    private int level;
+
+    private String createTime;
+
+    private String updateTime;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public int getParentCode() {
+        return parentCode;
+    }
+
+    public void setParentCode(int parentCode) {
+        this.parentCode = parentCode;
+    }
+
+    public int getLevel() {
+        return level;
+    }
+
+    public void setLevel(int level) {
+        this.level = level;
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(String updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    @Override
+    public String toString() {
+        return "SysAreaInfo{" +
+                    "id=" + id +
+                    ", name='" + name + '\'' +
+                    ", code=" + code +
+                    ", parentCode=" + parentCode +
+                    ", level=" + level +
+                    ", createTime=" + createTime +
+                    ", updateTime='" + updateTime + '\'' +
+                    '}';
+    }
+}

+ 96 - 0
ruixuan-system/src/main/java/com/ruixuan/system/domain/SysIndustryInfo.java

@@ -0,0 +1,96 @@
+package com.ruixuan.system.domain;
+
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: 行业分类
+ * @CreateDate: 2022-05-24
+ * ****************************************************
+ */
+
+
+
+public class SysIndustryInfo {
+
+
+    private int id;
+
+
+    //父id
+    private int parentId;
+
+
+    //行业名称
+    private String name;
+
+    //排序
+    private int sort;
+
+    private Long createUserId;
+
+    private String createTime;
+
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(int parentId) {
+        this.parentId = parentId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getSort() {
+        return sort;
+    }
+
+    public void setSort(int sort) {
+        this.sort = sort;
+    }
+
+    public Long getCreateUserId() {
+        return createUserId;
+    }
+
+    public void setCreateUserId(Long createUserId) {
+        this.createUserId = createUserId;
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+
+
+    @Override
+    public String toString() {
+        return "SysIndustryInfo{" +
+                    "id=" + id +
+                    ", parentId=" + parentId +
+                    ", name=" + name +
+                    ", sort=" + sort +
+                    ", createUserId=" + createUserId +
+                    ", createTime='" + createTime + '\'' +
+                    '}';
+    }
+}

+ 22 - 0
ruixuan-system/src/main/java/com/ruixuan/system/mapper/SysAreaInfoMapper.java

@@ -0,0 +1,22 @@
+package com.ruixuan.system.mapper;
+
+import com.ruixuan.system.domain.SysAreaInfo;
+import com.ruixuan.system.domain.SysIndustryInfo;
+
+/**
+ * 地区信息 数据层
+ * 
+ * @author zianY
+ */
+public interface SysAreaInfoMapper {
+
+
+    /**
+     * 根据地区名称查询信息
+     * 
+     * @return
+     */
+    public SysAreaInfo getAreaInfoByName(String name);
+
+
+}

+ 25 - 0
ruixuan-system/src/main/java/com/ruixuan/system/mapper/SysIndustryInfoMapper.java

@@ -0,0 +1,25 @@
+package com.ruixuan.system.mapper;
+
+import com.ruixuan.common.core.domain.entity.SysDept;
+import com.ruixuan.system.domain.SysIndustryInfo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 行业分类 数据层
+ * 
+ * @author zianY
+ */
+public interface SysIndustryInfoMapper{
+
+
+    /**
+     * 根据行业名称查询信息
+     * 
+     * @return 行业名称
+     */
+    public SysIndustryInfo getIndustryInfoByName(String name);
+
+
+}

+ 17 - 0
ruixuan-system/src/main/resources/mapper/system/SysAreaMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruixuan.system.mapper.SysAreaInfoMapper">
+
+
+	<!-- 根据地区名称查询信息-->
+	<select id="getAreaInfoByName" resultType="com.ruixuan.system.domain.SysAreaInfo">
+		select * from sys_area_info
+		where name = #{name}
+		limit 1
+	</select>
+	
+
+
+</mapper> 

+ 17 - 0
ruixuan-system/src/main/resources/mapper/system/SysIndustryMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruixuan.system.mapper.SysIndustryInfoMapper">
+
+
+	<!-- 根据行业名称查询信息-->
+	<select id="getIndustryInfoByName" resultType="com.ruixuan.system.domain.SysIndustryInfo">
+		select * from sys_industry_info
+		where name = #{name}
+		limit 1
+	</select>
+	
+
+
+</mapper>