refactor: 品牌改名为汇账 Ledgerly,包名与工程标识统一为 ledgerly

- Java 包名由 cn.rosercode.finance 改为 cn.rosercode.ledgerly,主类 FinanceApplication 更名为 LedgerlyApplication
- Gradle 项目名、spring.application.name 与日志文件名统一为 ledgerly
- 前端界面文案、页面标题、登录注册标题、README 与 Knife4j 标题更新为汇账 / Ledgerly
- 前端本地存储键前缀由 finance. 改为 ledgerly.,并新增旧键自动迁移避免老用户偏好丢失
- 运行目录系统属性与环境变量改为 ledgerly.home / LEDGERLY_HOME
- 部署编排、启动脚本、容器名、SQLite 默认路径与构建产物名同步改为 ledgerly
This commit is contained in:
2026-09-23 17:33:59 +08:00
parent e0fa1abec5
commit 24074aeea2
322 changed files with 1270 additions and 1254 deletions
+8 -8
View File
@@ -1,6 +1,6 @@
# 收支管理系统
# 汇账
个人收支管理系统,支持收入/支出记录管理、分类与标签管理、多来源账单导入、自定义归类规则、AI 智能记账、月度统计与图表展示,并提供定时账单导入提醒与系统日志查看。
个人汇账,支持收入/支出记录管理、分类与标签管理、多来源账单导入、自定义归类规则、AI 智能记账、月度统计与图表展示,并提供定时账单导入提醒与系统日志查看。
## 功能特性
@@ -92,7 +92,7 @@
## 启动后端
```bash
cd finance-app
cd ledgerly
set JAVA_HOME=D:\venv\jdk-21
gradlew.bat bootRun
```
@@ -103,7 +103,7 @@ gradlew.bat bootRun
## 启动前端
```bash
cd finance-app/frontend
cd ledgerly/frontend
npm run dev
```
@@ -119,12 +119,12 @@ gradle bootJar
- 该任务会先执行前端 `npm run build`,再把 `frontend/dist` 复制到 jar 内的 `BOOT-INF/classes/static/`
- 构建环境需具备 Node(开发容器通过 `NODE_HOME` 指向系统 nvm Node,npm 走本地 verdaccio 源)
- 输出文件:`build/libs/finance-app-0.0.1-SNAPSHOT.jar`
- 输出文件:`build/libs/ledgerly-0.0.1-SNAPSHOT.jar`
启动(默认 8080,可另指定端口):
```bash
java -jar build/libs/finance-app-0.0.1-SNAPSHOT.jar --server.port=18081
java -jar build/libs/ledgerly-0.0.1-SNAPSHOT.jar --server.port=18081
```
访问对应端口即可同时使用前端与接口;刷新 `/dashboard` 等子路由会由后端回退到 `index.html`。
@@ -132,9 +132,9 @@ java -jar build/libs/finance-app-0.0.1-SNAPSHOT.jar --server.port=18081
## 项目结构
```
finance-app/
ledgerly/
├── build.gradle
├── src/main/java/cn/rosercode/finance/
├── src/main/java/cn/rosercode/ledgerly/
│ ├── client/ # 外部服务客户端(DeepSeek)
│ ├── common/ # 公共类
│ ├── config/ # 配置类(应用配置、动态数据源)
+1 -1
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>收支管理系统</title>
<title>汇账 Ledgerly</title>
</head>
<body>
<div id="app"></div>
@@ -28,7 +28,7 @@ const hasPassword = ref(false)
// 表单数据
const form = ref({
type: 'SQLITE' as DatabaseType,
sqlitePath: 'data/finance.db',
sqlitePath: 'data/ledgerly.db',
host: 'localhost',
port: 3306,
database: '',
@@ -45,7 +45,7 @@ async function loadStatus() {
if (data?.configured) {
form.value.type = data.type
if (data.type === 'SQLITE') {
form.value.sqlitePath = data.sqlitePath || 'data/finance.db'
form.value.sqlitePath = data.sqlitePath || 'data/ledgerly.db'
} else {
form.value.host = data.host || 'localhost'
form.value.port = data.port || 3306
@@ -14,7 +14,7 @@ import { STORAGE_KEYS } from '../utils/storageKeys'
import { usePageSizeOptions } from '../composables/usePageSizeOptions'
import { useTablePageSize } from '../composables/useTablePageSize'
/** 关系类型偏好存储键(界面偏好统一以 finance. 前缀命名) */
/** 关系类型偏好存储键(界面偏好统一以 ledgerly. 前缀命名) */
const RELATION_TYPE_KEY = STORAGE_KEYS.transactionRelationType
const props = defineProps<{
+4 -4
View File
@@ -49,7 +49,7 @@ export default {
// 登录页
login: {
title: { zh: '收支管理系统 - 登录', en: 'Finance Manager - Sign In', ja: '収支管理システム - ログイン' },
title: { zh: '汇账 - 登录', en: 'Ledgerly - Sign In', ja: 'Ledgerly - ログイン' },
username: { zh: '用户名', en: 'Username', ja: 'ユーザー名' },
password: { zh: '密码', en: 'Password', ja: 'パスワード' },
usernamePlaceholder: { zh: '请输入用户名', en: 'Enter your username', ja: 'ユーザー名を入力してください' },
@@ -64,7 +64,7 @@ export default {
// 注册页
register: {
title: { zh: '收支管理系统 - 注册', en: 'Finance Manager - Sign Up', ja: '収支管理システム - 新規登録' },
title: { zh: '汇账 - 注册', en: 'Ledgerly - Sign Up', ja: 'Ledgerly - 新規登録' },
username: { zh: '用户名', en: 'Username', ja: 'ユーザー名' },
nickname: { zh: '昵称', en: 'Nickname', ja: 'ニックネーム' },
password: { zh: '密码', en: 'Password', ja: 'パスワード' },
@@ -85,7 +85,7 @@ export default {
// 主布局
layout: {
appTitle: { zh: '收支管理', en: 'Finance Manager', ja: '収支管理' },
appTitle: { zh: '汇账', en: 'Ledgerly', ja: 'Ledgerly' },
appSubtitle: { zh: '个人财务管理', en: 'Personal Finance', ja: '個人財務管理' },
dashboard: { zh: '统计面板', en: 'Dashboard', ja: 'ダッシュボード' },
transactions: { zh: '收支记录', en: 'Transactions', ja: '収支記録' },
@@ -113,7 +113,7 @@ export default {
configFile: { zh: '配置文件', en: 'Config file', ja: '設定ファイル' },
type: { zh: '数据库类型', en: 'Database type', ja: 'データベースの種類' },
sqlitePath: { zh: '数据库文件', en: 'Database file', ja: 'データベースファイル' },
sqlitePathPlaceholder: { zh: '例如 data/finance.db', en: 'e.g. data/finance.db', ja: '例:data/finance.db' },
sqlitePathPlaceholder: { zh: '例如 data/ledgerly.db', en: 'e.g. data/ledgerly.db', ja: '例:data/ledgerly.db' },
sqliteHint: { zh: 'SQLite 为本地单文件数据库,路径相对于服务运行目录;建议使用 data 目录并做好持久化挂载。', en: 'SQLite is a single local file; the path is relative to the server working directory. Use a data directory with persistent storage.', ja: 'SQLite はローカルの単一ファイルです。パスはサーバーの作業ディレクトリからの相対パスです。data ディレクトリと永続化ストレージの利用を推奨します。' },
sqlitePathRequired: { zh: '请填写 SQLite 数据库文件路径', en: 'Please enter the SQLite database file path', ja: 'SQLite データベースファイルのパスを入力してください' },
mysqlRequired: { zh: '请填写主机地址、数据库名与用户名', en: 'Please fill in host, database and username', ja: 'ホスト、データベース名、ユーザー名を入力してください' },
+1 -1
View File
@@ -4,7 +4,7 @@ import { ref } from 'vue'
import { getUserInfo } from '../api/user'
import { readString, removeKey, writeString } from '../utils/storage'
/** 登录令牌存储键(认证凭据,不属于界面偏好,不纳入 finance. 前缀) */
/** 登录令牌存储键(认证凭据,不属于界面偏好,不纳入 ledgerly. 前缀) */
const TOKEN_KEY = 'token'
export const useUserStore = defineStore('user', () => {
+34 -18
View File
@@ -1,48 +1,64 @@
// 本地存储键常量:界面/用户偏好统一以 finance. 前缀命名,作为唯一来源供路由与各页面复用
// 本地存储键常量:界面/用户偏好统一以 ledgerly. 前缀命名,作为唯一来源供路由与各页面复用
import { migrateKey } from './storage'
/** 当前使用的本地存储键 */
export const STORAGE_KEYS = {
// 语言偏好
locale: 'finance.locale',
locale: 'ledgerly.locale',
// 邮箱账单页标签页
emailBillTab: 'finance.emailBill.tab',
emailBillTab: 'ledgerly.emailBill.tab',
// 系统日志页标签页
logsTab: 'finance.logs.tab',
logsTab: 'ledgerly.logs.tab',
// 账单导入的账单类型
billImportBillType: 'finance.billImport.billType',
billImportBillType: 'ledgerly.billImport.billType',
// 统计面板偏好
dashboardPrefs: 'finance.dashboard.prefs',
dashboardPrefs: 'ledgerly.dashboard.prefs',
// 统计面板 AI 查询历史
dashboardAiSearchHistory: 'finance.dashboard.aiSearchHistory',
dashboardAiSearchHistory: 'ledgerly.dashboard.aiSearchHistory',
// 统计面板 AI 查询浮窗位置尺寸
dashboardAiQueryWindow: 'finance.dashboard.aiQueryWindow',
dashboardAiQueryWindow: 'ledgerly.dashboard.aiQueryWindow',
// 收支记录 AI 建议范围
transactionAiScope: 'finance.transaction.aiScope',
transactionAiScope: 'ledgerly.transaction.aiScope',
// 收支记录 AI 记账方式
transactionAiRecordTab: 'finance.transaction.aiRecordTab',
transactionAiRecordTab: 'ledgerly.transaction.aiRecordTab',
// 收支记录备注关键词历史
transactionRemarkHistory: 'finance.transaction.remarkHistory',
transactionRemarkHistory: 'ledgerly.transaction.remarkHistory',
// 收支记录筛选偏好(收支记录页与统计面板共用)
transactionFilterPrefs: 'finance.transaction.filterPrefs',
transactionFilterPrefs: 'ledgerly.transaction.filterPrefs',
// 各表格每页大小偏好(聚合 JSON,按表格键区分,本机记忆)
paginationTablePageSizes: 'finance.pagination.tablePageSizes',
paginationTablePageSizes: 'ledgerly.pagination.tablePageSizes',
// 账单关系类型
transactionRelationType: 'finance.transaction.relationType',
transactionRelationType: 'ledgerly.transaction.relationType',
// 收支记录 AI 查询历史
transactionAiQueryHistory: 'finance.transaction.aiQueryHistory',
transactionAiQueryHistory: 'ledgerly.transaction.aiQueryHistory',
// 收支记录 AI 查询浮窗位置尺寸
transactionAiQueryWindow: 'finance.transaction.aiQueryWindow',
transactionAiQueryWindow: 'ledgerly.transaction.aiQueryWindow',
// 内容区滚动位置(sessionStorage,按路由拼接后缀)
scrollPrefix: 'finance.scroll.',
scrollPrefix: 'ledgerly.scroll.',
} as const
/** 历史遗留的存储键(未带 finance. 前缀),首次读取时迁移到新键 */
/** 历史遗留的存储键(未带前缀),首次读取时迁移到新键 */
export const LEGACY_STORAGE_KEYS = {
locale: 'locale',
emailBillTab: 'emailBill.tab',
logsTab: 'logs.tab',
} as const
/** 当前存储键前缀 */
const CURRENT_PREFIX = 'ledgerly.'
/** 上一代存储键前缀(品牌改名前的 finance.) */
const LEGACY_PREFIX = 'finance.'
/** 模块加载时迁移上一代 finance.* 偏好键到 ledgerly.*,保证老用户偏好不丢失 */
function migrateLegacyPrefixedKeys(): void {
Object.values(STORAGE_KEYS).forEach((key) => {
if (!key.startsWith(CURRENT_PREFIX)) return
migrateKey(LEGACY_PREFIX + key.slice(CURRENT_PREFIX.length), key)
})
}
migrateLegacyPrefixedKeys()
/** 生成指定路由的滚动位置存储键 */
export function scrollKey(path: string): string {
return `${STORAGE_KEYS.scrollPrefix}${path}`
+1 -1
View File
@@ -10,4 +10,4 @@ pluginManagement {
}
}
rootProject.name = 'finance-app'
rootProject.name = 'ledgerly'
@@ -1,4 +1,4 @@
package cn.rosercode.finance;
package cn.rosercode.ledgerly;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -12,7 +12,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
* 应用在未配置数据库时也能正常启动,由动态数据源提供占位连接。</p>
*/
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class FinanceApplication {
public class LedgerlyApplication {
/**
* 应用程序主入口方法。
@@ -21,6 +21,6 @@ public class FinanceApplication {
*/
public static void main(String[] args) {
// 启动 Spring Boot 应用
SpringApplication.run(FinanceApplication.class, args);
SpringApplication.run(LedgerlyApplication.class, args);
}
}
@@ -1,4 +1,4 @@
package cn.rosercode.finance.client;
package cn.rosercode.ledgerly.client;
import java.time.Duration;
import java.util.ArrayList;
@@ -19,7 +19,7 @@ import com.openai.models.completions.CompletionUsage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import cn.rosercode.finance.common.BusinessException;
import cn.rosercode.ledgerly.common.BusinessException;
/**
* DeepSeek 客户端,基于 OpenAI Java SDK 封装 Chat Completions 调用与响应解析。
@@ -1,4 +1,4 @@
package cn.rosercode.finance.client;
package cn.rosercode.ledgerly.client;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.common;
package cn.rosercode.ledgerly.common;
/**
* 业务异常类。
@@ -1,4 +1,4 @@
package cn.rosercode.finance.common;
package cn.rosercode.ledgerly.common;
/**
* 数据库未配置异常。
@@ -1,4 +1,4 @@
package cn.rosercode.finance.common;
package cn.rosercode.ledgerly.common;
import java.io.IOException;
@@ -13,7 +13,7 @@ import org.springframework.web.context.request.async.AsyncRequestNotUsableExcept
import org.springframework.web.context.request.async.AsyncRequestTimeoutException;
import org.springframework.web.servlet.resource.NoResourceFoundException;
import cn.rosercode.finance.config.SpaRouteSupport;
import cn.rosercode.ledgerly.config.SpaRouteSupport;
/**
* 全局异常处理器。
@@ -1,4 +1,4 @@
package cn.rosercode.finance.common;
package cn.rosercode.ledgerly.common;
import java.util.List;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.common;
package cn.rosercode.ledgerly.common;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.config;
package cn.rosercode.ledgerly.config;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.config;
package cn.rosercode.ledgerly.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.config;
package cn.rosercode.ledgerly.config;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
@@ -15,9 +15,9 @@ public class Knife4jConfig {
public OpenAPI customOpenAPI() {
return new OpenAPI()
.info(new Info()
.title("收支管理系统 API")
.title("汇账 Ledgerly API")
.version("1.0.0")
.description("个人收支管理系统后端接口文档"))
.description("汇账 Ledgerly 个人收支管理后端接口文档"))
.addSecurityItem(new SecurityRequirement().addList("Bearer"))
.components(new Components()
.addSecuritySchemes("Bearer",
@@ -1,4 +1,4 @@
package cn.rosercode.finance.config;
package cn.rosercode.ledgerly.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
@@ -12,7 +12,7 @@ import org.springframework.context.annotation.Configuration;
* <p>配置 MyBatis-Plus 的 Mapper 扫描路径和分页插件等。</p>
*/
@Configuration
@MapperScan("cn.rosercode.finance.mapper")
@MapperScan("cn.rosercode.ledgerly.mapper")
public class MybatisPlusConfig {
/**
@@ -1,4 +1,4 @@
package cn.rosercode.finance.config;
package cn.rosercode.ledgerly.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.config;
package cn.rosercode.ledgerly.config;
import java.io.IOException;
import java.util.LinkedHashMap;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.config;
package cn.rosercode.ledgerly.config;
/**
* SPA 路由判断工具。
@@ -1,12 +1,12 @@
package cn.rosercode.finance.config;
package cn.rosercode.ledgerly.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import cn.rosercode.finance.interceptor.AccessLogInterceptor;
import cn.rosercode.finance.interceptor.JwtInterceptor;
import cn.rosercode.ledgerly.interceptor.AccessLogInterceptor;
import cn.rosercode.ledgerly.interceptor.JwtInterceptor;
/**
* Web MVC 配置类。
@@ -1,4 +1,4 @@
package cn.rosercode.finance.config.app;
package cn.rosercode.ledgerly.config.app;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.config.app;
package cn.rosercode.ledgerly.config.app;
import java.io.IOException;
import java.nio.file.Files;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.config.datasource;
package cn.rosercode.ledgerly.config.datasource;
/**
* 动态数据源上下文,保存当前生效的数据源标识与类型。
@@ -1,4 +1,4 @@
package cn.rosercode.finance.config.datasource;
package cn.rosercode.ledgerly.config.datasource;
/**
* 数据库类型枚举,标识当前支持的数据库种类。
@@ -1,10 +1,10 @@
package cn.rosercode.finance.config.datasource;
package cn.rosercode.ledgerly.config.datasource;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import cn.rosercode.finance.service.DatabaseService;
import cn.rosercode.ledgerly.service.DatabaseService;
/**
* 数据库启动引导器。
@@ -1,4 +1,4 @@
package cn.rosercode.finance.config.datasource;
package cn.rosercode.ledgerly.config.datasource;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.config.datasource;
package cn.rosercode.ledgerly.config.datasource;
import java.io.IOException;
import java.nio.file.Files;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.config.datasource;
package cn.rosercode.ledgerly.config.datasource;
import java.util.HashMap;
import java.util.Map;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.config.datasource;
package cn.rosercode.ledgerly.config.datasource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.config.datasource;
package cn.rosercode.ledgerly.config.datasource;
import javax.sql.DataSource;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.config.datasource;
package cn.rosercode.ledgerly.config.datasource;
import java.sql.Connection;
import java.sql.PreparedStatement;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.config.datasource;
package cn.rosercode.ledgerly.config.datasource;
import java.io.PrintWriter;
import java.sql.Connection;
@@ -6,7 +6,7 @@ import java.sql.SQLException;
import java.util.logging.Logger;
import javax.sql.DataSource;
import cn.rosercode.finance.common.DatabaseNotConfiguredException;
import cn.rosercode.ledgerly.common.DatabaseNotConfiguredException;
/**
* 未配置数据库时使用的占位数据源。
@@ -1,4 +1,4 @@
package cn.rosercode.finance.controller;
package cn.rosercode.ledgerly.controller;
import java.io.IOException;
import java.util.ArrayList;
@@ -19,52 +19,52 @@ import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import cn.rosercode.finance.common.BusinessException;
import cn.rosercode.finance.common.Result;
import cn.rosercode.finance.dto.AiApplyRequest;
import cn.rosercode.finance.dto.AiCategoryRequest;
import cn.rosercode.finance.dto.AiChannelRequest;
import cn.rosercode.finance.dto.AiConfigRequest;
import cn.rosercode.finance.dto.AiDecorateRequest;
import cn.rosercode.finance.dto.AiQueryRequest;
import cn.rosercode.finance.dto.AiRecordRequest;
import cn.rosercode.finance.dto.AiRelationRequest;
import cn.rosercode.finance.dto.AiRuleApplyRequest;
import cn.rosercode.finance.dto.AiRuleSuggestRequest;
import cn.rosercode.finance.dto.AiSuggestOneRequest;
import cn.rosercode.finance.dto.AiSuggestRequest;
import cn.rosercode.finance.dto.AiTagRequest;
import cn.rosercode.finance.entity.AiImage;
import cn.rosercode.finance.mapper.AiImageMapper;
import cn.rosercode.finance.service.AiCategoryService;
import cn.rosercode.finance.service.AiChannelService;
import cn.rosercode.finance.service.AiConfigService;
import cn.rosercode.finance.service.AiDecorationService;
import cn.rosercode.finance.service.AiImageRecordService;
import cn.rosercode.finance.service.AiImageRecordStreamService;
import cn.rosercode.finance.service.AiImageStorage;
import cn.rosercode.finance.service.AiQueryService;
import cn.rosercode.finance.service.AiRecordService;
import cn.rosercode.finance.service.AiRelationService;
import cn.rosercode.finance.service.AiRuleService;
import cn.rosercode.finance.service.AiStatisticsService;
import cn.rosercode.finance.service.AiSuggestionService;
import cn.rosercode.finance.service.AiTagService;
import cn.rosercode.finance.service.AiUsageService;
import cn.rosercode.finance.util.ImageUtils;
import cn.rosercode.finance.util.UserContext;
import cn.rosercode.finance.vo.AiCategoryResultVO;
import cn.rosercode.finance.vo.AiChannelResultVO;
import cn.rosercode.finance.vo.AiConfigVO;
import cn.rosercode.finance.vo.AiQueryResultVO;
import cn.rosercode.finance.vo.AiRecordImageResultVO;
import cn.rosercode.finance.vo.AiRecordResultVO;
import cn.rosercode.finance.vo.AiRelationResultVO;
import cn.rosercode.finance.vo.AiRuleSuggestResultVO;
import cn.rosercode.finance.vo.AiStatisticsResultVO;
import cn.rosercode.finance.vo.AiSuggestionVO;
import cn.rosercode.finance.vo.AiTagResultVO;
import cn.rosercode.finance.vo.AiUsageResultVO;
import cn.rosercode.ledgerly.common.BusinessException;
import cn.rosercode.ledgerly.common.Result;
import cn.rosercode.ledgerly.dto.AiApplyRequest;
import cn.rosercode.ledgerly.dto.AiCategoryRequest;
import cn.rosercode.ledgerly.dto.AiChannelRequest;
import cn.rosercode.ledgerly.dto.AiConfigRequest;
import cn.rosercode.ledgerly.dto.AiDecorateRequest;
import cn.rosercode.ledgerly.dto.AiQueryRequest;
import cn.rosercode.ledgerly.dto.AiRecordRequest;
import cn.rosercode.ledgerly.dto.AiRelationRequest;
import cn.rosercode.ledgerly.dto.AiRuleApplyRequest;
import cn.rosercode.ledgerly.dto.AiRuleSuggestRequest;
import cn.rosercode.ledgerly.dto.AiSuggestOneRequest;
import cn.rosercode.ledgerly.dto.AiSuggestRequest;
import cn.rosercode.ledgerly.dto.AiTagRequest;
import cn.rosercode.ledgerly.entity.AiImage;
import cn.rosercode.ledgerly.mapper.AiImageMapper;
import cn.rosercode.ledgerly.service.AiCategoryService;
import cn.rosercode.ledgerly.service.AiChannelService;
import cn.rosercode.ledgerly.service.AiConfigService;
import cn.rosercode.ledgerly.service.AiDecorationService;
import cn.rosercode.ledgerly.service.AiImageRecordService;
import cn.rosercode.ledgerly.service.AiImageRecordStreamService;
import cn.rosercode.ledgerly.service.AiImageStorage;
import cn.rosercode.ledgerly.service.AiQueryService;
import cn.rosercode.ledgerly.service.AiRecordService;
import cn.rosercode.ledgerly.service.AiRelationService;
import cn.rosercode.ledgerly.service.AiRuleService;
import cn.rosercode.ledgerly.service.AiStatisticsService;
import cn.rosercode.ledgerly.service.AiSuggestionService;
import cn.rosercode.ledgerly.service.AiTagService;
import cn.rosercode.ledgerly.service.AiUsageService;
import cn.rosercode.ledgerly.util.ImageUtils;
import cn.rosercode.ledgerly.util.UserContext;
import cn.rosercode.ledgerly.vo.AiCategoryResultVO;
import cn.rosercode.ledgerly.vo.AiChannelResultVO;
import cn.rosercode.ledgerly.vo.AiConfigVO;
import cn.rosercode.ledgerly.vo.AiQueryResultVO;
import cn.rosercode.ledgerly.vo.AiRecordImageResultVO;
import cn.rosercode.ledgerly.vo.AiRecordResultVO;
import cn.rosercode.ledgerly.vo.AiRelationResultVO;
import cn.rosercode.ledgerly.vo.AiRuleSuggestResultVO;
import cn.rosercode.ledgerly.vo.AiStatisticsResultVO;
import cn.rosercode.ledgerly.vo.AiSuggestionVO;
import cn.rosercode.ledgerly.vo.AiTagResultVO;
import cn.rosercode.ledgerly.vo.AiUsageResultVO;
/**
* AI 控制器
@@ -1,4 +1,4 @@
package cn.rosercode.finance.controller;
package cn.rosercode.ledgerly.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -8,11 +8,11 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.rosercode.finance.common.Result;
import cn.rosercode.finance.config.app.AppConfig;
import cn.rosercode.finance.config.app.AppConfigStore;
import cn.rosercode.finance.dto.LogRetentionRequest;
import cn.rosercode.finance.dto.NotificationUrlRequest;
import cn.rosercode.ledgerly.common.Result;
import cn.rosercode.ledgerly.config.app.AppConfig;
import cn.rosercode.ledgerly.config.app.AppConfigStore;
import cn.rosercode.ledgerly.dto.LogRetentionRequest;
import cn.rosercode.ledgerly.dto.NotificationUrlRequest;
/**
* 应用配置控制器
@@ -1,4 +1,4 @@
package cn.rosercode.finance.controller;
package cn.rosercode.ledgerly.controller;
import java.io.IOException;
import java.util.ArrayList;
@@ -16,15 +16,15 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import cn.rosercode.finance.common.BusinessException;
import cn.rosercode.finance.common.Result;
import cn.rosercode.finance.dto.BillImportRequest;
import cn.rosercode.finance.enums.BillType;
import cn.rosercode.finance.service.BillImportService;
import cn.rosercode.finance.util.UserContext;
import cn.rosercode.finance.vo.BillImportResultVO;
import cn.rosercode.finance.vo.BillParseResultVO;
import cn.rosercode.finance.vo.BillTypeVO;
import cn.rosercode.ledgerly.common.BusinessException;
import cn.rosercode.ledgerly.common.Result;
import cn.rosercode.ledgerly.dto.BillImportRequest;
import cn.rosercode.ledgerly.enums.BillType;
import cn.rosercode.ledgerly.service.BillImportService;
import cn.rosercode.ledgerly.util.UserContext;
import cn.rosercode.ledgerly.vo.BillImportResultVO;
import cn.rosercode.ledgerly.vo.BillParseResultVO;
import cn.rosercode.ledgerly.vo.BillTypeVO;
/**
* 账单导入控制器
@@ -1,4 +1,4 @@
package cn.rosercode.finance.controller;
package cn.rosercode.ledgerly.controller;
import java.util.List;
@@ -16,12 +16,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import cn.rosercode.finance.common.PageResult;
import cn.rosercode.finance.common.Result;
import cn.rosercode.finance.dto.CategoryRequest;
import cn.rosercode.finance.service.CategoryService;
import cn.rosercode.finance.util.UserContext;
import cn.rosercode.finance.vo.CategoryVO;
import cn.rosercode.ledgerly.common.PageResult;
import cn.rosercode.ledgerly.common.Result;
import cn.rosercode.ledgerly.dto.CategoryRequest;
import cn.rosercode.ledgerly.service.CategoryService;
import cn.rosercode.ledgerly.util.UserContext;
import cn.rosercode.ledgerly.vo.CategoryVO;
/**
* 分类控制器
@@ -1,4 +1,4 @@
package cn.rosercode.finance.controller;
package cn.rosercode.ledgerly.controller;
import java.util.List;
@@ -15,12 +15,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import cn.rosercode.finance.common.PageResult;
import cn.rosercode.finance.common.Result;
import cn.rosercode.finance.dto.ChannelRequest;
import cn.rosercode.finance.service.ChannelService;
import cn.rosercode.finance.util.UserContext;
import cn.rosercode.finance.vo.ChannelVO;
import cn.rosercode.ledgerly.common.PageResult;
import cn.rosercode.ledgerly.common.Result;
import cn.rosercode.ledgerly.dto.ChannelRequest;
import cn.rosercode.ledgerly.service.ChannelService;
import cn.rosercode.ledgerly.util.UserContext;
import cn.rosercode.ledgerly.vo.ChannelVO;
/**
* 交易渠道控制器
@@ -1,4 +1,4 @@
package cn.rosercode.finance.controller;
package cn.rosercode.ledgerly.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@@ -6,10 +6,10 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.rosercode.finance.common.Result;
import cn.rosercode.finance.dto.DatabaseConfigRequest;
import cn.rosercode.finance.service.DatabaseService;
import cn.rosercode.finance.vo.DatabaseStatusVO;
import cn.rosercode.ledgerly.common.Result;
import cn.rosercode.ledgerly.dto.DatabaseConfigRequest;
import cn.rosercode.ledgerly.service.DatabaseService;
import cn.rosercode.ledgerly.vo.DatabaseStatusVO;
/**
* 数据库配置控制器。
@@ -1,4 +1,4 @@
package cn.rosercode.finance.controller;
package cn.rosercode.ledgerly.controller;
import java.util.List;
@@ -18,23 +18,23 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import cn.rosercode.finance.common.PageResult;
import cn.rosercode.finance.common.Result;
import cn.rosercode.finance.dto.BillImportRequest;
import cn.rosercode.finance.dto.EmailBillConfigRequest;
import cn.rosercode.finance.dto.EmailBillParseRequest;
import cn.rosercode.finance.dto.EmailBillSenderRuleRequest;
import cn.rosercode.finance.email.EmailBillMonitorManager;
import cn.rosercode.finance.service.EmailBillCheckStreamService;
import cn.rosercode.finance.service.EmailBillConfigService;
import cn.rosercode.finance.service.EmailBillMessageService;
import cn.rosercode.finance.service.EmailBillSenderRuleService;
import cn.rosercode.finance.util.UserContext;
import cn.rosercode.finance.vo.BillImportResultVO;
import cn.rosercode.finance.vo.BillParseResultVO;
import cn.rosercode.finance.vo.EmailBillConfigVO;
import cn.rosercode.finance.vo.EmailBillMessageVO;
import cn.rosercode.finance.vo.EmailBillSenderRuleVO;
import cn.rosercode.ledgerly.common.PageResult;
import cn.rosercode.ledgerly.common.Result;
import cn.rosercode.ledgerly.dto.BillImportRequest;
import cn.rosercode.ledgerly.dto.EmailBillConfigRequest;
import cn.rosercode.ledgerly.dto.EmailBillParseRequest;
import cn.rosercode.ledgerly.dto.EmailBillSenderRuleRequest;
import cn.rosercode.ledgerly.email.EmailBillMonitorManager;
import cn.rosercode.ledgerly.service.EmailBillCheckStreamService;
import cn.rosercode.ledgerly.service.EmailBillConfigService;
import cn.rosercode.ledgerly.service.EmailBillMessageService;
import cn.rosercode.ledgerly.service.EmailBillSenderRuleService;
import cn.rosercode.ledgerly.util.UserContext;
import cn.rosercode.ledgerly.vo.BillImportResultVO;
import cn.rosercode.ledgerly.vo.BillParseResultVO;
import cn.rosercode.ledgerly.vo.EmailBillConfigVO;
import cn.rosercode.ledgerly.vo.EmailBillMessageVO;
import cn.rosercode.ledgerly.vo.EmailBillSenderRuleVO;
/**
* 邮箱账单控制器
@@ -1,4 +1,4 @@
package cn.rosercode.finance.controller;
package cn.rosercode.ledgerly.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -8,14 +8,14 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import cn.rosercode.finance.common.PageResult;
import cn.rosercode.finance.common.Result;
import cn.rosercode.finance.dto.LogQuery;
import cn.rosercode.finance.service.AppLogStreamService;
import cn.rosercode.finance.service.LogService;
import cn.rosercode.finance.vo.AppLogVO;
import cn.rosercode.finance.vo.HttpLogVO;
import cn.rosercode.finance.vo.LoginLogVO;
import cn.rosercode.ledgerly.common.PageResult;
import cn.rosercode.ledgerly.common.Result;
import cn.rosercode.ledgerly.dto.LogQuery;
import cn.rosercode.ledgerly.service.AppLogStreamService;
import cn.rosercode.ledgerly.service.LogService;
import cn.rosercode.ledgerly.vo.AppLogVO;
import cn.rosercode.ledgerly.vo.HttpLogVO;
import cn.rosercode.ledgerly.vo.LoginLogVO;
/**
* 系统日志控制器
@@ -1,4 +1,4 @@
package cn.rosercode.finance.controller;
package cn.rosercode.ledgerly.controller;
import java.util.List;
@@ -14,16 +14,16 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import cn.rosercode.finance.common.Result;
import cn.rosercode.finance.dto.NotificationChannelRequest;
import cn.rosercode.finance.dto.NotificationConfigRequest;
import cn.rosercode.finance.service.NotificationChannelService;
import cn.rosercode.finance.service.NotificationConfigService;
import cn.rosercode.finance.service.NotificationService;
import cn.rosercode.finance.util.UserContext;
import cn.rosercode.finance.vo.NotificationChannelVO;
import cn.rosercode.finance.vo.NotificationConfigVO;
import cn.rosercode.finance.vo.NotificationLogVO;
import cn.rosercode.ledgerly.common.Result;
import cn.rosercode.ledgerly.dto.NotificationChannelRequest;
import cn.rosercode.ledgerly.dto.NotificationConfigRequest;
import cn.rosercode.ledgerly.service.NotificationChannelService;
import cn.rosercode.ledgerly.service.NotificationConfigService;
import cn.rosercode.ledgerly.service.NotificationService;
import cn.rosercode.ledgerly.util.UserContext;
import cn.rosercode.ledgerly.vo.NotificationChannelVO;
import cn.rosercode.ledgerly.vo.NotificationConfigVO;
import cn.rosercode.ledgerly.vo.NotificationLogVO;
/**
* 通知控制器
@@ -1,4 +1,4 @@
package cn.rosercode.finance.controller;
package cn.rosercode.ledgerly.controller;
import java.util.List;
@@ -16,14 +16,14 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.rosercode.finance.common.PageResult;
import cn.rosercode.finance.common.Result;
import cn.rosercode.finance.dto.BatchDeleteRequest;
import cn.rosercode.finance.dto.RuleQuery;
import cn.rosercode.finance.dto.RuleRequest;
import cn.rosercode.finance.service.RuleService;
import cn.rosercode.finance.util.UserContext;
import cn.rosercode.finance.vo.RuleVO;
import cn.rosercode.ledgerly.common.PageResult;
import cn.rosercode.ledgerly.common.Result;
import cn.rosercode.ledgerly.dto.BatchDeleteRequest;
import cn.rosercode.ledgerly.dto.RuleQuery;
import cn.rosercode.ledgerly.dto.RuleRequest;
import cn.rosercode.ledgerly.service.RuleService;
import cn.rosercode.ledgerly.util.UserContext;
import cn.rosercode.ledgerly.vo.RuleVO;
/**
* 规则控制器
@@ -1,4 +1,4 @@
package cn.rosercode.finance.controller;
package cn.rosercode.ledgerly.controller;
import java.util.List;
@@ -11,17 +11,17 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import cn.rosercode.finance.common.Result;
import cn.rosercode.finance.dto.StatisticsQuery;
import cn.rosercode.finance.dto.StatisticsRangeQuery;
import cn.rosercode.finance.enums.StatisticsDimension;
import cn.rosercode.finance.service.StatisticsService;
import cn.rosercode.finance.util.UserContext;
import cn.rosercode.finance.vo.CategoryStatisticsVO;
import cn.rosercode.finance.vo.MonthlyStatisticsVO;
import cn.rosercode.finance.vo.StatisticsGroupVO;
import cn.rosercode.finance.vo.StatisticsSummaryVO;
import cn.rosercode.finance.vo.TrendStatisticsVO;
import cn.rosercode.ledgerly.common.Result;
import cn.rosercode.ledgerly.dto.StatisticsQuery;
import cn.rosercode.ledgerly.dto.StatisticsRangeQuery;
import cn.rosercode.ledgerly.enums.StatisticsDimension;
import cn.rosercode.ledgerly.service.StatisticsService;
import cn.rosercode.ledgerly.util.UserContext;
import cn.rosercode.ledgerly.vo.CategoryStatisticsVO;
import cn.rosercode.ledgerly.vo.MonthlyStatisticsVO;
import cn.rosercode.ledgerly.vo.StatisticsGroupVO;
import cn.rosercode.ledgerly.vo.StatisticsSummaryVO;
import cn.rosercode.ledgerly.vo.TrendStatisticsVO;
/**
* 统计控制器
@@ -1,4 +1,4 @@
package cn.rosercode.finance.controller;
package cn.rosercode.ledgerly.controller;
import java.util.List;
@@ -16,12 +16,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import cn.rosercode.finance.common.PageResult;
import cn.rosercode.finance.common.Result;
import cn.rosercode.finance.dto.TagRequest;
import cn.rosercode.finance.service.TagService;
import cn.rosercode.finance.util.UserContext;
import cn.rosercode.finance.vo.TagVO;
import cn.rosercode.ledgerly.common.PageResult;
import cn.rosercode.ledgerly.common.Result;
import cn.rosercode.ledgerly.dto.TagRequest;
import cn.rosercode.ledgerly.service.TagService;
import cn.rosercode.ledgerly.util.UserContext;
import cn.rosercode.ledgerly.vo.TagVO;
/**
* 标签控制器
@@ -1,4 +1,4 @@
package cn.rosercode.finance.controller;
package cn.rosercode.ledgerly.controller;
import java.io.IOException;
import java.net.URLEncoder;
@@ -28,21 +28,21 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.rosercode.finance.common.PageResult;
import cn.rosercode.finance.common.Result;
import cn.rosercode.finance.dto.BatchCategoryRequest;
import cn.rosercode.finance.dto.BatchCreateTransactionRequest;
import cn.rosercode.finance.dto.BatchDeleteRequest;
import cn.rosercode.finance.dto.BatchTagRequest;
import cn.rosercode.finance.dto.TransactionQuery;
import cn.rosercode.finance.dto.TransactionRequest;
import cn.rosercode.finance.exporter.TransactionExportSheetHandler;
import cn.rosercode.finance.service.ChannelService;
import cn.rosercode.finance.service.TransactionService;
import cn.rosercode.finance.util.UserContext;
import cn.rosercode.finance.vo.ChannelOptionVO;
import cn.rosercode.finance.vo.TransactionExportVO;
import cn.rosercode.finance.vo.TransactionVO;
import cn.rosercode.ledgerly.common.PageResult;
import cn.rosercode.ledgerly.common.Result;
import cn.rosercode.ledgerly.dto.BatchCategoryRequest;
import cn.rosercode.ledgerly.dto.BatchCreateTransactionRequest;
import cn.rosercode.ledgerly.dto.BatchDeleteRequest;
import cn.rosercode.ledgerly.dto.BatchTagRequest;
import cn.rosercode.ledgerly.dto.TransactionQuery;
import cn.rosercode.ledgerly.dto.TransactionRequest;
import cn.rosercode.ledgerly.exporter.TransactionExportSheetHandler;
import cn.rosercode.ledgerly.service.ChannelService;
import cn.rosercode.ledgerly.service.TransactionService;
import cn.rosercode.ledgerly.util.UserContext;
import cn.rosercode.ledgerly.vo.ChannelOptionVO;
import cn.rosercode.ledgerly.vo.TransactionExportVO;
import cn.rosercode.ledgerly.vo.TransactionVO;
/**
* 交易记录控制器
@@ -1,4 +1,4 @@
package cn.rosercode.finance.controller;
package cn.rosercode.ledgerly.controller;
import java.util.List;
@@ -16,11 +16,11 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import cn.rosercode.finance.common.Result;
import cn.rosercode.finance.dto.TransactionGroupRequest;
import cn.rosercode.finance.service.TransactionGroupService;
import cn.rosercode.finance.util.UserContext;
import cn.rosercode.finance.vo.TransactionGroupVO;
import cn.rosercode.ledgerly.common.Result;
import cn.rosercode.ledgerly.dto.TransactionGroupRequest;
import cn.rosercode.ledgerly.service.TransactionGroupService;
import cn.rosercode.ledgerly.util.UserContext;
import cn.rosercode.ledgerly.vo.TransactionGroupVO;
/**
* 账单关系组控制器
@@ -1,4 +1,4 @@
package cn.rosercode.finance.controller;
package cn.rosercode.ledgerly.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -10,17 +10,17 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.rosercode.finance.common.Result;
import cn.rosercode.finance.dto.ChangePasswordRequest;
import cn.rosercode.finance.dto.LoginRequest;
import cn.rosercode.finance.dto.RegisterRequest;
import cn.rosercode.finance.dto.RegistrationUpdateRequest;
import cn.rosercode.finance.service.RegistrationService;
import cn.rosercode.finance.service.UserService;
import cn.rosercode.finance.util.UserContext;
import cn.rosercode.finance.vo.LoginVO;
import cn.rosercode.finance.vo.RegistrationStatusVO;
import cn.rosercode.finance.vo.UserVO;
import cn.rosercode.ledgerly.common.Result;
import cn.rosercode.ledgerly.dto.ChangePasswordRequest;
import cn.rosercode.ledgerly.dto.LoginRequest;
import cn.rosercode.ledgerly.dto.RegisterRequest;
import cn.rosercode.ledgerly.dto.RegistrationUpdateRequest;
import cn.rosercode.ledgerly.service.RegistrationService;
import cn.rosercode.ledgerly.service.UserService;
import cn.rosercode.ledgerly.util.UserContext;
import cn.rosercode.ledgerly.vo.LoginVO;
import cn.rosercode.ledgerly.vo.RegistrationStatusVO;
import cn.rosercode.ledgerly.vo.UserVO;
/**
* 用户控制器
@@ -1,4 +1,4 @@
package cn.rosercode.finance.controller;
package cn.rosercode.ledgerly.controller;
import java.util.Map;
@@ -10,14 +10,14 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.rosercode.finance.common.Result;
import cn.rosercode.finance.dto.BillSourceStatsRequest;
import cn.rosercode.finance.dto.ExcludedDisplayStyleRequest;
import cn.rosercode.finance.dto.PaginationPrefsRequest;
import cn.rosercode.finance.dto.ShowHiddenDataRequest;
import cn.rosercode.finance.service.UserPreferenceService;
import cn.rosercode.finance.util.UserContext;
import cn.rosercode.finance.vo.PaginationPrefsVO;
import cn.rosercode.ledgerly.common.Result;
import cn.rosercode.ledgerly.dto.BillSourceStatsRequest;
import cn.rosercode.ledgerly.dto.ExcludedDisplayStyleRequest;
import cn.rosercode.ledgerly.dto.PaginationPrefsRequest;
import cn.rosercode.ledgerly.dto.ShowHiddenDataRequest;
import cn.rosercode.ledgerly.service.UserPreferenceService;
import cn.rosercode.ledgerly.util.UserContext;
import cn.rosercode.ledgerly.vo.PaginationPrefsVO;
/**
* 用户设置控制器
@@ -1,4 +1,4 @@
package cn.rosercode.finance.converter;
package cn.rosercode.ledgerly.converter;
import java.util.List;
@@ -6,36 +6,36 @@ import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.ReportingPolicy;
import cn.rosercode.finance.entity.AiUsage;
import cn.rosercode.finance.entity.Category;
import cn.rosercode.finance.entity.EmailBillConfig;
import cn.rosercode.finance.entity.EmailBillMessage;
import cn.rosercode.finance.entity.EmailBillSenderRule;
import cn.rosercode.finance.entity.HttpLog;
import cn.rosercode.finance.entity.LoginLog;
import cn.rosercode.finance.entity.NotificationChannel;
import cn.rosercode.finance.entity.NotificationLog;
import cn.rosercode.finance.entity.Rule;
import cn.rosercode.finance.entity.Tag;
import cn.rosercode.finance.entity.Transaction;
import cn.rosercode.finance.entity.TransactionGroup;
import cn.rosercode.finance.entity.TransactionGroupItem;
import cn.rosercode.finance.entity.User;
import cn.rosercode.finance.vo.AiUsageVO;
import cn.rosercode.finance.vo.CategoryVO;
import cn.rosercode.finance.vo.EmailBillConfigVO;
import cn.rosercode.finance.vo.EmailBillMessageVO;
import cn.rosercode.finance.vo.EmailBillSenderRuleVO;
import cn.rosercode.finance.vo.HttpLogVO;
import cn.rosercode.finance.vo.LoginLogVO;
import cn.rosercode.finance.vo.NotificationChannelVO;
import cn.rosercode.finance.vo.NotificationLogVO;
import cn.rosercode.finance.vo.RuleVO;
import cn.rosercode.finance.vo.TagVO;
import cn.rosercode.finance.vo.TransactionGroupItemVO;
import cn.rosercode.finance.vo.TransactionGroupVO;
import cn.rosercode.finance.vo.TransactionVO;
import cn.rosercode.finance.vo.UserVO;
import cn.rosercode.ledgerly.entity.AiUsage;
import cn.rosercode.ledgerly.entity.Category;
import cn.rosercode.ledgerly.entity.EmailBillConfig;
import cn.rosercode.ledgerly.entity.EmailBillMessage;
import cn.rosercode.ledgerly.entity.EmailBillSenderRule;
import cn.rosercode.ledgerly.entity.HttpLog;
import cn.rosercode.ledgerly.entity.LoginLog;
import cn.rosercode.ledgerly.entity.NotificationChannel;
import cn.rosercode.ledgerly.entity.NotificationLog;
import cn.rosercode.ledgerly.entity.Rule;
import cn.rosercode.ledgerly.entity.Tag;
import cn.rosercode.ledgerly.entity.Transaction;
import cn.rosercode.ledgerly.entity.TransactionGroup;
import cn.rosercode.ledgerly.entity.TransactionGroupItem;
import cn.rosercode.ledgerly.entity.User;
import cn.rosercode.ledgerly.vo.AiUsageVO;
import cn.rosercode.ledgerly.vo.CategoryVO;
import cn.rosercode.ledgerly.vo.EmailBillConfigVO;
import cn.rosercode.ledgerly.vo.EmailBillMessageVO;
import cn.rosercode.ledgerly.vo.EmailBillSenderRuleVO;
import cn.rosercode.ledgerly.vo.HttpLogVO;
import cn.rosercode.ledgerly.vo.LoginLogVO;
import cn.rosercode.ledgerly.vo.NotificationChannelVO;
import cn.rosercode.ledgerly.vo.NotificationLogVO;
import cn.rosercode.ledgerly.vo.RuleVO;
import cn.rosercode.ledgerly.vo.TagVO;
import cn.rosercode.ledgerly.vo.TransactionGroupItemVO;
import cn.rosercode.ledgerly.vo.TransactionGroupVO;
import cn.rosercode.ledgerly.vo.TransactionVO;
import cn.rosercode.ledgerly.vo.UserVO;
/**
* 实体与视图对象之间的转换器,由 MapStruct 在编译期生成实现。
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.util.List;
@@ -7,7 +7,7 @@ import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import cn.rosercode.finance.vo.AiNewTagVO;
import cn.rosercode.ledgerly.vo.AiNewTagVO;
/**
* AI 建议应用请求DTO,携带逐条记录的建议分类与标签,用于一键写入。
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.util.List;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.math.BigDecimal;
import java.util.List;
@@ -6,7 +6,7 @@ import java.util.List;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import cn.rosercode.finance.vo.AiNewTagVO;
import cn.rosercode.ledgerly.vo.AiNewTagVO;
/**
* AI 生成规则的批量创建请求。
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.util.List;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.math.BigDecimal;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.util.List;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.util.List;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.util.List;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.util.List;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.util.List;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.util.Map;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
@@ -1,8 +1,8 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import lombok.Data;
import cn.rosercode.finance.config.datasource.DataSourceType;
import cn.rosercode.ledgerly.config.datasource.DataSourceType;
/**
* 数据库配置请求对象,用于提交 MySQL 或 SQLite 的连接信息。
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.util.List;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.util.List;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.util.Map;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.util.List;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.math.BigDecimal;
import java.util.List;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.math.BigDecimal;
import java.util.List;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.util.List;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.math.BigDecimal;
import java.util.List;
@@ -1,4 +1,4 @@
package cn.rosercode.finance.dto;
package cn.rosercode.ledgerly.dto;
import java.math.BigDecimal;
import java.time.LocalDateTime;

Some files were not shown because too many files have changed in this diff Show More