130 lines
2.9 KiB
Bash
130 lines
2.9 KiB
Bash
#!/bin/bash
|
||
# 发货记录 SN 查询脚本
|
||
|
||
REDIS_HOST="${REDIS_HOST:-180.163.74.83}"
|
||
REDIS_PORT="${REDIS_PORT:-6379}"
|
||
REDIS_PASSWORD="${REDIS_PASSWORD}"
|
||
REDIS_DB="${REDIS_DB:-0}"
|
||
|
||
# 颜色定义
|
||
GREEN='\033[0;32m'
|
||
RED='\033[0;31m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# 构建 redis-cli 命令
|
||
REDIS_CMD="redis-cli -h $REDIS_HOST -p $REDIS_PORT"
|
||
if [ -n "$REDIS_PASSWORD" ]; then
|
||
REDIS_CMD="$REDIS_CMD -a $REDIS_PASSWORD"
|
||
fi
|
||
REDIS_CMD="$REDIS_CMD -n $REDIS_DB"
|
||
|
||
# 显示帮助
|
||
show_help() {
|
||
echo "发货记录 SN 查询工具"
|
||
echo ""
|
||
echo "用法:"
|
||
echo " $0 <命令> [参数]"
|
||
echo ""
|
||
echo "命令:"
|
||
echo " query <SN> 查询单个 SN 的出货信息"
|
||
echo " count 查看总记录数"
|
||
echo " list [数量] 列出最近的 SN(默认 20 条)"
|
||
echo " search <模式> 搜索匹配的 SN(如: SN00*)"
|
||
echo " exists <SN> 检查 SN 是否存在"
|
||
echo ""
|
||
echo "示例:"
|
||
echo " $0 query SN0001"
|
||
echo " $0 count"
|
||
echo " $0 list 50"
|
||
echo " $0 search 'SN00*'"
|
||
}
|
||
|
||
# 查询单个 SN
|
||
query_sn() {
|
||
local sn=$1
|
||
if [ -z "$sn" ]; then
|
||
echo -e "${RED}错误: 请提供 SN 号${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
echo -e "${YELLOW}查询 SN: $sn${NC}"
|
||
result=$($REDIS_CMD HGET shipment_sn_mapping "$sn")
|
||
|
||
if [ -z "$result" ]; then
|
||
echo -e "${RED}未找到该 SN 的出货记录${NC}"
|
||
else
|
||
echo -e "${GREEN}找到记录:${NC}"
|
||
echo "$result" | python3 -m json.tool 2>/dev/null || echo "$result"
|
||
fi
|
||
}
|
||
|
||
# 统计总数
|
||
count_records() {
|
||
echo -e "${YELLOW}统计记录总数...${NC}"
|
||
count=$($REDIS_CMD HLEN shipment_sn_mapping)
|
||
echo -e "${GREEN}总记录数: $count${NC}"
|
||
}
|
||
|
||
# 列出 SN
|
||
list_sns() {
|
||
local limit=${1:-20}
|
||
echo -e "${YELLOW}列出前 $limit 条记录...${NC}"
|
||
$REDIS_CMD HSCAN shipment_sn_mapping 0 COUNT "$limit" | tail -n +2
|
||
}
|
||
|
||
# 搜索 SN
|
||
search_sns() {
|
||
local pattern=$1
|
||
if [ -z "$pattern" ]; then
|
||
echo -e "${RED}错误: 请提供搜索模式${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
echo -e "${YELLOW}搜索模式: $pattern${NC}"
|
||
$REDIS_CMD HSCAN shipment_sn_mapping 0 MATCH "$pattern" COUNT 100
|
||
}
|
||
|
||
# 检查存在
|
||
check_exists() {
|
||
local sn=$1
|
||
if [ -z "$sn" ]; then
|
||
echo -e "${RED}错误: 请提供 SN 号${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
exists=$($REDIS_CMD HEXISTS shipment_sn_mapping "$sn")
|
||
if [ "$exists" = "1" ]; then
|
||
echo -e "${GREEN}SN $sn 存在${NC}"
|
||
else
|
||
echo -e "${RED}SN $sn 不存在${NC}"
|
||
fi
|
||
}
|
||
|
||
# 主逻辑
|
||
case "${1:-help}" in
|
||
query)
|
||
query_sn "$2"
|
||
;;
|
||
count)
|
||
count_records
|
||
;;
|
||
list)
|
||
list_sns "$2"
|
||
;;
|
||
search)
|
||
search_sns "$2"
|
||
;;
|
||
exists)
|
||
check_exists "$2"
|
||
;;
|
||
help|--help|-h)
|
||
show_help
|
||
;;
|
||
*)
|
||
echo -e "${RED}未知命令: $1${NC}"
|
||
show_help
|
||
exit 1
|
||
;;
|
||
esac
|