修改内容
This commit is contained in:
186
pc-cattle-transportation/DRIVER_DELETE_IMPLEMENTATION.md
Normal file
186
pc-cattle-transportation/DRIVER_DELETE_IMPLEMENTATION.md
Normal file
@@ -0,0 +1,186 @@
|
||||
# 司机管理删除功能实现报告
|
||||
|
||||
## 概述
|
||||
|
||||
实现司机管理页面中的删除按钮功能,可以删除数据库中的司机数据。
|
||||
|
||||
## 实现内容
|
||||
|
||||
### 1. 后端实现
|
||||
|
||||
#### 控制器 (`MemberController.java`)
|
||||
|
||||
新增删除司机接口:
|
||||
|
||||
```402:447:tradeCattle/aiotagro-cattle-trade/src/main/java/com/aiotagro/cattletrade/business/controller/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());
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 删除逻辑说明
|
||||
|
||||
1. **删除两个表的数据**:
|
||||
- 删除 `member_driver` 表中的司机详细信息
|
||||
- 删除 `member` 表中的基础会员信息
|
||||
|
||||
2. **事务保证**:使用 `@Transactional` 注解确保数据一致性
|
||||
|
||||
3. **权限控制**:使用 `@SaCheckPermission("member:delete")` 进行权限验证
|
||||
|
||||
### 2. 前端实现
|
||||
|
||||
#### API接口 (`userManage.js`)
|
||||
|
||||
添加删除司机API方法:
|
||||
|
||||
```70:77:pc-cattle-transportation/src/api/userManage.js
|
||||
// 司机 - 删除
|
||||
export function driverDel(id) {
|
||||
return request({
|
||||
url: '/member/deleteDriver',
|
||||
method: 'POST',
|
||||
data: { id },
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
#### 页面实现 (`driver.vue`)
|
||||
|
||||
导入必要的依赖:
|
||||
```60:63:pc-cattle-transportation/src/views/userManage/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';
|
||||
```
|
||||
|
||||
实现删除方法:
|
||||
```160:181:pc-cattle-transportation/src/views/userManage/driver.vue
|
||||
// 删除
|
||||
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(() => {
|
||||
// 用户取消删除
|
||||
});
|
||||
};
|
||||
```
|
||||
|
||||
## 功能特点
|
||||
|
||||
1. **二次确认**:点击删除按钮时,会弹出确认对话框
|
||||
2. **直接删除**:确认后直接调用后端接口删除数据库记录
|
||||
3. **级联删除**:删除司机记录时,同时删除关联的会员基础信息
|
||||
4. **自动刷新**:删除成功后自动刷新列表
|
||||
5. **错误处理**:删除失败时显示错误提示
|
||||
6. **事务保护**:使用数据库事务确保数据一致性
|
||||
7. **权限控制**:需要 `member:delete` 权限才能执行删除操作
|
||||
|
||||
## 工作流程
|
||||
|
||||
1. 用户点击"删除"按钮
|
||||
2. 弹出确认对话框:"请确认是否删除该司机数据?"
|
||||
3. 用户点击"确定"
|
||||
4. 前端调用 `/member/deleteDriver` 接口,传递司机ID
|
||||
5. 后端查询司机信息,获取关联的 member_id
|
||||
6. 后端删除 `member_driver` 表中的司机信息
|
||||
7. 后端删除 `member` 表中的会员基础信息
|
||||
8. 返回成功响应
|
||||
9. 前端显示"删除成功"提示
|
||||
10. 自动刷新司机列表
|
||||
|
||||
## 数据库影响
|
||||
|
||||
删除操作会影响以下表:
|
||||
|
||||
1. **member_driver表**:删除司机的详细信息(姓名、车牌、照片等)
|
||||
2. **member表**:删除会员的基础信息(手机号、状态等)
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **不可恢复**:删除操作是物理删除,不可恢复(除非有备份)
|
||||
2. **关联数据**:删除司机前需要检查该司机是否有关联的运单或其他业务数据
|
||||
3. **权限要求**:需要具有 `member:delete` 权限的用户才能删除
|
||||
4. **事务保护**:使用事务确保即使部分删除失败也不会导致数据不一致
|
||||
|
||||
## 后续改进建议
|
||||
|
||||
1. **软删除**:考虑实现软删除(添加 `is_delete` 标记)
|
||||
2. **关联检查**:删除前检查司机是否有关联的运单
|
||||
3. **级联处理**:如果有关联数据,提供选项:
|
||||
- 阻止删除
|
||||
- 解绑后删除
|
||||
- 级联删除所有关联数据
|
||||
4. **操作日志**:记录删除操作的日志
|
||||
|
||||
## 修改的文件
|
||||
|
||||
### 后端
|
||||
- ✅ `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
|
||||
|
||||
Reference in New Issue
Block a user