项目方案:数据修改记录系统

项目概述

在一个数据管理系统中,用户经常需要对数据进行修改,并且需要记录这些修改的历史。本项目旨在实现一个数据修改记录系统,能够记录数据的修改操作,并提供查询修改历史的功能。

功能需求

  1. 用户可以进行数据的增加、删除和修改操作;
  2. 系统能够记录每一次数据修改的详细信息,包括修改时间、修改人和修改内容;
  3. 用户可以查询某一条数据的修改历史,查看每次修改的详细信息;
  4. 系统能够提供数据的导出功能,将修改记录导出为Excel或CSV文件。

技术选型

本项目使用Java语言进行开发,主要技术选型如下:

  • 后端框架:Spring Boot
  • 数据库:MySQL
  • 前端框架:Vue.js

数据库设计

在MySQL数据库中创建两个表,分别用于存储数据和修改记录。

数据表:

CREATE TABLE IF NOT EXISTS `data` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `name` VARCHAR(255) NOT NULL,
  `value` VARCHAR(255) NOT NULL
);

修改记录表:

CREATE TABLE IF NOT EXISTS `modification` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `data_id` INT NOT NULL,
  `modify_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `modifier` VARCHAR(255) NOT NULL,
  `modification` TEXT NOT NULL,
  FOREIGN KEY (`data_id`) REFERENCES `data` (`id`)
);

后端实现

使用Spring Boot框架实现后端接口,提供数据的增删改查和修改记录的查询接口。

依赖配置

pom.xml中添加以下依赖:

<dependencies>
    <!-- Spring Boot Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!-- Spring Boot Data JPA -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    
    <!-- MySQL Connector -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
</dependencies>

实体类定义

创建两个实体类DataModification,分别对应数据库中的两个表。

@Entity
@Table(name = "data")
public class Data {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    
    private String value;
    
    // 省略getter和setter方法
}
@Entity
@Table(name = "modification")
public class Modification {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "data_id")
    private Data data;
    
    private LocalDateTime modifyTime;
    
    private String modifier;
    
    private String modification;
    
    // 省略getter和setter方法
}

数据访问层

创建数据访问接口DataRepositoryModificationRepository,并继承JpaRepository

public interface DataRepository extends JpaRepository<Data, Long> {
    
}
public interface ModificationRepository extends JpaRepository<Modification, Long> {
    List<Modification> findByDataId(Long dataId);
}

业务逻辑层

创建业务逻辑接口DataServiceModificationService,并实现相应的方法。

public interface DataService {
    Data saveData(Data data);
    
    void deleteData(Long id);
    
    Data updateData(Long id, Data newData);
    
    Data getData(Long id);
    
    List<Data> getAllData();
}
public interface ModificationService {
    List<Modification> getModificationHistory(Long dataId);
}

控制层

创建控制器DataControllerModificationController,分别处理数据和修改记录的请求。

@RestController
@RequestMapping("/data")
public class DataController {
    private final DataService dataService;
    
    public DataController(DataService dataService) {
        this.dataService = dataService;
    }
    
    @PostMapping
    public Data saveData(@RequestBody Data data) {
        return dataService.saveData(data);
    }
    
    @DeleteMapping("/{id}")
    public void deleteData(@PathVariable("id") Long id) {
        dataService.deleteData(id);
    }
    
    @PutMapping