Compare commits
6 Commits
YiZehong_b
...
develop
| Author | SHA1 | Date |
|---|---|---|
|
|
f48bab7141 | 1 year ago |
|
|
690fb1707a | 1 year ago |
|
|
193ecbd6d5 | 1 year ago |
|
|
9f00332617 | 1 year ago |
|
|
2b2046a539 | 1 year ago |
|
|
ff1aa12171 | 1 year ago |
@ -0,0 +1,54 @@
|
||||
target/
|
||||
!**/src/main/**/target/
|
||||
!**/src/test/**/target/
|
||||
/db/
|
||||
/logs/
|
||||
/img/
|
||||
/export/
|
||||
/config/
|
||||
/data/
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
|
||||
# dependencies
|
||||
**/node_modules
|
||||
# roadhog-api-doc ignore
|
||||
/src/utils/request-temp.js
|
||||
_roadhog-api-doc
|
||||
|
||||
# production
|
||||
/dist
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
npm-debug.log*
|
||||
yarn-error.log
|
||||
|
||||
/coverage
|
||||
yarn.lock
|
||||
package-lock.json
|
||||
*bak
|
||||
.vscode
|
||||
|
||||
|
||||
# visual studio code
|
||||
.history
|
||||
*.log
|
||||
functions/*
|
||||
.temp/**
|
||||
|
||||
# umi
|
||||
.umi
|
||||
.umi-production
|
||||
.umi-test
|
||||
|
||||
# screenshot
|
||||
screenshot
|
||||
.firebase
|
||||
.eslintcache
|
||||
build
|
||||
|
||||
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 xuchengsheng
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@ -0,0 +1,29 @@
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 28 KiB |
@ -0,0 +1,130 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.xcs.wx</groupId>
|
||||
<artifactId>wx-dump-4j</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<version>${revision}</version>
|
||||
|
||||
<modules>
|
||||
<module>wx-dump-admin</module>
|
||||
<module>wx-dump-dist</module>
|
||||
</modules>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>11</maven.compiler.source>
|
||||
<maven.compiler.target>11</maven.compiler.target>
|
||||
<maven-assembly-plugin.version>3.5.0</maven-assembly-plugin.version>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<revision>1.1.0</revision>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
<version>2.7.15</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
||||
<version>2.7.15</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.xerial</groupId>
|
||||
<artifactId>sqlite-jdbc</artifactId>
|
||||
<version>3.34.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>1.18.20</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||||
<version>3.5.4.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
|
||||
<version>4.2.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid-spring-boot-starter</artifactId>
|
||||
<version>1.2.20</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mapstruct</groupId>
|
||||
<artifactId>mapstruct</artifactId>
|
||||
<version>1.4.2.Final</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mapstruct</groupId>
|
||||
<artifactId>mapstruct-processor</artifactId>
|
||||
<version>1.4.2.Final</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-all</artifactId>
|
||||
<version>5.8.16</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.java.dev.jna</groupId>
|
||||
<artifactId>jna</artifactId>
|
||||
<version>5.8.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.java.dev.jna</groupId>
|
||||
<artifactId>jna-platform</artifactId>
|
||||
<version>5.8.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.protobuf</groupId>
|
||||
<artifactId>protobuf-java</artifactId>
|
||||
<version>3.25.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.protobuf</groupId>
|
||||
<artifactId>protobuf-java-util</artifactId>
|
||||
<version>3.25.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.grpc</groupId>
|
||||
<artifactId>grpc-all</artifactId>
|
||||
<version>1.11.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>easyexcel</artifactId>
|
||||
<version>3.3.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-compress</artifactId>
|
||||
<version>1.19</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.dataformat</groupId>
|
||||
<artifactId>jackson-dataformat-xml</artifactId>
|
||||
<version>2.13.5</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
<version>3.12.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.xcs.wx</groupId>
|
||||
<artifactId>wx-dump-admin</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
</project>
|
||||
@ -0,0 +1,111 @@
|
||||
<?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>wx-dump-4j</artifactId>
|
||||
<groupId>com.xcs.wx</groupId>
|
||||
<version>${revision}</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>wx-dump-admin</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.xerial</groupId>
|
||||
<artifactId>sqlite-jdbc</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mapstruct</groupId>
|
||||
<artifactId>mapstruct</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mapstruct</groupId>
|
||||
<artifactId>mapstruct-processor</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-all</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.java.dev.jna</groupId>
|
||||
<artifactId>jna</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.java.dev.jna</groupId>
|
||||
<artifactId>jna-platform</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.protobuf</groupId>
|
||||
<artifactId>protobuf-java</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.protobuf</groupId>
|
||||
<artifactId>protobuf-java-util</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.grpc</groupId>
|
||||
<artifactId>grpc-all</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>easyexcel</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-compress</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.dataformat</groupId>
|
||||
<artifactId>jackson-dataformat-xml</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>wx-dump-admin</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<configuration>
|
||||
<source>11</source>
|
||||
<target>11</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
||||
</project>
|
||||
@ -0,0 +1,46 @@
|
||||
package com.xcs.wx.aop;
|
||||
|
||||
import cn.hutool.core.annotation.AnnotationUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||
import com.xcs.wx.util.DSNameUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.aspectj.lang.ProceedingJoinPoint;
|
||||
import org.aspectj.lang.annotation.Around;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 多微信数据源动态切换拦截
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年6月27日14:29:32
|
||||
*/
|
||||
@Slf4j
|
||||
@Aspect
|
||||
@Component
|
||||
public class RepositoryAspect {
|
||||
|
||||
@Around("execution(public * com.xcs.wx.repository..*.*(..))")
|
||||
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
|
||||
String previousDs = DynamicDataSourceContextHolder.peek();
|
||||
try {
|
||||
// 获取拦截方法所在的类
|
||||
Class<?> targetClass = joinPoint.getTarget().getClass();
|
||||
// 获取类上的@DS注解
|
||||
DS dsAnnotation = AnnotationUtil.getAnnotation(targetClass, DS.class);
|
||||
// 有指定的注解
|
||||
if (dsAnnotation != null) {
|
||||
DynamicDataSourceContextHolder.push(DSNameUtil.getDSName(dsAnnotation.value()));
|
||||
}
|
||||
return joinPoint.proceed();
|
||||
} finally {
|
||||
// 恢复之前的ds
|
||||
if (previousDs != null) {
|
||||
DynamicDataSourceContextHolder.push(previousDs);
|
||||
} else {
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,60 @@
|
||||
package com.xcs.wx.config;
|
||||
|
||||
import com.baomidou.dynamic.datasource.exception.CannotFindDataSourceException;
|
||||
import com.xcs.wx.domain.vo.ResponseVO;
|
||||
import com.xcs.wx.exception.BizException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.mybatis.spring.MyBatisSystemException;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||
|
||||
/**
|
||||
* @author xcs
|
||||
* @date 2023年12月25日 17时29分
|
||||
**/
|
||||
@Slf4j
|
||||
@RestControllerAdvice
|
||||
@ResponseStatus(HttpStatus.OK)
|
||||
public class ExceptionAdviceConfig {
|
||||
|
||||
/**
|
||||
* 捕获BizException异常
|
||||
**/
|
||||
@ExceptionHandler(BizException.class)
|
||||
public ResponseVO<String> handleException(BizException e) {
|
||||
return ResponseVO.error(e.getCode(), e.getMsg());
|
||||
}
|
||||
|
||||
/**
|
||||
* 捕获MyBatisSystemException异常
|
||||
**/
|
||||
@ExceptionHandler(MyBatisSystemException.class)
|
||||
public ResponseVO<String> myBatisSystemException(MyBatisSystemException e) {
|
||||
// 数据库未就绪状态
|
||||
if (e.getCause().getCause() instanceof CannotFindDataSourceException) {
|
||||
return ResponseVO.error(-1, "微信数据库未就绪状态,请先点击左侧解密工具进行数据解密!");
|
||||
}
|
||||
log.error("mybatis system exception", e);
|
||||
return ResponseVO.error(-1, "系统异常");
|
||||
}
|
||||
|
||||
/**
|
||||
* 捕获RuntimeException异常
|
||||
**/
|
||||
@ExceptionHandler(RuntimeException.class)
|
||||
public ResponseVO<String> handleException(RuntimeException e) {
|
||||
log.error("runtime exception", e);
|
||||
return ResponseVO.error(-1, "系统异常");
|
||||
}
|
||||
|
||||
/**
|
||||
* 捕获Exception异常
|
||||
**/
|
||||
@ExceptionHandler(Exception.class)
|
||||
public ResponseVO<String> handleException(Exception e) {
|
||||
log.error("exception", e);
|
||||
return ResponseVO.error(-1, "系统异常");
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
package com.xcs.wx.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;
|
||||
|
||||
/**
|
||||
* @author xcs
|
||||
* @date 2023年12月29日 16时10分
|
||||
**/
|
||||
@Configuration
|
||||
@MapperScan({"com.xcs.wx.mapper"})
|
||||
public class MybatisPlusConfig {
|
||||
|
||||
/**
|
||||
* 添加分页插件
|
||||
*/
|
||||
@Bean
|
||||
public MybatisPlusInterceptor mybatisPlusInterceptor() {
|
||||
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
|
||||
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.SQLITE));
|
||||
return interceptor;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
package com.xcs.wx.config;
|
||||
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
||||
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
/**
|
||||
* @author xcs
|
||||
* @date 2024年01月26日 11时46分
|
||||
**/
|
||||
@Configuration
|
||||
@EnableWebMvc
|
||||
public class UseStaticResourceConfig implements WebMvcConfigurer {
|
||||
|
||||
@Override
|
||||
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
||||
registry.addResourceHandler("/**").addResourceLocations("file:../html/");
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,31 @@
|
||||
package com.xcs.wx.config;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 微信参数偏移量配置
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月25日 10时05分
|
||||
**/
|
||||
@Data
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConfigurationProperties(prefix = "wechat-offset")
|
||||
public class WeChatOffsetProperties {
|
||||
|
||||
/**
|
||||
* 微信各个版本对应的偏移量配置
|
||||
*/
|
||||
private Map<String, VersionConfig> version;
|
||||
|
||||
@Data
|
||||
public static class VersionConfig {
|
||||
private Long nickname;
|
||||
private Long account;
|
||||
private Long mobile;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
package com.xcs.wx.constant;
|
||||
|
||||
/**
|
||||
* 群聊枚举
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月25日 16时34分
|
||||
**/
|
||||
public class ChatRoomConstant {
|
||||
|
||||
private ChatRoomConstant() {
|
||||
}
|
||||
|
||||
public static final String CHATROOM_SUFFIX = "@chatroom";
|
||||
|
||||
}
|
||||
@ -0,0 +1,91 @@
|
||||
package com.xcs.wx.constant;
|
||||
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
|
||||
import com.xcs.wx.service.UserService;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 数据源类型枚举
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月25日 16时41分
|
||||
**/
|
||||
public class DataSourceType {
|
||||
|
||||
public static final String APPLET_DB = "Applet.db";
|
||||
public static final String BIZ_CHAT_DB = "BizChat.db";
|
||||
public static final String BIZ_CHAT_MSG_DB = "BizChatMsg.db";
|
||||
public static final String CHAT_MSG_DB = "ChatMsg.db";
|
||||
public static final String CHAT_ROOM_USER_DB = "ChatRoomUser.db";
|
||||
public static final String CLIENT_CONFIG_DB = "ClientConfig.db";
|
||||
public static final String CLIENT_GENERAL_DB = "ClientGeneral.db";
|
||||
public static final String CUSTOMER_SERVICE_DB = "CustomerService.db";
|
||||
public static final String EMOTION_DB = "Emotion.db";
|
||||
public static final String FAVORITE_DB = "Favorite.db";
|
||||
public static final String FTS_CONTACT_DB = "FTSContact.db";
|
||||
public static final String FTS_FAVORITE_DB = "FTSFavorite.db";
|
||||
public static final String FTS_MSG_DB = "FTSMsg.db";
|
||||
public static final String FUNCTION_MSG_DB = "FunctionMsg.db";
|
||||
public static final String HARD_LINK_FILE_DB = "HardLinkFile.db";
|
||||
public static final String HARD_LINK_IMAGE_DB = "HardLinkImage.db";
|
||||
public static final String HARD_LINK_VIDEO_DB = "HardLinkVideo.db";
|
||||
public static final String IMAGE_TRANSLATE_DB = "ImageTranslate.db";
|
||||
public static final String LINK_HISTORY_DB = "LinkHistory.db";
|
||||
public static final String MEDIA_DB = "Media.db";
|
||||
public static final String MICRO_MSG_DB = "MicroMsg.db";
|
||||
public static final String MISC_DB = "Misc.db";
|
||||
public static final String MULTI_SEARCH_CHAT_MSG_DB = "MultiSearchChatMsg.db";
|
||||
public static final String NEW_TIPS_DB = "NewTips.db";
|
||||
public static final String OPEN_IM_CONTACT_DB = "OpenIMContact.db";
|
||||
public static final String OPEN_IM_MEDIA_DB = "OpenIMMedia.db";
|
||||
public static final String OPEN_IM_MSG_DB = "OpenIMMsg.db";
|
||||
public static final String OPEN_IM_RESOURCE_DB = "OpenIMResource.db";
|
||||
public static final String PRE_DOWNLOAD_DB = "PreDownload.db";
|
||||
public static final String PUBLIC_MSG_DB = "PublicMsg.db";
|
||||
public static final String PUBLIC_MSG_MEDIA_DB = "PublicMsgMedia.db";
|
||||
public static final String SNS_DB = "Sns.db";
|
||||
public static final String STORE_EMOTION_DB = "StoreEmotion.db";
|
||||
public static final String VOIP_DB = "Voip.db";
|
||||
public static final String MSG_DB = "MSG.db";
|
||||
public static final String MSG0_DB = "MSG0.db";
|
||||
|
||||
/**
|
||||
* 读取MSG*.db
|
||||
*
|
||||
* @return 数据库名称
|
||||
*/
|
||||
public static List<String> getMsgDb() {
|
||||
String wxId = SpringUtil.getBean(UserService.class).currentUser();
|
||||
// 空校验
|
||||
if (wxId == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return getDb(wxId + "#" + "MSG.*\\.db");
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据pattern匹配数据库
|
||||
*
|
||||
* @param pattern 需要匹配的字符串
|
||||
* @return 数据库名称
|
||||
*/
|
||||
private static List<String> getDb(String pattern) {
|
||||
// 获取动态数据源
|
||||
DynamicRoutingDataSource dynamicRoutingDataSource = SpringUtil.getBean(DynamicRoutingDataSource.class);
|
||||
// 获取所有数据源
|
||||
Map<String, DataSource> dataSources = dynamicRoutingDataSource.getDataSources();
|
||||
|
||||
// 筛选出符合模式的数据源键,并进行降序排序
|
||||
return dataSources.keySet().stream()
|
||||
.filter(key -> key.matches(pattern))
|
||||
.sorted(Comparator.naturalOrder())
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
package com.xcs.wx.constant;
|
||||
|
||||
/**
|
||||
* sqlite常量
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年1月20日21:12:51
|
||||
*/
|
||||
public class SqliteConstant {
|
||||
|
||||
/**
|
||||
* url前缀
|
||||
*/
|
||||
public static final String URL_PREFIX = "jdbc:sqlite:";
|
||||
|
||||
/**
|
||||
* sqlite驱动类
|
||||
*/
|
||||
public static final String DRIVER_CLASS_NAME = "org.sqlite.JDBC";
|
||||
}
|
||||
@ -0,0 +1,64 @@
|
||||
package com.xcs.wx.controller;
|
||||
|
||||
import com.xcs.wx.domain.dto.ChatRoomDTO;
|
||||
import com.xcs.wx.domain.vo.ChatRoomDetailVO;
|
||||
import com.xcs.wx.domain.vo.ChatRoomVO;
|
||||
import com.xcs.wx.domain.vo.PageVO;
|
||||
import com.xcs.wx.domain.vo.ResponseVO;
|
||||
import com.xcs.wx.service.ChatRoomService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 群聊 Controller
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月08日 16时03分
|
||||
**/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/chatroom")
|
||||
public class ChatRoomController {
|
||||
|
||||
private final ChatRoomService chatRoomService;
|
||||
|
||||
/**
|
||||
* 查询群聊列表
|
||||
*
|
||||
* @param chatRoomDTO 查询参数
|
||||
* @return ChatRoomVO
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public ResponseVO<List<ChatRoomVO>> list(ChatRoomDTO chatRoomDTO) {
|
||||
// 查询群聊列表
|
||||
PageVO<ChatRoomVO> pageVO = chatRoomService.queryChatRoom(chatRoomDTO);
|
||||
// 返回数据
|
||||
return ResponseVO.ok(pageVO.getRecords(), pageVO.getCurrent(), pageVO.getTotal());
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询群聊详情
|
||||
*
|
||||
* @param chatRoomName 群聊名称
|
||||
* @return ChatRoomDetailVO
|
||||
*/
|
||||
@GetMapping("/detail")
|
||||
public ResponseVO<ChatRoomDetailVO> detail(@RequestParam String chatRoomName) {
|
||||
return ResponseVO.ok(chatRoomService.queryChatRoomDetail(chatRoomName));
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出群聊
|
||||
*
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/export")
|
||||
public ResponseVO<String> export() {
|
||||
return ResponseVO.ok(chatRoomService.exportChatRoom());
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
package com.xcs.wx.controller;
|
||||
|
||||
import com.xcs.wx.domain.dto.ContactDTO;
|
||||
import com.xcs.wx.domain.vo.*;
|
||||
import com.xcs.wx.service.ContactService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 联系人 Controller
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月22日 14时16分
|
||||
**/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/contact")
|
||||
public class ContactController {
|
||||
|
||||
private final ContactService contactService;
|
||||
|
||||
/**
|
||||
* 查询联系人
|
||||
*
|
||||
* @param contactDTO 请求参数
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public ResponseVO<List<ContactVO>> list(ContactDTO contactDTO) {
|
||||
// 查询联系人
|
||||
PageVO<ContactVO> pageVO = contactService.queryContact(contactDTO);
|
||||
// 返回数据
|
||||
return ResponseVO.ok(pageVO.getRecords(), pageVO.getCurrent(), pageVO.getTotal());
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询所有联系人
|
||||
*
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/all")
|
||||
public ResponseVO<List<AllContactVO>> all() {
|
||||
return ResponseVO.ok(contactService.queryAllContact());
|
||||
}
|
||||
|
||||
/**
|
||||
* 联系人标签
|
||||
*
|
||||
* @return ContactLabelVO
|
||||
*/
|
||||
@GetMapping("/label")
|
||||
public ResponseVO<List<ContactLabelVO>> label() {
|
||||
return ResponseVO.ok(contactService.queryContactLabel());
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出联系人
|
||||
*
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/export")
|
||||
public ResponseVO<String> export() {
|
||||
return ResponseVO.ok(contactService.exportContact());
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,50 @@
|
||||
package com.xcs.wx.controller;
|
||||
|
||||
import com.xcs.wx.service.ContactHeadImgService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
|
||||
/**
|
||||
* 联系人头像 Controller
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年6月18日15:45:17
|
||||
**/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/contact/headImg")
|
||||
public class ContactHeadImgController {
|
||||
|
||||
private final ContactHeadImgService contactHeadImgService;
|
||||
|
||||
/**
|
||||
* 用户头像
|
||||
*
|
||||
* @param userName 用户名
|
||||
* @param response HttpServletResponse
|
||||
*/
|
||||
@GetMapping("/avatar")
|
||||
public void avatar(String userName, HttpServletResponse response) {
|
||||
byte[] avatarBytes = contactHeadImgService.avatar(userName);
|
||||
if (avatarBytes != null) {
|
||||
response.setContentType("image/gif");
|
||||
response.setContentLength(avatarBytes.length);
|
||||
try (OutputStream os = response.getOutputStream()) {
|
||||
os.write(avatarBytes);
|
||||
os.flush();
|
||||
} catch (IOException e) {
|
||||
log.error("avatar fail", e);
|
||||
}
|
||||
} else {
|
||||
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,74 @@
|
||||
package com.xcs.wx.controller;
|
||||
|
||||
import com.xcs.wx.domain.vo.*;
|
||||
import com.xcs.wx.service.DashboardService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 仪表盘 Controller
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月15日 11时26分
|
||||
**/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/dashboard")
|
||||
public class DashboardController {
|
||||
|
||||
private final DashboardService dashBoardService;
|
||||
|
||||
/**
|
||||
* 统计面板
|
||||
*
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/statsPanel")
|
||||
public ResponseVO<StatsPanelVO> statsPanel() {
|
||||
return ResponseVO.ok(dashBoardService.statsPanel());
|
||||
}
|
||||
|
||||
/**
|
||||
* 微信消息类型及其分布统计
|
||||
*
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/msgTypeDistribution")
|
||||
public ResponseVO<List<MsgTypeDistributionVO>> msgTypeDistribution() {
|
||||
return ResponseVO.ok(dashBoardService.msgTypeDistribution());
|
||||
}
|
||||
|
||||
/**
|
||||
* 统计过去 15 天每天的发送和接收消息数量
|
||||
*
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/countRecentMsgs")
|
||||
public ResponseVO<List<CountRecentMsgsVO>> countRecentMsgs() {
|
||||
return ResponseVO.ok(dashBoardService.countRecentMsgs());
|
||||
}
|
||||
|
||||
/**
|
||||
* 最近一个月内微信互动最频繁的前10位联系人
|
||||
*
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/topContacts")
|
||||
public ResponseVO<List<TopContactsVO>> topContacts() {
|
||||
return ResponseVO.ok(dashBoardService.topContacts());
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询最近使用的关键字
|
||||
*
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/queryRecentUsedKeyWord")
|
||||
public ResponseVO<List<RecentUsedKeyWordVO>> queryRecentUsedKeyWord() {
|
||||
return ResponseVO.ok(dashBoardService.queryRecentUsedKeyWord());
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,67 @@
|
||||
package com.xcs.wx.controller;
|
||||
|
||||
import cn.hutool.system.SystemUtil;
|
||||
import com.xcs.wx.domain.dto.DecryptDTO;
|
||||
import com.xcs.wx.domain.vo.DatabaseVO;
|
||||
import com.xcs.wx.domain.vo.ResponseVO;
|
||||
import com.xcs.wx.service.DatabaseService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 数据库 Controller
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月20日 14时35分
|
||||
**/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/database")
|
||||
public class DatabaseController {
|
||||
|
||||
private final DatabaseService databaseService;
|
||||
|
||||
/**
|
||||
* 数据库解密
|
||||
*
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/decrypt")
|
||||
public SseEmitter decrypt(DecryptDTO decryptDTO) {
|
||||
SseEmitter emitter = new SseEmitter(0L);
|
||||
// 启动一个子线程,异步回调给前端
|
||||
new Thread(() -> {
|
||||
// 读取JDK版本号
|
||||
if (SystemUtil.getJavaInfo().getVersionInt() < 1100) {
|
||||
try {
|
||||
emitter.send(ResponseVO.error(-1, "微信解密必须要求JDK11以上版本,请更换JDK版本。"), MediaType.APPLICATION_JSON);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
} finally {
|
||||
emitter.complete();
|
||||
}
|
||||
return;
|
||||
}
|
||||
databaseService.decrypt(emitter, decryptDTO);
|
||||
}).start();
|
||||
// 返回数据
|
||||
return emitter;
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据库解密
|
||||
*
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/getDatabase")
|
||||
public ResponseVO<List<DatabaseVO>> decrypt(String wxId) {
|
||||
return ResponseVO.ok(databaseService.getDatabase(wxId));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,52 @@
|
||||
package com.xcs.wx.controller;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.core.io.FileSystemResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.core.io.UrlResource;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
/**
|
||||
* 导出 Controller
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月05日 15时56分
|
||||
**/
|
||||
@Controller
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/export")
|
||||
public class ExportController {
|
||||
|
||||
/**
|
||||
* 下载文件
|
||||
*/
|
||||
@GetMapping("download")
|
||||
public ResponseEntity<Resource> download(@RequestParam String path) throws IOException {
|
||||
Path filePath = Paths.get(path);
|
||||
Resource resource = new FileSystemResource(filePath.toFile());
|
||||
|
||||
// 处理文件不存在的情况
|
||||
if (!resource.exists()) {
|
||||
return ResponseEntity.notFound().build();
|
||||
}
|
||||
|
||||
String encodedFilename = URLEncoder.encode(resource.getFilename(), StandardCharsets.UTF_8.name()).replace("+", "%20");
|
||||
String contentDisposition = "attachment; filename*=UTF-8''" + encodedFilename;
|
||||
|
||||
return ResponseEntity.ok()
|
||||
.contentType(MediaType.parseMediaType("application/vnd.ms-excel"))
|
||||
.header("Content-Disposition", contentDisposition)
|
||||
.body(resource);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,41 @@
|
||||
package com.xcs.wx.controller;
|
||||
|
||||
import com.xcs.wx.domain.dto.FeedsDTO;
|
||||
import com.xcs.wx.domain.vo.FeedsVO;
|
||||
import com.xcs.wx.domain.vo.PageVO;
|
||||
import com.xcs.wx.domain.vo.ResponseVO;
|
||||
import com.xcs.wx.service.FeedsService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 朋友圈 Controller
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月04日 13时48分
|
||||
**/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/feeds")
|
||||
public class FeedsController {
|
||||
|
||||
private final FeedsService feedsService;
|
||||
|
||||
/**
|
||||
* 查询朋友圈
|
||||
*
|
||||
* @param feedsDTO 请求参数
|
||||
* @return FeedsVO
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public ResponseVO<List<FeedsVO>> list(FeedsDTO feedsDTO) {
|
||||
// 查询朋友圈
|
||||
PageVO<FeedsVO> pageVO = feedsService.queryFeeds(feedsDTO);
|
||||
// 返回数据
|
||||
return ResponseVO.ok(pageVO.getRecords(), pageVO.getCurrent(), pageVO.getTotal());
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,57 @@
|
||||
package com.xcs.wx.controller;
|
||||
|
||||
import com.xcs.wx.service.ImageService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
/**
|
||||
* 图片 Controller
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年1月24日16:41:52
|
||||
*/
|
||||
@Controller
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/image")
|
||||
public class ImageController {
|
||||
|
||||
private final ImageService imageService;
|
||||
|
||||
/**
|
||||
* 根据Md5下载图片
|
||||
*
|
||||
* @param md5 Md5值
|
||||
* @return 图片
|
||||
*/
|
||||
@GetMapping("/downloadImgMd5")
|
||||
public ResponseEntity<Resource> downloadImgMd5(@RequestParam String md5) {
|
||||
return imageService.downloadImgMd5(md5);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据路径下载图片
|
||||
*
|
||||
* @param path Md5值
|
||||
* @return 图片
|
||||
*/
|
||||
@GetMapping("/downloadImg")
|
||||
public ResponseEntity<Resource> downloadImg(@RequestParam String path) {
|
||||
return imageService.downloadImg(path);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据路径下载图片
|
||||
*
|
||||
* @param localPath 本地图片
|
||||
* @return 图片
|
||||
*/
|
||||
@GetMapping("/downloadImgFormLocal")
|
||||
public ResponseEntity<Resource> downloadImgFormLocal(@RequestParam String localPath) {
|
||||
return imageService.downloadImgFormLocal(localPath);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,48 @@
|
||||
package com.xcs.wx.controller;
|
||||
|
||||
import com.xcs.wx.domain.vo.MsgVO;
|
||||
import com.xcs.wx.domain.vo.ResponseVO;
|
||||
import com.xcs.wx.service.MsgService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 消息 Controller
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月25日 17时06分
|
||||
**/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/msg")
|
||||
public class MsgController {
|
||||
|
||||
private final MsgService msgService;
|
||||
|
||||
/**
|
||||
* 查询消息
|
||||
*
|
||||
* @param talker 对话着
|
||||
* @param nextSequence 下一个序列号
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public ResponseVO<List<MsgVO>> list(@RequestParam String talker, @RequestParam Long nextSequence) {
|
||||
return ResponseVO.ok(msgService.queryMsg(talker, nextSequence));
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出聊天记录
|
||||
*
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/export")
|
||||
public ResponseVO<String> export(@RequestParam String talker) {
|
||||
return ResponseVO.ok(msgService.exportMsg(talker));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,48 @@
|
||||
package com.xcs.wx.controller;
|
||||
|
||||
import com.xcs.wx.domain.dto.RecoverContactDTO;
|
||||
import com.xcs.wx.domain.vo.RecoverContactVO;
|
||||
import com.xcs.wx.domain.vo.ResponseVO;
|
||||
import com.xcs.wx.service.RecoverContactService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 找回联系人 Controller
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月04日 13时48分
|
||||
**/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/recover/contact")
|
||||
public class RecoverContactController {
|
||||
|
||||
private final RecoverContactService recoverContactService;
|
||||
|
||||
/**
|
||||
* 查询朋友圈
|
||||
*
|
||||
* @param recoverContactDTO 请求参数
|
||||
* @return FeedsVO
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public ResponseVO<List<RecoverContactVO>> list(RecoverContactDTO recoverContactDTO) {
|
||||
// 返回数据
|
||||
return ResponseVO.ok(recoverContactService.queryRecoverContact(recoverContactDTO));
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出联系人
|
||||
*
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/export")
|
||||
public ResponseVO<String> export() {
|
||||
return ResponseVO.ok(recoverContactService.exportRecoverContact());
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
package com.xcs.wx.controller;
|
||||
|
||||
import com.xcs.wx.domain.vo.ResponseVO;
|
||||
import com.xcs.wx.domain.vo.SessionVO;
|
||||
import com.xcs.wx.service.SessionService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 会话 Controller
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月21日 17时38分
|
||||
**/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/session")
|
||||
public class SessionController {
|
||||
|
||||
private final SessionService sessionService;
|
||||
|
||||
/**
|
||||
* 查询会话列表
|
||||
*
|
||||
* @return SessionVO
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public ResponseVO<List<SessionVO>> list() {
|
||||
return ResponseVO.ok(sessionService.querySession());
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,93 @@
|
||||
package com.xcs.wx.controller;
|
||||
|
||||
import com.xcs.wx.domain.vo.UserInfoVO;
|
||||
import com.xcs.wx.domain.vo.UserVO;
|
||||
import com.xcs.wx.domain.vo.ResponseVO;
|
||||
import com.xcs.wx.domain.vo.WeChatConfigVO;
|
||||
import com.xcs.wx.service.UserService;
|
||||
import com.xcs.wx.service.WeChatService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* UserController
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年6月15日16:05:49
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/user")
|
||||
public class UserController {
|
||||
|
||||
private final UserService userService;
|
||||
private final WeChatService weChatService;
|
||||
|
||||
/**
|
||||
* 查询微信信息
|
||||
*
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/readWeChatConfig")
|
||||
public ResponseVO<List<WeChatConfigVO>> readWeChatConfig() {
|
||||
return ResponseVO.ok(weChatService.readWeChatConfig());
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户头像
|
||||
*
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/userInfo")
|
||||
public ResponseVO<UserInfoVO> userInfo() {
|
||||
return ResponseVO.ok(userService.userInfo());
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户头像
|
||||
*
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/avatar")
|
||||
public ResponseVO<String> avatar() {
|
||||
return ResponseVO.ok(userService.avatar());
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户昵称
|
||||
*
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/nickname")
|
||||
public ResponseVO<String> nickname() {
|
||||
return ResponseVO.ok(userService.nickname());
|
||||
}
|
||||
|
||||
/**
|
||||
* 所有用户
|
||||
*
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@GetMapping("/users")
|
||||
public ResponseVO<List<UserVO>> users() {
|
||||
return ResponseVO.ok(userService.users());
|
||||
}
|
||||
|
||||
/**
|
||||
* 切换用户
|
||||
*
|
||||
* @param wxId wxId
|
||||
* @return ResponseVO
|
||||
*/
|
||||
@PutMapping("/switchUser")
|
||||
public ResponseVO<String> switchUser(String wxId) {
|
||||
userService.switchUser(wxId);
|
||||
return ResponseVO.ok("切换成功");
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,66 @@
|
||||
package com.xcs.wx.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 联系人标签
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月22日 16时53分
|
||||
**/
|
||||
@Data
|
||||
@TableName("ContactLabel")
|
||||
public class ContactLabel {
|
||||
|
||||
/**
|
||||
* 标签Id
|
||||
*/
|
||||
@TableId("LabelId")
|
||||
private String labelId;
|
||||
|
||||
/**
|
||||
* 标签名称
|
||||
*/
|
||||
@TableField("LabelName")
|
||||
private String labelName;
|
||||
|
||||
/**
|
||||
* 预留字段1。
|
||||
*/
|
||||
@TableField("Reserved1")
|
||||
private Integer reserved1;
|
||||
|
||||
/**
|
||||
* 预留字段2。
|
||||
*/
|
||||
@TableField("Reserved2")
|
||||
private Integer reserved2;
|
||||
|
||||
/**
|
||||
* 预留字段3。
|
||||
*/
|
||||
@TableField("Reserved3")
|
||||
private String reserved3;
|
||||
|
||||
/**
|
||||
* 预留字段4。
|
||||
*/
|
||||
@TableField("Reserved4")
|
||||
private String reserved4;
|
||||
|
||||
/**
|
||||
* 预留字段5。
|
||||
*/
|
||||
@TableField("Reserved5")
|
||||
private String reserved5;
|
||||
|
||||
/**
|
||||
* 响应数据
|
||||
*/
|
||||
@TableField("RespData")
|
||||
private String respData;
|
||||
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
package com.xcs.wx.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 最近使用关键字
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月23日 11时09分
|
||||
**/
|
||||
@Data
|
||||
@TableName("FTSRecentUsed15")
|
||||
public class FTSRecentUsed {
|
||||
|
||||
/**
|
||||
* 查询的内容
|
||||
*/
|
||||
@TableId("queryText")
|
||||
private String queryText;
|
||||
|
||||
/**
|
||||
* 用户名
|
||||
*/
|
||||
@TableField("username")
|
||||
private Integer username;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
@TableField("updateTime")
|
||||
private String updateTime;
|
||||
}
|
||||
@ -0,0 +1,55 @@
|
||||
package com.xcs.wx.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import org.apache.ibatis.type.ByteArrayTypeHandler;
|
||||
|
||||
/**
|
||||
* 图片链接表
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月04日 17时55分
|
||||
**/
|
||||
@Data
|
||||
@TableName(value = "HardLinkImageAttribute", autoResultMap = true)
|
||||
public class HardLinkImageAttribute {
|
||||
|
||||
/**
|
||||
* 动态的唯一标识ID。
|
||||
*/
|
||||
@TableId("Md5Hash")
|
||||
private Long md5Hash;
|
||||
|
||||
/**
|
||||
* 发布用户的用户名。
|
||||
*/
|
||||
@TableField("DirID1")
|
||||
private String dirId1;
|
||||
|
||||
/**
|
||||
* 发布用户的用户名。
|
||||
*/
|
||||
@TableField("DirID2")
|
||||
private String dirId2;
|
||||
|
||||
/**
|
||||
* 发布用户的用户名。
|
||||
*/
|
||||
@TableField(value = "Md5", typeHandler = ByteArrayTypeHandler.class)
|
||||
private byte[] md5;
|
||||
|
||||
/**
|
||||
* 发布用户的用户名。
|
||||
*/
|
||||
@TableField("ModifyTime")
|
||||
private String modifyTime;
|
||||
|
||||
/**
|
||||
* 发布用户的用户名。
|
||||
*/
|
||||
@TableField("FileName")
|
||||
private String fileName;
|
||||
|
||||
}
|
||||
@ -0,0 +1,55 @@
|
||||
package com.xcs.wx.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import org.apache.ibatis.type.ByteArrayTypeHandler;
|
||||
|
||||
/**
|
||||
* 视频链接表
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年02月07日 15时24分
|
||||
**/
|
||||
@Data
|
||||
@TableName(value = "HardLinkVideoAttribute", autoResultMap = true)
|
||||
public class HardLinkVideoAttribute {
|
||||
|
||||
/**
|
||||
* 动态的唯一标识ID。
|
||||
*/
|
||||
@TableId("Md5Hash")
|
||||
private Long md5Hash;
|
||||
|
||||
/**
|
||||
* 发布用户的用户名。
|
||||
*/
|
||||
@TableField("DirID1")
|
||||
private String dirId1;
|
||||
|
||||
/**
|
||||
* 发布用户的用户名。
|
||||
*/
|
||||
@TableField("DirID2")
|
||||
private String dirId2;
|
||||
|
||||
/**
|
||||
* 发布用户的用户名。
|
||||
*/
|
||||
@TableField(value = "Md5", typeHandler = ByteArrayTypeHandler.class)
|
||||
private byte[] md5;
|
||||
|
||||
/**
|
||||
* 发布用户的用户名。
|
||||
*/
|
||||
@TableField("ModifyTime")
|
||||
private String modifyTime;
|
||||
|
||||
/**
|
||||
* 发布用户的用户名。
|
||||
*/
|
||||
@TableField("FileName")
|
||||
private String fileName;
|
||||
|
||||
}
|
||||
@ -0,0 +1,41 @@
|
||||
package com.xcs.wx.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* SQLite 数据库中的一个系统表
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年6月13日09:18:29
|
||||
*/
|
||||
@Data
|
||||
@TableName("sqlite_master")
|
||||
public class SqliteMaster {
|
||||
|
||||
/**
|
||||
* type
|
||||
*/
|
||||
@TableField("type")
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* tblName
|
||||
*/
|
||||
@TableField("tbl_name")
|
||||
private String tblName;
|
||||
|
||||
/**
|
||||
* rootPage
|
||||
*/
|
||||
@TableField("rootpage")
|
||||
private String rootPage;
|
||||
|
||||
/**
|
||||
* sql
|
||||
*/
|
||||
@TableField("sql")
|
||||
private String sql;
|
||||
|
||||
}
|
||||
@ -0,0 +1,106 @@
|
||||
package com.xcs.wx.domain.bo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* CompressContentBO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月16日 14时59分
|
||||
**/
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@JacksonXmlRootElement(localName = "msg")
|
||||
public class CompressContentBO {
|
||||
|
||||
@JacksonXmlProperty(localName = "appmsg")
|
||||
private AppMsg appMsg;
|
||||
|
||||
@JacksonXmlProperty(localName = "fromusername")
|
||||
private String fromUsername;
|
||||
|
||||
@JacksonXmlProperty(localName = "scene")
|
||||
private int scene;
|
||||
|
||||
@JacksonXmlProperty(localName = "appinfo")
|
||||
private AppInfo appInfo;
|
||||
|
||||
@JacksonXmlProperty(localName = "titile")
|
||||
private String titile;
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class AppMsg {
|
||||
@JacksonXmlProperty(localName = "title")
|
||||
private String title;
|
||||
|
||||
@JacksonXmlProperty(localName = "sourcedisplayname")
|
||||
private String sourceDisplayName;
|
||||
|
||||
@JacksonXmlProperty(localName = "des")
|
||||
private String des;
|
||||
|
||||
@JacksonXmlProperty(localName = "url")
|
||||
private String url;
|
||||
|
||||
@JacksonXmlProperty(localName = "action")
|
||||
private String action;
|
||||
|
||||
@JacksonXmlProperty(localName = "type")
|
||||
private int type;
|
||||
|
||||
@JacksonXmlProperty(localName = "showtype")
|
||||
private int showType;
|
||||
|
||||
@JacksonXmlProperty(localName = "refermsg")
|
||||
private ReferMsg referMsg;
|
||||
|
||||
@JacksonXmlProperty(localName = "weappinfo")
|
||||
private WeAppInfo weAppInfo;
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class ReferMsg {
|
||||
@JacksonXmlProperty(localName = "type")
|
||||
private int type;
|
||||
|
||||
@JacksonXmlProperty(localName = "svrid")
|
||||
private long svrId;
|
||||
|
||||
@JacksonXmlProperty(localName = "fromusr")
|
||||
private String fromUsr;
|
||||
|
||||
@JacksonXmlProperty(localName = "displayname")
|
||||
private String displayName;
|
||||
|
||||
@JacksonXmlProperty(localName = "content")
|
||||
private String content;
|
||||
|
||||
@JacksonXmlProperty(localName = "msgsource")
|
||||
private String msgSource;
|
||||
}
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class WeAppInfo {
|
||||
@JacksonXmlProperty(localName = "weappiconurl")
|
||||
private String weAppIconUrl;
|
||||
|
||||
@JacksonXmlProperty(localName = "weapppagethumbrawurl")
|
||||
private String weAppPageThumbRawUrl;
|
||||
}
|
||||
}
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class AppInfo {
|
||||
@JacksonXmlProperty(localName = "version")
|
||||
private int version;
|
||||
|
||||
@JacksonXmlProperty(localName = "appname")
|
||||
private String appName;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
package com.xcs.wx.domain.bo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* DecryptBO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月10日20:21:02
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public class DecryptBO {
|
||||
|
||||
/**
|
||||
* 输入要解密的文件
|
||||
*/
|
||||
private String input;
|
||||
|
||||
/**
|
||||
* 解密后的文件
|
||||
*/
|
||||
private String output;
|
||||
}
|
||||
@ -0,0 +1,169 @@
|
||||
package com.xcs.wx.domain.bo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author xcs
|
||||
* @date 2024年01月16日 14时59分
|
||||
**/
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@JacksonXmlRootElement(localName = "msg")
|
||||
public class MsgBO {
|
||||
|
||||
@JacksonXmlProperty(localName = "img")
|
||||
public Img img;
|
||||
|
||||
@JacksonXmlProperty(localName = "emoji")
|
||||
private Emoji emoji;
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class Img {
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "aeskey")
|
||||
public String aesKey;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "encryver")
|
||||
public String encryVer;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "cdnthumbaeskey")
|
||||
public String cdnThumbAesKey;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "cdnthumburl")
|
||||
public String cdnThumbUrl;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "cdnthumblength")
|
||||
public int cdnThumbLength;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "cdnthumbheight")
|
||||
public int cdnThumbHeight;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "cdnthumbwidth")
|
||||
public int cdnThumbWidth;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true,localName = "cdnmidheight")
|
||||
public int cdnMidHeight;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "cdnmidwidth")
|
||||
public int cdnMidWidth;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "cdnhdheight")
|
||||
public int cdnHdHeight;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "cdnhdwidth")
|
||||
public int cdnHdWidth;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "cdnmidimgurl")
|
||||
public String cdnMidImgUrl;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "length")
|
||||
public int length;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "md5")
|
||||
public String md5;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "hevc_mid_size")
|
||||
public int hevcMidSize;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "originsourcemd5")
|
||||
public String originSourceMd5;
|
||||
}
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class Emoji {
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "fromusername")
|
||||
private String fromUsername;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "tousername")
|
||||
private String toUsername;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "type")
|
||||
private String type;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "idbuffer")
|
||||
private String idBuffer;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "md5")
|
||||
private String md5;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "len")
|
||||
private String len;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "productid")
|
||||
private String productId;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "androidmd5")
|
||||
private String androidMd5;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "androidlen")
|
||||
private String androidLen;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "s60v3md5")
|
||||
private String s60v3Md5;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "s60v3len")
|
||||
private String s60v3Len;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "s60v5md5")
|
||||
private String s60v5Md5;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "s60v5len")
|
||||
private String s60v5Len;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "cdnurl")
|
||||
private String cdnUrl;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "designerid")
|
||||
private String designerId;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "thumburl")
|
||||
private String thumbUrl;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "encrypturl")
|
||||
private String encryptUrl;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "aeskey")
|
||||
private String aesKey;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "externurl")
|
||||
private String externUrl;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "externmd5")
|
||||
private String externMd5;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "width")
|
||||
private String width;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "height")
|
||||
private String height;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "tpurl")
|
||||
private String tpUrl;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "tpauthkey")
|
||||
private String tpAuthKey;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "attachedtext")
|
||||
private String attachedText;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "attachedtextcolor")
|
||||
private String attachedTextColor;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "lensid")
|
||||
private String lensId;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "emojiattr")
|
||||
private String emojiAttr;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "linkid")
|
||||
private String linkId;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "desc")
|
||||
private String desc;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,223 @@
|
||||
package com.xcs.wx.domain.bo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* TimelineObjectBO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月03日 17时47分
|
||||
**/
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@JacksonXmlRootElement(localName = "TimelineObject")
|
||||
public class TimelineObjectBO {
|
||||
|
||||
@JacksonXmlProperty(localName = "id")
|
||||
private String id;
|
||||
|
||||
@JacksonXmlProperty(localName = "username")
|
||||
private String username;
|
||||
|
||||
@JacksonXmlProperty(localName = "createTime")
|
||||
private Long createTime;
|
||||
|
||||
@JacksonXmlProperty(localName = "contentDesc")
|
||||
private String contentDesc;
|
||||
|
||||
@JacksonXmlProperty(localName = "contentDescShowType")
|
||||
private String contentDescShowType;
|
||||
|
||||
@JacksonXmlProperty(localName = "contentDescScene")
|
||||
private String contentDescScene;
|
||||
|
||||
@JacksonXmlProperty(localName = "private")
|
||||
private String asPrivate;
|
||||
|
||||
@JacksonXmlProperty(localName = "sightFolded")
|
||||
private String sightFolded;
|
||||
|
||||
@JacksonXmlProperty(localName = "showFlag")
|
||||
private String showFlag;
|
||||
|
||||
@JacksonXmlProperty(localName = "appInfo")
|
||||
private AppInfo appInfo;
|
||||
|
||||
@JacksonXmlProperty(localName = "sourceUserName")
|
||||
private String sourceUserName;
|
||||
|
||||
@JacksonXmlProperty(localName = "sourceNickName")
|
||||
private String sourceNickName;
|
||||
|
||||
@JacksonXmlProperty(localName = "statisticsData")
|
||||
private String statisticsData;
|
||||
|
||||
@JacksonXmlProperty(localName = "statExtStr")
|
||||
private String statExtStr;
|
||||
|
||||
@JacksonXmlProperty(localName = "ContentObject")
|
||||
private ContentObject contentObject;
|
||||
|
||||
@JacksonXmlProperty(localName = "publicUserName")
|
||||
private String publicUserName;
|
||||
|
||||
@JacksonXmlProperty(localName = "location")
|
||||
private Location location;
|
||||
|
||||
@JacksonXmlProperty(localName = "streamvideo")
|
||||
private StreamVideo streamVideo;
|
||||
|
||||
/**
|
||||
* AppInfo
|
||||
*/
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class AppInfo {
|
||||
@JacksonXmlProperty(localName = "id")
|
||||
private String id;
|
||||
|
||||
@JacksonXmlProperty(localName = "version")
|
||||
private String version;
|
||||
|
||||
@JacksonXmlProperty(localName = "appName")
|
||||
private String appName;
|
||||
|
||||
@JacksonXmlProperty(localName = "installUrl")
|
||||
private String installUrl;
|
||||
|
||||
@JacksonXmlProperty(localName = "fromUrl")
|
||||
private String fromUrl;
|
||||
|
||||
@JacksonXmlProperty(localName = "isForceUpdate")
|
||||
private String isForceUpdate;
|
||||
|
||||
@JacksonXmlProperty(localName = "isHidden")
|
||||
private String isHidden;
|
||||
}
|
||||
|
||||
/**
|
||||
* ContentObject
|
||||
*/
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class ContentObject {
|
||||
@JacksonXmlProperty(localName = "contentStyle")
|
||||
private Integer contentStyle;
|
||||
|
||||
@JacksonXmlProperty(localName = "description")
|
||||
private String description;
|
||||
|
||||
@JacksonXmlProperty(localName = "title")
|
||||
private String title;
|
||||
|
||||
@JacksonXmlProperty(localName = "contentUrl")
|
||||
private String contentUrl;
|
||||
|
||||
@JacksonXmlProperty(localName = "mediaList")
|
||||
private List<Media> mediaList;
|
||||
|
||||
/**
|
||||
* Media
|
||||
*/
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class Media {
|
||||
@JacksonXmlProperty(localName = "id")
|
||||
private String id;
|
||||
|
||||
@JacksonXmlProperty(localName = "type")
|
||||
private String type;
|
||||
|
||||
@JacksonXmlProperty(localName = "title")
|
||||
private String title;
|
||||
|
||||
@JacksonXmlProperty(localName = "description")
|
||||
private String description;
|
||||
|
||||
@JacksonXmlProperty(localName = "private")
|
||||
private String asPrivate;
|
||||
|
||||
@JacksonXmlProperty(localName = "userData")
|
||||
private String userData;
|
||||
|
||||
@JacksonXmlProperty(localName = "subType")
|
||||
private String subType;
|
||||
|
||||
@JacksonXmlProperty(localName = "videoSize")
|
||||
private String videoSize;
|
||||
|
||||
@JacksonXmlProperty(localName = "url")
|
||||
private Url url;
|
||||
|
||||
@JacksonXmlProperty(localName = "thumb")
|
||||
private Thumb thumb;
|
||||
|
||||
@JacksonXmlProperty(localName = "size")
|
||||
private String size;
|
||||
}
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class Url {
|
||||
@JacksonXmlProperty(isAttribute = true)
|
||||
private int type;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true)
|
||||
private String md5;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true)
|
||||
private String videomd5;
|
||||
|
||||
@JacksonXmlText
|
||||
private String value;
|
||||
}
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class Thumb {
|
||||
@JacksonXmlProperty(isAttribute = true)
|
||||
private int type;
|
||||
|
||||
@JacksonXmlText
|
||||
private String value;
|
||||
}
|
||||
}
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class Location {
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "poiClassifyId")
|
||||
private String poiClassifyId;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "poiName")
|
||||
private String poiName;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "poiAddress")
|
||||
private String poiAddress;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "poiClassifyType")
|
||||
private Integer poiClassifyType;
|
||||
|
||||
@JacksonXmlProperty(isAttribute = true, localName = "city")
|
||||
private String city;
|
||||
}
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class StreamVideo {
|
||||
@JacksonXmlProperty(localName = "streamvideourl")
|
||||
private String streamVideoUrl;
|
||||
|
||||
@JacksonXmlProperty(localName = "streamvideothumburl")
|
||||
private String streamVideoThumbUrl;
|
||||
|
||||
@JacksonXmlProperty(localName = "streamvideoweburl")
|
||||
private String streamVideoWebUrl;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,45 @@
|
||||
package com.xcs.wx.domain.bo;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* UserBO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月31日15:25:21
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
public class UserBO {
|
||||
|
||||
/**
|
||||
* 文件目录
|
||||
*/
|
||||
private String basePath;
|
||||
|
||||
/**
|
||||
* 微信Id
|
||||
*/
|
||||
private String wxId;
|
||||
|
||||
/**
|
||||
* 昵称
|
||||
*/
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
* 版本号
|
||||
*/
|
||||
private String version;
|
||||
|
||||
/**
|
||||
* 账号
|
||||
*/
|
||||
private String account;
|
||||
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
private String mobile;
|
||||
}
|
||||
@ -0,0 +1,31 @@
|
||||
package com.xcs.wx.domain.bo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlCData;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* VoipMsgBO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月17日 15时15分
|
||||
**/
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@JacksonXmlRootElement(localName = "voipmsg")
|
||||
public class VoipMsgBO {
|
||||
|
||||
@JacksonXmlProperty(localName = "VoIPBubbleMsg")
|
||||
private VoIPBubbleMsg voIPBubbleMsg;
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public static class VoIPBubbleMsg {
|
||||
|
||||
@JacksonXmlCData
|
||||
@JacksonXmlProperty(localName = "msg")
|
||||
private String msg;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,30 @@
|
||||
package com.xcs.wx.domain.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* ChatRoomDTO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月08日 16时24分
|
||||
**/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ChatRoomDTO extends PageDTO {
|
||||
|
||||
/**
|
||||
* 群聊标题
|
||||
*/
|
||||
private String chatRoomTitle;
|
||||
|
||||
/**
|
||||
* 群昵称
|
||||
*/
|
||||
private String selfDisplayName;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String createBy;
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
package com.xcs.wx.domain.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* ContactDTO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月31日15:25:21
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ContactDTO extends PageDTO {
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 昵称
|
||||
*/
|
||||
private String nickName;
|
||||
|
||||
/**
|
||||
* 标签Id
|
||||
*/
|
||||
private String labels;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String describe;
|
||||
}
|
||||
@ -0,0 +1,48 @@
|
||||
package com.xcs.wx.domain.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* DecryptDTO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月31日15:25:21
|
||||
*/
|
||||
@Data
|
||||
public class DecryptDTO {
|
||||
|
||||
/**
|
||||
* pid
|
||||
*/
|
||||
private int pid;
|
||||
|
||||
/**
|
||||
* 文件目录
|
||||
*/
|
||||
private String basePath;
|
||||
|
||||
/**
|
||||
* 微信Id
|
||||
*/
|
||||
private String wxId;
|
||||
|
||||
/**
|
||||
* 昵称
|
||||
*/
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
* 版本号
|
||||
*/
|
||||
private String version;
|
||||
|
||||
/**
|
||||
* 账号
|
||||
*/
|
||||
private String account;
|
||||
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
private String mobile;
|
||||
}
|
||||
@ -0,0 +1,30 @@
|
||||
package com.xcs.wx.domain.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* FeedsDTO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月03日 17时17分
|
||||
**/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class FeedsDTO extends PageDTO {
|
||||
|
||||
/**
|
||||
* 用户名
|
||||
*/
|
||||
private String userName;
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
*/
|
||||
private Long startTime;
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
*/
|
||||
private Long endTime;
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
package com.xcs.wx.domain.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* PageDTO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月29日 15时58分
|
||||
**/
|
||||
@Data
|
||||
public class PageDTO {
|
||||
|
||||
/**
|
||||
* 当前页数
|
||||
*/
|
||||
private Long current;
|
||||
|
||||
/**
|
||||
* 页数大小
|
||||
*/
|
||||
private Long pageSize;
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
package com.xcs.wx.domain.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* RecoverContactDTO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年6月14日15:29:54
|
||||
**/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class RecoverContactDTO extends PageDTO{
|
||||
|
||||
/**
|
||||
* nickname
|
||||
*/
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
* c2remark
|
||||
*/
|
||||
private String remark;
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* AllContactVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年02月07日 11时15分
|
||||
**/
|
||||
@Data
|
||||
public class AllContactVO {
|
||||
|
||||
/**
|
||||
* 用户名
|
||||
*/
|
||||
private String userName;
|
||||
|
||||
/**
|
||||
* 昵称。
|
||||
*/
|
||||
private String nickName;
|
||||
}
|
||||
@ -0,0 +1,33 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* CardLinkVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月17日 14时50分
|
||||
**/
|
||||
@Data
|
||||
public class CardLinkVO {
|
||||
|
||||
/**
|
||||
* title
|
||||
*/
|
||||
private String title;
|
||||
|
||||
/**
|
||||
* sourceDisplayName
|
||||
*/
|
||||
private String sourceDisplayName;
|
||||
|
||||
/**
|
||||
* des
|
||||
*/
|
||||
private String des;
|
||||
|
||||
/**
|
||||
* url
|
||||
*/
|
||||
private String url;
|
||||
}
|
||||
@ -0,0 +1,63 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ChatRoomDetailVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月08日 16时10分
|
||||
**/
|
||||
@Data
|
||||
public class ChatRoomDetailVO {
|
||||
|
||||
/**
|
||||
* 群聊名称
|
||||
*/
|
||||
private String chatRoomName;
|
||||
|
||||
/**
|
||||
* 群聊标题
|
||||
*/
|
||||
private String chatRoomTitle;
|
||||
|
||||
/**
|
||||
* 自己在聊天室中的显示名称。
|
||||
*/
|
||||
private String selfDisplayName;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String createBy;
|
||||
|
||||
/**
|
||||
* 头像
|
||||
*/
|
||||
private String headImgUrl;
|
||||
|
||||
/**
|
||||
* 预留字段2
|
||||
*/
|
||||
@JsonIgnore
|
||||
private String reserved2;
|
||||
|
||||
/**
|
||||
* roomData
|
||||
*/
|
||||
@JsonIgnore
|
||||
private byte[] roomData;
|
||||
|
||||
/**
|
||||
* 群聊信息
|
||||
*/
|
||||
private ChatRoomInfoVO chatRoomInfo;
|
||||
|
||||
/**
|
||||
* 群成员
|
||||
*/
|
||||
private List<ChatRoomMemberVO> members;
|
||||
}
|
||||
@ -0,0 +1,33 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* ChatRoomMemberVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月08日 16时10分
|
||||
**/
|
||||
@Data
|
||||
public class ChatRoomMemberVO {
|
||||
|
||||
/**
|
||||
* wxId
|
||||
*/
|
||||
private String wxId;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private Integer state;
|
||||
|
||||
/**
|
||||
* 头像
|
||||
*/
|
||||
private String headImgUrl;
|
||||
}
|
||||
@ -0,0 +1,65 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* ChatRoomVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月08日 16时10分
|
||||
**/
|
||||
@Data
|
||||
public class ChatRoomVO {
|
||||
|
||||
/**
|
||||
* 聊天室名称
|
||||
*/
|
||||
private String chatRoomName;
|
||||
|
||||
/**
|
||||
* 群聊标题
|
||||
*/
|
||||
private String chatRoomTitle;
|
||||
|
||||
/**
|
||||
* 是否显示名称的标志
|
||||
*/
|
||||
private Integer isShowName;
|
||||
|
||||
/**
|
||||
* 自己在聊天室中的显示名称。
|
||||
*/
|
||||
private String selfDisplayName;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String createBy;
|
||||
|
||||
/**
|
||||
* 头像
|
||||
*/
|
||||
private String headImgUrl;
|
||||
|
||||
/**
|
||||
* 群聊是否已经解散
|
||||
*/
|
||||
private Boolean dissolution;
|
||||
|
||||
/**
|
||||
* 是否为企业微信群
|
||||
*/
|
||||
private Boolean enterprise;
|
||||
|
||||
/**
|
||||
* 群聊数据
|
||||
*/
|
||||
@JsonIgnore
|
||||
private byte[] roomData;
|
||||
|
||||
/**
|
||||
* 群聊人数
|
||||
*/
|
||||
private Integer memberCount;
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* ContactLabelVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月21日 18时13分
|
||||
**/
|
||||
@Data
|
||||
public class ContactLabelVO {
|
||||
|
||||
/**
|
||||
* 标签Id
|
||||
*/
|
||||
private String labelId;
|
||||
|
||||
/**
|
||||
* 标签名称
|
||||
*/
|
||||
private String labelName;
|
||||
}
|
||||
@ -0,0 +1,55 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ContactVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月22日 14时43分
|
||||
**/
|
||||
@Data
|
||||
public class ContactVO {
|
||||
|
||||
/**
|
||||
* 用户名
|
||||
*/
|
||||
private String userName;
|
||||
|
||||
/**
|
||||
* 别名。
|
||||
*/
|
||||
private String alias;
|
||||
|
||||
/**
|
||||
* 备注信息。
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 昵称。
|
||||
*/
|
||||
private String nickName;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String describe;
|
||||
|
||||
/**
|
||||
* 头像
|
||||
*/
|
||||
private String headImgUrl;
|
||||
|
||||
/**
|
||||
* 标签Id
|
||||
*/
|
||||
private String labelIdList;
|
||||
|
||||
/**
|
||||
* 标签
|
||||
*/
|
||||
private List<String> labels;
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* CountRecentMsgsVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月06日 14时21分
|
||||
**/
|
||||
@Data
|
||||
public class CountRecentMsgsVO {
|
||||
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 值
|
||||
*/
|
||||
private Long value;
|
||||
|
||||
/**
|
||||
* 分类
|
||||
*/
|
||||
private String category;
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* DatabaseVO
|
||||
*
|
||||
* @author 林雷
|
||||
* @date 2024年6月28日11:08:45
|
||||
*/
|
||||
@Data
|
||||
public class DatabaseVO {
|
||||
|
||||
/**
|
||||
* 文件路径
|
||||
*/
|
||||
private String filePath;
|
||||
|
||||
/**
|
||||
* 文件大小
|
||||
*/
|
||||
private String fileSize;
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* DecryptVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月21日 18时13分
|
||||
**/
|
||||
@Data
|
||||
@Builder
|
||||
public class DecryptVO {
|
||||
|
||||
/**
|
||||
* 文件名称
|
||||
*/
|
||||
private String fileName;
|
||||
|
||||
/**
|
||||
* 文件大小
|
||||
*/
|
||||
private String fileSize;
|
||||
|
||||
/**
|
||||
* 当前进度
|
||||
*/
|
||||
private int currentProgress;
|
||||
|
||||
/**
|
||||
* 总数量
|
||||
*/
|
||||
private int total;
|
||||
}
|
||||
@ -0,0 +1,74 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnore;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
||||
import com.alibaba.excel.annotation.write.style.ContentStyle;
|
||||
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* ExportChatRoomVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月08日 16时10分
|
||||
**/
|
||||
@Data
|
||||
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER)
|
||||
public class ExportChatRoomVO {
|
||||
|
||||
/**
|
||||
* 群号
|
||||
*/
|
||||
@ColumnWidth(25)
|
||||
@ExcelProperty("群号")
|
||||
private String chatRoomName;
|
||||
|
||||
/**
|
||||
* 群聊名称
|
||||
*/
|
||||
@ColumnWidth(25)
|
||||
@ExcelProperty("群聊名称")
|
||||
private String chatRoomTitle;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ColumnWidth(25)
|
||||
@ExcelProperty("备注")
|
||||
private String selfDisplayName;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
@ColumnWidth(25)
|
||||
@ExcelProperty("创建人")
|
||||
private String createBy;
|
||||
|
||||
/**
|
||||
* 群聊是否已经解散
|
||||
*/
|
||||
@ColumnWidth(25)
|
||||
@ExcelProperty("群聊是否已经解散")
|
||||
private Boolean dissolution;
|
||||
|
||||
/**
|
||||
* 是否为企业微信群
|
||||
*/
|
||||
@ColumnWidth(25)
|
||||
@ExcelProperty("是否为企业微信群")
|
||||
private Boolean enterprise;
|
||||
|
||||
/**
|
||||
* 群聊数据
|
||||
*/
|
||||
@ExcelIgnore
|
||||
private byte[] roomData;
|
||||
|
||||
/**
|
||||
* 群聊人数
|
||||
*/
|
||||
@ColumnWidth(25)
|
||||
@ExcelProperty("群聊人数")
|
||||
private Integer memberCount;
|
||||
}
|
||||
@ -0,0 +1,60 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
||||
import com.alibaba.excel.annotation.write.style.ContentStyle;
|
||||
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* ExportContactVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月22日 14时43分
|
||||
**/
|
||||
@Data
|
||||
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER)
|
||||
public class ExportContactVO {
|
||||
|
||||
/**
|
||||
* 用户名
|
||||
*/
|
||||
@ColumnWidth(25)
|
||||
@ExcelProperty("微信Id")
|
||||
private String userName;
|
||||
|
||||
/**
|
||||
* 别名
|
||||
*/
|
||||
@ColumnWidth(25)
|
||||
@ExcelProperty("微信号")
|
||||
private String alias;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ColumnWidth(25)
|
||||
@ExcelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 昵称
|
||||
*/
|
||||
@ColumnWidth(30)
|
||||
@ExcelProperty("昵称")
|
||||
private String nickName;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
@ColumnWidth(25)
|
||||
@ExcelProperty("描述")
|
||||
private String describe;
|
||||
|
||||
/**
|
||||
* 标签Id
|
||||
*/
|
||||
@ColumnWidth(20)
|
||||
@ExcelProperty("标签Id")
|
||||
private String labelIdList;
|
||||
}
|
||||
@ -0,0 +1,67 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
||||
import com.alibaba.excel.annotation.write.style.ContentStyle;
|
||||
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* ExportMsgVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月25日 16时16分
|
||||
**/
|
||||
@Data
|
||||
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER)
|
||||
public class ExportMsgVO {
|
||||
|
||||
/**
|
||||
* 消息服务器 ID
|
||||
*/
|
||||
@ColumnWidth(25)
|
||||
@ExcelProperty("消息Id")
|
||||
private String msgSvrId;
|
||||
|
||||
/**
|
||||
* 聊天人Id
|
||||
*/
|
||||
@ColumnWidth(25)
|
||||
@ExcelProperty("聊天人Id")
|
||||
private String wxId;
|
||||
|
||||
/**
|
||||
* 消息类型
|
||||
*/
|
||||
@ColumnWidth(10)
|
||||
@ExcelProperty("类型")
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 消息子类型
|
||||
*/
|
||||
@ColumnWidth(10)
|
||||
@ExcelProperty("子类型")
|
||||
private Integer subType;
|
||||
|
||||
/**
|
||||
* 是否为发送者
|
||||
*/
|
||||
@ColumnWidth(15)
|
||||
@ExcelProperty("是否发送者")
|
||||
private Integer isSender;
|
||||
|
||||
/**
|
||||
* 消息创建时间
|
||||
*/
|
||||
@ColumnWidth(25)
|
||||
@ExcelProperty("创建时间")
|
||||
private String strCreateTime;
|
||||
|
||||
/**
|
||||
* 消息内容字符串
|
||||
*/
|
||||
@ColumnWidth(80)
|
||||
@ExcelProperty("消息内容")
|
||||
private String strContent;
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* FeedsLocationVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月04日 14时25分
|
||||
**/
|
||||
@Data
|
||||
public class FeedsLocationVO {
|
||||
|
||||
/**
|
||||
* poiClassifyId
|
||||
*/
|
||||
private String poiClassifyId;
|
||||
|
||||
/**
|
||||
* poiName
|
||||
*/
|
||||
private String poiName;
|
||||
|
||||
/**
|
||||
* poiAddress
|
||||
*/
|
||||
private String poiAddress;
|
||||
|
||||
/**
|
||||
* poiClassifyType
|
||||
*/
|
||||
private Integer poiClassifyType;
|
||||
|
||||
/**
|
||||
* city
|
||||
*/
|
||||
private String city;
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* FeedsMediaVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月04日 14时25分
|
||||
**/
|
||||
@Data
|
||||
public class FeedsMediaVO {
|
||||
|
||||
/**
|
||||
* 大图Url
|
||||
*/
|
||||
private String url;
|
||||
|
||||
/**
|
||||
* 缩略图Url
|
||||
*/
|
||||
private String thumb;
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* MsgTypeDistributionVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月05日 15时25分
|
||||
**/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public class MsgTypeDistributionVO {
|
||||
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
private Integer value;
|
||||
}
|
||||
@ -0,0 +1,37 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* PageVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月29日 16时19分
|
||||
**/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public class PageVO<T> {
|
||||
|
||||
/**
|
||||
* 当前页数
|
||||
*/
|
||||
private Long current;
|
||||
|
||||
/**
|
||||
* 页数大小
|
||||
*/
|
||||
private Long pageSize;
|
||||
|
||||
/**
|
||||
* 总页数
|
||||
*/
|
||||
private Long total;
|
||||
|
||||
/**
|
||||
* 查询条件
|
||||
*/
|
||||
private List<T> records;
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* RecentUsedKeyWordVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月23日 11时27分
|
||||
**/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public class RecentUsedKeyWordVO {
|
||||
|
||||
/**
|
||||
* 关键字
|
||||
*/
|
||||
private String text;
|
||||
}
|
||||
@ -0,0 +1,95 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* ResponseVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月25日 17时31分
|
||||
**/
|
||||
@Data
|
||||
public class ResponseVO<T> {
|
||||
|
||||
/**
|
||||
* 业务编码
|
||||
*/
|
||||
private Boolean success;
|
||||
|
||||
/**
|
||||
* 错误编码
|
||||
*/
|
||||
private Integer errorCode;
|
||||
|
||||
/**
|
||||
* 错误消息
|
||||
*/
|
||||
private String errorMessage;
|
||||
|
||||
/**
|
||||
* 页数
|
||||
*/
|
||||
private Long page;
|
||||
|
||||
/**
|
||||
* 总数量
|
||||
*/
|
||||
private Long total;
|
||||
|
||||
/**
|
||||
* 展示类型
|
||||
*/
|
||||
private Integer showType;
|
||||
|
||||
/**
|
||||
* 数据
|
||||
*/
|
||||
private T data;
|
||||
|
||||
/**
|
||||
* 成功
|
||||
*
|
||||
* @param data 数据
|
||||
* @param <T> 泛型对象
|
||||
* @return ResponseDTO
|
||||
*/
|
||||
public static <T> ResponseVO<T> ok(T data) {
|
||||
ResponseVO<T> wrapper = new ResponseVO<>();
|
||||
wrapper.setSuccess(true);
|
||||
wrapper.setData(data);
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 成功
|
||||
*
|
||||
* @param data 数据
|
||||
* @param <T> 泛型对象
|
||||
* @param page 页数
|
||||
* @param total 总数量
|
||||
* @return ResponseDTO
|
||||
*/
|
||||
public static <T> ResponseVO<T> ok(T data, Long page, Long total) {
|
||||
ResponseVO<T> wrapper = new ResponseVO<>();
|
||||
wrapper.setSuccess(true);
|
||||
wrapper.setData(data);
|
||||
wrapper.setPage(page);
|
||||
wrapper.setTotal(total);
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 失败
|
||||
*
|
||||
* @param <T> 数据
|
||||
* @return ResponseDTO
|
||||
*/
|
||||
public static <T> ResponseVO<T> error(Integer errorCode, String errorMessage) {
|
||||
ResponseVO<T> wrapper = new ResponseVO<>();
|
||||
wrapper.setSuccess(false);
|
||||
wrapper.setErrorCode(errorCode);
|
||||
wrapper.setShowType(2);
|
||||
wrapper.setErrorMessage(errorMessage);
|
||||
return wrapper;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* SessionVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月21日 18时13分
|
||||
**/
|
||||
@Data
|
||||
public class SessionVO {
|
||||
|
||||
/**
|
||||
* 用户名
|
||||
*/
|
||||
private String userName;
|
||||
|
||||
/**
|
||||
* 用户昵称
|
||||
*/
|
||||
private String nickName;
|
||||
|
||||
/**
|
||||
* 会话内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 消息时间戳
|
||||
*/
|
||||
private Integer time;
|
||||
|
||||
/**
|
||||
* 短时间
|
||||
*/
|
||||
private String shortTime;
|
||||
|
||||
/**
|
||||
* 头像Url
|
||||
*/
|
||||
private String headImgUrl;
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* StatsPanelVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月23日 17时25分
|
||||
**/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public class StatsPanelVO {
|
||||
|
||||
/**
|
||||
* 联系人数量
|
||||
*/
|
||||
private Integer contact;
|
||||
|
||||
/**
|
||||
* 群聊数量
|
||||
*/
|
||||
private Integer chatRoom;
|
||||
|
||||
/**
|
||||
* 今日发送消息数量
|
||||
*/
|
||||
private Integer sent;
|
||||
|
||||
/**
|
||||
* 今日接受消息数量
|
||||
*/
|
||||
private Integer received;
|
||||
}
|
||||
@ -0,0 +1,33 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* TopContactsVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月06日 15时38分
|
||||
**/
|
||||
@Data
|
||||
public class TopContactsVO {
|
||||
|
||||
/**
|
||||
* 用户名
|
||||
*/
|
||||
private String userName;
|
||||
|
||||
/**
|
||||
* 昵称
|
||||
*/
|
||||
private String nickName;
|
||||
|
||||
/**
|
||||
* 头像
|
||||
*/
|
||||
private String headImgUrl;
|
||||
|
||||
/**
|
||||
* total
|
||||
*/
|
||||
private Long total;
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* UserInfoVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年6月28日16:13:53
|
||||
*/
|
||||
@Data
|
||||
public class UserInfoVO {
|
||||
|
||||
/**
|
||||
* 文件目录
|
||||
*/
|
||||
private String basePath;
|
||||
|
||||
/**
|
||||
* 微信Id
|
||||
*/
|
||||
private String wxId;
|
||||
|
||||
/**
|
||||
* 昵称
|
||||
*/
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
* 版本号
|
||||
*/
|
||||
private String version;
|
||||
|
||||
/**
|
||||
* 账号
|
||||
*/
|
||||
private String account;
|
||||
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
private String mobile;
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* UserVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月10日20:21:02
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public class UserVO {
|
||||
|
||||
/**
|
||||
* wxId
|
||||
*/
|
||||
private String wxId;
|
||||
|
||||
/**
|
||||
* 昵称
|
||||
*/
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
* 头像
|
||||
*/
|
||||
private String avatar;
|
||||
|
||||
/**
|
||||
* 当前选中状态
|
||||
*/
|
||||
private boolean current;
|
||||
}
|
||||
@ -0,0 +1,33 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* WeAppInfoVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月17日 14时19分
|
||||
**/
|
||||
@Data
|
||||
public class WeAppInfoVO {
|
||||
|
||||
/**
|
||||
* title
|
||||
*/
|
||||
private String title;
|
||||
|
||||
/**
|
||||
* sourceDisplayName
|
||||
*/
|
||||
private String sourceDisplayName;
|
||||
|
||||
/**
|
||||
* weAppIconUrl
|
||||
*/
|
||||
private String weAppIconUrl;
|
||||
|
||||
/**
|
||||
* weAppPageThumbRawUrl
|
||||
*/
|
||||
private String weAppPageThumbRawUrl;
|
||||
}
|
||||
@ -0,0 +1,57 @@
|
||||
package com.xcs.wx.domain.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* WeChatConfigVO
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月25日 09时38分
|
||||
**/
|
||||
@Data
|
||||
@RequiredArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class WeChatConfigVO {
|
||||
|
||||
/**
|
||||
* 进程Id
|
||||
*/
|
||||
private Integer pid;
|
||||
|
||||
/**
|
||||
* 基址
|
||||
*/
|
||||
private Long baseAddress;
|
||||
|
||||
/**
|
||||
* 版本号
|
||||
*/
|
||||
private String version;
|
||||
|
||||
/**
|
||||
* 昵称
|
||||
*/
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
* 账号
|
||||
*/
|
||||
private String account;
|
||||
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
private String mobile;
|
||||
|
||||
/**
|
||||
* 文件目录
|
||||
*/
|
||||
private String basePath;
|
||||
|
||||
/**
|
||||
* 微信Id
|
||||
*/
|
||||
private String wxId;
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
package com.xcs.wx.exception;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* @author xcs
|
||||
* @date 2023年12月25日 17时39分
|
||||
**/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class BaseException extends RuntimeException {
|
||||
|
||||
/**
|
||||
* 错误编码
|
||||
*/
|
||||
private Integer code;
|
||||
|
||||
/**
|
||||
* 错误消息
|
||||
*/
|
||||
private String msg;
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package com.xcs.wx.exception;
|
||||
|
||||
/**
|
||||
* 业务异常
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月25日 17时38分
|
||||
**/
|
||||
public class BizException extends BaseException {
|
||||
|
||||
public BizException(Integer code, String msg) {
|
||||
super(code, msg);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
package com.xcs.wx.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xcs.wx.domain.ChatRoomInfo;
|
||||
|
||||
/**
|
||||
* 群聊详情 Mapper
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月09日 15时20分
|
||||
**/
|
||||
public interface ChatRoomInfoMapper extends BaseMapper<ChatRoomInfo> {
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
package com.xcs.wx.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.xcs.wx.domain.ChatRoom;
|
||||
import com.xcs.wx.domain.dto.ChatRoomDTO;
|
||||
import com.xcs.wx.domain.vo.ChatRoomVO;
|
||||
import com.xcs.wx.domain.vo.ExportChatRoomVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 群聊 Mapper
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年01月08日 15时55分
|
||||
**/
|
||||
public interface ChatRoomMapper extends BaseMapper<ChatRoom> {
|
||||
|
||||
/**
|
||||
* 查询群聊
|
||||
*
|
||||
* @param page 分页信息
|
||||
* @param chatRoomDTO 查询条件
|
||||
* @return ChatRoomVO
|
||||
*/
|
||||
Page<ChatRoomVO> queryChatRoom(Page<ChatRoomVO> page, @Param("chatRoomDTO") ChatRoomDTO chatRoomDTO);
|
||||
|
||||
/**
|
||||
* 统计群聊数量
|
||||
*
|
||||
* @return 群聊总数
|
||||
*/
|
||||
int countChatRoom();
|
||||
|
||||
/**
|
||||
* 导出群聊
|
||||
*
|
||||
* @return ExportChatRoomVO
|
||||
*/
|
||||
List<ExportChatRoomVO> exportChatRoom();
|
||||
}
|
||||
@ -0,0 +1,21 @@
|
||||
package com.xcs.wx.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xcs.wx.domain.ContactHeadImg;
|
||||
|
||||
/**
|
||||
* 联系人头像 Mapper
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年6月18日15:33:26
|
||||
**/
|
||||
public interface ContactHeadImgMapper extends BaseMapper<ContactHeadImg> {
|
||||
|
||||
/**
|
||||
* 根据用户名查询联系人头像
|
||||
*
|
||||
* @param usrName 用户名
|
||||
* @return ContactHeadImg
|
||||
*/
|
||||
ContactHeadImg getContactHeadImg(String usrName);
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
package com.xcs.wx.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xcs.wx.domain.ContactHeadImgUrl;
|
||||
|
||||
/**
|
||||
* 联系人头像 Mapper
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月21日 17时08分
|
||||
**/
|
||||
public interface ContactHeadImgUrlMapper extends BaseMapper<ContactHeadImgUrl> {
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
package com.xcs.wx.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xcs.wx.domain.ContactLabel;
|
||||
|
||||
/**
|
||||
* 联系人标签 Mapper
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月22日17:19:20
|
||||
*/
|
||||
public interface ContactLabelMapper extends BaseMapper<ContactLabel> {
|
||||
}
|
||||
@ -0,0 +1,59 @@
|
||||
package com.xcs.wx.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.xcs.wx.domain.Contact;
|
||||
import com.xcs.wx.domain.dto.ContactDTO;
|
||||
import com.xcs.wx.domain.vo.AllContactVO;
|
||||
import com.xcs.wx.domain.vo.ContactVO;
|
||||
import com.xcs.wx.domain.vo.ExportContactVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 联系人 Mapper
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月22日 13时51分
|
||||
**/
|
||||
public interface ContactMapper extends BaseMapper<Contact> {
|
||||
|
||||
/**
|
||||
* 查询联系人
|
||||
*
|
||||
* @param page 分页信息
|
||||
* @param contactDTO 联系人
|
||||
* @return Contact
|
||||
*/
|
||||
Page<ContactVO> queryContact(Page<ContactVO> page, @Param("contactDTO") ContactDTO contactDTO);
|
||||
|
||||
/**
|
||||
* 查询所有联系人
|
||||
*
|
||||
* @return AllContactVO
|
||||
*/
|
||||
List<AllContactVO> queryAllContact();
|
||||
|
||||
/**
|
||||
* 查询联系人与公众号的Id
|
||||
*
|
||||
* @return Contact
|
||||
*/
|
||||
Set<String> getContactWithMp();
|
||||
|
||||
/**
|
||||
* 统计联系人数量
|
||||
*
|
||||
* @return 联系人数量
|
||||
*/
|
||||
int countContact();
|
||||
|
||||
/**
|
||||
* 导出联系人
|
||||
*
|
||||
* @return ExportContactVO
|
||||
*/
|
||||
List<ExportContactVO> exportContact();
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package com.xcs.wx.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xcs.wx.domain.FTSContactContent;
|
||||
|
||||
/**
|
||||
* FTSContactContentMapper
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年6月14日14:24:43
|
||||
**/
|
||||
public interface FTSContactContentMapper extends BaseMapper<FTSContactContent> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
package com.xcs.wx.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xcs.wx.domain.FTSRecentUsed;
|
||||
|
||||
/**
|
||||
* 最近使用关键字 Mapper
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月22日 13时51分
|
||||
**/
|
||||
public interface FTSRecentUsedMapper extends BaseMapper<FTSRecentUsed> {
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package com.xcs.wx.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xcs.wx.domain.Feeds;
|
||||
|
||||
/**
|
||||
* 朋友圈 Mapper
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2023年12月22日 13时51分
|
||||
**/
|
||||
public interface FeedsMapper extends BaseMapper<Feeds> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
package com.xcs.wx.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xcs.wx.domain.HardLinkImageAttribute;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 图片链接 Mapper
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年1月16日21:50:13
|
||||
*/
|
||||
public interface HardLinkImageAttributeMapper extends BaseMapper<HardLinkImageAttribute> {
|
||||
|
||||
/**
|
||||
* 查询图片
|
||||
*
|
||||
* @param md5 md5
|
||||
* @return 图片
|
||||
*/
|
||||
String queryHardLinkImage(@Param("md5") byte[] md5);
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
package com.xcs.wx.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xcs.wx.domain.HardLinkVideoAttribute;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 视频链接 Mapper
|
||||
*
|
||||
* @author xcs
|
||||
* @date 2024年1月16日21:50:13
|
||||
*/
|
||||
public interface HardLinkVideoAttributeMapper extends BaseMapper<HardLinkVideoAttribute> {
|
||||
|
||||
/**
|
||||
* 查询视频
|
||||
*
|
||||
* @param md5 md5
|
||||
* @return 视频
|
||||
*/
|
||||
String queryHardLinkVideo(@Param("md5") byte[] md5);
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue