文件夹整理
This commit is contained in:
273
test_base_staff_db_fixed.sh
Normal file
273
test_base_staff_db_fixed.sh
Normal file
@@ -0,0 +1,273 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 员工信息表重命名数据库验证脚本
|
||||
# 验证 ccdi_base_staff 表及相关配置
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 测试结果统计
|
||||
TOTAL_TESTS=0
|
||||
PASSED_TESTS=0
|
||||
FAILED_TESTS=0
|
||||
|
||||
# 数据库连接配置
|
||||
DB_HOST="localhost"
|
||||
DB_USER="root"
|
||||
DB_PASS="root"
|
||||
DB_NAME="ccdi"
|
||||
|
||||
# 日志函数
|
||||
log_info() {
|
||||
echo -e "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
log_warn() {
|
||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||
}
|
||||
|
||||
# 测试函数
|
||||
test_case() {
|
||||
TOTAL_TESTS=$((TOTAL_TESTS + 1))
|
||||
local test_name=$1
|
||||
local test_function=$2
|
||||
|
||||
echo -e "\n========================================"
|
||||
echo "测试 ${TOTAL_TESTS}: $test_name"
|
||||
echo "========================================"
|
||||
|
||||
$test_function
|
||||
local result=$?
|
||||
|
||||
if [ $result -eq 0 ]; then
|
||||
PASSED_TESTS=$((PASSED_TESTS + 1))
|
||||
log_info "✓ 测试通过"
|
||||
else
|
||||
FAILED_TESTS=$((FAILED_TESTS + 1))
|
||||
log_error "✗ 测试失败"
|
||||
fi
|
||||
}
|
||||
|
||||
# 测试 1: 验证表存在
|
||||
test_table_exists() {
|
||||
log_info "验证 ccdi_base_staff 表是否存在..."
|
||||
|
||||
local result=$(mysql -h $DB_HOST -u $DB_USER -p$DB_PASS -D $DB_NAME -e "
|
||||
SELECT COUNT(*) as cnt
|
||||
FROM information_schema.TABLES
|
||||
WHERE TABLE_SCHEMA = '$DB_NAME'
|
||||
AND TABLE_NAME = 'ccdi_base_staff';" 2>/dev/null | tail -1)
|
||||
|
||||
if [ "$result" = "1" ]; then
|
||||
log_info "表 ccdi_base_staff 存在"
|
||||
return 0
|
||||
else
|
||||
log_error "表 ccdi_base_staff 不存在"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 测试 2: 验证 staff_id 主键字段
|
||||
test_staff_id_field() {
|
||||
log_info "验证 staff_id 字段存在且为主键..."
|
||||
|
||||
local result=$(mysql -h $DB_HOST -u $DB_USER -p$DB_PASS -D $DB_NAME -e "
|
||||
SELECT COUNT(*) as cnt
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = '$DB_NAME'
|
||||
AND TABLE_NAME = 'ccdi_base_staff'
|
||||
AND COLUMN_NAME = 'staff_id';" 2>/dev/null | tail -1)
|
||||
|
||||
if [ "$result" = "1" ]; then
|
||||
log_info "staff_id 字段存在"
|
||||
|
||||
# 验证是否为主键
|
||||
local pk_result=$(mysql -h $DB_HOST -u $DB_USER -p$DB_PASS -D $DB_NAME -e "
|
||||
SELECT COUNT(*) as cnt
|
||||
FROM information_schema.KEY_COLUMN_USAGE
|
||||
WHERE TABLE_SCHEMA = '$DB_NAME'
|
||||
AND TABLE_NAME = 'ccdi_base_staff'
|
||||
AND COLUMN_NAME = 'staff_id'
|
||||
AND CONSTRAINT_NAME = 'PRIMARY';" 2>/dev/null | tail -1)
|
||||
|
||||
if [ "$pk_result" = "1" ]; then
|
||||
log_info "staff_id 是主键"
|
||||
return 0
|
||||
else
|
||||
log_error "staff_id 不是主键"
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
log_error "staff_id 字段不存在"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 测试 3: 验证 teller_no 字段已删除
|
||||
test_teller_no_removed() {
|
||||
log_info "验证 teller_no 字段已删除..."
|
||||
|
||||
local result=$(mysql -h $DB_HOST -u $DB_USER -p$DB_PASS -D $DB_NAME -e "
|
||||
SELECT COUNT(*) as cnt
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = '$DB_NAME'
|
||||
AND TABLE_NAME = 'ccdi_base_staff'
|
||||
AND COLUMN_NAME = 'teller_no';" 2>/dev/null | tail -1)
|
||||
|
||||
if [ "$result" = "0" ]; then
|
||||
log_info "teller_no 字段已删除"
|
||||
return 0
|
||||
else
|
||||
log_error "teller_no 字段仍然存在"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 测试 4: 验证其他必需字段存在
|
||||
test_required_fields() {
|
||||
log_info "验证必需字段存在..."
|
||||
|
||||
local fields=("name" "dept_id" "id_card" "phone" "hire_date" "status")
|
||||
local all_exist=1
|
||||
|
||||
for field in "${fields[@]}"; do
|
||||
local result=$(mysql -h $DB_HOST -u $DB_USER -p$DB_PASS -D $DB_NAME -e "
|
||||
SELECT COUNT(*) as cnt
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = '$DB_NAME'
|
||||
AND TABLE_NAME = 'ccdi_base_staff'
|
||||
AND COLUMN_NAME = '$field';" 2>/dev/null | tail -1)
|
||||
|
||||
if [ "$result" = "1" ]; then
|
||||
log_info " ✓ $field 字段存在"
|
||||
else
|
||||
log_error " ✗ $field 字段不存在"
|
||||
all_exist=0
|
||||
fi
|
||||
done
|
||||
|
||||
return $all_exist
|
||||
}
|
||||
|
||||
# 测试 5: 验证菜单权限已更新
|
||||
test_menu_permissions() {
|
||||
log_info "验证菜单权限已更新为 baseStaff..."
|
||||
|
||||
local result=$(mysql -h $DB_HOST -u $DB_USER -p$DB_PASS -D $DB_NAME -e "
|
||||
SELECT COUNT(*) as cnt
|
||||
FROM sys_menu
|
||||
WHERE perms LIKE 'ccdi:baseStaff:%';" 2>/dev/null | tail -1)
|
||||
|
||||
if [ "$result" -ge 7 ]; then
|
||||
log_info "找到 $result 个 baseStaff 权限配置"
|
||||
|
||||
# 列出所有权限
|
||||
mysql -h $DB_HOST -u $DB_USER -p$DB_PASS -D $DB_NAME -e "
|
||||
SELECT menu_name, perms
|
||||
FROM sys_menu
|
||||
WHERE perms LIKE 'ccdi:baseStaff:%'
|
||||
ORDER BY menu_id;" 2>/dev/null
|
||||
|
||||
return 0
|
||||
else
|
||||
log_error "baseStaff 权限配置不足,期望至少 7 个,实际 $result 个"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 测试 6: 验证旧权限已删除
|
||||
test_old_permissions_removed() {
|
||||
log_info "验证旧的 employee 权限已删除..."
|
||||
|
||||
local result=$(mysql -h $DB_HOST -u $DB_USER -p$DB_PASS -D $DB_NAME -e "
|
||||
SELECT COUNT(*) as cnt
|
||||
FROM sys_menu
|
||||
WHERE perms LIKE 'ccdi:employee:%';" 2>/dev/null | tail -1)
|
||||
|
||||
if [ "$result" = "0" ]; then
|
||||
log_info "旧的 employee 权限已全部删除"
|
||||
return 0
|
||||
else
|
||||
log_warn "仍有 $result 个 employee 权限未删除"
|
||||
mysql -h $DB_HOST -u $DB_USER -p$DB_PASS -D $DB_NAME -e "
|
||||
SELECT menu_name, perms
|
||||
FROM sys_menu
|
||||
WHERE perms LIKE 'ccdi:employee:%';" 2>/dev/null
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 测试 7: 显示表结构
|
||||
show_table_structure() {
|
||||
log_info "显示 ccdi_base_staff 表结构..."
|
||||
|
||||
mysql -h $DB_HOST -u $DB_USER -p$DB_PASS -D $DB_NAME -e "
|
||||
DESC ccdi_base_staff;" 2>/dev/null
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# 测试 8: 显示索引
|
||||
show_table_indexes() {
|
||||
log_info "显示 ccdi_base_staff 表索引..."
|
||||
|
||||
mysql -h $DB_HOST -u $DB_USER -p$DB_PASS -D $DB_NAME -e "
|
||||
SHOW INDEX FROM ccdi_base_staff;" 2>/dev/null
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# 主测试流程
|
||||
main() {
|
||||
echo "=========================================="
|
||||
echo "员工信息表重命名 - 数据库验证"
|
||||
echo "=========================================="
|
||||
echo "数据库: $DB_NAME"
|
||||
echo "=========================================="
|
||||
|
||||
# 运行测试
|
||||
test_case "验证表存在" "test_table_exists"
|
||||
test_case "验证 staff_id 主键字段" "test_staff_id_field"
|
||||
test_case "验证 teller_no 字段已删除" "test_teller_no_removed"
|
||||
test_case "验证必需字段存在" "test_required_fields"
|
||||
test_case "验证菜单权限已更新" "test_menu_permissions"
|
||||
test_case "验证旧权限已删除" "test_old_permissions_removed"
|
||||
|
||||
# 显示表信息
|
||||
echo -e "\n=========================================="
|
||||
echo "表结构详情"
|
||||
echo "=========================================="
|
||||
show_table_structure
|
||||
|
||||
echo -e "\n=========================================="
|
||||
echo "表索引详情"
|
||||
echo "=========================================="
|
||||
show_table_indexes
|
||||
|
||||
# 输出测试结果
|
||||
echo -e "\n=========================================="
|
||||
echo "测试结果汇总"
|
||||
echo "=========================================="
|
||||
echo -e "总测试数: ${TOTAL_TESTS}"
|
||||
echo -e "${GREEN}通过: ${PASSED_TESTS}${NC}"
|
||||
echo -e "${RED}失败: ${FAILED_TESTS}${NC}"
|
||||
echo "=========================================="
|
||||
|
||||
if [ $FAILED_TESTS -eq 0 ]; then
|
||||
log_info "所有测试通过!"
|
||||
exit 0
|
||||
else
|
||||
log_error "存在失败的测试"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 执行测试
|
||||
main
|
||||
Reference in New Issue
Block a user