Files
cattleTransportation/pc-cattle-transportation/DRIVER_DELETE_IMPLEMENTATION.md
2025-10-27 17:38:20 +08:00

6.1 KiB
Raw Blame History

司机管理删除功能实现报告

概述

实现司机管理页面中的删除按钮功能,可以删除数据库中的司机数据。

实现内容

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());
        }
    }

删除逻辑说明

  1. 删除两个表的数据

    • 删除 member_driver 表中的司机详细信息
    • 删除 member 表中的基础会员信息
  2. 事务保证:使用 @Transactional 注解确保数据一致性

  3. 权限控制:使用 @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(() => {
            // 用户取消删除
        });
};

功能特点

  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