180 lines
5.0 KiB
Bash
Executable File
180 lines
5.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 卡密生成快速脚本
|
|
# 使用方法: bash generate-licenses.sh
|
|
|
|
BASE_URL="http://localhost:3030"
|
|
|
|
# 颜色定义
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m'
|
|
|
|
echo -e "${GREEN}====== 卡密生成工具 ======${NC}"
|
|
echo ""
|
|
|
|
# 检查是否已有管理员账号
|
|
read -p "是否已有管理员账号?(y/n): " has_admin
|
|
|
|
if [ "$has_admin" != "y" ]; then
|
|
echo -e "${YELLOW}步骤 1: 注册管理员账号${NC}"
|
|
read -p "请输入管理员用户名 (默认: admin): " admin_username
|
|
admin_username=${admin_username:-admin}
|
|
|
|
read -sp "请输入管理员密码: " admin_password
|
|
echo ""
|
|
|
|
read -p "请输入管理员邮箱 (默认: admin@example.com): " admin_email
|
|
admin_email=${admin_email:-admin@example.com}
|
|
|
|
echo -e "${YELLOW}正在注册管理员账号...${NC}"
|
|
|
|
REGISTER_RESPONSE=$(curl -s -X POST "$BASE_URL/user/register" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{
|
|
\"username\": \"$admin_username\",
|
|
\"password\": \"$admin_password\",
|
|
\"email\": \"$admin_email\"
|
|
}")
|
|
|
|
ADMIN_TOKEN=$(echo $REGISTER_RESPONSE | jq -r '.access_token')
|
|
|
|
if [ "$ADMIN_TOKEN" = "null" ] || [ -z "$ADMIN_TOKEN" ]; then
|
|
echo -e "${RED}注册失败!${NC}"
|
|
echo "$REGISTER_RESPONSE" | jq '.'
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${GREEN}管理员账号注册成功!${NC}"
|
|
echo "管理员 Token: $ADMIN_TOKEN"
|
|
echo ""
|
|
else
|
|
echo -e "${YELLOW}步骤 1: 管理员登录${NC}"
|
|
read -p "请输入管理员用户名: " admin_username
|
|
read -sp "请输入管理员密码: " admin_password
|
|
echo ""
|
|
|
|
echo -e "${YELLOW}正在登录...${NC}"
|
|
|
|
LOGIN_RESPONSE=$(curl -s -X POST "$BASE_URL/user/login" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{
|
|
\"username\": \"$admin_username\",
|
|
\"password\": \"$admin_password\"
|
|
}")
|
|
|
|
ADMIN_TOKEN=$(echo $LOGIN_RESPONSE | jq -r '.access_token')
|
|
|
|
if [ "$ADMIN_TOKEN" = "null" ] || [ -z "$ADMIN_TOKEN" ]; then
|
|
echo -e "${RED}登录失败!请检查用户名和密码${NC}"
|
|
echo "$LOGIN_RESPONSE" | jq '.'
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${GREEN}登录成功!${NC}"
|
|
echo ""
|
|
fi
|
|
|
|
# 生成卡密
|
|
echo -e "${YELLOW}步骤 2: 选择要生成的卡密类型${NC}"
|
|
echo "1. 试用卡 (7天)"
|
|
echo "2. 月卡 (30天)"
|
|
echo "3. 年卡 (365天)"
|
|
echo "4. 终身卡"
|
|
read -p "请选择 (1-4): " license_choice
|
|
|
|
case $license_choice in
|
|
1)
|
|
LICENSE_TYPE="trial"
|
|
VALID_DAYS=7
|
|
;;
|
|
2)
|
|
LICENSE_TYPE="monthly"
|
|
VALID_DAYS=30
|
|
;;
|
|
3)
|
|
LICENSE_TYPE="yearly"
|
|
VALID_DAYS=365
|
|
;;
|
|
4)
|
|
LICENSE_TYPE="lifetime"
|
|
VALID_DAYS=36500
|
|
;;
|
|
*)
|
|
echo -e "${RED}无效的选择${NC}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
read -p "请输入生成数量 (默认: 1): " count
|
|
count=${count:-1}
|
|
|
|
read -p "请输入备注信息 (可选): " remarks
|
|
|
|
echo ""
|
|
echo -e "${YELLOW}正在生成 $count 个 $LICENSE_TYPE 卡密...${NC}"
|
|
|
|
GENERATE_RESPONSE=$(curl -s -X POST "$BASE_URL/license/generate" \
|
|
-H "Authorization: Bearer $ADMIN_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{
|
|
\"type\": \"$LICENSE_TYPE\",
|
|
\"validDays\": $VALID_DAYS,
|
|
\"count\": $count,
|
|
\"remarks\": \"$remarks\"
|
|
}")
|
|
|
|
# 检查是否成功
|
|
if echo "$GENERATE_RESPONSE" | jq -e '.[0].code' > /dev/null 2>&1; then
|
|
echo -e "${GREEN}卡密生成成功!${NC}"
|
|
echo ""
|
|
echo "生成的卡密:"
|
|
echo "$GENERATE_RESPONSE" | jq -r '.[] | " \(.code) - \(.type) (\(.validDays)天) - \(.remarks // "无备注")"'
|
|
echo ""
|
|
|
|
# 询问是否保存到文件
|
|
read -p "是否将卡密保存到文件?(y/n): " save_to_file
|
|
|
|
if [ "$save_to_file" = "y" ]; then
|
|
FILENAME="licenses_$(date +%Y%m%d_%H%M%S).txt"
|
|
echo "生成时间: $(date)" > "$FILENAME"
|
|
echo "类型: $LICENSE_TYPE" >> "$FILENAME"
|
|
echo "有效天数: $VALID_DAYS" >> "$FILENAME"
|
|
echo "数量: $count" >> "$FILENAME"
|
|
echo "备注: $remarks" >> "$FILENAME"
|
|
echo "" >> "$FILENAME"
|
|
echo "卡密列表:" >> "$FILENAME"
|
|
echo "$GENERATE_RESPONSE" | jq -r '.[] | .code' >> "$FILENAME"
|
|
|
|
echo -e "${GREEN}卡密已保存到: $FILENAME${NC}"
|
|
fi
|
|
|
|
# 显示统计信息
|
|
echo ""
|
|
read -p "是否查看卡密统计信息?(y/n): " show_stats
|
|
|
|
if [ "$show_stats" = "y" ]; then
|
|
echo -e "${YELLOW}查询统计信息...${NC}"
|
|
STATS=$(curl -s -X GET "$BASE_URL/license/statistics" \
|
|
-H "Authorization: Bearer $ADMIN_TOKEN")
|
|
|
|
echo "$STATS" | jq '.'
|
|
fi
|
|
|
|
else
|
|
echo -e "${RED}生成失败!${NC}"
|
|
echo "$GENERATE_RESPONSE" | jq '.'
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo -e "${GREEN}====== 操作完成 ======${NC}"
|
|
echo ""
|
|
echo "提示:"
|
|
echo "1. 管理员 Token 已保存(有效期内可继续使用)"
|
|
echo "2. 可以将卡密分发给用户进行激活"
|
|
echo "3. 用户激活接口: POST /license/activate"
|
|
echo "4. 查看所有卡密: GET /license"
|
|
echo ""
|