6.1 KiB
6.1 KiB
司机管理删除功能实现报告
概述
实现司机管理页面中的删除按钮功能,可以删除数据库中的司机数据。
实现内容
1. 后端实现
控制器 (MemberController.java)
新增删除司机接口:
/**
* 删除司机
*/
@SaCheckPermission("member:delete")
@PostMapping("/deleteDriver")
@Transactional
public AjaxResult deleteDriver(@RequestBody Map<String, Object> params) {
try {
Integer id = (Integer) params.get("id");
if (id == null) {
return AjaxResult.error("司机ID不能为空");
}
// 查询司机信息,获取member_id
Map<String, Object> driverInfo = memberDriverMapper.selectDriverById(id);
if (driverInfo == null) {
return AjaxResult.error("司机信息不存在");
}
Integer memberId = (Integer) driverInfo.get("member_id");
// 删除司机详情(member_driver表)
int driverResult = memberDriverMapper.deleteById(id);
// 如果member_id存在,也删除member表记录
if (memberId != null) {
int memberResult = memberMapper.deleteById(memberId);
if (memberResult > 0 && driverResult > 0) {
return AjaxResult.success("删除成功");
} else if (driverResult > 0) {
return AjaxResult.success("删除司机信息成功");
} else {
return AjaxResult.error("删除失败");
}
} else {
if (driverResult > 0) {
return AjaxResult.success("删除成功");
} else {
return AjaxResult.error("删除失败");
}
}
} catch (Exception e) {
e.printStackTrace();
return AjaxResult.error("删除司机失败:" + e.getMessage());
}
}
删除逻辑说明
-
删除两个表的数据:
- 删除
member_driver表中的司机详细信息 - 删除
member表中的基础会员信息
- 删除
-
事务保证:使用
@Transactional注解确保数据一致性 -
权限控制:使用
@SaCheckPermission("member:delete")进行权限验证
2. 前端实现
API接口 (userManage.js)
添加删除司机API方法:
// 司机 - 删除
export function driverDel(id) {
return request({
url: '/member/deleteDriver',
method: 'POST',
data: { id },
});
}
页面实现 (driver.vue)
导入必要的依赖:
import { ElMessage, ElMessageBox } from 'element-plus';
import { Picture } from '@element-plus/icons-vue';
import baseSearch from '@/components/common/searchCustom/index.vue';
import { driverList, driverDel } from '@/api/userManage.js';
实现删除方法:
// 删除
const delClick = (row) => {
ElMessageBox.confirm('请确认是否删除该司机数据?', '删除', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
driverDel(row.id)
.then(() => {
ElMessage.success('删除成功');
getDataList();
})
.catch((error) => {
ElMessage.error('删除失败');
console.error('删除失败:', error);
});
})
.catch(() => {
// 用户取消删除
});
};
功能特点
- 二次确认:点击删除按钮时,会弹出确认对话框
- 直接删除:确认后直接调用后端接口删除数据库记录
- 级联删除:删除司机记录时,同时删除关联的会员基础信息
- 自动刷新:删除成功后自动刷新列表
- 错误处理:删除失败时显示错误提示
- 事务保护:使用数据库事务确保数据一致性
- 权限控制:需要
member:delete权限才能执行删除操作
工作流程
- 用户点击"删除"按钮
- 弹出确认对话框:"请确认是否删除该司机数据?"
- 用户点击"确定"
- 前端调用
/member/deleteDriver接口,传递司机ID - 后端查询司机信息,获取关联的 member_id
- 后端删除
member_driver表中的司机信息 - 后端删除
member表中的会员基础信息 - 返回成功响应
- 前端显示"删除成功"提示
- 自动刷新司机列表
数据库影响
删除操作会影响以下表:
- member_driver表:删除司机的详细信息(姓名、车牌、照片等)
- member表:删除会员的基础信息(手机号、状态等)
注意事项
- 不可恢复:删除操作是物理删除,不可恢复(除非有备份)
- 关联数据:删除司机前需要检查该司机是否有关联的运单或其他业务数据
- 权限要求:需要具有
member:delete权限的用户才能删除 - 事务保护:使用事务确保即使部分删除失败也不会导致数据不一致
后续改进建议
- 软删除:考虑实现软删除(添加
is_delete标记) - 关联检查:删除前检查司机是否有关联的运单
- 级联处理:如果有关联数据,提供选项:
- 阻止删除
- 解绑后删除
- 级联删除所有关联数据
- 操作日志:记录删除操作的日志
修改的文件
后端
- ✅
tradeCattle/aiotagro-cattle-trade/src/main/java/com/aiotagro/cattletrade/business/controller/MemberController.java- 新增删除接口
前端
- ✅
pc-cattle-transportation/src/api/userManage.js- 添加删除API方法 - ✅
pc-cattle-transportation/src/views/userManage/driver.vue- 实现删除功能
创建时间
2025-01-16