Commit ed1e4e0a by zhangxingmin

Initial commit

parents
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/../../../../../../:\soft\ideaproject\v2\yd-communication\.idea/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
</state>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile default="true" name="Default" enabled="true" />
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="yd-communication-api" />
<module name="yd-communication-feign" />
<module name="yd-communication-service" />
</profile>
</annotationProcessing>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/yd-communication-api/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/yd-communication-api/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/yd-communication-feign/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/yd-communication-feign/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/yd-communication-service/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/yd-communication-service/src/main/resources" charset="UTF-8" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="yd-releases" />
<option name="name" value="yd-releases" />
<option name="url" value="http://139.224.145.34:8081/repository/yd-maven-public/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="http://139.224.145.34:8081/repository/yd-maven-public/" />
</remote-repository>
<remote-repository>
<option name="id" value="yd-snapshots" />
<option name="name" value="yd-snapshots" />
<option name="url" value="http://139.224.145.34:8081/repository/yd-maven-public/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
</component>
</project>
\ No newline at end of file
<?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" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
\ No newline at end of file
<?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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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.png" 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>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GitSharedSettings">
<option name="FORCE_PUSH_PROHIBITED_PATTERNS">
<list />
</option>
</component>
</project>
\ No newline at end of file
<?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>
<modules>
<module>yd-communication-api</module>
<module>yd-communication-feign</module>
<module>yd-communication-service</module>
</modules>
<parent>
<groupId>com.yd</groupId>
<artifactId>yd-parent-pom</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>com.yd</groupId>
<artifactId>yd-communication</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<description>通信服务</description>
<dependencyManagement>
<dependencies>
<!-- 实体类模块 -->
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-communication-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-communication-feign</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-communication-service</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 部署到Nexus -->
<distributionManagement>
<repository>
<id>yd-releases</id>
<url>http://139.224.145.34:8081/repository/yd-project-releases/</url>
</repository>
<snapshotRepository>
<id>yd-snapshots</id>
<url>http://139.224.145.34:8081/repository/yd-project-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<repositories>
<!-- 配置Nexus快照仓库,用于拉取快照版本依赖 -->
<repository>
<id>yd-snapshots</id>
<url>http://139.224.145.34:8081/repository/yd-project-snapshots/</url>
<snapshots>
<enabled>true</enabled> <!-- 允许拉取快照版本 -->
</snapshots>
<releases>
<enabled>false</enabled> <!-- 不启用正式版仓库(按需调整) -->
</releases>
</repository>
</repositories>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>yd-communication</artifactId>
<groupId>com.yd</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>yd-communication-api</artifactId>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringCloud Alibaba Nacos Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Starter WebSocket -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<!--对于bootstrap.properties/bootstrap.yaml配置文件(我们合起来成为Bootstrap配置文件)的支持,需要导入如下的依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!-- Jackson 数据绑定库 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<!-- Jackson 注解支持 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
<!-- Java 8 时间类型支持 -->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<!-- 实体类模块 -->
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-communication-service</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${springboot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
<mainClass>com.yd.communication.api.CommunicationApiApplication</mainClass>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package com.yd.communication.api;
import com.yd.common.constant.ServerNameConstants;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication(scanBasePackages = "com.yd")
@MapperScan("com.yd.**.dao")
@EnableFeignClients(basePackages = "com.yd")
public class CommunicationApiApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(CommunicationApiApplication.class)
.properties("spring.application.name="+ ServerNameConstants.ydCommunicationApi)
.build().run(args);
System.out.println("(♥◠‿◠)ノ゙ yd-communication-api启动成功 ლ(´ڡ`ლ)゙ ");
}
}
package com.yd.communication.api.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
\ No newline at end of file
package com.yd.communication.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 协同-脱敏设置表(通用) 前端控制器
* </p>
*
* @author zxm
* @since 2026-07-28
*/
@RestController
@RequestMapping("/coDesensitizationRule")
public class CoDesensitizationRuleController {
}
package com.yd.communication.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 协同-操作日志表(通用) 前端控制器
* </p>
*
* @author zxm
* @since 2026-07-28
*/
@RestController
@RequestMapping("/coOperationLog")
public class CoOperationLogController {
}
package com.yd.communication.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 协同-会话表(通用) 前端控制器
* </p>
*
* @author zxm
* @since 2026-07-28
*/
@RestController
@RequestMapping("/coSession")
public class CoSessionController {
}
package com.yd.communication.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 录制任务表(通用) 前端控制器
* </p>
*
* @author zxm
* @since 2026-07-28
*/
@RestController
@RequestMapping("/recordingTask")
public class RecordingTaskController {
}
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4" />
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>yd-communication</artifactId>
<groupId>com.yd</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>yd-communication-feign</artifactId>
<dependencies>
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-feign</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>yd-communication</artifactId>
<groupId>com.yd</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>yd-communication-service</artifactId>
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
</dependency>
<!-- MyBatis Plus 扩展功能 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
</dependency>
<!-- 阿里数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-communication-feign</artifactId>
</dependency>
<!-- 认证模块 -->
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-auth-core</artifactId>
<version>${project.version}</version>
</dependency>
<!-- 框架配置模块 -->
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-framework</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.yd.communication.service.config;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import java.util.Date;
@Slf4j
@Configuration
public class CommunicationMybatisPlusConfig {
/**
* 分页插件配置(必须)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 使用正确的枚举值 DbType.MYSQL
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
/**
* 自动填充字段配置(如创建人、更新人等)
*/
@Bean
@Primary
public MetaObjectHandler metaObjectHandler() {
return new MetaObjectHandler() {
/**
* 新增
* @param metaObject
*/
@Override
public void insertFill(MetaObject metaObject) {
AuthUserDto authUserDto = null;
try {
authUserDto = SecurityUtil.getCurrentLoginUser();
} catch (Exception e) {
log.info("获取Security上下文当前用户的登录信息失败,{}", e.getMessage());
}
log.info("metaObjectHandler insertFill 获取用户信息:{}", JSON.toJSONString(authUserDto));
if (authUserDto != null) {
// 仅当字段为空时才填充
if (getFieldValByName("creatorId", metaObject) == null) {
this.strictInsertFill(metaObject, "creatorId", String.class, authUserDto.getUserBizId());
}
if (getFieldValByName("creatorName", metaObject) == null) {
this.strictInsertFill(metaObject, "creatorName", String.class, authUserDto.getRealName());
}
if (getFieldValByName("createTime", metaObject) == null) {
this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
}
if (getFieldValByName("updaterId", metaObject) == null) {
this.strictInsertFill(metaObject, "updaterId", String.class, authUserDto.getUserBizId());
}
if (getFieldValByName("updaterName", metaObject) == null) {
this.strictInsertFill(metaObject, "updaterName", String.class, authUserDto.getRealName());
}
if (getFieldValByName("updateTime", metaObject) == null) {
this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
}
}
}
/**
* 更新
* @param metaObject
*/
@Override
public void updateFill(MetaObject metaObject) {
AuthUserDto authUserDto = null;
try {
authUserDto = SecurityUtil.getCurrentLoginUser();
} catch (Exception e) {
log.info("获取Security上下文当前用户的登录信息失败,{}", e.getMessage());
}
log.info("metaObjectHandler updateFill 获取用户信息:{}", JSON.toJSONString(authUserDto));
if (authUserDto != null) {
// 仅当字段为空时才填充
if (getFieldValByName("updaterId", metaObject) == null) {
this.strictUpdateFill(metaObject, "updaterId", String.class, authUserDto.getUserBizId());
}
if (getFieldValByName("updaterName", metaObject) == null) {
this.strictUpdateFill(metaObject, "updaterName", String.class, authUserDto.getRealName());
}
if (getFieldValByName("updateTime", metaObject) == null) {
this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
}
}
}
};
}
}
package com.yd.communication.service.dao;
import com.yd.communication.service.model.CoDesensitizationRule;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 协同-脱敏设置表(通用) Mapper 接口
* </p>
*
* @author zxm
* @since 2026-07-28
*/
public interface CoDesensitizationRuleMapper extends BaseMapper<CoDesensitizationRule> {
}
package com.yd.communication.service.dao;
import com.yd.communication.service.model.CoOperationLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 协同-操作日志表(通用) Mapper 接口
* </p>
*
* @author zxm
* @since 2026-07-28
*/
public interface CoOperationLogMapper extends BaseMapper<CoOperationLog> {
}
package com.yd.communication.service.dao;
import com.yd.communication.service.model.CoSession;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 协同-会话表(通用) Mapper 接口
* </p>
*
* @author zxm
* @since 2026-07-28
*/
public interface CoSessionMapper extends BaseMapper<CoSession> {
}
package com.yd.communication.service.dao;
import com.yd.communication.service.model.RecordingTask;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 录制任务表(通用) Mapper 接口
* </p>
*
* @author zxm
* @since 2026-07-28
*/
public interface RecordingTaskMapper extends BaseMapper<RecordingTask> {
}
package com.yd.communication.service.model;
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 java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 协同-脱敏设置表(通用)
* </p>
*
* @author zxm
* @since 2026-07-28
*/
@Getter
@Setter
@TableName("co_desensitization_rule")
public class CoDesensitizationRule implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 脱敏规则唯一业务ID
*/
@TableField("rule_biz_id")
private String ruleBizId;
/**
* 规则名称(如:报告-客户姓名脱敏)
*/
@TableField("rule_name")
private String ruleName;
/**
* 资源类型:report/news/mini_program
*/
@TableField("resource_type")
private String resourceType;
/**
* 资源业务ID(NULL表示全局规则,适用于该类型下所有资源)
*/
@TableField("resource_id")
private String resourceId;
/**
* 脱敏字段路径(JSON Path,如:$.customer.name)
*/
@TableField("field_path")
private String fieldPath;
/**
* 字段显示名称(冗余,便于运营配置)
*/
@TableField("field_name")
private String fieldName;
/**
* 脱敏方式:mask-掩码(如:张**)、hide-完全隐藏(****)、replace-替换(***)、partial-部分显示(如:138****8000)
*/
@TableField("mask_type")
private String maskType;
/**
* 脱敏配置JSON(如:{"prefix":1,"suffix":1,"replace_char":"*"})
*/
@TableField("mask_config")
private String maskConfig;
/**
* 规则是否启用:0-停用,1-启用
*/
@TableField("enabled")
private Integer enabled;
/**
* 是否为默认规则:0-否,1-是(资源未配置时使用默认)
*/
@TableField("is_default")
private Integer isDefault;
/**
* 排序顺序
*/
@TableField("sort_order")
private Integer sortOrder;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Integer isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.communication.service.model;
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 java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 协同-操作日志表(通用)
* </p>
*
* @author zxm
* @since 2026-07-28
*/
@Getter
@Setter
@TableName("co_operation_log")
public class CoOperationLog implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 业务类型:co_session
*/
@TableField("biz_type")
private String bizType;
/**
* 业务ID:co_session_biz_id-协同-会话表唯一业务ID
*/
@TableField("biz_id")
private String bizId;
/**
* 操作者ID
*/
@TableField("operator_id")
private String operatorId;
/**
* 操作者类型:owner(资源所有者类型)/participant(参与者类型)
*/
@TableField("operator_type")
private String operatorType;
/**
* 操作者名称(冗余)
*/
@TableField("operator_name")
private String operatorName;
/**
* 操作类型:scroll(滚动)/scaling(缩放)/turn_the_page(翻页)/desensitization_switch(脱敏开关)/end_sharing(结束共享)/annotation(标注)
*/
@TableField("action")
private String action;
/**
* 操作分类:control-控制(协同控制)
*/
@TableField("action_category")
private String actionCategory;
/**
* 操作内容(JSON格式)
*/
@TableField("content")
private String content;
/**
* 操作者客户端设备号
*/
@TableField("operator_device_number")
private String operatorDeviceNumber;
/**
* 操作者IP
*/
@TableField("operator_ip")
private String operatorIp;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Integer isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.communication.service.model;
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 java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 协同-会话表(通用)
* </p>
*
* @author zxm
* @since 2026-07-28
*/
@Getter
@Setter
@TableName("co_session")
public class CoSession implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 协同-会话表唯一业务ID
*/
@TableField("co_session_biz_id")
private String coSessionBizId;
/**
* 协同会话编号
*/
@TableField("co_session_no")
private String coSessionNo;
/**
* 协同作用域(single-单个(如:报告、资讯)global-全局(如mini_program-小程序开启全局协同))
*/
@TableField("scope")
private String scope;
/**
* 资源类型:report/news/mini_program
*/
@TableField("resource_type")
private String resourceType;
/**
* 资源业务ID(如report-报告ID、news-资讯ID、mini_program-开启小程序全局协同标识)
*/
@TableField("resource_id")
private String resourceId;
/**
* 资源初始化JSON串(创建时初始化当前所在页面位置,不做修改)(示例:{url:https://mini.xxx.com/pages/index/index?userId=xxx})
*/
@TableField("resource_init")
private String resourceInit;
/**
* 资源所有者类型:customer-客户等
*/
@TableField("owner_type")
private String ownerType;
/**
* 资源所有者/发起人ID(如:客户ID)
*/
@TableField("owner_id")
private String ownerId;
/**
* 参与者类型: consultant-顾问等
*/
@TableField("participant_type")
private String participantType;
/**
* 参与者ID(如顾问)
*/
@TableField("participant_id")
private String participantId;
/**
* 协同房间号(房间ID)
*/
@TableField("room_id")
private String roomId;
/**
* 协同房间密码(协同共享码,进入这个协同房间号的密码)
*/
@TableField("room_pwd")
private String roomPwd;
/**
* RTC频道前缀,便于区分业务
*/
@TableField("channel_prefix")
private String channelPrefix;
/**
* 控制权持有者类型:owner(资源所有者类型)/participant(参与者类型)
*/
@TableField("control_holder_type")
private String controlHolderType;
/**
* 控制权持有者ID(具体人的ID)
*/
@TableField("control_holder_id")
private String controlHolderId;
/**
* 0-进行中,1-已结束,2-已超时
*/
@TableField("status")
private Integer status;
/**
* 开始时间
*/
@TableField("start_time")
private LocalDateTime startTime;
/**
* 结束时间
*/
@TableField("end_time")
private LocalDateTime endTime;
/**
* 当前操作页面(实时更新,示例:{url:https://mini.xxx.com/pages/my/index?userId=xxx})
*/
@TableField("current_page")
private String currentPage;
/**
* 页面访问轨迹(数组,从左到右前后顺序,实时更新。示例:[{url:https://mini.xxx.com/pages/index/index?userId=xxx},{url:https://mini.xxx.com/pages/my/index?userId=xxx}])
*/
@TableField("page_history")
private String pageHistory;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Integer isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.communication.service.model;
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 java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 录制任务表(通用)
* </p>
*
* @author zxm
* @since 2026-07-28
*/
@Getter
@Setter
@TableName("recording_task")
public class RecordingTask implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 录制任务表唯一业务ID
*/
@TableField("recording_task_biz_id")
private String recordingTaskBizId;
/**
* 任务编号
*/
@TableField("task_no")
private String taskNo;
/**
* 第三方RTC录制任务ID
*/
@TableField("task_id")
private String taskId;
/**
* 业务类型:co-session/meeting
*/
@TableField("biz_type")
private String bizType;
/**
* 业务ID(如co_session_biz_id(协同会话表唯一业务ID)、会议ID)
*/
@TableField("biz_id")
private String bizId;
/**
* RTC房间ID
*/
@TableField("room_id")
private String roomId;
/**
* RTC频道名
*/
@TableField("channel")
private String channel;
/**
* 录制模式:mix-混合, single-单流, screen-屏幕
*/
@TableField("recording_mode")
private String recordingMode;
/**
* 布局:grid/speaker/custom
*/
@TableField("layout")
private String layout;
/**
* 0-初始化,1-录制中,2-已停止,3-失败,4-已归档
*/
@TableField("status")
private Integer status;
/**
* 录制开始时间
*/
@TableField("start_time")
private LocalDateTime startTime;
/**
* 录制结束时间
*/
@TableField("stop_time")
private LocalDateTime stopTime;
/**
* 文件地址
*/
@TableField("file_url")
private String fileUrl;
/**
* 视频时长(秒)
*/
@TableField("file_duration")
private Integer fileDuration;
/**
* 文件大小(字节)
*/
@TableField("file_size")
private Long fileSize;
/**
* 文件MD5
*/
@TableField("file_md5")
private String fileMd5;
/**
* 文件格式
*/
@TableField("file_format")
private String fileFormat;
/**
* 回放地址(带鉴权)
*/
@TableField("playback_url")
private String playbackUrl;
/**
* 存储类型:oss/cos/minio/local
*/
@TableField("storage_type")
private String storageType;
/**
* 存储桶
*/
@TableField("storage_bucket")
private String storageBucket;
/**
* 存储路径
*/
@TableField("storage_path")
private String storagePath;
/**
* 错误信息
*/
@TableField("error_msg")
private String errorMsg;
/**
* 扩展信息
*/
@TableField("ext_info")
private String extInfo;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Integer isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.communication.service.service;
import com.yd.communication.service.model.CoDesensitizationRule;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 协同-脱敏设置表(通用) 服务类
* </p>
*
* @author zxm
* @since 2026-07-28
*/
public interface ICoDesensitizationRuleService extends IService<CoDesensitizationRule> {
}
package com.yd.communication.service.service;
import com.yd.communication.service.model.CoOperationLog;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 协同-操作日志表(通用) 服务类
* </p>
*
* @author zxm
* @since 2026-07-28
*/
public interface ICoOperationLogService extends IService<CoOperationLog> {
}
package com.yd.communication.service.service;
import com.yd.communication.service.model.CoSession;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 协同-会话表(通用) 服务类
* </p>
*
* @author zxm
* @since 2026-07-28
*/
public interface ICoSessionService extends IService<CoSession> {
}
package com.yd.communication.service.service;
import com.yd.communication.service.model.RecordingTask;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 录制任务表(通用) 服务类
* </p>
*
* @author zxm
* @since 2026-07-28
*/
public interface IRecordingTaskService extends IService<RecordingTask> {
}
package com.yd.communication.service.service.impl;
import com.yd.communication.service.model.CoDesensitizationRule;
import com.yd.communication.service.dao.CoDesensitizationRuleMapper;
import com.yd.communication.service.service.ICoDesensitizationRuleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 协同-脱敏设置表(通用) 服务实现类
* </p>
*
* @author zxm
* @since 2026-07-28
*/
@Service
public class CoDesensitizationRuleServiceImpl extends ServiceImpl<CoDesensitizationRuleMapper, CoDesensitizationRule> implements ICoDesensitizationRuleService {
}
package com.yd.communication.service.service.impl;
import com.yd.communication.service.model.CoOperationLog;
import com.yd.communication.service.dao.CoOperationLogMapper;
import com.yd.communication.service.service.ICoOperationLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 协同-操作日志表(通用) 服务实现类
* </p>
*
* @author zxm
* @since 2026-07-28
*/
@Service
public class CoOperationLogServiceImpl extends ServiceImpl<CoOperationLogMapper, CoOperationLog> implements ICoOperationLogService {
}
package com.yd.communication.service.service.impl;
import com.yd.communication.service.model.CoSession;
import com.yd.communication.service.dao.CoSessionMapper;
import com.yd.communication.service.service.ICoSessionService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 协同-会话表(通用) 服务实现类
* </p>
*
* @author zxm
* @since 2026-07-28
*/
@Service
public class CoSessionServiceImpl extends ServiceImpl<CoSessionMapper, CoSession> implements ICoSessionService {
}
package com.yd.communication.service.service.impl;
import com.yd.communication.service.model.RecordingTask;
import com.yd.communication.service.dao.RecordingTaskMapper;
import com.yd.communication.service.service.IRecordingTaskService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 录制任务表(通用) 服务实现类
* </p>
*
* @author zxm
* @since 2026-07-28
*/
@Service
public class RecordingTaskServiceImpl extends ServiceImpl<RecordingTaskMapper, RecordingTask> implements IRecordingTaskService {
}
package com.yd.communication.service.utils;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
public class MyBatisPlusCodeGenerator {
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://139.224.145.34:3308/yd_communication?serverTimezone=GMT%2B8", "root", "Zxm7320017")
.globalConfig(builder -> {
builder.author("zxm")
// .outputDir("src/main/java/com/yd/user/service");
.outputDir("D:/soft/ideaproject/v2/yd-communication/yd-communication-service/src/main/java");
})
.packageConfig(builder -> {
builder.parent("com.yd.communication.service")
.entity("model")
.mapper("dao")
.service("service")
.serviceImpl("service.impl")
.xml("mappers");
})
.strategyConfig(builder -> {
builder.addInclude(
"co_session","co_operation_log","recording_task","co_desensitization_rule"
)
.entityBuilder()
.enableLombok()
.enableTableFieldAnnotation()
.controllerBuilder()
.enableRestStyle();
})
.templateEngine(new FreemarkerTemplateEngine())
.execute();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.communication.service.dao.CoDesensitizationRuleMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.communication.service.dao.CoOperationLogMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.communication.service.dao.CoSessionMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.communication.service.dao.RecordingTaskMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4" />
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4" />
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment