u
This commit is contained in:
1 parent
bcc4722efc
commit
f48536774f
403 files changed
+34776
No files matched your search
@@ -0,0 +1,38 @@
|
||||
target/
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
!**/src/main/**/target/
|
||||
!**/src/test/**/target/
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea/modules.xml
|
||||
.idea/jarRepositories.xml
|
||||
.idea/compiler.xml
|
||||
.idea/libraries/
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
|
||||
### Eclipse ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
/nbbuild/
|
||||
/dist/
|
||||
/nbdist/
|
||||
/.nb-gradle/
|
||||
build/
|
||||
!**/src/main/**/build/
|
||||
!**/src/test/**/build/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
||||
|
||||
### Mac OS ###
|
||||
.DS_Store
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding">
|
||||
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -0,0 +1,10 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="DuplicatedCode" enabled="true" level="WEAK WARNING" enabled_by_default="true">
|
||||
<Languages>
|
||||
<language minSize="48" name="Java" />
|
||||
</Languages>
|
||||
</inspection_tool>
|
||||
</profile>
|
||||
</component>
|
||||
Generated
+14
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="MavenProjectsManager">
|
||||
<option name="originalFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/pom.xml" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
||||
+124
@@ -0,0 +1,124 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Palette2">
|
||||
<group name="Swing">
|
||||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
||||
</item>
|
||||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
|
||||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
||||
<initial-values>
|
||||
<property name="text" value="Button" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="RadioButton" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="CheckBox" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="Label" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
||||
<preferred-size width="-1" height="20" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
||||
</item>
|
||||
</group>
|
||||
</component>
|
||||
</project>
|
||||
@@ -0,0 +1,225 @@
|
||||
<?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>cn.sslog</groupId>
|
||||
<artifactId>Sllog-User-Api</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
|
||||
<properties>
|
||||
<java.version>1.8</java.version>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
|
||||
<spring-boot.version>2.5.15</spring-boot.version>
|
||||
<druid.version>1.2.23</druid.version>
|
||||
<jwt.version>3.10.3</jwt.version>
|
||||
<jtds.version>1.3.1</jtds.version>
|
||||
<mybatis-plus.version>3.5.10.1</mybatis-plus.version>
|
||||
<p6spy.version>3.9.1</p6spy.version>
|
||||
<commons.version>3.12.0</commons.version>
|
||||
|
||||
<!-- override dependency version -->
|
||||
<tomcat.version>9.0.96</tomcat.version>
|
||||
<logback.version>1.2.13</logback.version>
|
||||
<spring-framework.version>5.3.39</spring-framework.version>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-dependencies</artifactId>
|
||||
<version>${spring-boot.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
<!-- 覆盖SpringFramework的依赖配置-->
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-framework-bom</artifactId>
|
||||
<version>${spring-framework.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- SpringBoot Web容器 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- SpringBoot 拦截器 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-aop</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- lombok 注解 -->
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- validation 验证 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-validation</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 覆盖logback的依赖配置-->
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-core</artifactId>
|
||||
<version>${logback.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-classic</artifactId>
|
||||
<version>${logback.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 覆盖tomcat的依赖配置-->
|
||||
<dependency>
|
||||
<groupId>org.apache.tomcat.embed</groupId>
|
||||
<artifactId>tomcat-embed-core</artifactId>
|
||||
<version>${tomcat.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.tomcat.embed</groupId>
|
||||
<artifactId>tomcat-embed-el</artifactId>
|
||||
<version>${tomcat.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.tomcat.embed</groupId>
|
||||
<artifactId>tomcat-embed-websocket</artifactId>
|
||||
<version>${tomcat.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 阿里数据库连接池 -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid-spring-boot-starter</artifactId>
|
||||
<version>${druid.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Token生成与解析-->
|
||||
<dependency>
|
||||
<groupId>com.auth0</groupId>
|
||||
<artifactId>java-jwt</artifactId>
|
||||
<version>${jwt.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>net.sourceforge.jtds</groupId>
|
||||
<artifactId>jtds</artifactId>
|
||||
<version>${jtds.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.mysql</groupId>
|
||||
<artifactId>mysql-connector-j</artifactId>
|
||||
<version>8.0.33</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||||
<version>${mybatis-plus.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-jsqlparser-4.9</artifactId>
|
||||
<version>${mybatis-plus.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
<version>${commons.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- socket启动依赖 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-websocket</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!--邮箱-->
|
||||
<!--mail依赖-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-mail</artifactId>
|
||||
</dependency>
|
||||
<!--thymeleaf依赖-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<!-- 打包格式 -->
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<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>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<version>2.5.15</version>
|
||||
<configuration>
|
||||
<fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>repackage</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
@@ -0,0 +1,13 @@
|
||||
package cn.sslog;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.scheduling.annotation.EnableAsync;
|
||||
|
||||
@SpringBootApplication // SpringBoot启动类支持
|
||||
@EnableAsync // 添加异步支持
|
||||
public class SSlogUserApiApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(SSlogUserApiApplication.class,args);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package cn.sslog.common;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class BasePageDTO {
|
||||
private Integer page;
|
||||
private Integer pageSize;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package cn.sslog.common;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@Accessors(chain = true)
|
||||
public class BasePageVO<T> {
|
||||
private long total;
|
||||
private List<T> record;
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package cn.sslog.common;
|
||||
|
||||
import cn.sslog.enums.ResponseEnum;
|
||||
import lombok.Data;
|
||||
import lombok.NonNull;
|
||||
|
||||
@Data
|
||||
public class Result<T> {
|
||||
private final Integer code; // 编码(必填)
|
||||
private final String message; // 国际化消息键(必填)
|
||||
@NonNull
|
||||
private final T data; // 数据(可空)
|
||||
|
||||
// 私有构造函数,强制通过静态工厂方法创建实例
|
||||
private Result(Integer code, String message, T data) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
// 成功响应(无数据)
|
||||
public static <T> Result<T> success() {
|
||||
return new Result<>(ResponseEnum.SUCCESS.getCode(), ResponseEnum.SUCCESS.getMessage(), null);
|
||||
}
|
||||
|
||||
public static <T> Result<T> success(String message) {
|
||||
return new Result<>(ResponseEnum.SUCCESS.getCode(), message, null);
|
||||
}
|
||||
|
||||
// 成功响应(带数据)
|
||||
public static <T> Result<T> success(@NonNull T data) {
|
||||
return new Result<>(ResponseEnum.SUCCESS.getCode(), ResponseEnum.SUCCESS.getMessage(), data);
|
||||
}
|
||||
// 成功响应(带数据)
|
||||
public static <T> Result<T> success(@NonNull T data,String message) {
|
||||
return new Result<>(ResponseEnum.SUCCESS.getCode(),message, data);
|
||||
}
|
||||
// 成功响应(自定义枚举)
|
||||
public static <T> Result<T> success(ResponseEnum responseEnum) {
|
||||
return new Result<>(responseEnum.getCode(), responseEnum.getMessage(), null);
|
||||
}
|
||||
|
||||
// 成功响应(自定义枚举)
|
||||
public static <T> Result<T> success(ResponseEnum responseEnum, @NonNull T data) {
|
||||
return new Result<>(responseEnum.getCode(), responseEnum.getMessage(), data);
|
||||
}
|
||||
|
||||
// 错误响应(自定义枚举)
|
||||
public static <T> Result<T> error(ResponseEnum responseEnum) {
|
||||
return new Result<>(responseEnum.getCode(), responseEnum.getMessage(), null);
|
||||
}
|
||||
public static <T> Result<T> error(Integer code,String message){
|
||||
return new Result<>(code, message, null);
|
||||
}
|
||||
|
||||
public static <T> Result<T> error(String message){
|
||||
return new Result<>(ResponseEnum.ERROR.getCode(), message, null);
|
||||
}
|
||||
|
||||
public static <T> Result<T> error(){
|
||||
return new Result<>(ResponseEnum.ERROR.getCode(), ResponseEnum.ERROR.getMessage(), null);
|
||||
}
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
package cn.sslog.config;
|
||||
|
||||
import cn.sslog.context.UserContext;
|
||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
||||
import org.apache.ibatis.reflection.MetaObject;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
@Component
|
||||
public class AutoFillMetaObjectHandler implements MetaObjectHandler {
|
||||
// 格式化为年月日 时分秒格式的字符串
|
||||
private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
@Override
|
||||
public void insertFill(MetaObject metaObject) {
|
||||
// 获取当前时间并格式化为字符串
|
||||
String formattedDate = LocalDateTime.now().format(formatter);
|
||||
String userId = UserContext.getUserId();
|
||||
this.strictInsertFill(metaObject, "createId", String.class, userId); // 使用字符串类型保存
|
||||
this.strictInsertFill(metaObject, "createTime", String.class, formattedDate); // 使用字符串类型保存
|
||||
this.strictInsertFill(metaObject, "updateTime", String.class, formattedDate); // 同样填充 updatedAt
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateFill(MetaObject metaObject) {
|
||||
// 获取当前时间并格式化为字符串
|
||||
String formattedDate = LocalDateTime.now().format(formatter);
|
||||
this.strictUpdateFill(metaObject, "updateTime", String.class, formattedDate); // 使用字符串类型保存
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package cn.sslog.config;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.DbType;
|
||||
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
@MapperScan("cn.sslog.mapper")
|
||||
public class MybatisPlusConfig {
|
||||
|
||||
/**
|
||||
* 添加分页插件
|
||||
*/
|
||||
@Bean
|
||||
public MybatisPlusInterceptor mybatisPlusInterceptor() {
|
||||
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
|
||||
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.SQL_SERVER2005)); // 如果配置多个插件, 切记分页最后添加
|
||||
// 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType
|
||||
return interceptor;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package cn.sslog.config;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonGenerator;
|
||||
import com.fasterxml.jackson.databind.JsonSerializer;
|
||||
import com.fasterxml.jackson.databind.SerializerProvider;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class RemoveMillisSerializer extends JsonSerializer<String> {
|
||||
@Override
|
||||
public void serialize(String value, JsonGenerator gen, SerializerProvider provider) throws IOException {
|
||||
if (value != null && value.length() > 19) {
|
||||
gen.writeString(value.substring(0, 19)); // 去除毫秒
|
||||
} else {
|
||||
gen.writeString(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package cn.sslog.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.cors.CorsConfiguration;
|
||||
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
|
||||
import org.springframework.web.filter.CorsFilter;
|
||||
|
||||
@Configuration
|
||||
public class WebCorsConfig {
|
||||
// @Bean
|
||||
// public CorsFilter corsFilter() {
|
||||
// // 1.创建 CORS 配置对象
|
||||
// CorsConfiguration config = new CorsConfiguration();
|
||||
// // 支持域
|
||||
// config.addAllowedOriginPattern("*");
|
||||
// // 是否发送 Cookie
|
||||
// config.setAllowCredentials(true);
|
||||
// // 支持请求方式
|
||||
// config.addAllowedMethod("*");
|
||||
// // 允许的原始请求头部信息
|
||||
// config.addAllowedHeader("*");
|
||||
// // 暴露的头部信息
|
||||
// config.addExposedHeader("*");
|
||||
// // 有效期 1800秒,设置预检请求(OPTIONS请求)的缓存时间,1800秒意味着客户端可以缓存这个设置1800秒
|
||||
// config.setMaxAge(1800L);
|
||||
// // 2.添加地址映射
|
||||
// UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
|
||||
// corsConfigurationSource.registerCorsConfiguration("/**", config);
|
||||
// // 3.返回 CorsFilter 对象
|
||||
// return new CorsFilter(corsConfigurationSource);
|
||||
// }
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package cn.sslog.config;
|
||||
|
||||
import cn.sslog.interceptor.LoginInterceptor;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
@Configuration
|
||||
public class WebMvcConfig implements WebMvcConfigurer {
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
registry.addInterceptor(new LoginInterceptor()) // 注册拦截器
|
||||
.addPathPatterns("/**") // 拦截所有请求
|
||||
.excludePathPatterns(
|
||||
"/auth/**",
|
||||
"/company/getCompanyPage",
|
||||
"/company/getPublicDetail",
|
||||
"/company/getRecommendList",
|
||||
"/company/getRecommendRightList",
|
||||
|
||||
"/forum/post/page",
|
||||
"/forum/post/detail",
|
||||
"/forum/post/getRecommendList",
|
||||
"/forum/post/getHotList",
|
||||
"/forum/post/comment/list",
|
||||
|
||||
"/webProperty/**",
|
||||
"/webArea/**"
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package cn.sslog.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
|
||||
|
||||
@Configuration
|
||||
public class WebSocketConfig {
|
||||
@Bean
|
||||
public ServerEndpointExporter serverEndpointExporter() {
|
||||
return new ServerEndpointExporter();
|
||||
}
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package cn.sslog.constants;
|
||||
|
||||
public class ResponseStatusConstants {
|
||||
/**
|
||||
* 操作成功
|
||||
*/
|
||||
public static final Integer SUCCESS = 200;
|
||||
|
||||
/**
|
||||
* 系统内部错误
|
||||
*/
|
||||
public static final Integer ERROR = 500;
|
||||
|
||||
/**
|
||||
* 缺少参数,参数格式有误,请求路径有误等
|
||||
*/
|
||||
public static final Integer BAD_REQUEST = 400;
|
||||
|
||||
/**
|
||||
* 未找到资源,或者该资源已丢失
|
||||
*/
|
||||
public static final Integer NOT_FOUND = 404;
|
||||
/**
|
||||
* 登录失效或已过期
|
||||
*/
|
||||
public static final Integer UNAUTHORIZED = 401;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package cn.sslog.context;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
public class UserContext {
|
||||
private static final ThreadLocal<String> userIdThreadLocal = new ThreadLocal<>();
|
||||
|
||||
public static void setUserId(String userId) {
|
||||
userIdThreadLocal.set(userId);
|
||||
}
|
||||
|
||||
public static String getUserId() {
|
||||
String userId = userIdThreadLocal.get();
|
||||
if (StringUtils.isEmpty(userId)) {
|
||||
userId = "";
|
||||
userIdThreadLocal.set(userId);
|
||||
}
|
||||
return userId;
|
||||
}
|
||||
|
||||
public static void removeUserId() {
|
||||
if (ObjectUtils.isEmpty(userIdThreadLocal)) {
|
||||
userIdThreadLocal.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package cn.sslog.controller;
|
||||
|
||||
import cn.sslog.common.Result;
|
||||
import cn.sslog.domain.dto.ForgetDTO;
|
||||
import cn.sslog.domain.dto.LoginDTO;
|
||||
import cn.sslog.domain.dto.RegisterDTO;
|
||||
import cn.sslog.domain.vo.LoginVO;
|
||||
import cn.sslog.service.AuthService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
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;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/auth")
|
||||
public class AuthController {
|
||||
@Resource
|
||||
private AuthService authService;
|
||||
|
||||
@PostMapping("/register")
|
||||
public Result<Void> register(@RequestBody @Validated RegisterDTO registerDTO){
|
||||
return authService.register(registerDTO);
|
||||
}
|
||||
|
||||
@PostMapping("/login")
|
||||
public Result<LoginVO> login(@RequestBody @Validated LoginDTO loginDTO) {
|
||||
return authService.login(loginDTO);
|
||||
}
|
||||
|
||||
@PostMapping({"/forget"})
|
||||
public Result<Void> forget(@RequestBody @Validated ForgetDTO forgetDTO) {
|
||||
return authService.forget(forgetDTO);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package cn.sslog.controller;
|
||||
|
||||
import cn.sslog.common.Result;
|
||||
import cn.sslog.domain.dto.file.InsertFileDTO;
|
||||
import cn.sslog.domain.vo.aliyun.AliyunKeyVO;
|
||||
import cn.sslog.enums.ResponseEnum;
|
||||
import cn.sslog.service.SlFileService;
|
||||
import cn.sslog.utils.HttpUtils;
|
||||
import cn.sslog.utils.JsonUtils;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
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;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/file")
|
||||
public class FileController {
|
||||
@Resource
|
||||
private SlFileService slFileService;
|
||||
|
||||
@PostMapping("/getAliyunKey")
|
||||
public Result<AliyunKeyVO> getAliyunKey() {
|
||||
String requestUrl = "http://g3oss.g3soft.cn:8082/upload?orgid=sllog&bucket=g3hdzjsj";
|
||||
String s = HttpUtils.sendGet(requestUrl);
|
||||
AliyunKeyVO aliyunKeyVO = (AliyunKeyVO) JsonUtils.toBean(s, AliyunKeyVO.class);
|
||||
|
||||
assert aliyunKeyVO != null;
|
||||
|
||||
return Result.success(aliyunKeyVO);
|
||||
}
|
||||
|
||||
@PostMapping("/insert")
|
||||
public Result<Void> insertFile(@RequestBody @Validated InsertFileDTO insertFileDTO) {
|
||||
boolean flag = slFileService.insertFile(insertFileDTO);
|
||||
return flag ? Result.success(ResponseEnum.SAVE_SUCCESS) : Result.error(ResponseEnum.SAVE_ERROR);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package cn.sslog.controller;
|
||||
|
||||
import cn.sslog.common.Result;
|
||||
import cn.sslog.domain.dto.im.ImMessageHistoryDTO;
|
||||
import cn.sslog.domain.dto.im.ImMessageUpdateIsReadDTO;
|
||||
import cn.sslog.domain.vo.im.AllNoReadNumberVO;
|
||||
import cn.sslog.domain.vo.im.ChatCompanyVO;
|
||||
import cn.sslog.domain.vo.im.ImMessageHistoryVO;
|
||||
import cn.sslog.service.ImMessageService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
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;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/imMessage")
|
||||
public class ImMessageController {
|
||||
@Resource
|
||||
private ImMessageService imMessageService;
|
||||
|
||||
@PostMapping("/chats")
|
||||
public Result<List<ChatCompanyVO>> getChats(){
|
||||
List<ChatCompanyVO> list = imMessageService.getChats();
|
||||
return Result.success(list);
|
||||
}
|
||||
|
||||
@PostMapping("/history")
|
||||
public Result<List<ImMessageHistoryVO>> getMessageHistory(@RequestBody @Validated ImMessageHistoryDTO imMessageHistoryDTO){
|
||||
List<ImMessageHistoryVO> list = imMessageService.getMessageHistory(imMessageHistoryDTO);
|
||||
return Result.success(list);
|
||||
}
|
||||
|
||||
@PostMapping("/updateIsRead")
|
||||
public Result<Void> updateIsRead(@RequestBody @Validated ImMessageUpdateIsReadDTO imMessageUpdateIsReadDTO){
|
||||
imMessageService.updateIsRead(imMessageUpdateIsReadDTO);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@PostMapping("/getAllNoReadNumber")
|
||||
public Result<AllNoReadNumberVO> getAllNoReadNumber(){
|
||||
AllNoReadNumberVO allNoReadNumberVO = imMessageService.getAllNoReadNumber();
|
||||
return Result.success(allNoReadNumberVO);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package cn.sslog.controller;
|
||||
|
||||
import cn.sslog.common.BasePageVO;
|
||||
import cn.sslog.common.Result;
|
||||
import cn.sslog.domain.dto.company.CompanyPageDTO;
|
||||
import cn.sslog.domain.dto.company.CompanyPublicDetailDTO;
|
||||
import cn.sslog.domain.dto.company.CompanyUpdateDetailDTO;
|
||||
import cn.sslog.domain.vo.area.AreaCompanyVO;
|
||||
import cn.sslog.domain.vo.company.*;
|
||||
import cn.sslog.service.SlCompanyService;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/company")
|
||||
public class SlCompanyController {
|
||||
@Resource
|
||||
private SlCompanyService slCompanyService;
|
||||
|
||||
@PostMapping("/getCompanyPage")
|
||||
public Result<BasePageVO<CompanyPageVO>> getCompanyPage(@RequestBody @Validated CompanyPageDTO companyPageDTO){
|
||||
BasePageVO<CompanyPageVO> list = slCompanyService.getCompanyPage(companyPageDTO);
|
||||
return Result.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/getPrivateDetail")
|
||||
public Result<CompanyPrivateDetailVO> getPrivateDetail(){
|
||||
CompanyPrivateDetailVO companyPrivateDetailVO = slCompanyService.getPrivateDetail();
|
||||
return Result.success(companyPrivateDetailVO);
|
||||
}
|
||||
|
||||
@PostMapping("/getPublicDetail")
|
||||
public Result<CompanyPublicDetailVO> getPublicDetail(@RequestBody @Validated CompanyPublicDetailDTO companyPublicDetailDTO){
|
||||
CompanyPublicDetailVO companyPublicDetailVO = slCompanyService.getPublicDetail(companyPublicDetailDTO);
|
||||
|
||||
if(ObjectUtils.isEmpty(companyPublicDetailVO)){
|
||||
return Result.error("该公司已不存在!");
|
||||
}
|
||||
|
||||
return Result.success(companyPublicDetailVO);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/update")
|
||||
public Result<Void> update(@RequestBody @Validated CompanyUpdateDetailDTO companyUpdateDetailDTO){
|
||||
return slCompanyService.updateDetail(companyUpdateDetailDTO);
|
||||
}
|
||||
|
||||
@GetMapping("/getRecommendList")
|
||||
public Result<List<CompanyRecommendVO>> getRecommendList(){
|
||||
List<CompanyRecommendVO> list = slCompanyService.getRecommendList();
|
||||
return Result.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/getRecommendRightList")
|
||||
public Result<List<CompanyRecommendRightVO>> getRecommendRightList(){
|
||||
List<CompanyRecommendRightVO> list = slCompanyService.getRecommendRightList();
|
||||
return Result.success(list);
|
||||
}
|
||||
}
|
||||
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
package cn.sslog.controller;
|
||||
|
||||
import cn.sslog.common.BasePageDTO;
|
||||
import cn.sslog.common.BasePageVO;
|
||||
import cn.sslog.common.Result;
|
||||
import cn.sslog.domain.vo.notification.NotificationVO;
|
||||
import cn.sslog.enums.ResponseEnum;
|
||||
import cn.sslog.service.SlNotificationService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/notification")
|
||||
public class SlNotificationController {
|
||||
@Resource
|
||||
private SlNotificationService slNotificationService;
|
||||
|
||||
@PostMapping("/likeAndFavorite")
|
||||
public Result<BasePageVO<NotificationVO>> likePage(@RequestBody BasePageDTO basePageDTO){
|
||||
BasePageVO<NotificationVO> result = slNotificationService.getLikeFavoritePage(basePageDTO);
|
||||
return Result.success(result);
|
||||
}
|
||||
|
||||
@PostMapping("/comment")
|
||||
public Result<BasePageVO<NotificationVO>> commentPage(@RequestBody BasePageDTO basePageDTO){
|
||||
BasePageVO<NotificationVO> result = slNotificationService.getCommentPage(basePageDTO);
|
||||
return Result.success(result);
|
||||
}
|
||||
|
||||
@PostMapping("/delete/{notificationId}")
|
||||
public Result<Void> delete(@PathVariable @NotBlank(message = "通知ID不能为空") String notificationId) {
|
||||
boolean flag = slNotificationService.removeById(notificationId);
|
||||
return flag ? Result.success(ResponseEnum.DELETE_SUCCESS) : Result.error(ResponseEnum.DELETE_ERROR);
|
||||
}
|
||||
|
||||
@PostMapping("/likeAndFavorite/deleteAll")
|
||||
public Result<Void> deleteAllLikeAndFavorite() {
|
||||
boolean deleteFlag = slNotificationService.deleteAllLikeAndFavorite();
|
||||
return deleteFlag ? Result.success(ResponseEnum.DELETE_SUCCESS) : Result.error(ResponseEnum.DELETE_ERROR);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/comment/deleteAll")
|
||||
public Result<Void> deleteAllComment() {
|
||||
boolean deleteFlag = slNotificationService.deleteAllComment();
|
||||
return deleteFlag ? Result.success(ResponseEnum.DELETE_SUCCESS) : Result.error(ResponseEnum.DELETE_ERROR);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package cn.sslog.controller;
|
||||
|
||||
import cn.sslog.common.Result;
|
||||
import cn.sslog.domain.vo.area.AreaCompanyVO;
|
||||
import cn.sslog.domain.vo.area.AreaVO;
|
||||
import cn.sslog.service.WebAreaService;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/webArea")
|
||||
public class WebAreaController {
|
||||
@Resource
|
||||
private WebAreaService webAreaService;
|
||||
|
||||
@GetMapping("/list")
|
||||
public Result<List<AreaVO>> list(){
|
||||
List<AreaVO> result = webAreaService.getList();
|
||||
return Result.success(result);
|
||||
}
|
||||
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package cn.sslog.controller;
|
||||
|
||||
import cn.sslog.common.Result;
|
||||
import cn.sslog.domain.vo.property.WebPropertyVO;
|
||||
import cn.sslog.service.WebPropertyService;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/webProperty")
|
||||
public class WebPropertyController {
|
||||
@Resource
|
||||
private WebPropertyService webPropertyService;
|
||||
|
||||
@GetMapping("/list")
|
||||
public Result<List<WebPropertyVO>> list(){
|
||||
List<WebPropertyVO> result = webPropertyService.getList();
|
||||
return Result.success(result);
|
||||
}
|
||||
}
|
||||
+242
@@ -0,0 +1,242 @@
|
||||
package cn.sslog.controller;
|
||||
|
||||
import cn.sslog.domain.entity.ImMessage;
|
||||
import cn.sslog.domain.im.dto.ImAcceptCheckOneOnlineDTO;
|
||||
import cn.sslog.domain.im.dto.ImAcceptMessageDTO;
|
||||
import cn.sslog.domain.im.dto.ImAcceptOneDTO;
|
||||
import cn.sslog.domain.im.dto.ImAcceptRollbackDTO;
|
||||
import cn.sslog.domain.im.vo.ImSendCheckOneOnlineVO;
|
||||
import cn.sslog.domain.im.vo.ImSendMessageVO;
|
||||
import cn.sslog.domain.im.vo.ImSendNormalVO;
|
||||
import cn.sslog.domain.im.vo.ImSendRollbackVO;
|
||||
import cn.sslog.enums.ImAcceptMessageEnum;
|
||||
import cn.sslog.enums.ImSendMessageEnum;
|
||||
import cn.sslog.service.ImMessageService;
|
||||
import cn.sslog.service.SlCompanyService;
|
||||
import cn.sslog.utils.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.websocket.*;
|
||||
import javax.websocket.server.PathParam;
|
||||
import javax.websocket.server.ServerEndpoint;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
@ServerEndpoint("/websocket/{token}")
|
||||
@Component
|
||||
@Slf4j
|
||||
public class WebSocketApplication {
|
||||
/**
|
||||
* 存储创建连接的用户信息。
|
||||
* KEY:用户、公司id
|
||||
* VALUE:建立的会话session
|
||||
*/
|
||||
// 存储所有活跃会话(用户ID -> 会话对象)
|
||||
private static final ConcurrentHashMap<String, CopyOnWriteArrayList<Session>> socketPool = new ConcurrentHashMap<>();
|
||||
|
||||
// WebSocket 握手时获取用户ID的参数名
|
||||
private static final String COMPANY_ID_PARAM = "id";
|
||||
|
||||
private static final SlCompanyService slCompanyService = SpringUtils.getBean(SlCompanyService.class);
|
||||
private static final ImMessageService imMessageService = SpringUtils.getBean(ImMessageService.class);
|
||||
|
||||
@OnOpen
|
||||
public void onOpen(Session session, @PathParam("token") String token) throws IOException {
|
||||
try {
|
||||
if (StringUtils.isEmpty(token)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 验证token
|
||||
JwtUtils.verify(token);
|
||||
|
||||
// 验证成功,获取用户ID
|
||||
String userId = JwtUtils.getTokenInfo(token).get(COMPANY_ID_PARAM).asString();
|
||||
|
||||
// 将用户id存入到session属性中
|
||||
session.getUserProperties().put(COMPANY_ID_PARAM, userId);
|
||||
|
||||
// 添加新连接
|
||||
socketPool.computeIfAbsent(userId, k -> new CopyOnWriteArrayList<>()).add(session);
|
||||
|
||||
// 打印 userId 和当前该用户在线连接数
|
||||
List<Session> currentSessions = socketPool.get(userId);
|
||||
int onlineCount = (int) currentSessions.stream().filter(Session::isOpen).count();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace(); // 建议打日志
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@OnClose
|
||||
public void onClose(Session session) throws IOException {
|
||||
String userId = (String) session.getUserProperties().get(COMPANY_ID_PARAM);
|
||||
if (StringUtils.isNotEmpty(userId)) {
|
||||
List<Session> sessions = socketPool.get(userId);
|
||||
if (sessions != null) {
|
||||
sessions.remove(session);
|
||||
if (sessions.isEmpty()) {
|
||||
socketPool.remove(userId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@OnMessage
|
||||
public void onMessage(String message, Session session) throws IOException {
|
||||
ImAcceptMessageDTO baseDto = null;
|
||||
try {
|
||||
baseDto = JsonUtils.toBean(message, ImAcceptMessageDTO.class);
|
||||
}catch (Exception e){
|
||||
sendMessageBySession(session,ImSendMessageEnum.ERROR,null);
|
||||
return;
|
||||
}
|
||||
|
||||
if (ObjectUtils.isEmpty(baseDto)) {
|
||||
log.warn("Received empty message from session {}", session.getId());
|
||||
return;
|
||||
}
|
||||
|
||||
String type = baseDto.getType();
|
||||
if (StringUtils.isEmpty(type)) {
|
||||
log.warn("Received message without type from session {}", session.getId());
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
ImAcceptMessageEnum enumType = ImAcceptMessageEnum.valueOf(type);
|
||||
switch (enumType) {
|
||||
case PING:
|
||||
sendMessageBySession(session,ImSendMessageEnum.PONG,null);
|
||||
break;
|
||||
case CHECK_ONE_ONLINE:
|
||||
ImAcceptCheckOneOnlineDTO imAcceptCheckOneOnlineDTO = MessageConverterUtils.convertData(baseDto.getData(), ImAcceptCheckOneOnlineDTO.class);
|
||||
handleAcceptCheckOneOnline(imAcceptCheckOneOnlineDTO,session);
|
||||
break;
|
||||
case ONE:
|
||||
ImAcceptOneDTO imAcceptOneDTO = MessageConverterUtils.convertData(baseDto.getData(), ImAcceptOneDTO.class);
|
||||
handleAcceptOne(imAcceptOneDTO,session);
|
||||
break;
|
||||
case ROLLBACK:
|
||||
ImAcceptRollbackDTO imAcceptRollbackDTO = MessageConverterUtils.convertData(baseDto.getData(),ImAcceptRollbackDTO.class);
|
||||
handleAcceptRollback(imAcceptRollbackDTO);
|
||||
break;
|
||||
default:
|
||||
System.out.println("未知消息类型");
|
||||
break;
|
||||
}
|
||||
}catch (Exception e){
|
||||
sendMessageBySession(session,ImSendMessageEnum.ERROR,null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@OnError
|
||||
public void onError(Session session, Throwable throwable) {
|
||||
|
||||
}
|
||||
|
||||
private void handleAcceptRollback(ImAcceptRollbackDTO imAcceptRollbackDTO) throws IOException {
|
||||
String messageId = imAcceptRollbackDTO.getMessageId();
|
||||
|
||||
ImMessage imMessage = imMessageService.getById(messageId);
|
||||
// 更新
|
||||
imMessageService.updateIsRollback(imAcceptRollbackDTO);
|
||||
String sendId = imMessage.getSendId();
|
||||
String acceptId = imMessage.getAcceptId();
|
||||
|
||||
ImSendRollbackVO imSendRollbackVO = new ImSendRollbackVO();
|
||||
imSendRollbackVO.setMessageId(messageId);
|
||||
imSendRollbackVO.setSendId(sendId);
|
||||
imSendRollbackVO.setAcceptId(acceptId);
|
||||
|
||||
sendMessageByCompanyId(sendId,ImSendMessageEnum.ROLLBACK,imSendRollbackVO);
|
||||
sendMessageByCompanyId(acceptId,ImSendMessageEnum.ROLLBACK,imSendRollbackVO);
|
||||
}
|
||||
|
||||
|
||||
private void handleAcceptOne(ImAcceptOneDTO imAcceptOneDTO, Session session) throws IOException {
|
||||
ImMessage imMessage = imMessageService.insertOne(imAcceptOneDTO);
|
||||
|
||||
if(ObjectUtils.isEmpty(imMessage)){
|
||||
sendMessageBySession(session,ImSendMessageEnum.ERROR,null);
|
||||
return;
|
||||
}
|
||||
|
||||
ImSendNormalVO imSendNormalVO = new ImSendNormalVO();
|
||||
|
||||
imSendNormalVO.setMessageId(imMessage.getId())
|
||||
.setMessageContent(imMessage.getContent())
|
||||
.setMessageContentType(imMessage.getContentType())
|
||||
.setSendId(imMessage.getSendId())
|
||||
.setAcceptId(imMessage.getAcceptId())
|
||||
.setQuoteMessageId(imMessage.getQuoteId())
|
||||
.setIsRollback(imMessage.getIsRollback())
|
||||
.setSendMessageTime(imMessage.getCreateTime());
|
||||
|
||||
sendMessageByCompanyId(imSendNormalVO.getSendId(),ImSendMessageEnum.ONE,imSendNormalVO);
|
||||
|
||||
imSendNormalVO.setSendName(slCompanyService.getById(imAcceptOneDTO.getSendId()).getName());
|
||||
|
||||
sendMessageByCompanyId(imSendNormalVO.getAcceptId(), ImSendMessageEnum.ONE,imSendNormalVO);
|
||||
}
|
||||
|
||||
private void handleAcceptCheckOneOnline(ImAcceptCheckOneOnlineDTO imAcceptCheckOneOnlineDTO, Session session) throws IOException {
|
||||
String companyId = imAcceptCheckOneOnlineDTO.getCompanyId();
|
||||
if (StringUtils.isEmpty(companyId)) {
|
||||
return;
|
||||
}
|
||||
|
||||
ImSendCheckOneOnlineVO imSendCheckOneOnlineVO = new ImSendCheckOneOnlineVO();
|
||||
imSendCheckOneOnlineVO.setCompanyId(companyId);
|
||||
|
||||
List<Session> sessions = socketPool.get(companyId);
|
||||
boolean isOnline = false;
|
||||
|
||||
if (sessions != null) {
|
||||
// 判断是否有至少一个打开的连接
|
||||
isOnline = sessions.stream().anyMatch(Session::isOpen);
|
||||
}
|
||||
|
||||
imSendCheckOneOnlineVO.setIsOnline(isOnline);
|
||||
|
||||
sendMessageBySession(session, ImSendMessageEnum.CHECK_ONE_ONLINE, imSendCheckOneOnlineVO);
|
||||
}
|
||||
|
||||
|
||||
// 给某个公司下的所有连接发送消息
|
||||
private void sendMessageByCompanyId(String companyId, ImSendMessageEnum type, Object data) throws IOException {
|
||||
List<Session> sessions = socketPool.get(companyId);
|
||||
if (sessions != null) {
|
||||
for (Session session : sessions) {
|
||||
sendMessageCommon(session, type, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 给单个会话发送消息(保持不变)
|
||||
private void sendMessageBySession(Session session, ImSendMessageEnum type, Object data) throws IOException {
|
||||
sendMessageCommon(session, type, data);
|
||||
}
|
||||
|
||||
// 通用发送方法
|
||||
private void sendMessageCommon(Session session, ImSendMessageEnum type, Object data) throws IOException {
|
||||
if (session != null && session.isOpen()) {
|
||||
final RemoteEndpoint.Basic remote = session.getBasicRemote();
|
||||
synchronized (remote) {
|
||||
ImSendMessageVO imSendMessageVO = new ImSendMessageVO();
|
||||
imSendMessageVO.setType(type.name());
|
||||
imSendMessageVO.setData(data);
|
||||
remote.sendText(JsonUtils.toJson(imSendMessageVO));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package cn.sslog.controller.forum;
|
||||
|
||||
import cn.sslog.common.Result;
|
||||
import cn.sslog.domain.dto.forum.comment.ForumCommentAddDTO;
|
||||
import cn.sslog.domain.vo.forum.comment.ForumPostCommentVO;
|
||||
import cn.sslog.enums.ResponseEnum;
|
||||
import cn.sslog.service.forum.ForumPostCommentService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/forum/post/comment")
|
||||
public class ForumPostCommentController {
|
||||
@Resource
|
||||
private ForumPostCommentService forumPostCommentService;
|
||||
|
||||
@PostMapping("/add")
|
||||
public Result<ForumPostCommentVO> add(@RequestBody @Validated ForumCommentAddDTO forumCommentAddDTO){
|
||||
return forumPostCommentService.add(forumCommentAddDTO);
|
||||
}
|
||||
|
||||
@GetMapping("/list")
|
||||
public Result<List<ForumPostCommentVO>> getPostComments(@RequestParam("forumPostId") @NotBlank(message = "帖子ID不能为空") String forumPostId){
|
||||
List<ForumPostCommentVO> forumPostCommentVOS = forumPostCommentService.getPostComments(forumPostId);
|
||||
return Result.success(forumPostCommentVOS);
|
||||
}
|
||||
|
||||
@PostMapping("/delete/{forumPostCommentId}")
|
||||
public Result<Void> delete(@PathVariable("forumPostCommentId") @NotBlank(message = "帖子ID不能为空") String forumPostCommentId) {
|
||||
boolean removeFlag = forumPostCommentService.deletePostComment(forumPostCommentId);
|
||||
return removeFlag ? Result.success(ResponseEnum.DELETE_SUCCESS) : Result.error(ResponseEnum.DELETE_ERROR);
|
||||
}
|
||||
}
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
package cn.sslog.controller.forum;
|
||||
|
||||
import cn.sslog.common.BasePageVO;
|
||||
import cn.sslog.common.Result;
|
||||
import cn.sslog.constants.ResponseStatusConstants;
|
||||
import cn.sslog.domain.dto.forum.post.*;
|
||||
import cn.sslog.domain.entity.forum.ForumPost;
|
||||
import cn.sslog.domain.vo.forum.ForumDashboardVO;
|
||||
import cn.sslog.domain.vo.forum.post.ForumPostDetailVO;
|
||||
import cn.sslog.domain.vo.forum.post.ForumPostPageVO;
|
||||
import cn.sslog.domain.vo.forum.post.ForumPostStatusCountVO;
|
||||
import cn.sslog.domain.vo.forum.post.chart.ForumPostChartNumberVO;
|
||||
import cn.sslog.domain.vo.forum.post.chart.ForumPostChartTypeVO;
|
||||
import cn.sslog.domain.vo.forum.post.chart.ForumPostChartViewVO;
|
||||
import cn.sslog.enums.ResponseEnum;
|
||||
import cn.sslog.service.forum.ForumPostService;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/forum/post")
|
||||
public class ForumPostController {
|
||||
@Resource
|
||||
private ForumPostService forumPostService;
|
||||
|
||||
@PostMapping("/add")
|
||||
public Result<ForumPostDetailVO> add(@RequestBody @Validated ForumPostAddDTO forumPostAddDTO){
|
||||
return forumPostService.add(forumPostAddDTO);
|
||||
}
|
||||
|
||||
@PostMapping("/update")
|
||||
public Result<ForumPostDetailVO> update(@RequestBody @Validated ForumPostUpdateDTO forumPostUpdateDTO){
|
||||
return forumPostService.updateDetail(forumPostUpdateDTO);
|
||||
}
|
||||
|
||||
@PostMapping("/delete")
|
||||
public Result<Void> deleteUserByPost(@RequestBody @Validated ForumPostDeleteDTO forumPostDeleteDTO) {
|
||||
return forumPostService.delete(forumPostDeleteDTO);
|
||||
}
|
||||
|
||||
@PostMapping("/page")
|
||||
public Result<BasePageVO<ForumPostPageVO>> getPostPage(@RequestBody @Validated ForumPostCompanyPageDTO forumPostCompanyPageDTO){
|
||||
return forumPostService.getPostPage(forumPostCompanyPageDTO);
|
||||
}
|
||||
@GetMapping("/getPostStatusCount")
|
||||
public Result<ForumPostStatusCountVO> getPostStatusCount(){
|
||||
ForumPostStatusCountVO forumPostStatusCountVO = forumPostService.getPostStatusCount();
|
||||
return Result.success(forumPostStatusCountVO);
|
||||
}
|
||||
|
||||
@PostMapping("/detail")
|
||||
public Result<ForumPostDetailVO> getDetail(@RequestBody @Validated ForumPostDetailDTO forumPostDetailDTO) {
|
||||
String forumPostId = forumPostDetailDTO.getForumPostId();
|
||||
ForumPost forumPost = forumPostService.getById(forumPostId);
|
||||
|
||||
if(ObjectUtils.isEmpty(forumPost)){
|
||||
return Result.error(ResponseStatusConstants.NOT_FOUND,"来晚了,该篇帖子已被删除!");
|
||||
}
|
||||
|
||||
ForumPostDetailVO forumPostDetailVO = forumPostService.getDetail(forumPostDetailDTO);
|
||||
|
||||
return Result.success(forumPostDetailVO);
|
||||
}
|
||||
|
||||
@GetMapping("/getRecommendList")
|
||||
public Result<List<ForumPostPageVO>> getRecommendList(){
|
||||
List<ForumPostPageVO> list = forumPostService.getRecommendList();
|
||||
return Result.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/getHotList")
|
||||
public Result<List<ForumPostPageVO>> getHotList(){
|
||||
List<ForumPostPageVO> list = forumPostService.getHotList();
|
||||
return Result.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/getDashboardData")
|
||||
public Result<ForumDashboardVO> getDashBoardData(){
|
||||
ForumDashboardVO forumDashboardVO = forumPostService.getDashBoardData();
|
||||
return Result.success(forumDashboardVO);
|
||||
}
|
||||
|
||||
@GetMapping("/getChartView")
|
||||
public Result<List<ForumPostChartViewVO>> getChartViewData(){
|
||||
List<ForumPostChartViewVO> list = forumPostService.getChartViewData();
|
||||
return Result.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/getChartNumber")
|
||||
public Result<List<ForumPostChartNumberVO>> getChartNumberData(){
|
||||
List<ForumPostChartNumberVO> list = forumPostService.getChartNumberData();
|
||||
return Result.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/getChartType")
|
||||
public Result<List<ForumPostChartTypeVO>> getChartTypeData(){
|
||||
List<ForumPostChartTypeVO> list = forumPostService.getChartTypeData();
|
||||
return Result.success(list);
|
||||
}
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package cn.sslog.controller.forum;
|
||||
|
||||
import cn.sslog.common.Result;
|
||||
import cn.sslog.service.forum.ForumPostFavoriteService;
|
||||
import cn.sslog.service.forum.ForumPostLikeService;
|
||||
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.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/forum/post/favorite")
|
||||
public class ForumPostFavoriteController {
|
||||
@Resource
|
||||
private ForumPostFavoriteService forumPostFavoriteService;
|
||||
|
||||
@PostMapping("/{postId}")
|
||||
public Result<Void> favorite(@PathVariable @NotBlank(message = "帖子ID不能为空") String postId){
|
||||
forumPostFavoriteService.favorite(postId);
|
||||
return Result.success();
|
||||
}
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package cn.sslog.controller.forum;
|
||||
|
||||
import cn.sslog.common.Result;
|
||||
import cn.sslog.service.forum.ForumPostLikeService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/forum/post/like")
|
||||
public class ForumPostLikeController {
|
||||
@Resource
|
||||
private ForumPostLikeService forumPostLikeService;
|
||||
|
||||
@PostMapping("/{postId}")
|
||||
public Result<Void> like(@PathVariable @NotBlank(message = "帖子ID不能为空") String postId){
|
||||
forumPostLikeService.like(postId);
|
||||
return Result.success();
|
||||
}
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package cn.sslog.controller.forum;
|
||||
|
||||
import cn.sslog.common.Result;
|
||||
import cn.sslog.service.forum.ForumPostLikeService;
|
||||
import cn.sslog.service.forum.ForumPostViewService;
|
||||
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.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/forum/post/view")
|
||||
public class ForumPostViewController {
|
||||
@Resource
|
||||
private ForumPostViewService forumPostViewService;
|
||||
|
||||
@PostMapping("/{postId}")
|
||||
public Result<Void> view(@PathVariable @NotBlank(message = "帖子ID不能为空") String postId){
|
||||
forumPostViewService.view(postId);
|
||||
return Result.success();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package cn.sslog.domain.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ForgetDTO {
|
||||
@NotBlank(
|
||||
message = "邮箱号或手机号不能为空"
|
||||
)
|
||||
private String forgetCredential;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package cn.sslog.domain.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class LoginDTO {
|
||||
@NotBlank(message = "登录账号或邮箱号不能为空")
|
||||
private String loginCredential;
|
||||
@NotBlank(message = "密码不能为空")
|
||||
private String password;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package cn.sslog.domain.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.Email;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class RegisterDTO {
|
||||
@NotBlank(message = "账号不能为空")
|
||||
private String account;
|
||||
|
||||
@NotBlank(message = "公司名称不能为空")
|
||||
private String name;
|
||||
|
||||
@NotBlank(message = "邮箱不能为空")
|
||||
@Email(message = "邮箱格式有误")
|
||||
private String email;
|
||||
|
||||
@NotBlank(message = "密码不能为空")
|
||||
private String password;
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package cn.sslog.domain.dto.company;
|
||||
|
||||
import cn.sslog.common.BasePageDTO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class CompanyPageDTO extends BasePageDTO {
|
||||
private List<String> area;
|
||||
private List<String> industry;
|
||||
private String name;
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package cn.sslog.domain.dto.company;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class CompanyPublicDetailDTO {
|
||||
@NotBlank(message = "公司id不能为空")
|
||||
private String companyId;
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
package cn.sslog.domain.dto.company;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class CompanyUpdateDetailDTO {
|
||||
@NotBlank(message = "id不能为空")
|
||||
private String companyId;
|
||||
@NotBlank(message = "公司名称不能为空")
|
||||
private String name;
|
||||
@NotBlank(message = "登录账号不能为空")
|
||||
private String account;
|
||||
@NotBlank(message = "登录密码不能为空")
|
||||
private String password;
|
||||
@NotBlank(message = "公司邮箱不能为空")
|
||||
private String email;
|
||||
private String phone;
|
||||
private List<String> address;
|
||||
private List<String> industry;
|
||||
private String establishedDate;
|
||||
private String profile;
|
||||
private String avatar;
|
||||
private String description;
|
||||
private String shortName;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package cn.sslog.domain.dto.file;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class InsertFileDTO {
|
||||
@NotBlank(
|
||||
message = "文件名称不能为空"
|
||||
)
|
||||
private String fileName;
|
||||
|
||||
@NotBlank(
|
||||
message = "文件大小不能为空"
|
||||
)
|
||||
private String fileSize;
|
||||
|
||||
@NotBlank(
|
||||
message = "文件全路径oss不能为空"
|
||||
)
|
||||
private String fileMapName;
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package cn.sslog.domain.dto.forum.comment;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ForumCommentAddDTO {
|
||||
private String fatherId;
|
||||
|
||||
private String postId;
|
||||
private String companyId;
|
||||
private String content;
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package cn.sslog.domain.dto.forum.post;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class ForumPostAddDTO {
|
||||
@NotBlank(message = "帖子标题不能为空")
|
||||
private String title;
|
||||
@NotBlank(message = "帖子内容不能为空")
|
||||
private String content;
|
||||
@NotBlank(message = "帖子摘要不能为空")
|
||||
private String summary;
|
||||
private String cover;
|
||||
private List<String> tags;
|
||||
@NotBlank(message = "公司id不能为空")
|
||||
private String companyId;
|
||||
|
||||
@NotNull(message = "帖子状态不能为空")
|
||||
@Min(value = 0, message = "帖子状态无效")
|
||||
private Integer status;
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package cn.sslog.domain.dto.forum.post;
|
||||
|
||||
import cn.sslog.common.BasePageDTO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class ForumPostCompanyPageDTO extends BasePageDTO {
|
||||
private String companyId;
|
||||
private String postTitle;
|
||||
private Integer status;
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package cn.sslog.domain.dto.forum.post;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class ForumPostDeleteDTO {
|
||||
@NotBlank(message = "帖子id不能为空")
|
||||
private String forumPostId;
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package cn.sslog.domain.dto.forum.post;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class ForumPostDetailDTO {
|
||||
@NotBlank(message = "帖子id不能为空")
|
||||
private String forumPostId;
|
||||
private String companyId;
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
package cn.sslog.domain.dto.forum.post;
|
||||
|
||||
import cn.sslog.common.BasePageDTO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class ForumPostPublicPageDTO extends BasePageDTO {
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package cn.sslog.domain.dto.forum.post;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class ForumPostUpdateDTO {
|
||||
@NotBlank(message = "帖子id不能为空")
|
||||
private String forumPostId;
|
||||
@NotBlank(message = "帖子标题不能为空")
|
||||
private String title;
|
||||
@NotBlank(message = "帖子内容不能为空")
|
||||
private String content;
|
||||
@NotBlank(message = "帖子摘要不能为空")
|
||||
private String summary;
|
||||
private String cover;
|
||||
private List<String> tags;
|
||||
|
||||
@NotNull(message = "帖子状态不能为空")
|
||||
@Min(value = 0, message = "帖子状态无效")
|
||||
private Integer status;
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package cn.sslog.domain.dto.im;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ImMessageHistoryDTO {
|
||||
@NotBlank(message = "聊天者的id不能为空")
|
||||
private String chatCompanyId;
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package cn.sslog.domain.dto.im;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ImMessageUpdateIsReadDTO {
|
||||
@NotBlank(message = "id不能为空")
|
||||
private String companyId;
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package cn.sslog.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("im_message")
|
||||
@Accessors(chain = true) // 添加这一行即可支持链式操作
|
||||
public class ImMessage {
|
||||
@TableId(value = "b_id", type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
|
||||
@TableField("b_send_id")
|
||||
private String sendId;
|
||||
@TableField("b_accept_id")
|
||||
private String acceptId;
|
||||
@TableField("b_content")
|
||||
private String content;
|
||||
@TableField("b_content_type")
|
||||
private String contentType;
|
||||
@TableField("b_is_read")
|
||||
private Integer isRead;// 是否已读
|
||||
@TableField("b_is_rollback")
|
||||
private Integer isRollback;// 是否撤回
|
||||
@TableField("b_quote_id")
|
||||
private String quoteId;// 引用id
|
||||
@TableField(value = "b_create_time", fill = FieldFill.INSERT)
|
||||
private String createTime;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package cn.sslog.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("sl_company")
|
||||
@Accessors(chain = true) // 添加这一行即可支持链式操作
|
||||
public class SlCompany {
|
||||
@TableId(value = "b_id", type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
|
||||
@TableField("b_name")
|
||||
private String name;
|
||||
|
||||
@TableField("b_account")
|
||||
private String account;
|
||||
|
||||
@TableField("b_email")
|
||||
private String email;
|
||||
|
||||
@TableField("b_password")
|
||||
private String password;
|
||||
|
||||
@TableField("b_profile")
|
||||
private String profile;
|
||||
|
||||
@TableField("b_description")
|
||||
private String description;
|
||||
|
||||
@TableField("b_address")
|
||||
private String address;
|
||||
|
||||
@TableField("b_phone")
|
||||
private String phone;
|
||||
|
||||
@TableField("b_established_date")
|
||||
private String establishedDate;
|
||||
|
||||
@TableField("b_avatar")
|
||||
private String avatar;
|
||||
|
||||
@TableField("b_industry")
|
||||
private String industry;
|
||||
|
||||
@TableField("b_visible")
|
||||
private String visible;
|
||||
|
||||
@TableField("b_right_visible")
|
||||
private String rightVisible;
|
||||
|
||||
@TableField("b_order")
|
||||
private Integer bOrder;
|
||||
|
||||
@TableField("b_color")
|
||||
private String color;
|
||||
@TableField("b_shortname")
|
||||
private String shortName;
|
||||
|
||||
@TableField(value = "b_create_time", fill = FieldFill.INSERT)
|
||||
private String createTime;
|
||||
|
||||
@TableField(value = "b_update_time", fill = FieldFill.INSERT_UPDATE)
|
||||
private String updateTime;
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package cn.sslog.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("sl_file")
|
||||
@Accessors(chain = true)
|
||||
public class SlFile {
|
||||
@TableId(
|
||||
value = "b_id",
|
||||
type = IdType.ASSIGN_UUID
|
||||
)
|
||||
private String id;
|
||||
@TableField("mx_filename")
|
||||
private String name;
|
||||
@TableField("mx_filesize")
|
||||
private String size;
|
||||
@TableField("mx_fileext")
|
||||
private String ext;
|
||||
@TableField("mx_mapfilename")
|
||||
private String mapName;
|
||||
@TableField(
|
||||
value = "b_create_time",
|
||||
fill = FieldFill.INSERT
|
||||
)
|
||||
private String createTime;
|
||||
@TableField(
|
||||
value = "b_create_id",
|
||||
fill = FieldFill.INSERT
|
||||
)
|
||||
private String createId;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package cn.sslog.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("sl_notification")
|
||||
@Accessors(chain = true)
|
||||
public class SlNotification {
|
||||
@TableId(value = "b_id", type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
@TableField("b_send_id")
|
||||
private String sendId;
|
||||
@TableField("b_accept_id")
|
||||
private String acceptId;
|
||||
@TableField("b_content")
|
||||
private String content;
|
||||
@TableField("b_post_id")
|
||||
private String postId;
|
||||
@TableField("b_type")
|
||||
private Integer type;
|
||||
@TableField(value = "b_create_time", fill = FieldFill.INSERT)
|
||||
private String createTime;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package cn.sslog.domain.entity;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class WebArea {
|
||||
private String id;
|
||||
private Integer xh;
|
||||
private String name;
|
||||
private String fatherId;
|
||||
private String canuse;
|
||||
private String bz;
|
||||
private String field;
|
||||
private Integer order;
|
||||
private String visible;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package cn.sslog.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("web_property")
|
||||
@Accessors(chain = true) // 添加这一行即可支持链式操作
|
||||
public class WebProperty {
|
||||
@TableId(value = "b_id", type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
@TableField("b_xh")
|
||||
private Integer xh;
|
||||
@TableField("b_name")
|
||||
private String name;
|
||||
@TableField("b_canuse")
|
||||
private String canuse;
|
||||
@TableField("b_bz")
|
||||
private String bz;
|
||||
@TableField("b_url")
|
||||
private String url;
|
||||
@TableField("b_img")
|
||||
private String img;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package cn.sslog.domain.entity.forum;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("forum_post")
|
||||
@Accessors(chain = true)
|
||||
public class ForumPost {
|
||||
@TableId(value = "b_id", type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
@TableField("b_title")
|
||||
private String title;
|
||||
@TableField("b_content")
|
||||
private String content;
|
||||
@TableField("b_cover")
|
||||
private String cover;
|
||||
@TableField("b_tags")
|
||||
private String tags;
|
||||
@TableField("b_company_id")
|
||||
private String companyId;
|
||||
@TableField("b_summary")
|
||||
private String summary;
|
||||
@TableField("b_status")
|
||||
private Integer status;
|
||||
@TableField(value = "b_create_time", fill = FieldFill.INSERT)
|
||||
private String createTime;
|
||||
@TableField(value = "b_update_time", fill = FieldFill.INSERT_UPDATE)
|
||||
private String updateTime;
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package cn.sslog.domain.entity.forum;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("forum_post_comment")
|
||||
@Accessors(chain = true)
|
||||
public class ForumPostComment {
|
||||
@TableId(value = "b_id", type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
@TableField("b_post_id")
|
||||
private String postId;
|
||||
@TableField("b_content")
|
||||
private String content;
|
||||
@TableField("b_company_id")
|
||||
private String companyId;
|
||||
@TableField("b_father_id")
|
||||
private String fatherId;
|
||||
@TableField(value = "b_create_time", fill = FieldFill.INSERT)
|
||||
private String createTime;
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package cn.sslog.domain.entity.forum;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("forum_post_favorite")
|
||||
@Accessors(chain = true)
|
||||
public class ForumPostFavorite {
|
||||
@TableId(value = "b_id", type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
@TableField("b_post_id")
|
||||
private String postId;
|
||||
@TableField("b_company_id")
|
||||
private String companyId;
|
||||
@TableField(value = "b_create_time", fill = FieldFill.INSERT)
|
||||
private String createTime;
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package cn.sslog.domain.entity.forum;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("forum_post_like")
|
||||
@Accessors(chain = true)
|
||||
public class ForumPostLike {
|
||||
@TableId(value = "b_id", type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
@TableField("b_post_id")
|
||||
private String postId;
|
||||
@TableField("b_company_id")
|
||||
private String companyId;
|
||||
@TableField(value = "b_create_time", fill = FieldFill.INSERT)
|
||||
private String createTime;
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package cn.sslog.domain.entity.forum;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("forum_post_view")
|
||||
@Accessors(chain = true)
|
||||
public class ForumPostView {
|
||||
@TableId(value = "b_id", type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
@TableField("b_post_id")
|
||||
private String postId;
|
||||
@TableField(value = "b_create_time", fill = FieldFill.INSERT)
|
||||
private String createTime;
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package cn.sslog.domain.im.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ImAcceptCheckOneOnlineDTO {
|
||||
private String companyId;
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package cn.sslog.domain.im.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ImAcceptMessageDTO {
|
||||
private String type;
|
||||
private Object data;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package cn.sslog.domain.im.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ImAcceptOneDTO {
|
||||
private String sendId;
|
||||
private String acceptId;
|
||||
private String content;
|
||||
private String contentType;
|
||||
private String quoteId;
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package cn.sslog.domain.im.dto;
|
||||
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ImAcceptRollbackDTO {
|
||||
private String messageId;
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package cn.sslog.domain.im.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ImSendCheckOneOnlineVO {
|
||||
private String companyId;
|
||||
private Boolean isOnline;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package cn.sslog.domain.im.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ImSendMessageVO {
|
||||
private String type;
|
||||
private Object data;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package cn.sslog.domain.im.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class ImSendNormalVO {
|
||||
private String messageId;
|
||||
private String sendId;
|
||||
private String sendName;
|
||||
private String acceptId;
|
||||
private String messageContent;
|
||||
private String messageContentType;
|
||||
private Integer isRollback;// 是否撤回
|
||||
private String quoteMessageId;// 引用id
|
||||
private String sendMessageTime;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package cn.sslog.domain.im.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ImSendRollbackVO {
|
||||
private String messageId;
|
||||
private String sendId;
|
||||
private String acceptId;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package cn.sslog.domain.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true) // 添加这一行即可支持链式操作
|
||||
public class LoginVO {
|
||||
private String id;
|
||||
private String account;
|
||||
private String name;
|
||||
private String email;
|
||||
private String token;
|
||||
private String avatar;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package cn.sslog.domain.vo.aliyun;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class AliyunKeyVO {
|
||||
private String accessid;
|
||||
private String policy;
|
||||
private String signature;
|
||||
private String dir;
|
||||
private String host;
|
||||
private String expire;
|
||||
private String callback;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package cn.sslog.domain.vo.area;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class AreaCompanyVO {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package cn.sslog.domain.vo.area;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class AreaVO {
|
||||
private String label;
|
||||
private String value;
|
||||
private List<AreaVO> children;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package cn.sslog.domain.vo.company;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class CompanyAreaVO {
|
||||
private String areaName;
|
||||
private List<CompanyInfo> companies; // 用于存放该地区的公司信息
|
||||
|
||||
// 内部类,用于表示公司信息
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public static class CompanyInfo {
|
||||
private String companyId;
|
||||
private String companyName;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package cn.sslog.domain.vo.company;
|
||||
|
||||
import cn.sslog.config.RemoveMillisSerializer;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class CompanyPageVO {
|
||||
private String companyId;
|
||||
|
||||
private List<String> address;
|
||||
private String avatar;
|
||||
@JsonSerialize(using = RemoveMillisSerializer.class)
|
||||
private String establishedDate;
|
||||
private List<String> industry;
|
||||
private String name;
|
||||
private String profile;
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
package cn.sslog.domain.vo.company;
|
||||
|
||||
import cn.sslog.config.RemoveMillisSerializer;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class CompanyPrivateDetailVO {
|
||||
private String companyId;
|
||||
private String name;
|
||||
private String account;
|
||||
private String password;
|
||||
private String email;
|
||||
private String phone;
|
||||
private List<String> address;
|
||||
private List<String> industry;
|
||||
@JsonSerialize(using = RemoveMillisSerializer.class)
|
||||
private String establishedDate;
|
||||
private String profile;
|
||||
private String avatar;
|
||||
private String description;
|
||||
private String shortName;
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package cn.sslog.domain.vo.company;
|
||||
|
||||
import cn.sslog.config.RemoveMillisSerializer;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class CompanyPublicDetailVO {
|
||||
private String companyId;
|
||||
private String name;
|
||||
private String email;
|
||||
private String phone;
|
||||
private List<String> address;
|
||||
private List<String> industry;
|
||||
@JsonSerialize(using = RemoveMillisSerializer.class)
|
||||
private String establishedDate;
|
||||
private String profile;
|
||||
private String avatar;
|
||||
private String description;
|
||||
private String shortName;
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package cn.sslog.domain.vo.company;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class CompanyRecommendRightVO {
|
||||
private String companyId;
|
||||
private String name;
|
||||
private String color;
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
package cn.sslog.domain.vo.company;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class CompanyRecommendVO {
|
||||
private String shengName; // 用于 省 名称
|
||||
private String shiName; // 用于 市 名称
|
||||
private List<CompanyInfo> companies; // 用于存放该地区的公司信息
|
||||
|
||||
// 内部类,用于表示公司信息
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public static class CompanyInfo {
|
||||
private String id; // 公司ID
|
||||
private String name; // 公司名称
|
||||
private String color;
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package cn.sslog.domain.vo.forum;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ForumDashboardVO {
|
||||
private Long postCount;
|
||||
private Long viewCount;
|
||||
private Long likeCount;
|
||||
private Long favoriteCount;
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package cn.sslog.domain.vo.forum.comment;
|
||||
|
||||
import cn.sslog.config.RemoveMillisSerializer;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ForumPostCommentVO {
|
||||
private String commentId;
|
||||
private String postId;
|
||||
private String content;
|
||||
@JsonSerialize(using = RemoveMillisSerializer.class) // 新增序列化器
|
||||
private String createTime;
|
||||
private String fatherId;
|
||||
|
||||
private Company publishCompany;
|
||||
private Company replyCompany;
|
||||
|
||||
private List<ForumPostCommentVO> children;
|
||||
|
||||
// 发布公司对象
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public static class Company {
|
||||
private String companyId;
|
||||
private String name;
|
||||
private String avatar;
|
||||
}
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package cn.sslog.domain.vo.forum.post;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ForumPostAddVO {
|
||||
private String forumPostId;
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package cn.sslog.domain.vo.forum.post;
|
||||
|
||||
import cn.sslog.config.RemoveMillisSerializer;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ForumPostDetailVO {
|
||||
private String forumPostId;
|
||||
private String title;
|
||||
private String content;
|
||||
private String summary;
|
||||
private String cover;
|
||||
private Integer status;
|
||||
|
||||
private List<String> tags;
|
||||
private String tagsString;
|
||||
|
||||
@JsonSerialize(using = RemoveMillisSerializer.class)
|
||||
private String publishTime;
|
||||
private String companyId;
|
||||
private String companyName;
|
||||
|
||||
private Integer viewCount;
|
||||
private Integer likeCount;
|
||||
private Integer favoriteCount;
|
||||
private Integer commentCount;
|
||||
|
||||
private Boolean isLike;
|
||||
private Boolean isFavorite;
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package cn.sslog.domain.vo.forum.post;
|
||||
|
||||
import cn.sslog.config.RemoveMillisSerializer;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ForumPostPageVO {
|
||||
private String forumPostId;
|
||||
private String title;
|
||||
private String summary;
|
||||
private String cover;
|
||||
private String tagsString;
|
||||
private List<String> tags;
|
||||
@JsonSerialize(using = RemoveMillisSerializer.class)
|
||||
private String publishTime;
|
||||
private String companyName;
|
||||
|
||||
private Integer viewCount;
|
||||
private Integer likeCount;
|
||||
private Integer favoriteCount;
|
||||
private Integer commentCount;
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package cn.sslog.domain.vo.forum.post;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ForumPostStatusCountVO {
|
||||
/** 所有状态的总数 */
|
||||
private Long all;
|
||||
|
||||
/** 草稿状态的数量 */
|
||||
private Long draft;
|
||||
|
||||
/** 正常(已发布)状态的数量 */
|
||||
private Long normal;
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package cn.sslog.domain.vo.forum.post.chart;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ForumPostChartNumberVO {
|
||||
private String label;
|
||||
private Integer value;
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package cn.sslog.domain.vo.forum.post.chart;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ForumPostChartTypeVO {
|
||||
private String label;
|
||||
private Integer value;
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package cn.sslog.domain.vo.forum.post.chart;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ForumPostChartViewVO {
|
||||
private String label;
|
||||
private Integer value;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package cn.sslog.domain.vo.im;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class AllNoReadNumberVO {
|
||||
private Integer noReadNumber;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package cn.sslog.domain.vo.im;
|
||||
|
||||
import cn.sslog.config.RemoveMillisSerializer;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class ChatCompanyVO {
|
||||
private String messageId;
|
||||
@JsonSerialize(using = RemoveMillisSerializer.class)
|
||||
private String lastMessageTime;
|
||||
|
||||
private String companyAvatar;
|
||||
private String companyId;
|
||||
private String companyName;
|
||||
|
||||
private Integer isRollback;
|
||||
private Integer noReadNumber;
|
||||
|
||||
private String lastContent;
|
||||
private String lastContentType;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package cn.sslog.domain.vo.im;
|
||||
|
||||
import cn.sslog.config.RemoveMillisSerializer;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class ImMessageHistoryVO {
|
||||
private String messageId;
|
||||
private String sendId;
|
||||
private String acceptId;
|
||||
private String messageContent;
|
||||
private String messageContentType;
|
||||
private Integer isRollback;// 是否撤回
|
||||
private String quoteMessageId;// 引用id
|
||||
@JsonSerialize(using = RemoveMillisSerializer.class)
|
||||
private String sendMessageTime;
|
||||
}
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
package cn.sslog.domain.vo.notification;
|
||||
|
||||
import cn.sslog.config.RemoveMillisSerializer;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class NotificationVO {
|
||||
private String notificationId;
|
||||
private String content;
|
||||
@JsonSerialize(using = RemoveMillisSerializer.class)
|
||||
private String createTime;
|
||||
private Integer type;
|
||||
|
||||
private Post postDetail;
|
||||
private Company sendCompany;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public static class Company {
|
||||
private String companyId;
|
||||
private String name;
|
||||
private String avatar;
|
||||
}
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public static class Post {
|
||||
private String postId;
|
||||
private String title;
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package cn.sslog.domain.vo.property;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class WebPropertyVO {
|
||||
private String label;
|
||||
private String value;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package cn.sslog.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public enum ForumPostStatusEnum {
|
||||
DRAFT(0, "草稿"),
|
||||
NORMAL(1, "正常");
|
||||
|
||||
private final Integer code;
|
||||
private final String description;
|
||||
|
||||
ForumPostStatusEnum(Integer code, String description) {
|
||||
this.code = code;
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
// 根据 code 获取枚举
|
||||
public static ForumPostStatusEnum fromCode(Integer code) {
|
||||
for (ForumPostStatusEnum status : ForumPostStatusEnum.values()) {
|
||||
if (status.code.equals(code)) {
|
||||
return status;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package cn.sslog.enums;
|
||||
|
||||
public enum ImAcceptMessageEnum {
|
||||
PING,
|
||||
CHECK_ONE_ONLINE,
|
||||
ONE,
|
||||
ROLLBACK
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package cn.sslog.enums;
|
||||
|
||||
public enum ImSendMessageEnum {
|
||||
CHECK_ONE_ONLINE,
|
||||
ONE,
|
||||
ROLLBACK,
|
||||
PONG,
|
||||
ERROR
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package cn.sslog.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public enum NotificationTypeEnum {
|
||||
SYSTEM(0, "系统"),
|
||||
LIKE(1, "赞"),
|
||||
FAVORITE(2,"收藏"),
|
||||
COMMENT(3, "评论");
|
||||
|
||||
private final Integer code; // 将 code 改为 String 类型
|
||||
private final String description;
|
||||
|
||||
NotificationTypeEnum(Integer code, String description) {
|
||||
this.code = code;
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
// 根据 code 获取枚举
|
||||
public static NotificationTypeEnum fromCode(Integer code) {
|
||||
for (NotificationTypeEnum notification : NotificationTypeEnum.values()) {
|
||||
if (notification.getCode().equals(code)) { // 使用 String 的 equals 比较
|
||||
return notification;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package cn.sslog.enums;
|
||||
|
||||
import cn.sslog.constants.ResponseStatusConstants;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum ResponseEnum {
|
||||
SUCCESS(ResponseStatusConstants.SUCCESS,"请求成功"),
|
||||
ERROR(ResponseStatusConstants.ERROR,"服务器错误,请联系管理人员"),
|
||||
|
||||
AUTH_SUCCESS(ResponseStatusConstants.SUCCESS,"登录成功"),
|
||||
AUTH_EXPIRE(ResponseStatusConstants.UNAUTHORIZED,"尚未登录或登录已过期,请重新登录"),
|
||||
AUTH_ACCOUNT_ERROR(ResponseStatusConstants.UNAUTHORIZED,"登录失败,账号或密码有误"),
|
||||
AUTH_FORGET_ERROR(ResponseStatusConstants.ERROR,"账号或邮箱不存在,请检查"),
|
||||
AUTH_FORGET_SUCCESS(ResponseStatusConstants.SUCCESS,"密码已成功发送至您的邮箱,请注意查收"),
|
||||
|
||||
SAVE_SUCCESS(ResponseStatusConstants.SUCCESS,"保存成功"),
|
||||
SAVE_ERROR(ResponseStatusConstants.ERROR,"保存失败,请稍后重试!"),
|
||||
|
||||
UPDATE_SUCCESS(ResponseStatusConstants.SUCCESS,"更新成功"),
|
||||
UPDATE_ERROR(ResponseStatusConstants.ERROR,"更新失败,请稍后重试!"),
|
||||
UPDATE_ACCOUNT_ERROR(ResponseStatusConstants.ERROR,"更新失败,该账号已被注册"),
|
||||
UPDATE_EMAIL_ERROR(ResponseStatusConstants.ERROR,"更新失败,该邮箱已被注册"),
|
||||
|
||||
DELETE_SUCCESS(ResponseStatusConstants.SUCCESS,"删除成功"),
|
||||
DELETE_ERROR(ResponseStatusConstants.ERROR,"删除失败,请稍后重试!"),
|
||||
|
||||
REGISTER_SUCCESS(ResponseStatusConstants.SUCCESS,"注册成功"),
|
||||
REGISTER_ERROR(ResponseStatusConstants.ERROR,"注册失败"),
|
||||
REGISTER_ACCOUNT_ERROR(ResponseStatusConstants.ERROR,"注册失败,该账号已被注册"),
|
||||
REGISTER_EMAIL_ERROR(ResponseStatusConstants.ERROR,"注册失败,该邮箱已被注册"),
|
||||
|
||||
RESOURCE_NOT_FOUND(ResponseStatusConstants.NOT_FOUND,"资源不存在");
|
||||
|
||||
private final Integer code; //响应码
|
||||
private final String message; //相应信息
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package cn.sslog.exception;
|
||||
|
||||
import cn.sslog.enums.ResponseEnum;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class BaseException extends RuntimeException {
|
||||
private Integer code;
|
||||
private String message;
|
||||
|
||||
public BaseException() {
|
||||
super();
|
||||
}
|
||||
|
||||
public BaseException(ResponseEnum responseEnum) {
|
||||
super(responseEnum.getMessage());
|
||||
this.code = responseEnum.getCode();
|
||||
this.message = responseEnum.getMessage();
|
||||
}
|
||||
}
|
||||
+90
@@ -0,0 +1,90 @@
|
||||
package cn.sslog.exception;
|
||||
|
||||
import cn.sslog.common.Result;
|
||||
import cn.sslog.constants.ResponseStatusConstants;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.converter.HttpMessageNotReadableException;
|
||||
import org.springframework.validation.BindException;
|
||||
import org.springframework.web.HttpRequestMethodNotSupportedException;
|
||||
import org.springframework.web.bind.MethodArgumentNotValidException;
|
||||
import org.springframework.web.bind.MissingPathVariableException;
|
||||
import org.springframework.web.bind.MissingServletRequestParameterException;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.validation.ConstraintViolationException;
|
||||
import java.util.Objects;
|
||||
|
||||
@Slf4j
|
||||
@RestControllerAdvice
|
||||
public class GlobalExceptionHandler {
|
||||
|
||||
/**
|
||||
* 请求方式不支持
|
||||
*/
|
||||
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
|
||||
public Result<Void> handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException e,
|
||||
HttpServletRequest request)
|
||||
{
|
||||
String requestURI = request.getRequestURI();
|
||||
String message = "请求地址 '" + requestURI + "' 不支持 '" + e.getMethod() + " ' 请求";
|
||||
return Result.error(ResponseStatusConstants.BAD_REQUEST,message);
|
||||
}
|
||||
/**
|
||||
* 请求路径中缺少必需的路径变量
|
||||
*/
|
||||
@ExceptionHandler(MissingPathVariableException.class)
|
||||
public Result<Void> handleMissingPathVariableException(MissingPathVariableException e, HttpServletRequest request)
|
||||
{
|
||||
return Result.error(ResponseStatusConstants.BAD_REQUEST,String.format("请求路径中缺少必需的路径变量[%s]", e.getVariableName()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义验证异常
|
||||
*/
|
||||
@ExceptionHandler(BindException.class)
|
||||
public Result<Void> handleBindException(BindException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return Result.error(ResponseStatusConstants.BAD_REQUEST,"自定义校验异常");
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义验证异常
|
||||
*/
|
||||
@ExceptionHandler(MethodArgumentNotValidException.class)
|
||||
public Result<Void> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
|
||||
String message = Objects.requireNonNull(e.getBindingResult().getFieldError()).getDefaultMessage();
|
||||
return Result.error(ResponseStatusConstants.BAD_REQUEST,message);
|
||||
}
|
||||
/**
|
||||
* 缺少参数异常
|
||||
*/
|
||||
@ExceptionHandler(HttpMessageNotReadableException.class)
|
||||
public Result<Void> handleHttpMessageNotReadableException(HttpMessageNotReadableException e) {
|
||||
return Result.error(ResponseStatusConstants.BAD_REQUEST,"缺少请求体:" + e.getMessage());
|
||||
}
|
||||
/**
|
||||
* 缺少参数异常
|
||||
*/
|
||||
@ExceptionHandler(MissingServletRequestParameterException.class)
|
||||
public Result<Void> handleMissingServletRequestParameterException(MissingServletRequestParameterException e) {
|
||||
return Result.error(ResponseStatusConstants.BAD_REQUEST,"缺少参数:" + e.getMessage());
|
||||
}
|
||||
/**
|
||||
* 缺少参数异常
|
||||
*/
|
||||
@ExceptionHandler(ConstraintViolationException.class)
|
||||
public Result<Void> handleConstraintViolationException(ConstraintViolationException e) {
|
||||
return Result.error(ResponseStatusConstants.BAD_REQUEST,e.getMessage());
|
||||
}
|
||||
/**
|
||||
* 处理系统异常
|
||||
*/
|
||||
@ExceptionHandler(value = Exception.class)
|
||||
public Result<Void> handleSystemException(Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("捕获到全局异常:{}",e.getMessage());
|
||||
return Result.error();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package cn.sslog.exception;
|
||||
|
||||
public class LoginException extends BaseException{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package cn.sslog.interceptor;
|
||||
|
||||
import cn.sslog.common.Result;
|
||||
import cn.sslog.context.UserContext;
|
||||
import cn.sslog.enums.ResponseEnum;
|
||||
import cn.sslog.utils.JsonUtils;
|
||||
import cn.sslog.utils.JwtUtils;
|
||||
import com.auth0.jwt.interfaces.Claim;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.Map;
|
||||
|
||||
public class LoginInterceptor implements HandlerInterceptor {
|
||||
|
||||
/***
|
||||
* 在请求处理之前进行调用(Controller方法调用之前)
|
||||
*/
|
||||
@Override
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
||||
//OPTIONS方法是HTTP协议中定义的一种请求方法。它用于在客户端和服务器之间发起一个预检请求(Preflight Request),以确定实际的请求是否被服务器接受。
|
||||
String method = request.getMethod();
|
||||
if("OPTIONS".equalsIgnoreCase(method)){
|
||||
return true;
|
||||
}
|
||||
|
||||
boolean flag = false;
|
||||
|
||||
try {
|
||||
String id = request.getHeader("id");
|
||||
String token = request.getHeader("Authorization");
|
||||
if (token.startsWith("Bearer ")) {
|
||||
// 去掉 "Bearer " 前缀,获取 token 部分
|
||||
token = token.substring(7); // "Bearer ".length() == 7
|
||||
// 继续处理 token,例如验证、解码等操作
|
||||
}
|
||||
|
||||
if(!StringUtils.isAllEmpty(id,token)){
|
||||
// 验证token
|
||||
JwtUtils.verify(token);
|
||||
|
||||
Map<String, Claim> tokenInfo = JwtUtils.getTokenInfo(token);
|
||||
|
||||
Claim claim = tokenInfo.get("id");
|
||||
|
||||
String tokenId = claim.asString();
|
||||
|
||||
if(tokenId.equals(id)){
|
||||
flag = true;
|
||||
UserContext.setUserId(id);
|
||||
}
|
||||
}
|
||||
}catch (Exception e){
|
||||
// e.printStackTrace();
|
||||
}
|
||||
|
||||
if(!flag){
|
||||
Result<Void> result = Result.error(ResponseEnum.AUTH_EXPIRE);
|
||||
String jsonString = JsonUtils.toJson(result);
|
||||
response.setContentType("application/json;charset=utf-8");
|
||||
PrintWriter out = response.getWriter();
|
||||
out.println(jsonString);
|
||||
out.flush();
|
||||
out.close();
|
||||
}
|
||||
|
||||
return flag;
|
||||
}
|
||||
|
||||
/***
|
||||
* 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)
|
||||
*/
|
||||
@Override
|
||||
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
|
||||
// System.out.println("执行了拦截器的postHandle方法");
|
||||
}
|
||||
|
||||
/***
|
||||
* 整个请求结束之后被调用,也就是在DispatchServlet渲染了对应的视图之后执行(主要用于进行资源清理工作)
|
||||
*/
|
||||
@Override
|
||||
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
|
||||
// UserContext.removeUserContext();
|
||||
UserContext.removeUserId();
|
||||
}
|
||||
}
|
||||
Loaded 100 of 403 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user