一、前言
在实际开发中,审核功能是一个非常常用的功能,例如管理后台的文章审核等等。本篇博文将介绍如何基于SpringBoot+Vue的前后端分离技术实现审核功能。
二、项目准备
本项目使用的技术栈为:
- 前端:Vue+ElementUI
- 后端:SpringBoot+MySQL
首先,你需要在本地搭建好Vue和SpringBoot的开发环境,建议使用最新版本。
三、数据库设计
本项目需要用到一个审核表,设计如下:
CREATE TABLE `audit` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`title` varchar(50) NOT NULL COMMENT '标题',
`content` text NOT NULL COMMENT '内容',
`status` tinyint(4) NOT NULL COMMENT '状态,0-待审核,1-审核通过,2-审核不通过',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='审核表';
四、后端实现
1. 数据库操作
首先,我们需要在后端设计一个操作数据库的Dao层来实现对审核表的增删改查操作。
@Repository
public interface AuditDao extends JpaRepository<Audit, Long> {
}
以上是使用Spring Data JPA实现的Dao层。
2. 业务逻辑
在Service层中,我们需要实现审核操作的相关逻辑:
@Service
public class AuditService {
@Autowired
private AuditDao auditDao;
/**
* 提交审核
*
* @param audit 审核实体类
* @return 审核实体类
*/
public Audit submitAudit(Audit audit) {
audit.setStatus(Constant.AUDIT_STATUS_WAIT); // 默认状态为未审核
audit.setCreateTime(LocalDateTime.now());
audit.setUpdateTime(LocalDateTime.now());
return auditDao.save(audit);
}
/**
* 审核通过
*
* @param auditId 审核ID
* @return 审核实体类
*/
public Audit auditPass(Long auditId) {
Audit audit = auditDao.findById(auditId).orElse(null);
if (audit == null) {
throw new RuntimeException("审核ID不存在!");
}
audit.setStatus(Constant.AUDIT_STATUS_PASS);
audit.setUpdateTime(LocalDateTime.now());
return auditDao.save(audit);
}
/**
* 审核不通过
*
* @param auditId 审核ID
* @return 审核实体类
*/
public Audit auditReject(Long auditId) {
Audit audit = auditDao.findById(auditId).orElse(null);
if (audit == null) {
throw new RuntimeException("审核ID不存在!");
}
audit.setStatus(Constant.AUDIT_STATUS_REJECT);
audit.setUpdateTime(LocalDateTime.now());
return auditDao.save(audit);
}
/**
* 查询审核列表
*
* @param pageNum 分页页码
* @param pageSize 分页大小
* @return 审核列表数据
*/
public Page<Audit> getAuditList(int pageNum, int pageSize) {
return auditDao.findAll(PageRequest.of(pageNum - 1, pageSize, Sort.by(Sort.Order.desc("createTime"), Sort.Order.desc("id"))));
}
}
3. 接口实现
在Controller层中,我们需要实现审核相关接口的实现:
@RestController
@RequestMapping("/audit")
public class AuditController {
@Autowired
private AuditService auditService;
/**
* 提交审核
*
* @param audit 审核实体类
* @return 审核实体类
*/
@PostMapping("/submitAudit")
public Audit submitAudit(@RequestBody Audit audit) {
return auditService.submitAudit(audit);
}
/**
* 审核通过
*
*