diff --git a/fund-mobile/src/api/index.ts b/fund-mobile/src/api/index.ts
new file mode 100644
index 0000000..13519f3
--- /dev/null
+++ b/fund-mobile/src/api/index.ts
@@ -0,0 +1,68 @@
+import request from './request'
+
+// 用户认证
+export function login(data: { username: string; password: string }) {
+ return request.post('/sys/api/v1/auth/login', data)
+}
+
+export function getUserInfo() {
+ return request.get('/sys/api/v1/auth/info')
+}
+
+export function logout() {
+ return request.post('/sys/api/v1/auth/logout')
+}
+
+// 项目管理
+export function getProjectList(params?: { pageNum: number; pageSize: number; projectName?: string }) {
+ return request.get('/proj/api/v1/project/page', { params })
+}
+
+export function getProjectById(id: number) {
+ return request.get(`/proj/api/v1/project/${id}`)
+}
+
+// 客户管理
+export function getCustomerList(params?: { pageNum: number; pageSize: number; customerName?: string }) {
+ return request.get('/cust/api/v1/customer/page', { params })
+}
+
+// 支出管理
+export function createExpense(data: any) {
+ return request.post('/exp/api/v1/exp/expense', data)
+}
+
+export function getExpenseList(params: { pageNum: number; pageSize: number }) {
+ return request.get('/exp/api/v1/exp/expense/page', { params })
+}
+
+// 应收款管理
+export function getReceivableList(params: { pageNum: number; pageSize: number; status?: string }) {
+ return request.get('/receipt/api/v1/receipt/receivable/page', { params })
+}
+
+export function getUpcomingDueList(daysWithin: number = 7) {
+ return request.get(`/receipt/api/v1/receipt/receivable/upcoming-due?daysWithin=${daysWithin}`)
+}
+
+// 统计数据
+export function getTodayIncome() {
+ return request.get('/receipt/api/v1/receipt/receivable/stats/today-income')
+}
+
+export function getTodayExpense() {
+ return request.get('/exp/api/v1/exp/expense/stats/today-expense')
+}
+
+export function getUnpaidAmount() {
+ return request.get('/receipt/api/v1/receipt/receivable/stats/unpaid-amount')
+}
+
+export function getOverdueCount() {
+ return request.get('/receipt/api/v1/receipt/receivable/stats/overdue-count')
+}
+
+// 支出类型
+export function getExpenseTypeTree() {
+ return request.get('/exp/api/v1/exp/expense-type/tree')
+}
diff --git a/fund-mobile/src/router/index.ts b/fund-mobile/src/router/index.ts
index 54c9ee6..abf54fc 100644
--- a/fund-mobile/src/router/index.ts
+++ b/fund-mobile/src/router/index.ts
@@ -21,6 +21,18 @@ const router = createRouter({
component: () => import('@/views/receivable/List.vue'),
meta: { title: '应收款列表', requiresAuth: true }
},
+ {
+ path: '/project',
+ name: 'ProjectList',
+ component: () => import('@/views/project/List.vue'),
+ meta: { title: '项目列表', requiresAuth: true }
+ },
+ {
+ path: '/customer',
+ name: 'CustomerList',
+ component: () => import('@/views/customer/List.vue'),
+ meta: { title: '客户列表', requiresAuth: true }
+ },
{
path: '/my',
name: 'My',
diff --git a/fund-mobile/src/views/Home.vue b/fund-mobile/src/views/Home.vue
index 06f2232..a2e4b5a 100644
--- a/fund-mobile/src/views/Home.vue
+++ b/fund-mobile/src/views/Home.vue
@@ -61,6 +61,18 @@
应收款
+
+
diff --git a/fund-mobile/src/views/customer/List.vue b/fund-mobile/src/views/customer/List.vue
new file mode 100644
index 0000000..247ca28
--- /dev/null
+++ b/fund-mobile/src/views/customer/List.vue
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.phone }}
+
+
+
+ {{ item.industry }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fund-mobile/src/views/project/List.vue b/fund-mobile/src/views/project/List.vue
new file mode 100644
index 0000000..b0c7c4c
--- /dev/null
+++ b/fund-mobile/src/views/project/List.vue
@@ -0,0 +1,205 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.customerName || '-' }}
+
+
+
+ {{ item.startDate }}
+
+
+
+
+ 合同金额
+ {{ formatMoney(item.contractAmount) }}
+
+
+ 预算金额
+ {{ formatMoney(item.budgetAmount) }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fund-sys/src/main/java/com/fundplatform/sys/aop/OperationLogAspect.java b/fund-sys/src/main/java/com/fundplatform/sys/aop/OperationLogAspect.java
new file mode 100644
index 0000000..e69de29
diff --git a/fund-sys/src/main/java/com/fundplatform/sys/controller/OperationLogController.java b/fund-sys/src/main/java/com/fundplatform/sys/controller/OperationLogController.java
new file mode 100644
index 0000000..7fc078c
--- /dev/null
+++ b/fund-sys/src/main/java/com/fundplatform/sys/controller/OperationLogController.java
@@ -0,0 +1,51 @@
+package com.fundplatform.sys.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fundplatform.common.core.Result;
+import com.fundplatform.sys.data.entity.OperationLog;
+import com.fundplatform.sys.service.OperationLogService;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 操作日志Controller
+ */
+@RestController
+@RequestMapping("/api/v1/log")
+public class OperationLogController {
+
+ private final OperationLogService operationLogService;
+
+ public OperationLogController(OperationLogService operationLogService) {
+ this.operationLogService = operationLogService;
+ }
+
+ /**
+ * 分页查询操作日志
+ */
+ @GetMapping("/page")
+ public Result
> page(
+ @RequestParam(defaultValue = "1") int pageNum,
+ @RequestParam(defaultValue = "10") int pageSize,
+ @RequestParam(required = false) Long userId,
+ @RequestParam(required = false) String operation,
+ @RequestParam(required = false) String startTime,
+ @RequestParam(required = false) String endTime) {
+ return Result.success(operationLogService.pageLogs(pageNum, pageSize, userId, operation, startTime, endTime));
+ }
+
+ /**
+ * 获取日志详情
+ */
+ @GetMapping("/{id}")
+ public Result getById(@PathVariable Long id) {
+ return Result.success(operationLogService.getById(id));
+ }
+
+ /**
+ * 清理历史日志
+ */
+ @DeleteMapping("/clean")
+ public Result cleanLogs(@RequestParam(defaultValue = "90") int days) {
+ return Result.success(operationLogService.cleanLogs(days));
+ }
+}
diff --git a/fund-sys/src/main/java/com/fundplatform/sys/data/entity/OperationLog.java b/fund-sys/src/main/java/com/fundplatform/sys/data/entity/OperationLog.java
new file mode 100644
index 0000000..280a6f2
--- /dev/null
+++ b/fund-sys/src/main/java/com/fundplatform/sys/data/entity/OperationLog.java
@@ -0,0 +1,135 @@
+package com.fundplatform.sys.data.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.time.LocalDateTime;
+
+/**
+ * 操作日志实体
+ */
+@TableName("sys_operation_log")
+public class OperationLog {
+
+ @TableId(type = IdType.AUTO)
+ private Long logId;
+
+ private Long userId;
+
+ private String username;
+
+ private String operation;
+
+ private String method;
+
+ private String params;
+
+ private String ip;
+
+ private String userAgent;
+
+ private LocalDateTime operationTime;
+
+ private Long costTime;
+
+ private String result;
+
+ private String errorMsg;
+
+ public Long getLogId() {
+ return logId;
+ }
+
+ public void setLogId(Long logId) {
+ this.logId = logId;
+ }
+
+ public Long getUserId() {
+ return userId;
+ }
+
+ public void setUserId(Long userId) {
+ this.userId = userId;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getOperation() {
+ return operation;
+ }
+
+ public void setOperation(String operation) {
+ this.operation = operation;
+ }
+
+ public String getMethod() {
+ return method;
+ }
+
+ public void setMethod(String method) {
+ this.method = method;
+ }
+
+ public String getParams() {
+ return params;
+ }
+
+ public void setParams(String params) {
+ this.params = params;
+ }
+
+ public String getIp() {
+ return ip;
+ }
+
+ public void setIp(String ip) {
+ this.ip = ip;
+ }
+
+ public String getUserAgent() {
+ return userAgent;
+ }
+
+ public void setUserAgent(String userAgent) {
+ this.userAgent = userAgent;
+ }
+
+ public LocalDateTime getOperationTime() {
+ return operationTime;
+ }
+
+ public void setOperationTime(LocalDateTime operationTime) {
+ this.operationTime = operationTime;
+ }
+
+ public Long getCostTime() {
+ return costTime;
+ }
+
+ public void setCostTime(Long costTime) {
+ this.costTime = costTime;
+ }
+
+ public String getResult() {
+ return result;
+ }
+
+ public void setResult(String result) {
+ this.result = result;
+ }
+
+ public String getErrorMsg() {
+ return errorMsg;
+ }
+
+ public void setErrorMsg(String errorMsg) {
+ this.errorMsg = errorMsg;
+ }
+}
diff --git a/fund-sys/src/main/java/com/fundplatform/sys/data/mapper/OperationLogMapper.java b/fund-sys/src/main/java/com/fundplatform/sys/data/mapper/OperationLogMapper.java
new file mode 100644
index 0000000..52e5f81
--- /dev/null
+++ b/fund-sys/src/main/java/com/fundplatform/sys/data/mapper/OperationLogMapper.java
@@ -0,0 +1,12 @@
+package com.fundplatform.sys.data.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fundplatform.sys.data.entity.OperationLog;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 操作日志Mapper
+ */
+@Mapper
+public interface OperationLogMapper extends BaseMapper {
+}
diff --git a/fund-sys/src/main/java/com/fundplatform/sys/service/OperationLogService.java b/fund-sys/src/main/java/com/fundplatform/sys/service/OperationLogService.java
new file mode 100644
index 0000000..f6d3720
--- /dev/null
+++ b/fund-sys/src/main/java/com/fundplatform/sys/service/OperationLogService.java
@@ -0,0 +1,30 @@
+package com.fundplatform.sys.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fundplatform.sys.data.entity.OperationLog;
+
+/**
+ * 操作日志服务接口
+ */
+public interface OperationLogService {
+
+ /**
+ * 记录操作日志
+ */
+ void saveLog(OperationLog log);
+
+ /**
+ * 分页查询操作日志
+ */
+ Page pageLogs(int pageNum, int pageSize, Long userId, String operation, String startTime, String endTime);
+
+ /**
+ * 根据ID查询日志详情
+ */
+ OperationLog getById(Long logId);
+
+ /**
+ * 清理指定天数前的日志
+ */
+ int cleanLogs(int days);
+}
diff --git a/fund-sys/src/main/java/com/fundplatform/sys/service/impl/OperationLogServiceImpl.java b/fund-sys/src/main/java/com/fundplatform/sys/service/impl/OperationLogServiceImpl.java
new file mode 100644
index 0000000..afc50b4
--- /dev/null
+++ b/fund-sys/src/main/java/com/fundplatform/sys/service/impl/OperationLogServiceImpl.java
@@ -0,0 +1,72 @@
+package com.fundplatform.sys.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fundplatform.sys.data.entity.OperationLog;
+import com.fundplatform.sys.data.mapper.OperationLogMapper;
+import com.fundplatform.sys.service.OperationLogService;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+
+/**
+ * 操作日志服务实现
+ */
+@Service
+public class OperationLogServiceImpl implements OperationLogService {
+
+ private final OperationLogMapper operationLogMapper;
+
+ public OperationLogServiceImpl(OperationLogMapper operationLogMapper) {
+ this.operationLogMapper = operationLogMapper;
+ }
+
+ @Override
+ @Async
+ public void saveLog(OperationLog log) {
+ if (log.getOperationTime() == null) {
+ log.setOperationTime(LocalDateTime.now());
+ }
+ operationLogMapper.insert(log);
+ }
+
+ @Override
+ public Page pageLogs(int pageNum, int pageSize, Long userId, String operation, String startTime, String endTime) {
+ Page page = new Page<>(pageNum, pageSize);
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+
+ if (userId != null) {
+ wrapper.eq(OperationLog::getUserId, userId);
+ }
+ if (operation != null && !operation.isEmpty()) {
+ wrapper.like(OperationLog::getOperation, operation);
+ }
+ if (startTime != null && !startTime.isEmpty()) {
+ LocalDate startDate = LocalDate.parse(startTime);
+ wrapper.ge(OperationLog::getOperationTime, LocalDateTime.of(startDate, LocalTime.MIN));
+ }
+ if (endTime != null && !endTime.isEmpty()) {
+ LocalDate endDate = LocalDate.parse(endTime);
+ wrapper.le(OperationLog::getOperationTime, LocalDateTime.of(endDate, LocalTime.MAX));
+ }
+
+ wrapper.orderByDesc(OperationLog::getOperationTime);
+ return operationLogMapper.selectPage(page, wrapper);
+ }
+
+ @Override
+ public OperationLog getById(Long logId) {
+ return operationLogMapper.selectById(logId);
+ }
+
+ @Override
+ public int cleanLogs(int days) {
+ LocalDateTime threshold = LocalDateTime.now().minusDays(days);
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.lt(OperationLog::getOperationTime, threshold);
+ return operationLogMapper.delete(wrapper);
+ }
+}
diff --git a/fund-sys/src/main/resources/db/operation_log.sql b/fund-sys/src/main/resources/db/operation_log.sql
new file mode 100644
index 0000000..e69de29
diff --git a/fund-sys/target/classes/com/fundplatform/sys/controller/AuthController.class b/fund-sys/target/classes/com/fundplatform/sys/controller/AuthController.class
index ebb7193..61d79a7 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/controller/AuthController.class and b/fund-sys/target/classes/com/fundplatform/sys/controller/AuthController.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/controller/ConfigController.class b/fund-sys/target/classes/com/fundplatform/sys/controller/ConfigController.class
index e89e5e2..a4f52ff 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/controller/ConfigController.class and b/fund-sys/target/classes/com/fundplatform/sys/controller/ConfigController.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/controller/DeptController.class b/fund-sys/target/classes/com/fundplatform/sys/controller/DeptController.class
index b48fb04..011f247 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/controller/DeptController.class and b/fund-sys/target/classes/com/fundplatform/sys/controller/DeptController.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/controller/HealthController.class b/fund-sys/target/classes/com/fundplatform/sys/controller/HealthController.class
index 2b05b72..f0ffc98 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/controller/HealthController.class and b/fund-sys/target/classes/com/fundplatform/sys/controller/HealthController.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/controller/MenuController.class b/fund-sys/target/classes/com/fundplatform/sys/controller/MenuController.class
index fdfd546..3c345d8 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/controller/MenuController.class and b/fund-sys/target/classes/com/fundplatform/sys/controller/MenuController.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/controller/OperationLogController.class b/fund-sys/target/classes/com/fundplatform/sys/controller/OperationLogController.class
new file mode 100644
index 0000000..8ae96c8
Binary files /dev/null and b/fund-sys/target/classes/com/fundplatform/sys/controller/OperationLogController.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/controller/ProfileController.class b/fund-sys/target/classes/com/fundplatform/sys/controller/ProfileController.class
index 0c78101..6147fd2 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/controller/ProfileController.class and b/fund-sys/target/classes/com/fundplatform/sys/controller/ProfileController.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/controller/RoleController.class b/fund-sys/target/classes/com/fundplatform/sys/controller/RoleController.class
index 5f0186e..8380c9b 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/controller/RoleController.class and b/fund-sys/target/classes/com/fundplatform/sys/controller/RoleController.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/controller/TenantController.class b/fund-sys/target/classes/com/fundplatform/sys/controller/TenantController.class
index b90a636..9e06314 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/controller/TenantController.class and b/fund-sys/target/classes/com/fundplatform/sys/controller/TenantController.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/controller/UserController.class b/fund-sys/target/classes/com/fundplatform/sys/controller/UserController.class
index b440b55..2381f68 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/controller/UserController.class and b/fund-sys/target/classes/com/fundplatform/sys/controller/UserController.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/entity/OperationLog.class b/fund-sys/target/classes/com/fundplatform/sys/data/entity/OperationLog.class
new file mode 100644
index 0000000..5bbec13
Binary files /dev/null and b/fund-sys/target/classes/com/fundplatform/sys/data/entity/OperationLog.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysConfig.class b/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysConfig.class
index a736e87..5e4148d 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysConfig.class and b/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysConfig.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysDept.class b/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysDept.class
index 1c7fe2f..98e0781 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysDept.class and b/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysDept.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysMenu.class b/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysMenu.class
index 64607b8..4deb5ae 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysMenu.class and b/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysMenu.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysRole.class b/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysRole.class
index 46a9c0f..b9bf49d 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysRole.class and b/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysRole.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysTenant.class b/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysTenant.class
index 5ec2ce9..e0732b0 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysTenant.class and b/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysTenant.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysUser.class b/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysUser.class
index e6d354a..5ec9ebc 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysUser.class and b/fund-sys/target/classes/com/fundplatform/sys/data/entity/SysUser.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/mapper/OperationLogMapper.class b/fund-sys/target/classes/com/fundplatform/sys/data/mapper/OperationLogMapper.class
new file mode 100644
index 0000000..7c850ca
Binary files /dev/null and b/fund-sys/target/classes/com/fundplatform/sys/data/mapper/OperationLogMapper.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysConfigMapper.class b/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysConfigMapper.class
index 8f4c939..af4f81a 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysConfigMapper.class and b/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysConfigMapper.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysDeptMapper.class b/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysDeptMapper.class
index e44de48..3626d7c 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysDeptMapper.class and b/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysDeptMapper.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysMenuMapper.class b/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysMenuMapper.class
index 605d1fb..a92d986 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysMenuMapper.class and b/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysMenuMapper.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysRoleMapper.class b/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysRoleMapper.class
index 0e9dff5..3ad80fb 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysRoleMapper.class and b/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysRoleMapper.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysTenantMapper.class b/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysTenantMapper.class
index 5021ce8..94a108f 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysTenantMapper.class and b/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysTenantMapper.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysUserMapper.class b/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysUserMapper.class
index b3b0cc5..1d74e3b 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysUserMapper.class and b/fund-sys/target/classes/com/fundplatform/sys/data/mapper/SysUserMapper.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/service/SysConfigDataService.class b/fund-sys/target/classes/com/fundplatform/sys/data/service/SysConfigDataService.class
index be49cdc..8bd3264 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/service/SysConfigDataService.class and b/fund-sys/target/classes/com/fundplatform/sys/data/service/SysConfigDataService.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/service/SysDeptDataService.class b/fund-sys/target/classes/com/fundplatform/sys/data/service/SysDeptDataService.class
index ec890da..88c51fa 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/service/SysDeptDataService.class and b/fund-sys/target/classes/com/fundplatform/sys/data/service/SysDeptDataService.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/service/SysMenuDataService.class b/fund-sys/target/classes/com/fundplatform/sys/data/service/SysMenuDataService.class
index 67e0be3..5851739 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/service/SysMenuDataService.class and b/fund-sys/target/classes/com/fundplatform/sys/data/service/SysMenuDataService.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/service/SysRoleDataService.class b/fund-sys/target/classes/com/fundplatform/sys/data/service/SysRoleDataService.class
index 8c394c3..9782119 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/service/SysRoleDataService.class and b/fund-sys/target/classes/com/fundplatform/sys/data/service/SysRoleDataService.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/service/SysTenantDataService.class b/fund-sys/target/classes/com/fundplatform/sys/data/service/SysTenantDataService.class
index 0445920..7c64bc1 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/service/SysTenantDataService.class and b/fund-sys/target/classes/com/fundplatform/sys/data/service/SysTenantDataService.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/service/SysUserDataService.class b/fund-sys/target/classes/com/fundplatform/sys/data/service/SysUserDataService.class
index 08cf1af..51519fd 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/service/SysUserDataService.class and b/fund-sys/target/classes/com/fundplatform/sys/data/service/SysUserDataService.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/service/impl/SysConfigDataServiceImpl.class b/fund-sys/target/classes/com/fundplatform/sys/data/service/impl/SysConfigDataServiceImpl.class
index 62169df..6c18e25 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/service/impl/SysConfigDataServiceImpl.class and b/fund-sys/target/classes/com/fundplatform/sys/data/service/impl/SysConfigDataServiceImpl.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/data/service/impl/SysTenantDataServiceImpl.class b/fund-sys/target/classes/com/fundplatform/sys/data/service/impl/SysTenantDataServiceImpl.class
index dc9c52c..badbbe0 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/data/service/impl/SysTenantDataServiceImpl.class and b/fund-sys/target/classes/com/fundplatform/sys/data/service/impl/SysTenantDataServiceImpl.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/service/OperationLogService.class b/fund-sys/target/classes/com/fundplatform/sys/service/OperationLogService.class
new file mode 100644
index 0000000..4aeea27
Binary files /dev/null and b/fund-sys/target/classes/com/fundplatform/sys/service/OperationLogService.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/service/impl/AuthServiceImpl.class b/fund-sys/target/classes/com/fundplatform/sys/service/impl/AuthServiceImpl.class
index c50d578..7e4c85e 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/service/impl/AuthServiceImpl.class and b/fund-sys/target/classes/com/fundplatform/sys/service/impl/AuthServiceImpl.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/service/impl/ConfigServiceImpl.class b/fund-sys/target/classes/com/fundplatform/sys/service/impl/ConfigServiceImpl.class
index 88f0650..dbda83b 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/service/impl/ConfigServiceImpl.class and b/fund-sys/target/classes/com/fundplatform/sys/service/impl/ConfigServiceImpl.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/service/impl/DeptServiceImpl.class b/fund-sys/target/classes/com/fundplatform/sys/service/impl/DeptServiceImpl.class
index 5422e6a..e048973 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/service/impl/DeptServiceImpl.class and b/fund-sys/target/classes/com/fundplatform/sys/service/impl/DeptServiceImpl.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/service/impl/MenuServiceImpl.class b/fund-sys/target/classes/com/fundplatform/sys/service/impl/MenuServiceImpl.class
index d4bb17f..ba7fd5c 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/service/impl/MenuServiceImpl.class and b/fund-sys/target/classes/com/fundplatform/sys/service/impl/MenuServiceImpl.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/service/impl/OperationLogServiceImpl.class b/fund-sys/target/classes/com/fundplatform/sys/service/impl/OperationLogServiceImpl.class
new file mode 100644
index 0000000..fcdbe7e
Binary files /dev/null and b/fund-sys/target/classes/com/fundplatform/sys/service/impl/OperationLogServiceImpl.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/service/impl/RoleServiceImpl.class b/fund-sys/target/classes/com/fundplatform/sys/service/impl/RoleServiceImpl.class
index 6fb9010..c3c1fb3 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/service/impl/RoleServiceImpl.class and b/fund-sys/target/classes/com/fundplatform/sys/service/impl/RoleServiceImpl.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/service/impl/TenantServiceImpl.class b/fund-sys/target/classes/com/fundplatform/sys/service/impl/TenantServiceImpl.class
index 3782591..4080290 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/service/impl/TenantServiceImpl.class and b/fund-sys/target/classes/com/fundplatform/sys/service/impl/TenantServiceImpl.class differ
diff --git a/fund-sys/target/classes/com/fundplatform/sys/service/impl/UserServiceImpl.class b/fund-sys/target/classes/com/fundplatform/sys/service/impl/UserServiceImpl.class
index 74c6463..c283001 100644
Binary files a/fund-sys/target/classes/com/fundplatform/sys/service/impl/UserServiceImpl.class and b/fund-sys/target/classes/com/fundplatform/sys/service/impl/UserServiceImpl.class differ
diff --git a/fund-sys/target/classes/db/operation_log.sql b/fund-sys/target/classes/db/operation_log.sql
new file mode 100644
index 0000000..e69de29
diff --git a/fund-sys/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/fund-sys/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index ee400ec..32592f2 100644
--- a/fund-sys/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/fund-sys/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -30,6 +30,7 @@
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/vo/UserVO.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/data/service/SysTenantDataService.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/service/DeptService.java
+/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/data/entity/OperationLog.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/dto/MenuDTO.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/data/service/SysConfigDataService.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/controller/HealthController.java
@@ -39,9 +40,12 @@
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/controller/RoleController.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/controller/TenantController.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/service/impl/ConfigServiceImpl.java
+/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/controller/OperationLogController.java
+/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/data/mapper/OperationLogMapper.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/data/entity/SysMenu.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/service/impl/DeptServiceImpl.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/utils/JwtUtil.java
+/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/service/OperationLogService.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/aop/ApiLogAspect.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/service/AuthService.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/dto/RoleDTO.java
@@ -59,7 +63,9 @@
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/controller/TestController.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/vo/DeptVO.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/data/mapper/SysRoleMapper.java
+/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/aop/OperationLogAspect.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/service/impl/MenuServiceImpl.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/SysApplication.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/dto/LoginRequestDTO.java
+/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/service/impl/OperationLogServiceImpl.java
/home/along/MyCode/wanjiabuluo/fundplatform/fund-sys/src/main/java/com/fundplatform/sys/service/TenantService.java