Compare commits

...

86 Commits
old ... main

Author SHA1 Message Date
b57221598d docs: add project documentation
Some checks failed
Build docker and publish / build (20.15.1) (push) Has been cancelled
2026-01-15 17:26:03 -08:00
86d9c6e9c7 fix(order): 处理finalizeCouponAndOrder的错误并添加日志记录
在finalizeCouponAndOrder函数中添加错误返回并记录日志,确保错误能够被捕获和处理
2026-01-15 17:25:56 -08:00
9212efc176 feat: 合并更新
Some checks failed
Build docker and publish / build (20.15.1) (push) Has been cancelled
2025-12-29 04:02:04 -08:00
544cfb5c99 Merge branch 'old' into main
Some checks failed
Build docker and publish / build (20.15.1) (push) Has been cancelled
2025-12-28 17:27:43 -08:00
f26babaa6f feat: 更新配置文件和模型以支持服务器相关功能
修改MySQL和Redis配置为本地开发环境
在Subscribe类型和模型中添加服务器相关字段
在InviteConfig中添加新配置项
启用ServerModel并修复数据库迁移错误处理
删除无用的运行配置文件
2025-12-28 17:08:24 -08:00
49d59eccb0 Merge old/master into main, resolving conflicts by preferring old in workflows and removing deprecated adapter files
Some checks failed
Build docker and publish / build (20.15.1) (push) Has been cancelled
2025-12-28 15:56:07 -08:00
c07c58aa16 x 2025-09-30 07:52:54 -07:00
b650b1a108 tg
All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 6m13s
2025-09-29 17:45:09 -07:00
efc5be5142 maindev
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 6m30s
2025-09-29 17:32:10 -07:00
5c43bd7a3d init
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 9m55s
2025-09-27 10:52:39 -07:00
30bbb33129 init
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 6m3s
2025-09-26 21:49:16 -07:00
66e753e69b x
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 6m2s
2025-09-26 21:04:11 -07:00
93fcaace26 x
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 5m51s
2025-09-26 20:12:09 -07:00
97bb873bb8 x
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 5m41s
2025-09-26 19:46:56 -07:00
723ceddc3d x
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 5m24s
2025-09-26 19:34:49 -07:00
be532bec1b x
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 5m23s
2025-09-26 19:25:47 -07:00
e788693713 x
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 5m33s
2025-09-26 19:16:32 -07:00
aaa6cb149c x
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 10m26s
2025-09-26 19:05:02 -07:00
6a146f0898 x
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 1m1s
2025-09-26 19:00:51 -07:00
b9b0dc3bda x
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 14s
2025-09-26 18:57:19 -07:00
4d39fd1b84 i1
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 7s
2025-09-26 18:43:33 -07:00
bcf81ab683 i1
Some checks failed
Build docker and publish / build (push) Failing after 19s
2025-09-26 18:42:35 -07:00
7471fd8e3d ci
Some checks failed
Build docker and publish / linux (1.24.3) (push) Has been cancelled
2025-09-26 18:37:43 -07:00
ac3bbaf7bf feat(ticket): 添加issue_type字段支持工单分类
在工单系统中新增issue_type字段用于区分工单类型(0-普通工单,1-提现工单)
修改相关API、模型和逻辑以支持该字段的创建、查询和筛选
2025-09-15 01:42:44 -07:00
2d4bfe0330 remark 2025-09-14 23:41:00 -07:00
602ecc31bc feat(proxy): 新增混合模式和中继直连模式支持
添加 RelayModeMixed、RelayModeAllDirect 和 RelayModeRandomDirect 三种中继模式
修复 README.md 中的拼写错误
更新 JWT 密钥和日志模式配置
优化流量日志查询排序
统一邮件验证码主题格式
2025-09-01 02:22:16 -07:00
b16ac2cb9b feat(用户): 添加用户余额日志分页查询功能
修复AnyTLSUri端口使用错误问题
添加订阅列表排序功能
更新.gitignore移除日志文件忽略
完善流量通知模板变量
2025-08-27 08:15:31 -07:00
41423ca666 fix: 修复订阅列表查询逻辑并更新Dockerfile配置
修复订阅列表查询中服务器组为空时的处理逻辑,避免潜在错误
在getSubscribeListLogic.go中添加服务器数量统计功能
更新Dockerfile添加logs目录拷贝
清理ppanel.yaml配置文件中的合并冲突和冗余配置
2025-08-17 04:28:32 -07:00
e898e6afbe init 2025-08-12 07:52:04 -07:00
2e01ba0e3d ci(docker): 更新Docker工作流和配置
清理Go模块缓存并移除go.sum文件
更新Docker网络名称和数据库连接配置
2025-08-10 00:28:32 -07:00
25db7ea428 chore(deploy): 更新GITEA_RUNNER_NAME为ubuntu-latest 2025-08-09 08:32:09 -07:00
e37ad50410 ci: 将linux作业的运行环境从vpn改为ubuntu-latest 2025-08-09 08:17:36 -07:00
c503e06c9c ci(workflow): 将linux作业的运行环境改为vpn
避免使用公共runner以提高构建安全性
2025-08-09 08:00:12 -07:00
0992c2ad7b ci(docker): 更新Docker工作流以包含构建步骤
添加checkout步骤并使用环境变量进行认证
包含构建Linux可执行文件的步骤
2025-08-09 07:18:58 -07:00
e78b93d6fb ci: 移除不必要的检出步骤 2025-08-09 07:13:25 -07:00
79020ccea0 1 2025-08-09 06:55:11 -07:00
8a8ece76b1 ci: 将Linux构建任务运行环境从vpn改为ubuntu-latest 2025-08-09 06:26:21 -07:00
0316345e9f ci: 将linux job的运行环境从vpn-runner改为vpn 2025-08-09 06:25:23 -07:00
b56b1240f3 ci(workflow): 将linux job的运行环境改为vpn-runner并移除build-linux步骤 2025-08-09 06:23:30 -07:00
77b3af8015 init 2025-08-09 05:18:44 -07:00
634f43d644 fix: 更新MySQL和Redis的连接地址为具体IP
将MySQL和Redis的连接地址从服务名称改为具体IP地址,以便在特定网络环境下能够正确连接
2025-08-05 10:37:47 -07:00
e5b4dc75d7 fix(deploy): 更新docker-compose配置和数据库连接地址
- 在docker-compose中添加时区环境变量
- 将MySQL和Redis连接地址从localhost改为服务名
- 更新Makefile中的docker compose命令语法
2025-08-05 10:12:29 -07:00
40b8c07036 chore: 在docker-run命令中添加当前工作目录打印 2025-08-05 10:00:07 -07:00
b261ddeeb1 ci(docker): 更新Docker工作流,添加构建步骤并注释发布步骤
添加应用构建步骤以确保镜像包含最新代码
暂时注释发布步骤以进行本地测试
2025-08-05 09:52:27 -07:00
62f07b7f6b ci(docker): 移除构建应用的步骤并修复docker-compose命令
移除docker.yml中冗余的go mod tidy和build-linux步骤,这些步骤已在其他流程中处理
将docker compose命令改为docker-compose以兼容旧版本
2025-08-05 09:46:27 -07:00
31a2aa0e84 ci(workflow): 优化Docker工作流配置并简化步骤
- 添加DOMAIN环境变量以替代硬编码的域名
- 简化git克隆流程,使用凭证存储提高安全性
- 移除不必要的SSH文件复制步骤
- 添加构建和发布Docker镜像的详细日志输出
2025-08-05 09:24:13 -07:00
7965c33790 ci(docker): 更新Gitea工作流以使用容器化构建环境
将Linux作业改为在golang容器中运行,简化Go环境设置步骤
移除不必要的SSH步骤,优化构建流程
2025-08-05 09:22:37 -07:00
fcae874fd2 ci: 移除不再需要的Node.js安装步骤 2025-08-05 09:20:50 -07:00
dad83339c1 ci(docker): 更新Gitea工作流配置并优化构建步骤
- 使用标准actions/checkout@v4替代自定义checkout
- 添加Go环境设置步骤并启用缓存
- 优化SSH action使用标准appleboy/ssh-action
- 调整工作空间路径变量为github标准
2025-08-05 09:18:32 -07:00
84842ec3dd ci(docker): 添加 Node.js 设置步骤以支持前端构建 2025-08-05 09:16:06 -07:00
59bc008b69 ci(docker): 更新SSH action的版本引用
使用明确的版本号v1替代隐式引用,提高工作流的稳定性
2025-08-05 09:13:06 -07:00
8cb58ad91f ci(docker): 更新Gitea Actions checkout步骤使用v1版本
修复checkout步骤未指定版本的问题,确保构建稳定性
2025-08-05 09:12:16 -07:00
7372302618 ci(docker): 移除actions引用中的main分支后缀 2025-08-05 09:10:44 -07:00
cbf5a2b450 1 2025-08-05 09:09:02 -07:00
33f450cdbc init 2025-08-05 08:47:18 -07:00
bce4c4e56e ci(workflow): 更新Gitea工作流使用内部actions
使用内部认证的actions替换公开actions以增强安全性
2025-08-05 08:22:04 -07:00
b6cbcb3040 ci: 移除不必要的Node.js设置和检出步骤 2025-08-05 08:09:59 -07:00
fdbe3c75ee ci(workflow): 添加Node.js环境并降级checkout action版本
添加Node.js环境设置步骤以满足构建需求
将actions/checkout从v4降级至v3以解决兼容性问题
2025-08-05 08:08:36 -07:00
bf13c56261 ci: 更新Gitea工作流中使用GitHub官方actions
将自定义的actions地址替换为GitHub官方actions,提高工作流的稳定性和可维护性
2025-08-05 08:05:21 -07:00
85343f3f82 fix(deploy): 修正GITEA_RUNNER_NAME变量值为vpn-runner 2025-08-05 08:01:25 -07:00
51b493a10d ci(workflow): 将linux作业的运行环境从ubuntu-latest改为vpn 2025-08-05 07:59:50 -07:00
ae04e0d518 chore: 更新GITEA_RUNNER_NAME为vpn-runner 2025-08-05 07:54:18 -07:00
2b1ce740e1 ci: 更新部署配置和CI认证方式
将域名从ppanel.kxsw.us更改为api.kxsw.us
将CI工作流中的SSH认证方式从私钥改为密码认证
2025-08-05 07:47:50 -07:00
e620abcce6 init 2025-08-05 06:19:25 -07:00
7ea6fc226e refactor(Dockerfile): 优化时区文件拷贝并添加注释
将单个时区文件拷贝改为拷贝整个时区目录,提高可维护性
添加时区设置的环境变量注释
2025-07-28 06:56:07 -07:00
d5f4b04c6c fix(deploy): 将API外部端口从8070改为8080 2025-07-24 09:33:40 -07:00
a0ca976e66 chore: 开启调试模式并添加代码对比脚本
开启调试模式以便更好地排查问题。
添加代码对比脚本 see.sh,用于简洁地对比代码变更,包括文件变更对比和变更统计,方便查看我们和他们的修改情况。
2025-07-23 10:13:42 -07:00
917732eeee fix: 修改 MySQL 配置中的密码和数据库名 2025-07-23 09:43:38 -07:00
f0fbd9d208 fix: 更新MySQL和Redis连接地址以及Docker网络名称
将MySQL地址从localhost改为mysql_db,Redis地址从127.0.0.1改为redis_cache
更新Docker网络名称为ppanel-script_ppanel-network以匹配部署配置
2025-07-23 09:25:32 -07:00
2d07182bd6 fix: 修正 Dockerfile 中的 CMD 命令参数 2025-07-23 09:20:32 -07:00
e0ae15355b style: 将项目名称从Ppanel改为ppanel以保持命名一致性 2025-07-23 08:48:36 -07:00
c0e0d03431 fix: 修正Dockerfile和Makefile中的可执行文件名称
将Dockerfile中的CMD命令和Makefile中的build-linux目标输出文件名称统一为'ppanel',确保容器运行时使用正确的可执行文件名称
2025-07-23 08:22:45 -07:00
bb5d6974fa ci: 从发布流程中移除docker登录步骤
移除Makefile中自动登录docker的步骤,因为登录凭证应通过更安全的方式处理
2025-07-23 07:51:46 -07:00
df7fcddb40 refactor: 更新Dockerfile和Makefile配置
统一服务名称为Ppanel并更新相关变量命名
优化Makefile结构,移除无用swagger相关命令
添加构建时间变量并改进构建命令
2025-07-23 07:36:26 -07:00
6c9d5fb39e fix: 修正Makefile中的服务名称拼写错误 2025-07-22 10:25:41 -07:00
4ecc5177ed ci(docker): 优化Go环境设置并启用缓存
使用setup-go替代gitea-tool-cache来设置Go环境
启用依赖缓存以提高构建效率
移除不必要的清理步骤
2025-07-22 10:11:10 -07:00
c11d46bdbf ci: 更新工作流中使用的工作空间变量从github到gitea 2025-07-22 10:09:55 -07:00
9b7a588997 ci(workflow): 更新docker工作流配置
- 添加GOSUMDB=off设置并清理go缓存
- 修复工作空间路径变量引用错误
- 增加go.sum清理步骤
2025-07-22 10:05:09 -07:00
0f40c63ea0 ci(docker): 修复工作流中容器环境变量处理逻辑
修复容器名称变量引用错误,并添加对RUNNER_CONTAINER_NAME未设置的检查
2025-07-22 09:53:59 -07:00
1d1d8c0e30 ci(workflows): 修改docker工作流中的环境文件路径
将环境文件存储路径从/install/cicd_env_files改为用户主目录下的~/cicd_env_files,避免权限问题
2025-07-22 09:52:25 -07:00
5d890fdfcc ci: 更新Gitea Actions的引用版本为main分支 2025-07-22 09:50:20 -07:00
94e2f33db1 ci: 移除Gitea Actions插件版本号以使用最新版本 2025-07-22 09:45:30 -07:00
a7d9deb9cd ci(workflow): 更新 setup-go action 的引用方式 2025-07-22 09:36:18 -07:00
9f9e832e37 chore(deploy): 更新GITEA_RUNNER_NAME为server-runner 2025-07-22 09:08:59 -07:00
a73a3f2313 feat: 添加docker-compose配置和用户管理逻辑更新
fix(ci): 移除敏感信息并更新SSH认证方式

refactor: 清理无用文件和更新Makefile配置

docs: 添加项目配置文件和更新环境变量说明
2025-07-22 08:53:30 -07:00
cc6ebc18e5 ci(docker): 添加docker构建工作流并更新Makefile配置
添加Gitea的docker构建工作流,包含环境变量配置、Go环境安装、镜像构建和发布步骤
重构Makefile以支持多平台构建、docker操作和swagger文档生成
2025-07-21 07:25:47 -07:00
41 changed files with 3591 additions and 343 deletions

231
.gitea/workflows/docker.yml Normal file
View File

@ -0,0 +1,231 @@
name: Build docker and publish
run-name: 简化的Docker构建和部署流程
on:
push:
branches:
- main
- dev
pull_request:
branches:
- main
- dev
env:
# Docker镜像仓库
REPO: ${{ vars.REPO || 'registry.kxsw.us/ppanel-server' }}
# SSH连接信息
SSH_HOST: ${{ vars.SSH_HOST }}
SSH_PORT: ${{ vars.SSH_PORT }}
SSH_USER: ${{ vars.SSH_USER }}
SSH_PASSWORD: ${{ vars.SSH_PASSWORD }}
# TG通知
TG_BOT_TOKEN: 8114337882:AAHkEx03HSu7RxN4IHBJJEnsK9aPPzNLIk0
TG_CHAT_ID: "-4940243803"
# Go构建变量
SERVICE: ppanel
SERVICE_STYLE: ppanel
VERSION: ${{ github.sha }}
BUILDTIME: ${{ github.event.head_commit.timestamp }}
GOARCH: amd64
jobs:
build:
runs-on: ppanel-server
container:
image: node:20
strategy:
matrix:
# 只有node支持版本号别名
node: ['20.15.1']
steps:
# 步骤1: 下载代码
- name: 📥 下载代码
uses: actions/checkout@v4
# 步骤2: 设置动态环境变量
- name: ⚙️ 设置动态环境变量
run: |
if [ "${{ github.ref_name }}" = "main" ]; then
echo "DOCKER_TAG_SUFFIX=latest" >> $GITHUB_ENV
echo "CONTAINER_NAME=ppanel-server" >> $GITHUB_ENV
echo "DEPLOY_PATH=/root/vpn_server" >> $GITHUB_ENV
echo "为 main 分支设置生产环境变量"
elif [ "${{ github.ref_name }}" = "dev" ]; then
echo "DOCKER_TAG_SUFFIX=dev" >> $GITHUB_ENV
echo "CONTAINER_NAME=ppanel-server-dev" >> $GITHUB_ENV
echo "DEPLOY_PATH=/root/vpn_server_dev" >> $GITHUB_ENV
echo "为 dev 分支设置开发环境变量"
else
echo "DOCKER_TAG_SUFFIX=${{ github.ref_name }}" >> $GITHUB_ENV
echo "CONTAINER_NAME=ppanel-server-${{ github.ref_name }}" >> $GITHUB_ENV
echo "DEPLOY_PATH=/root/vpn_server_other" >> $GITHUB_ENV
echo "为其他分支 (${{ github.ref_name }}) 设置环境变量"
fi
# 步骤3: 安装系统工具 (Docker, curl, jq)
- name: 🔧 安装系统工具 (Docker, curl, jq)
run: |
set -e
export DEBIAN_FRONTEND=noninteractive
echo "等待 apt/dpkg 锁释放 (unattended-upgrades)..."
# 等待最多 300 秒让 unattended-upgrades/apt/dpkg 锁释放
end=$((SECONDS+300))
while true; do
LOCKS_BUSY=0
# 如果 unattended-upgrades 正在运行,标记为忙碌
if pgrep -x unattended-upgrades >/dev/null 2>&1; then LOCKS_BUSY=1; fi
# 如果 fuser 存在,检查常见的锁文件
if command -v fuser >/dev/null 2>&1; then
if fuser /var/lib/dpkg/lock >/dev/null 2>&1 \
|| fuser /var/lib/dpkg/lock-frontend >/dev/null 2>&1 \
|| fuser /var/lib/apt/lists/lock >/dev/null 2>&1; then
LOCKS_BUSY=1
fi
fi
# 如果不忙碌则跳出循环
if [ "$LOCKS_BUSY" -eq 0 ]; then break; fi
# 超时后约 5 分钟
if [ $SECONDS -ge $end ]; then
echo "等待 apt/dpkg 锁超时,使用 Dpkg::Lock::Timeout 继续..."
break
fi
echo "仍在等待锁释放..."; sleep 5
done
apt-get update -y -o Dpkg::Lock::Timeout=600
apt-get install -y -o Dpkg::Lock::Timeout=600 jq curl ca-certificates docker.io
docker --version
jq --version
curl --version
# 步骤4: 构建并发布到镜像仓库
- name: 📤 构建并发布到镜像仓库
run: |
echo "开始构建并推送镜像..."
echo "仓库: ${{ env.REPO }}"
echo "版本标签: ${{ env.VERSION }}"
echo "分支标签: ${{ env.DOCKER_TAG_SUFFIX }}"
# 构建镜像,同时打上版本和分支两个标签
docker build -f Dockerfile \
--platform linux/amd64 \
--build-arg TARGETARCH=amd64 \
--build-arg VERSION=${{ env.VERSION }} \
--build-arg BUILDTIME=${{ env.BUILDTIME }} \
-t ${{ env.REPO }}:${{ env.VERSION }} \
-t ${{ env.REPO }}:${{ env.DOCKER_TAG_SUFFIX }} \
.
echo "推送版本标签镜像: ${{ env.REPO }}:${{ env.VERSION }}"
docker push ${{ env.REPO }}:${{ env.VERSION }}
echo "推送分支标签镜像: ${{ env.REPO }}:${{ env.DOCKER_TAG_SUFFIX }}"
docker push ${{ env.REPO }}:${{ env.DOCKER_TAG_SUFFIX }}
echo "镜像推送完成"
# 步骤5: 连接服务器拉镜像启动
- name: 🚀 连接服务器拉镜像启动
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ env.SSH_HOST }}
username: ${{ env.SSH_USER }}
password: ${{ env.SSH_PASSWORD }}
port: ${{ env.SSH_PORT }}
timeout: 300s
command_timeout: 600s
script: |
echo "连接服务器成功,开始部署..."
echo "部署容器名: ${{ env.CONTAINER_NAME }}"
echo "部署路径: ${{ env.DEPLOY_PATH }}"
echo "部署镜像: ${{ env.REPO }}:${{ env.DOCKER_TAG_SUFFIX }}"
# 确保部署目录存在
mkdir -p ${{ env.DEPLOY_PATH }}/config
mkdir -p ${{ env.DEPLOY_PATH }}/logs
# 停止并删除旧容器(忽略所有错误)
if docker ps -a | grep -q ${{ env.CONTAINER_NAME }} 2>/dev/null; then
echo "停止旧容器..."
docker stop ${{ env.CONTAINER_NAME }} >/dev/null 2>&1 || true
echo "等待容器完全停止..."
sleep 5
echo "删除旧容器..."
# 静默删除,完全忽略错误输出
docker rm ${{ env.CONTAINER_NAME }} >/dev/null 2>&1 || true
sleep 2
# 如果仍然存在,尝试强制删除(静默)
if docker ps -a | grep -q ${{ env.CONTAINER_NAME }} 2>/dev/null; then
echo "尝试强制删除..."
docker rm -f ${{ env.CONTAINER_NAME }} >/dev/null 2>&1 || true
sleep 3
fi
echo "容器清理完成,继续部署..."
fi
# 拉取最新分支镜像
echo "拉取镜像: ${{ env.REPO }}:${{ env.DOCKER_TAG_SUFFIX }}..."
docker pull ${{ env.REPO }}:${{ env.DOCKER_TAG_SUFFIX }}
# 启动新容器
echo "启动新容器..."
cd ${{ env.DEPLOY_PATH }}
docker run -d \
--name ${{ env.CONTAINER_NAME }} \
--restart unless-stopped \
--network host \
-v ./config/ppanel.yaml:/app/etc/ppanel.yaml \
-v ./logs:/app/logs \
${{ env.REPO }}:${{ env.DOCKER_TAG_SUFFIX }}
# 检查容器状态
sleep 5
if docker ps | grep -q ${{ env.CONTAINER_NAME }}; then
echo "✅ 容器启动成功"
else
echo "❌ 容器启动失败"
docker logs ${{ env.CONTAINER_NAME }}
exit 1
fi
# 步骤6: TG通知 (成功)
- name: 📱 发送成功通知到Telegram
if: success()
uses: appleboy/telegram-action@master
with:
token: ${{ env.TG_BOT_TOKEN }}
to: ${{ env.TG_CHAT_ID }}
message: |
✅ 部署成功!
📦 项目: ${{ github.repository }}
🌿 分支: ${{ github.ref_name }}
📝 提交: ${{ github.sha }}
👤 提交者: ${{ github.actor }}
🕐 时间: ${{ github.event.head_commit.timestamp }}
🚀 服务已成功部署到生产环境
parse_mode: Markdown
# 步骤5: TG通知 (失败)
- name: 📱 发送失败通知到Telegram
if: failure()
uses: appleboy/telegram-action@master
with:
token: ${{ env.TG_BOT_TOKEN }}
to: ${{ env.TG_CHAT_ID }}
message: |
❌ 部署失败!
📦 项目: ${{ github.repository }}
🌿 分支: ${{ github.ref_name }}
📝 提交: ${{ github.sha }}
👤 提交者: ${{ github.actor }}
🕐 时间: ${{ github.event.head_commit.timestamp }}
⚠️ 请检查构建日志获取详细信息
parse_mode: Markdown

View File

@ -1,131 +0,0 @@
name: Release
on:
push:
tags:
- 'v*'
jobs:
build-docker:
runs-on: ubuntu-latest
env:
IMAGE_NAME: ppanel-server
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Extract version from git tag
id: version
run: echo "VERSION=$(git describe --tags --abbrev=0 | sed 's/^v//')" >> $GITHUB_ENV
- name: Get short SHA
id: sha
run: echo "GIT_SHA=${GITHUB_SHA::8}" >> $GITHUB_ENV
- name: Set BUILD_TIME env
run: echo BUILD_TIME=$(date --iso-8601=seconds) >> ${GITHUB_ENV}
- name: Build and push Docker image for main release
if: "!contains(github.ref_name, 'beta')"
uses: docker/build-push-action@v6
with:
context: .
file: Dockerfile
platforms: linux/amd64,linux/arm64
push: true
build-args: |
VERSION=${{ env.VERSION }}
tags: |
${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:latest
${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:${{ env.VERSION }}-${{ env.GIT_SHA }}
- name: Build and push Docker image for beta release
if: contains(github.ref_name, 'beta')
uses: docker/build-push-action@v6
with:
context: .
file: Dockerfile
platforms: linux/amd64,linux/arm64
push: true
build-args: |
VERSION=${{ env.VERSION }}
tags: |
${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:beta
${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:${{ env.VERSION }}-${{ env.GIT_SHA }}
release-notes:
runs-on: ubuntu-latest
needs: build-docker
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.21'
- name: Install GoReleaser
run: |
go install github.com/goreleaser/goreleaser/v2@latest
- name: Run GoReleaser
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
run: |
goreleaser check
goreleaser release --clean
releases-matrix:
name: Release ppanel-server binary
runs-on: ubuntu-latest
needs: release-notes # wait for release-notes job to finish
strategy:
matrix:
# build and publish in parallel: linux/386, linux/amd64, linux/arm64,
# windows/386, windows/amd64, windows/arm64, darwin/amd64, darwin/arm64
goos: [ linux, windows, darwin ]
goarch: [ '386', amd64, arm64 ]
exclude:
- goarch: '386'
goos: darwin
steps:
- uses: actions/checkout@v2
- name: Extract version from git tag
id: version
run: echo "VERSION=$(git describe --tags --abbrev=0 | sed 's/^v//')" >> $GITHUB_ENV
- name: Set BUILD_TIME env
run: echo BUILD_TIME=$(date --iso-8601=seconds) >> ${GITHUB_ENV}
- uses: actions/checkout@v4
- uses: wangyoucao577/go-release-action@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
goos: ${{ matrix.goos }}
goarch: ${{ matrix.goarch }}
asset_name: "ppanel-server-${{ matrix.goos }}-${{ matrix.goarch }}"
goversion: "https://dl.google.com/go/go1.23.3.linux-amd64.tar.gz"
project_path: "."
binary_name: "ppanel-server"
extra_files: LICENSE etc
ldflags: -X "github.com/perfect-panel/server/pkg/constant.Version=${{env.VERSION}}" -X "github.com/perfect-panel/server/pkg/constant.BuildTime=${{env.BUILD_TIME}}"

2
.gitignore vendored
View File

@ -3,10 +3,8 @@
*-dev.yaml *-dev.yaml
*.local.yaml *.local.yaml
/test/ /test/
*.log
.DS_Store .DS_Store
*_test_config.go *_test_config.go
*.log*
/build/ /build/
*.p8 *.p8
*.crt *.crt

View File

@ -24,12 +24,13 @@ RUN BUILD_TIME=$(date -u +"%Y-%m-%d %H:%M:%S") && \
go build -ldflags="-s -w -X 'github.com/perfect-panel/server/pkg/constant.Version=${VERSION}' -X 'github.com/perfect-panel/server/pkg/constant.BuildTime=${BUILD_TIME}'" -o /app/ppanel ppanel.go go build -ldflags="-s -w -X 'github.com/perfect-panel/server/pkg/constant.Version=${VERSION}' -X 'github.com/perfect-panel/server/pkg/constant.BuildTime=${BUILD_TIME}'" -o /app/ppanel ppanel.go
# Final minimal image # Final minimal image
FROM scratch FROM alpine:latest
# Copy CA certificates and timezone data # Copy CA certificates and timezone data
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=builder /usr/share/zoneinfo/Asia/Shanghai /usr/share/zoneinfo/Asia/Shanghai COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo
# Set Shanghai timezone
ENV TZ=Asia/Shanghai ENV TZ=Asia/Shanghai
# Set working directory and copy binary # Set working directory and copy binary
@ -37,6 +38,7 @@ WORKDIR /app
COPY --from=builder /app/ppanel /app/ppanel COPY --from=builder /app/ppanel /app/ppanel
COPY --from=builder /build/etc /app/etc COPY --from=builder /build/etc /app/etc
COPY --from=builder /build/logs /app/logs
# Expose the port (optional) # Expose the port (optional)
EXPOSE 8080 EXPOSE 8080

139
Makefile
View File

@ -1,84 +1,73 @@
NAME="ppanel-server" # Custom configuration | 独立配置
BINDIR=bin # Service name | 项目名称
VERSION=$(shell git describe --tags || echo "unknown version") SERVICE=ppanel
BUILDTIME=$(shell date -u) # Service name in specific style | 项目经过style格式化的名称
SERVICE_STYLE=ppanel
# Service name in lowercase | 项目名称全小写格式
SERVICE_LOWER=ppanel
# Service name in snake format | 项目名称下划线格式
SERVICE_SNAKE=ppanel
# Service name in snake format | 项目名称短杠格式
SERVICE_DASH=ppanel
# The project version, if you don't use git, you should set it manually | 项目版本如果不使用git请手动设置
VERSION=$(shell git describe --tags --always)
# Build time | 构建时间
BUILDTIME=$(shell date '+%Y-%m-%d %H:%M:%S')
# The project file name style | 项目文件命名风格
PROJECT_STYLE=go_zero
# Whether to use i18n | 是否启用 i18n
PROJECT_I18N=true
# The suffix after build or compile | 构建后缀
PROJECT_BUILD_SUFFIX=api
# The arch of the build | 构建的架构
GOARCH=amd64
# The repository of docker | Docker 仓库地址
DOCKER_REPO=docker.i.on ticcheck
# ---- You may not need to modify the codes below | 下面的代码大概率不需要更改 ----
GO ?= go
GOFMT ?= gofmt "-s"
GOFILES := $(shell find . -name "*.go")
LDFLAGS := -s -w
# Build command with version injection | 带版本信息注入的构建命令
GOBUILD=CGO_ENABLED=0 go build -trimpath -ldflags '-X "github.com/perfect-panel/server/pkg/constant.Version=$(VERSION)" \ GOBUILD=CGO_ENABLED=0 go build -trimpath -ldflags '-X "github.com/perfect-panel/server/pkg/constant.Version=$(VERSION)" \
-X "github.com/perfect-panel/server/pkg/constant.BuildTime=$(BUILDTIME)" \ -X "github.com/perfect-panel/server/pkg/constant.BuildTime=$(BUILDTIME)" \
-w -s -buildid=' -w -s -buildid='
PLATFORM_LIST = \ .PHONY: docker
darwin-amd64 \ docker: # Build the docker image | 构建 docker 镜像
darwin-amd64-v3 \ docker build -f Dockerfile -t ${API_IMAGE_NAME}:${VERSION} .
darwin-arm64 \ @echo "Build docker successfully"
linux-386 \
linux-amd64 \
linux-amd64-v3 \
linux-armv5 \
linux-armv6 \
linux-armv7 \
linux-arm64 \
WINDOWS_ARCH_LIST = \ .PHONY: publish-docker
windows-386 \ publish-docker: # Publish docker image | 发布 docker 镜像
windows-amd64 \ docker tag ${API_IMAGE_NAME}:${VERSION} ${API_IMAGE_NAME}:latest
windows-amd64-v3 \ docker push ${API_IMAGE_NAME}:latest
windows-arm64 \ @echo "Publish docker successfully"
windows-armv7
all: linux-amd64 darwin-amd64 windows-amd64 # Most used .PHONY: docker-run
docker-run: # Publish docker image | 发布 docker 镜像
darwin-amd64: docker rm -f ${API_CONTAINER_NAME}
GOARCH=amd64 GOOS=darwin $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ @echo "pwd: $(pwd)"
docker compose -p ${DOCKER_PROJECT_NAME} -f ${DOCKER_COMPOSE_FILE} up -d
darwin-amd64-v3: @echo "docker run successfully"
GOARCH=amd64 GOOS=darwin GOAMD64=v3 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
darwin-arm64:
GOARCH=arm64 GOOS=darwin $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
linux-386:
GOARCH=386 GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
linux-amd64:
GOARCH=amd64 GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
linux-amd64-v3:
GOARCH=amd64 GOOS=linux GOAMD64=v3 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
linux-armv5:
GOARCH=arm GOOS=linux GOARM=5 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
linux-armv6:
GOARCH=arm GOOS=linux GOARM=6 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
linux-armv7:
GOARCH=arm GOOS=linux GOARM=7 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
linux-arm64:
GOARCH=arm64 GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
windows-386:
GOARCH=386 GOOS=windows $(GOBUILD) -o $(BINDIR)/$(NAME)-$@.exe
windows-amd64:
GOARCH=amd64 GOOS=windows $(GOBUILD) -o $(BINDIR)/$(NAME)-$@.exe
windows-amd64-v3:
GOARCH=amd64 GOOS=windows GOAMD64=v3 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@.exe
windows-arm64:
GOARCH=arm64 GOOS=windows $(GOBUILD) -o $(BINDIR)/$(NAME)-$@.exe
windows-armv7:
GOARCH=arm GOOS=windows GOARM=7 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@.exe
gz_releases=$(addsuffix .gz, $(PLATFORM_LIST)) .PHONY: build-linux
zip_releases=$(addsuffix .zip, $(WINDOWS_ARCH_LIST)) build-linux: # Build project for Linux | 构建Linux下的可执行文件
GOOS=linux GOARCH=$(GOARCH) $(GOBUILD) -o /app/ppanel $(SERVICE_STYLE).go
@echo "Build project for Linux successfully"
$(gz_releases): %.gz : % .PHONY: help
chmod +x $(BINDIR)/$(NAME)-$(basename $@) help: # Show help | 显示帮助
gzip -f -S -$(VERSION).gz $(BINDIR)/$(NAME)-$(basename $@) @grep kfile | sort | while read-r l; do printf "\033[1;32m$$(echo $$l | cut -f 1 -d':')\033[00m:$$(echo $$l | cut -f 2- -d'#')\n"; done
$(zip_releases): %.zip : %
zip -m -j $(BINDIR)/$(NAME)-$(basename $@)-$(VERSION).zip $(BINDIR)/$(NAME)-$(basename $@).exe

View File

@ -113,9 +113,9 @@ proxy services. Built with Go, it emphasizes performance, security, and scalabil
``` ```
4. **Pull from Docker Hub** (after CI/CD publishes): 4. **Pull from Docker Hub** (after CI/CD publishes):
```bash ```bashw
docker pull ppanel/ppanel-server:latest docker pull yourusername/ppanel-server:latest
docker run --rm -p 8080:8080 ppanel/ppanel-server:latest docker run --rm -p 8080:8080 yourusername/ppanel-server:latest
``` ```
## 📖 API Documentation ## 📖 API Documentation

View File

@ -20,6 +20,7 @@ type (
Size int64 `form:"size"` Size int64 `form:"size"`
UserId int64 `form:"user_id,omitempty"` UserId int64 `form:"user_id,omitempty"`
Status *uint8 `form:"status,omitempty"` Status *uint8 `form:"status,omitempty"`
IssueType *uint8 `form:"issue_type,omitempty"`
Search string `form:"search,omitempty"` Search string `form:"search,omitempty"`
} }
GetTicketListResponse { GetTicketListResponse {

View File

@ -18,11 +18,13 @@ type (
CreateUserTicketRequest { CreateUserTicketRequest {
Title string `json:"title"` Title string `json:"title"`
Description string `json:"description"` Description string `json:"description"`
IssueType uint8 `json:"issue_type"`
} }
GetUserTicketListRequest { GetUserTicketListRequest {
Page int `form:"page"` Page int `form:"page"`
Size int `form:"size"` Size int `form:"size"`
Status *uint8 `form:"status,omitempty"` Status *uint8 `form:"status,omitempty"`
IssueType *uint8 `form:"issue_type,omitempty"`
Search string `form:"search,omitempty"` Search string `form:"search,omitempty"`
} }
GetUserTicketDetailRequest { GetUserTicketDetailRequest {

BIN
generate/gopure-darwin-amd64 → cache/GeoLite2-City.mmdb vendored Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 MiB

After

Width:  |  Height:  |  Size: 60 MiB

View File

@ -2,11 +2,11 @@ Host: 0.0.0.0
Port: 8080 Port: 8080
Debug: false Debug: false
JwtAuth: JwtAuth:
AccessSecret: 1234567890 AccessSecret: e4bbdb8ca57179374c0e8a7a85038da21341aee4bdff98c0e612751d7c362cac
AccessExpire: 604800 AccessExpire: 604800
Logger: Logger:
ServiceName: PPanel ServiceName: PPanel
Mode: console Mode: file
Encoding: plain Encoding: plain
TimeFormat: '2025-01-01 00:00:00.000' TimeFormat: '2025-01-01 00:00:00.000'
Path: logs Path: logs
@ -21,18 +21,30 @@ Logger:
Rotation: daily Rotation: daily
FileTimeFormat: 2025-01-01T00:00:00.000Z00:00 FileTimeFormat: 2025-01-01T00:00:00.000Z00:00
MySQL: MySQL:
Addr: 172.245.180.199:3306 Addr: 127.0.0.1:3306
Dbname: ppanel Dbname: dev_ppanel
Username: ppanel Username: root
Password: ppanelpassword Password: rootpassword
Config: charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai Config: charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai
MaxIdleConns: 10 MaxIdleConns: 10
MaxOpenConns: 10 MaxOpenConns: 10
SlowThreshold: 1000 SlowThreshold: 1000
Redis: Redis:
Host: ppanel-cache:6379 Host: 127.0.0.1:6379
Pass: Pass:
DB: 0 DB: 0
Administrator: Administrator:
Password: password Password: password
Email: admin@ppanel.dev Email: admin@ppanel.dev
Email:
Enable: true
Platform: smtp
PlatformConfig: '{"host":"smtp.gmail.com","port":465,"user":"devneeds52@gmail.com","pass":"bqxn hurw ckxt ookj","from":"devneeds52@gmail.com","ssl":true}'
EnableVerify: true
EnableNotify: true
EnableDomainSuffix: false
DomainSuffixList: ""
VerifyEmailTemplate: ""
ExpirationEmailTemplate: ""
MaintenanceEmailTemplate: ""
TrafficExceedEmailTemplate: ""

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -379,6 +379,7 @@ CREATE TABLE IF NOT EXISTS `user`
`referer_id` bigint DEFAULT NULL COMMENT 'Referrer ID', `referer_id` bigint DEFAULT NULL COMMENT 'Referrer ID',
`commission` bigint DEFAULT '0' COMMENT 'Commission', `commission` bigint DEFAULT '0' COMMENT 'Commission',
`gift_amount` bigint DEFAULT '0' COMMENT 'User Gift Amount', `gift_amount` bigint DEFAULT '0' COMMENT 'User Gift Amount',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'User Remark',
`enable` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'Is Account Enabled', `enable` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'Is Account Enabled',
`is_admin` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Is Admin', `is_admin` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Is Admin',
`valid_email` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Is Email Verified', `valid_email` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Is Email Verified',

View File

@ -0,0 +1,2 @@
-- Irreversible data migration for safety, or we could delete what we inserted.
-- For now, leaving empty to avoid accidental data loss on down.

View File

@ -0,0 +1,5 @@
INSERT INTO servers (id, name, country, city, address, sort, created_at, updated_at)
SELECT id, name, country, city, server_addr, sort, created_at, updated_at FROM server;
INSERT INTO nodes (name, tags, address, server_id, protocol, enabled, sort, created_at, updated_at)
SELECT name, tags, server_addr, id, protocol, enable, sort, created_at, updated_at FROM server;

View File

@ -19,15 +19,15 @@ func Migrate(ctx *svc.ServiceContext) {
} }
now := time.Now() now := time.Now()
if err := migrate.Migrate(mc.Dsn()).Up(); err != nil { if err := migrate.Migrate(mc.Dsn()).Up(); err != nil {
if errors.Is(err, migrate.NoChange) { if !errors.Is(err, migrate.NoChange) {
logger.Info("[Migrate] database not change")
return
}
logger.Errorf("[Migrate] Up error: %v", err.Error()) logger.Errorf("[Migrate] Up error: %v", err.Error())
panic(err) panic(err)
}
logger.Info("[Migrate] database not change")
} else { } else {
logger.Info("[Migrate] Database change, took " + time.Since(now).String()) logger.Info("[Migrate] Database change, took " + time.Since(now).String())
} }
// if not found admin user // if not found admin user
err := ctx.DB.Transaction(func(tx *gorm.DB) error { err := ctx.DB.Transaction(func(tx *gorm.DB) error {
var count int64 var count int64

View File

@ -4,6 +4,7 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/perfect-panel/server/internal/logic/public/user" "github.com/perfect-panel/server/internal/logic/public/user"
"github.com/perfect-panel/server/internal/svc" "github.com/perfect-panel/server/internal/svc"
"github.com/perfect-panel/server/internal/types"
"github.com/perfect-panel/server/pkg/result" "github.com/perfect-panel/server/pkg/result"
) )
@ -11,8 +12,15 @@ import (
func QueryUserBalanceLogHandler(svcCtx *svc.ServiceContext) func(c *gin.Context) { func QueryUserBalanceLogHandler(svcCtx *svc.ServiceContext) func(c *gin.Context) {
return func(c *gin.Context) { return func(c *gin.Context) {
var req types.QueryUserBalanceLogListRequest
_ = c.ShouldBind(&req)
validateErr := svcCtx.Validate(&req)
if validateErr != nil {
result.ParamErrorResult(c, validateErr)
return
}
l := user.NewQueryUserBalanceLogLogic(c.Request.Context(), svcCtx) l := user.NewQueryUserBalanceLogLogic(c.Request.Context(), svcCtx)
resp, err := l.QueryUserBalanceLog() resp, err := l.QueryUserBalanceLog(&req)
result.HttpResult(c, resp, err) result.HttpResult(c, resp, err)
} }
} }

View File

@ -27,7 +27,7 @@ func NewGetTicketListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Get
} }
func (l *GetTicketListLogic) GetTicketList(req *types.GetTicketListRequest) (resp *types.GetTicketListResponse, err error) { func (l *GetTicketListLogic) GetTicketList(req *types.GetTicketListRequest) (resp *types.GetTicketListResponse, err error) {
total, list, err := l.svcCtx.TicketModel.QueryTicketList(l.ctx, int(req.Page), int(req.Size), req.UserId, req.Status, req.Search) total, list, err := l.svcCtx.TicketModel.QueryTicketList(l.ctx, int(req.Page), int(req.Size), req.UserId, req.Status, req.IssueType, req.Search)
if err != nil { if err != nil {
l.Errorw("[GetTicketList] Query Database Error: ", logger.Field("error", err.Error())) l.Errorw("[GetTicketList] Query Database Error: ", logger.Field("error", err.Error()))
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "QueryTicketList error: %v", err) return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "QueryTicketList error: %v", err)

View File

@ -3,11 +3,6 @@ package common
import ( import (
"context" "context"
"encoding/json" "encoding/json"
"io"
"net"
"net/http"
"slices"
"strings"
"time" "time"
"github.com/perfect-panel/server/internal/config" "github.com/perfect-panel/server/internal/config"
@ -68,52 +63,14 @@ func (l *GetStatLogic) GetStat() (resp *types.GetStatResponse, err error) {
l.Logger.Error("[GetStatLogic] get server_addr failed: ", logger.Field("error", err.Error())) l.Logger.Error("[GetStatLogic] get server_addr failed: ", logger.Field("error", err.Error()))
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "get server_addr failed: %v", err.Error()) return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "get server_addr failed: %v", err.Error())
} }
type apireq struct {
query string country := 0
fields string
} protocolDict := make(map[string]struct{})
type apiret struct {
CountryCode string `json:"countryCode"`
}
//map as dict
type void struct{}
var v void
country := make(map[string]void)
for c := range slices.Chunk(nodeaddr, 100) {
var batchreq []apireq
for _, addr := range c {
isAddr := net.ParseIP(addr)
if isAddr == nil {
ip, err := net.LookupIP(addr)
if err == nil && len(ip) > 0 {
batchreq = append(batchreq, apireq{query: ip[0].String(), fields: "countryCode"})
}
} else {
batchreq = append(batchreq, apireq{query: addr, fields: "countryCode"})
}
}
req, _ := json.Marshal(batchreq)
ret, err := http.Post("http://ip-api.com/batch", "application/json", strings.NewReader(string(req)))
if err == nil {
retBytes, err := io.ReadAll(ret.Body)
if err == nil {
var retStruct []apiret
err := json.Unmarshal(retBytes, &retStruct)
if err == nil {
for _, dat := range retStruct {
if dat.CountryCode != "" {
country[dat.CountryCode] = v
}
}
}
}
}
}
protocolDict := make(map[string]void)
var protocol []string var protocol []string
l.svcCtx.DB.Model(&server.Server{}).Where("enable = true").Pluck("protocol", &protocol) l.svcCtx.DB.Model(&server.Server{}).Where("enable = true").Pluck("protocol", &protocol)
for _, p := range protocol { for _, p := range protocol {
protocolDict[p] = v protocolDict[p] = struct{}{}
} }
protocol = nil protocol = nil
for p := range protocolDict { for p := range protocolDict {
@ -122,7 +79,7 @@ func (l *GetStatLogic) GetStat() (resp *types.GetStatResponse, err error) {
resp = &types.GetStatResponse{ resp = &types.GetStatResponse{
User: u, User: u,
Node: n, Node: n,
Country: int64(len(country)), Country: int64(country),
Protocol: protocol, Protocol: protocol,
OnlineDevice: l.svcCtx.DeviceManager.GetOnlineDeviceCount(), OnlineDevice: l.svcCtx.DeviceManager.GetOnlineDeviceCount(),
} }

View File

@ -58,13 +58,17 @@ func (l *QuerySubscribeListLogic) QuerySubscribeList(req *types.QuerySubscribeLi
} }
list[i] = sub list[i] = sub
// 通过服务组查询关联的节点数量 // 通过服务组查询关联的节点数量
servers, err := l.svcCtx.ServerModel.FindServerListByGroupIds(l.ctx, tool.StringToInt64Slice(sub.ServerGroup)) if item.ServerGroup != "" {
servers, err := l.svcCtx.ServerModel.FindServerListByGroupIds(l.ctx, tool.StringToInt64Slice(item.ServerGroup))
if err != nil { if err != nil {
l.Errorw("[QuerySubscribeListLogic] FindServerListByGroupIds error", logger.Field("error", err.Error())) l.Errorw("[QuerySubscribeListLogic] FindServerListByGroupIds error", logger.Field("error", err.Error()))
sub.ServerCount = 0 sub.ServerCount = 0
} else { } else {
sub.ServerCount = int64(len(servers)) sub.ServerCount = int64(len(servers))
} }
} else {
sub.ServerCount = 0
}
list[i] = sub list[i] = sub
} }
resp.List = list resp.List = list

View File

@ -41,6 +41,7 @@ func (l *CreateUserTicketLogic) CreateUserTicket(req *types.CreateUserTicketRequ
Description: req.Description, Description: req.Description,
UserId: u.Id, UserId: u.Id,
Status: ticket.Pending, Status: ticket.Pending,
IssueType: req.IssueType,
}) })
if err != nil { if err != nil {
return errors.Wrapf(xerr.NewErrCode(xerr.DatabaseInsertError), "insert ticket error: %v", err.Error()) return errors.Wrapf(xerr.NewErrCode(xerr.DatabaseInsertError), "insert ticket error: %v", err.Error())

View File

@ -36,7 +36,7 @@ func (l *GetUserTicketListLogic) GetUserTicketList(req *types.GetUserTicketListR
return nil, errors.Wrapf(xerr.NewErrCode(xerr.InvalidAccess), "Invalid Access") return nil, errors.Wrapf(xerr.NewErrCode(xerr.InvalidAccess), "Invalid Access")
} }
l.Logger.Debugf("Current user: %v", u.Id) l.Logger.Debugf("Current user: %v", u.Id)
total, list, err := l.svcCtx.TicketModel.QueryTicketList(l.ctx, req.Page, req.Size, u.Id, req.Status, req.Search) total, list, err := l.svcCtx.TicketModel.QueryTicketList(l.ctx, req.Page, req.Size, u.Id, req.Status, req.IssueType, req.Search)
if err != nil { if err != nil {
l.Errorw("[GetUserTicketListLogic] Database Error", logger.Field("error", err.Error())) l.Errorw("[GetUserTicketListLogic] Database Error", logger.Field("error", err.Error()))
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "QueryTicketList error: %v", err) return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "QueryTicketList error: %v", err)

View File

@ -29,7 +29,7 @@ func NewQueryUserBalanceLogLogic(ctx context.Context, svcCtx *svc.ServiceContext
} }
} }
func (l *QueryUserBalanceLogLogic) QueryUserBalanceLog() (resp *types.QueryUserBalanceLogListResponse, err error) { func (l *QueryUserBalanceLogLogic) QueryUserBalanceLog(req *types.QueryUserBalanceLogListRequest) (resp *types.QueryUserBalanceLogListResponse, err error) {
u, ok := l.ctx.Value(constant.CtxKeyUser).(*user.User) u, ok := l.ctx.Value(constant.CtxKeyUser).(*user.User)
if !ok { if !ok {
logger.Error("current user is not found in context") logger.Error("current user is not found in context")

View File

@ -12,6 +12,9 @@ const (
RelayModeNone = "none" RelayModeNone = "none"
RelayModeAll = "all" RelayModeAll = "all"
RelayModeRandom = "random" RelayModeRandom = "random"
RelayModeMixed = "mixed"
RelayModeAllDirect = "all_direct"
RelayModeRandomDirect = "random_direct"
RuleGroupTypeReject = "reject" RuleGroupTypeReject = "reject"
RuleGroupTypeDefault = "default" RuleGroupTypeDefault = "default"
RuleGroupTypeDirect = "direct" RuleGroupTypeDirect = "direct"

View File

@ -17,6 +17,7 @@ type Details struct {
Description string `gorm:"type:text;comment:Description"` Description string `gorm:"type:text;comment:Description"`
UserId int64 `gorm:"type:bigint;not null;default:0;comment:UserId"` UserId int64 `gorm:"type:bigint;not null;default:0;comment:UserId"`
Status uint8 `gorm:"type:tinyint(1);not null;default:1;comment:Status"` Status uint8 `gorm:"type:tinyint(1);not null;default:1;comment:Status"`
IssueType uint8 `gorm:"type:tinyint(1);not null;default:0;comment:Issue Type: 0 ticket, 1 withdraw"`
Follows []Follow `gorm:"foreignKey:TicketId;references:Id"` Follows []Follow `gorm:"foreignKey:TicketId;references:Id"`
CreatedAt time.Time `gorm:"<-:create;comment:Create Time"` CreatedAt time.Time `gorm:"<-:create;comment:Create Time"`
UpdatedAt time.Time `gorm:"comment:Update Time"` UpdatedAt time.Time `gorm:"comment:Update Time"`
@ -24,7 +25,7 @@ type Details struct {
type customTicketLogicModel interface { type customTicketLogicModel interface {
QueryTicketDetail(ctx context.Context, id int64) (*Details, error) QueryTicketDetail(ctx context.Context, id int64) (*Details, error)
InsertTicketFollow(ctx context.Context, data *Follow) error InsertTicketFollow(ctx context.Context, data *Follow) error
QueryTicketList(ctx context.Context, page, size int, userId int64, status *uint8, search string) (int64, []*Ticket, error) QueryTicketList(ctx context.Context, page, size int, userId int64, status *uint8, issueType *uint8, search string) (int64, []*Ticket, error)
UpdateTicketStatus(ctx context.Context, id, userId int64, status uint8) error UpdateTicketStatus(ctx context.Context, id, userId int64, status uint8) error
QueryWaitReplyTotal(ctx context.Context) (int64, error) QueryWaitReplyTotal(ctx context.Context) (int64, error)
} }
@ -55,7 +56,7 @@ func (m *customTicketModel) InsertTicketFollow(ctx context.Context, data *Follow
} }
// QueryTicketList returns the ticket list. // QueryTicketList returns the ticket list.
func (m *customTicketModel) QueryTicketList(ctx context.Context, page, size int, userId int64, status *uint8, search string) (int64, []*Ticket, error) { func (m *customTicketModel) QueryTicketList(ctx context.Context, page, size int, userId int64, status *uint8, issueType *uint8, search string) (int64, []*Ticket, error) {
var data []*Ticket var data []*Ticket
var total int64 var total int64
err := m.QueryNoCacheCtx(ctx, &data, func(conn *gorm.DB, v interface{}) error { err := m.QueryNoCacheCtx(ctx, &data, func(conn *gorm.DB, v interface{}) error {
@ -65,8 +66,9 @@ func (m *customTicketModel) QueryTicketList(ctx context.Context, page, size int,
} }
if status != nil { if status != nil {
query = query.Where("status = ?", status) query = query.Where("status = ?", status)
} else { }
query = query.Where("status != ?", 4) if issueType != nil {
query = query.Where("issue_type = ?", issueType)
} }
if search != "" { if search != "" {
query = query.Where("title like ? or description like ?", "%"+search+"%", "%"+search+"%") query = query.Where("title like ? or description like ?", "%"+search+"%", "%"+search+"%")

View File

@ -12,9 +12,10 @@ const (
type Ticket struct { type Ticket struct {
Id int64 `gorm:"primaryKey"` Id int64 `gorm:"primaryKey"`
Title string `gorm:"type:varchar(255);not null;default:'';comment:Title"` Title string `gorm:"type:varchar(255);not null;default:'';comment:Title"`
Description string `gorm:"type:text;comment:Description"` Description string `gorm:"type:longtext;comment:Description"`
UserId int64 `gorm:"type:bigint;not null;default:0;comment:UserId"` UserId int64 `gorm:"type:bigint;not null;default:0;comment:UserId"`
Status uint8 `gorm:"type:tinyint(1);not null;default:1;comment:Status"` Status uint8 `gorm:"type:tinyint(1);not null;default:1;comment:Status"`
IssueType uint8 `gorm:"type:tinyint(1);not null;default:0;comment:Issue Type: 0 ticket, 1 withdraw"`
CreatedAt time.Time `gorm:"<-:create;comment:Create Time"` CreatedAt time.Time `gorm:"<-:create;comment:Create Time"`
UpdatedAt time.Time `gorm:"comment:Update Time"` UpdatedAt time.Time `gorm:"comment:Update Time"`
} }

View File

@ -118,6 +118,6 @@ func (m *customTrafficModel) TopUsersTrafficByMonthly(ctx context.Context, date
func (m *customTrafficModel) QueryTrafficLogPageList(ctx context.Context, userId, subscribeId int64, page, size int) ([]*TrafficLog, int64, error) { func (m *customTrafficModel) QueryTrafficLogPageList(ctx context.Context, userId, subscribeId int64, page, size int) ([]*TrafficLog, int64, error) {
var list []*TrafficLog var list []*TrafficLog
var total int64 var total int64
err := m.Conn.WithContext(ctx).Model(&TrafficLog{}).Where("user_id = ? and subscribe_id= ?", userId, subscribeId).Count(&total).Limit(size).Offset((page - 1) * size).Find(&list).Error err := m.Conn.WithContext(ctx).Model(&TrafficLog{}).Where("user_id = ? and subscribe_id= ?", userId, subscribeId).Count(&total).Order("timestamp DESC").Limit(size).Offset((page - 1) * size).Find(&list).Error
return list, total, err return list, total, err
} }

View File

@ -17,6 +17,7 @@ type User struct {
ReferralPercentage uint8 `gorm:"default:0;comment:Referral"` // Referral Percentage ReferralPercentage uint8 `gorm:"default:0;comment:Referral"` // Referral Percentage
OnlyFirstPurchase *bool `gorm:"default:true;not null;comment:Only First Purchase"` // Only First Purchase Referral OnlyFirstPurchase *bool `gorm:"default:true;not null;comment:Only First Purchase"` // Only First Purchase Referral
GiftAmount int64 `gorm:"default:0;comment:User Gift Amount"` GiftAmount int64 `gorm:"default:0;comment:User Gift Amount"`
Remark string `gorm:"type:varchar(255);default:'';comment:User Remark"`
Enable *bool `gorm:"default:true;not null;comment:Is Account Enabled"` Enable *bool `gorm:"default:true;not null;comment:Is Account Enabled"`
IsAdmin *bool `gorm:"default:false;not null;comment:Is Admin"` IsAdmin *bool `gorm:"default:false;not null;comment:Is Admin"`
EnableBalanceNotify *bool `gorm:"default:false;not null;comment:Enable Balance Change Notifications"` EnableBalanceNotify *bool `gorm:"default:false;not null;comment:Enable Balance Change Notifications"`

View File

@ -2,9 +2,11 @@ package svc
import ( import (
"context" "context"
"fmt"
"github.com/perfect-panel/server/internal/model/client" "github.com/perfect-panel/server/internal/model/client"
"github.com/perfect-panel/server/internal/model/node" "github.com/perfect-panel/server/internal/model/node"
"github.com/perfect-panel/server/internal/model/server"
"github.com/perfect-panel/server/pkg/device" "github.com/perfect-panel/server/pkg/device"
"github.com/perfect-panel/server/internal/config" "github.com/perfect-panel/server/internal/config"
@ -17,7 +19,6 @@ import (
"github.com/perfect-panel/server/internal/model/order" "github.com/perfect-panel/server/internal/model/order"
"github.com/perfect-panel/server/internal/model/payment" "github.com/perfect-panel/server/internal/model/payment"
"github.com/perfect-panel/server/internal/model/subscribe" "github.com/perfect-panel/server/internal/model/subscribe"
"github.com/perfect-panel/server/internal/model/server"
"github.com/perfect-panel/server/internal/model/system" "github.com/perfect-panel/server/internal/model/system"
"github.com/perfect-panel/server/internal/model/ticket" "github.com/perfect-panel/server/internal/model/ticket"
"github.com/perfect-panel/server/internal/model/traffic" "github.com/perfect-panel/server/internal/model/traffic"
@ -78,7 +79,8 @@ func NewServiceContext(c config.Config) *ServiceContext {
// IP location initialize // IP location initialize
geoIP, err := NewIPLocation("./cache/GeoLite2-City.mmdb") geoIP, err := NewIPLocation("./cache/GeoLite2-City.mmdb")
if err != nil { if err != nil {
panic(err.Error()) // panic(err.Error())
fmt.Printf("GeoIP load failed: %v\n", err)
} }
rds := redis.NewClient(&redis.Options{ rds := redis.NewClient(&redis.Options{

View File

@ -457,6 +457,7 @@ type CreateUserTicketFollowRequest struct {
type CreateUserTicketRequest struct { type CreateUserTicketRequest struct {
Title string `json:"title"` Title string `json:"title"`
Description string `json:"description"` Description string `json:"description"`
IssueType uint8 `json:"issue_type"`
} }
type Currency struct { type Currency struct {
@ -1015,6 +1016,7 @@ type GetTicketListRequest struct {
Size int64 `form:"size"` Size int64 `form:"size"`
UserId int64 `form:"user_id,omitempty"` UserId int64 `form:"user_id,omitempty"`
Status *uint8 `form:"status,omitempty"` Status *uint8 `form:"status,omitempty"`
IssueType *uint8 `form:"issue_type,omitempty"`
Search string `form:"search,omitempty"` Search string `form:"search,omitempty"`
} }
@ -1136,6 +1138,7 @@ type GetUserTicketListRequest struct {
Page int `form:"page"` Page int `form:"page"`
Size int `form:"size"` Size int `form:"size"`
Status *uint8 `form:"status,omitempty"` Status *uint8 `form:"status,omitempty"`
IssueType *uint8 `form:"issue_type,omitempty"`
Search string `form:"search,omitempty"` Search string `form:"search,omitempty"`
} }
@ -1700,6 +1703,11 @@ type QueryUserAffiliateListRequest struct {
Size int `form:"size"` Size int `form:"size"`
} }
type QueryUserBalanceLogListRequest struct {
Page int `form:"page"`
Size int `form:"size"`
}
type QueryUserAffiliateListResponse struct { type QueryUserAffiliateListResponse struct {
List []UserAffiliate `json:"list"` List []UserAffiliate `json:"list"`
Total int64 `json:"total"` Total int64 `json:"total"`
@ -2212,6 +2220,7 @@ type Ticket struct {
UserId int64 `json:"user_id"` UserId int64 `json:"user_id"`
Follows []Follow `json:"follow,omitempty"` Follows []Follow `json:"follow,omitempty"`
Status uint8 `json:"status"` Status uint8 `json:"status"`
IssueType uint8 `json:"issue_type"`
CreatedAt int64 `json:"created_at"` CreatedAt int64 `json:"created_at"`
UpdatedAt int64 `json:"updated_at"` UpdatedAt int64 `json:"updated_at"`
} }
@ -2531,6 +2540,7 @@ type User struct {
Telegram int64 `json:"telegram"` Telegram int64 `json:"telegram"`
ReferCode string `json:"refer_code"` ReferCode string `json:"refer_code"`
RefererId int64 `json:"referer_id"` RefererId int64 `json:"referer_id"`
Remark string `json:"remark"`
Enable bool `json:"enable"` Enable bool `json:"enable"`
IsAdmin bool `json:"is_admin,omitempty"` IsAdmin bool `json:"is_admin,omitempty"`
EnableBalanceNotify bool `json:"enable_balance_notify"` EnableBalanceNotify bool `json:"enable_balance_notify"`

2724
logs/access.log Normal file

File diff suppressed because it is too large Load Diff

373
logs/error.log Normal file
View File

@ -0,0 +1,373 @@
282844-12-12 00:00:00.565  error  [GORM] Error: failed to initialize database, got error %v%!(EXTRA []interface {}=[Error 1044 (42000): Access denied for user 'ppanel'@'%' to database 'dev_ppanel']) caller=cmd/run.go:45
282846-12-12 00:00:00.884  error  [Init Telegram Config] New Bot API Error: {error Not Found} caller=initialize/telegram.go:39
282853-12-12 00:00:00.082  error  [Init Telegram Config] New Bot API Error: {error Not Found} caller=initialize/telegram.go:39
282838-12-12 00:00:00.834  error  [Init Telegram Config] New Bot API Error: {error Not Found} caller=initialize/telegram.go:39
282823-12-12 00:00:00.159  error  [Init Telegram Config] New Bot API Error: {error Not Found} caller=initialize/telegram.go:39
282846-12-12 00:00:00.833  error  [Init Telegram Config] New Bot API Error: {error Not Found} caller=initialize/telegram.go:39
282846-12-12 00:00:00.607  error  [GORM] duration=0.6ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 40 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found span=a9cb25de71e65b28 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc
282846-12-12 00:00:00.741  error  [GORM] duration=1.2ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 3 ORDER BY `servers`.`id` LIMIT 1 error=record not found span=a9cb25de71e65b28 rows=0 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc
282846-12-12 00:00:00.741  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=3 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28
282846-12-12 00:00:00.741  error  [GORM] duration=0.4ms caller=gin@v1.10.0/context.go:185 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc sql=SELECT * FROM `servers` WHERE id = 33 ORDER BY `servers`.`id` LIMIT 1 error=record not found span=a9cb25de71e65b28 rows=0
282846-12-12 00:00:00.741  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=33 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28
282846-12-12 00:00:00.742  error  [GORM] duration=0.4ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 17 ORDER BY `servers`.`id` LIMIT 1 rows=0 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc error=record not found span=a9cb25de71e65b28
282846-12-12 00:00:00.742  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=17 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28
282846-12-12 00:00:00.743  error  [GORM] duration=0.5ms caller=gin@v1.10.0/context.go:185 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28 sql=SELECT * FROM `servers` WHERE id = 14 ORDER BY `servers`.`id` LIMIT 1 rows=0 error=record not found
282846-12-12 00:00:00.743  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28 error=record not found server_id=14
282846-12-12 00:00:00.743  error  [GORM] duration=0.4ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 2 ORDER BY `servers`.`id` LIMIT 1 rows=0 span=a9cb25de71e65b28 error=record not found trace=f0b57ce4a5f49a0909eb9884b8f9a8bc
282846-12-12 00:00:00.743  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=2 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28
282846-12-12 00:00:00.743  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 34 ORDER BY `servers`.`id` LIMIT 1 span=a9cb25de71e65b28 rows=0 error=record not found trace=f0b57ce4a5f49a0909eb9884b8f9a8bc
282846-12-12 00:00:00.743  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28 error=record not found server_id=34
282846-12-12 00:00:00.744  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 32 ORDER BY `servers`.`id` LIMIT 1 rows=0 error=record not found span=a9cb25de71e65b28 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc
282846-12-12 00:00:00.744  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=32 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28
282846-12-12 00:00:00.744  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 23 ORDER BY `servers`.`id` LIMIT 1 rows=0 error=record not found trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28
282846-12-12 00:00:00.744  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=23 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28
282846-12-12 00:00:00.744  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 error=record not found span=a9cb25de71e65b28 sql=SELECT * FROM `servers` WHERE id = 28 ORDER BY `servers`.`id` LIMIT 1 rows=0 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc
282846-12-12 00:00:00.744  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=28 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28
282846-12-12 00:00:00.745  error  [GORM] duration=0.7ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 30 ORDER BY `servers`.`id` LIMIT 1 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc rows=0 error=record not found span=a9cb25de71e65b28
282846-12-12 00:00:00.745  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=30 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28
282846-12-12 00:00:00.746  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 41 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28 error=record not found
282846-12-12 00:00:00.852  error  [GORM] duration=0.5ms caller=middleware/authMiddleware.go:83 rows=0 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found span=a9cb25de71e65b28
282846-12-12 00:00:00.852  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-26' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found span=a9cb25de71e65b28 rows=0 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc
282846-12-12 00:00:00.853  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-25' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found span=a9cb25de71e65b28
282846-12-12 00:00:00.853  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-24' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found rows=0 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28
282846-12-12 00:00:00.853  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-23' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found
282846-12-12 00:00:00.854  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 span=a9cb25de71e65b28 rows=0 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-22' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc
282846-12-12 00:00:00.854  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-21' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28
282846-12-12 00:00:00.854  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-20' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28
282846-12-12 00:00:00.855  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-19' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found
282846-12-12 00:00:00.855  error  [GORM] duration=0.2ms caller=middleware/authMiddleware.go:83 rows=0 error=record not found trace=f0b57ce4a5f49a0909eb9884b8f9a8bc sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-18' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 span=a9cb25de71e65b28
282846-12-12 00:00:00.855  error  [GORM] duration=0.2ms caller=middleware/authMiddleware.go:83 rows=0 error=record not found trace=f0b57ce4a5f49a0909eb9884b8f9a8bc sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-17' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 span=a9cb25de71e65b28
282846-12-12 00:00:00.855  error  [GORM] duration=0.2ms caller=middleware/authMiddleware.go:83 error=record not found span=a9cb25de71e65b28 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-16' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc rows=0
282846-12-12 00:00:00.856  error  [GORM] duration=0.2ms caller=middleware/authMiddleware.go:83 rows=0 error=record not found trace=f0b57ce4a5f49a0909eb9884b8f9a8bc sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-15' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 span=a9cb25de71e65b28
282846-12-12 00:00:00.856  error  [GORM] duration=0.2ms caller=middleware/authMiddleware.go:83 error=record not found trace=f0b57ce4a5f49a0909eb9884b8f9a8bc sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-14' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 span=a9cb25de71e65b28
282846-12-12 00:00:00.856  error  [GORM] duration=0.2ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-13' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28 rows=0
282846-12-12 00:00:00.856  error  [GORM] duration=0.2ms caller=middleware/authMiddleware.go:83 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28 rows=0 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-12' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1
282846-12-12 00:00:00.857  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 error=record not found trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-11' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1
282846-12-12 00:00:00.857  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 error=record not found span=a9cb25de71e65b28 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-10' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc
282846-12-12 00:00:00.857  error  [GORM] duration=0.2ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-09' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found span=a9cb25de71e65b28 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc
282846-12-12 00:00:00.858  error  [GORM] duration=0.2ms caller=middleware/authMiddleware.go:83 error=record not found trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28 rows=0 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-08' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1
282846-12-12 00:00:00.858  error  [GORM] duration=0.2ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-07' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28
282846-12-12 00:00:00.858  error  [GORM] duration=0.2ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-06' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc rows=0 error=record not found span=a9cb25de71e65b28
282846-12-12 00:00:00.859  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 error=record not found trace=f0b57ce4a5f49a0909eb9884b8f9a8bc sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-05' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 span=a9cb25de71e65b28
282846-12-12 00:00:00.859  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-04' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found span=a9cb25de71e65b28 rows=0 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc
282846-12-12 00:00:00.859  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 error=record not found span=a9cb25de71e65b28 trace=f0b57ce4a5f49a0909eb9884b8f9a8bc sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-03' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0
282846-12-12 00:00:00.859  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-02' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28 rows=0
282846-12-12 00:00:00.860  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-01' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=f0b57ce4a5f49a0909eb9884b8f9a8bc span=a9cb25de71e65b28
282857-12-12 00:00:00.430  error  [GORM] duration=0.7ms caller=middleware/authMiddleware.go:83 error=record not found span=4aa98859fe771447 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 40 ORDER BY `system_logs`.`id` LIMIT 1 trace=7020c167bf1a087382d7f1d7c57a3e60 rows=0
282857-12-12 00:00:00.563  error  [GORM] duration=2.0ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 3 ORDER BY `servers`.`id` LIMIT 1 error=record not found span=4aa98859fe771447 rows=0 trace=7020c167bf1a087382d7f1d7c57a3e60
282857-12-12 00:00:00.563  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 server_id=3 trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447 error=record not found
282857-12-12 00:00:00.563  error  [GORM] duration=0.6ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 33 ORDER BY `servers`.`id` LIMIT 1 error=record not found rows=0 trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447
282857-12-12 00:00:00.563  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=33 trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447
282857-12-12 00:00:00.564  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 rows=0 trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447 error=record not found sql=SELECT * FROM `servers` WHERE id = 17 ORDER BY `servers`.`id` LIMIT 1
282857-12-12 00:00:00.564  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447 error=record not found server_id=17
282857-12-12 00:00:00.564  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 rows=0 span=4aa98859fe771447 sql=SELECT * FROM `servers` WHERE id = 14 ORDER BY `servers`.`id` LIMIT 1 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60
282857-12-12 00:00:00.564  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=14 trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447
282857-12-12 00:00:00.564  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 span=4aa98859fe771447 sql=SELECT * FROM `servers` WHERE id = 2 ORDER BY `servers`.`id` LIMIT 1 rows=0 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60
282857-12-12 00:00:00.564  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=2 trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447
282857-12-12 00:00:00.565  error  [GORM] duration=0.2ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 34 ORDER BY `servers`.`id` LIMIT 1 rows=0 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447
282857-12-12 00:00:00.565  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 server_id=34 trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447 error=record not found
282857-12-12 00:00:00.565  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 32 ORDER BY `servers`.`id` LIMIT 1 rows=0 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447
282857-12-12 00:00:00.565  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=32 trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447
282857-12-12 00:00:00.565  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 rows=0 span=4aa98859fe771447 sql=SELECT * FROM `servers` WHERE id = 23 ORDER BY `servers`.`id` LIMIT 1 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60
282857-12-12 00:00:00.565  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 span=4aa98859fe771447 error=record not found server_id=23 trace=7020c167bf1a087382d7f1d7c57a3e60
282857-12-12 00:00:00.566  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 span=4aa98859fe771447 sql=SELECT * FROM `servers` WHERE id = 28 ORDER BY `servers`.`id` LIMIT 1 rows=0 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60
282857-12-12 00:00:00.566  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 server_id=28 trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447 error=record not found
282857-12-12 00:00:00.566  error  [GORM] duration=0.4ms caller=gin@v1.10.0/context.go:185 rows=0 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447 sql=SELECT * FROM `servers` WHERE id = 30 ORDER BY `servers`.`id` LIMIT 1
282857-12-12 00:00:00.566  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447 error=record not found server_id=30
282857-12-12 00:00:00.566  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 41 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60 rows=0 span=4aa98859fe771447
282857-12-12 00:00:00.668  error  [GORM] duration=0.5ms caller=middleware/authMiddleware.go:83 span=4aa98859fe771447 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60
282857-12-12 00:00:00.669  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-26' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 span=4aa98859fe771447 rows=0 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60
282857-12-12 00:00:00.669  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-25' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=7020c167bf1a087382d7f1d7c57a3e60 error=record not found span=4aa98859fe771447
282857-12-12 00:00:00.670  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-24' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447
282857-12-12 00:00:00.670  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-23' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447
282857-12-12 00:00:00.670  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 trace=7020c167bf1a087382d7f1d7c57a3e60 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-22' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 span=4aa98859fe771447 error=record not found
282857-12-12 00:00:00.670  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 trace=7020c167bf1a087382d7f1d7c57a3e60 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-21' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found span=4aa98859fe771447
282857-12-12 00:00:00.671  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 trace=7020c167bf1a087382d7f1d7c57a3e60 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-20' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 span=4aa98859fe771447 error=record not found
282857-12-12 00:00:00.671  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 trace=7020c167bf1a087382d7f1d7c57a3e60 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-19' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found span=4aa98859fe771447
282857-12-12 00:00:00.671  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 trace=7020c167bf1a087382d7f1d7c57a3e60 rows=0 span=4aa98859fe771447 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-18' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found
282857-12-12 00:00:00.672  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-17' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0
282857-12-12 00:00:00.672  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-16' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447
282857-12-12 00:00:00.672  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 error=record not found span=4aa98859fe771447 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-15' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=7020c167bf1a087382d7f1d7c57a3e60
282857-12-12 00:00:00.673  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-14' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 span=4aa98859fe771447 rows=0 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60
282857-12-12 00:00:00.673  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 error=record not found span=4aa98859fe771447 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-13' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=7020c167bf1a087382d7f1d7c57a3e60
282857-12-12 00:00:00.673  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-12' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447
282857-12-12 00:00:00.674  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 rows=0 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-11' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1
282857-12-12 00:00:00.674  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-10' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 span=4aa98859fe771447
282857-12-12 00:00:00.674  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-09' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447
282857-12-12 00:00:00.675  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-08' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found span=4aa98859fe771447 rows=0 trace=7020c167bf1a087382d7f1d7c57a3e60
282857-12-12 00:00:00.675  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 trace=7020c167bf1a087382d7f1d7c57a3e60 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-07' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found span=4aa98859fe771447
282857-12-12 00:00:00.675  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-06' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447 rows=0
282857-12-12 00:00:00.676  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-05' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found
282857-12-12 00:00:00.676  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-04' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447 rows=0 error=record not found
282857-12-12 00:00:00.676  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-03' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60 rows=0 span=4aa98859fe771447
282857-12-12 00:00:00.676  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-02' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found trace=7020c167bf1a087382d7f1d7c57a3e60 span=4aa98859fe771447
282857-12-12 00:00:00.677  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 trace=7020c167bf1a087382d7f1d7c57a3e60 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-01' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found span=4aa98859fe771447 rows=0
28282-12-12 00:00:00.009  error  [GORM] duration=1.4ms caller=auth/userLoginLogic.go:68 sql=SELECT * FROM `user_auth_methods` WHERE `auth_type` = 'email' AND `auth_identifier` = 'admin@ppanel.dev' ORDER BY `user_auth_methods`.`id` LIMIT 1 rows=0 error=record not found trace=172c0620b3c03f0d71c12f88084612b5 span=10bedc5c56545d24
28289-12-12 00:00:00.004  error  [GORM] duration=0.5ms caller=middleware/authMiddleware.go:83 span=707b3c756227e7d7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 40 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=01f9372b374e7fffb135a755f5b3d310 error=record not found
28289-12-12 00:00:00.138  error  [GORM] duration=0.7ms caller=gin@v1.10.0/context.go:185 rows=0 trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7 sql=SELECT * FROM `servers` WHERE id = 3 ORDER BY `servers`.`id` LIMIT 1 error=record not found
28289-12-12 00:00:00.138  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7 error=record not found server_id=3
28289-12-12 00:00:00.138  error  [GORM] duration=0.5ms caller=gin@v1.10.0/context.go:185 rows=0 error=record not found trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7 sql=SELECT * FROM `servers` WHERE id = 33 ORDER BY `servers`.`id` LIMIT 1
28289-12-12 00:00:00.138  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=33 trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7
28289-12-12 00:00:00.139  error  [GORM] duration=0.5ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 17 ORDER BY `servers`.`id` LIMIT 1 error=record not found span=707b3c756227e7d7 rows=0 trace=01f9372b374e7fffb135a755f5b3d310
28289-12-12 00:00:00.139  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 span=707b3c756227e7d7 error=record not found server_id=17 trace=01f9372b374e7fffb135a755f5b3d310
28289-12-12 00:00:00.139  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 span=707b3c756227e7d7 error=record not found trace=01f9372b374e7fffb135a755f5b3d310 sql=SELECT * FROM `servers` WHERE id = 14 ORDER BY `servers`.`id` LIMIT 1 rows=0
28289-12-12 00:00:00.139  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=14 trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7
28289-12-12 00:00:00.140  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 2 ORDER BY `servers`.`id` LIMIT 1 rows=0 error=record not found span=707b3c756227e7d7 trace=01f9372b374e7fffb135a755f5b3d310
28289-12-12 00:00:00.140  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7 error=record not found server_id=2
28289-12-12 00:00:00.140  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 span=707b3c756227e7d7 rows=0 trace=01f9372b374e7fffb135a755f5b3d310 sql=SELECT * FROM `servers` WHERE id = 34 ORDER BY `servers`.`id` LIMIT 1 error=record not found
28289-12-12 00:00:00.140  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7 error=record not found server_id=34
28289-12-12 00:00:00.140  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 32 ORDER BY `servers`.`id` LIMIT 1 trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7 rows=0 error=record not found
28289-12-12 00:00:00.140  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=32 trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7
28289-12-12 00:00:00.141  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 23 ORDER BY `servers`.`id` LIMIT 1 error=record not found trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7 rows=0
28289-12-12 00:00:00.141  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7 error=record not found server_id=23
28289-12-12 00:00:00.141  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 28 ORDER BY `servers`.`id` LIMIT 1 error=record not found trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7 rows=0
28289-12-12 00:00:00.141  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=28 trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7
28289-12-12 00:00:00.141  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 30 ORDER BY `servers`.`id` LIMIT 1 rows=0 error=record not found trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7
28289-12-12 00:00:00.141  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=30 trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7
28289-12-12 00:00:00.142  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 error=record not found trace=01f9372b374e7fffb135a755f5b3d310 rows=0 span=707b3c756227e7d7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 41 ORDER BY `system_logs`.`id` LIMIT 1
28289-12-12 00:00:00.243  error  [GORM] duration=0.5ms caller=middleware/authMiddleware.go:83 rows=0 span=707b3c756227e7d7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found trace=01f9372b374e7fffb135a755f5b3d310
28289-12-12 00:00:00.244  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 rows=0 trace=01f9372b374e7fffb135a755f5b3d310 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-26' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found span=707b3c756227e7d7
28289-12-12 00:00:00.244  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-25' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7
28289-12-12 00:00:00.245  error  [GORM] duration=0.7ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-24' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7
28289-12-12 00:00:00.245  error  [GORM] duration=0.6ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-23' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7 rows=0
28289-12-12 00:00:00.246  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 span=707b3c756227e7d7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-22' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=01f9372b374e7fffb135a755f5b3d310
28289-12-12 00:00:00.246  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 trace=01f9372b374e7fffb135a755f5b3d310 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-21' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found span=707b3c756227e7d7
28289-12-12 00:00:00.247  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-20' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found
28289-12-12 00:00:00.247  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 error=record not found span=707b3c756227e7d7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-19' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=01f9372b374e7fffb135a755f5b3d310
28289-12-12 00:00:00.247  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 error=record not found span=707b3c756227e7d7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-18' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=01f9372b374e7fffb135a755f5b3d310
28289-12-12 00:00:00.247  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-17' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found
28289-12-12 00:00:00.248  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 trace=01f9372b374e7fffb135a755f5b3d310 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-16' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found span=707b3c756227e7d7
28289-12-12 00:00:00.248  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 error=record not found trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-15' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0
28289-12-12 00:00:00.248  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-14' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7
28289-12-12 00:00:00.249  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-13' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found span=707b3c756227e7d7 rows=0 trace=01f9372b374e7fffb135a755f5b3d310
28289-12-12 00:00:00.249  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 error=record not found trace=01f9372b374e7fffb135a755f5b3d310 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-12' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 span=707b3c756227e7d7
28289-12-12 00:00:00.249  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 span=707b3c756227e7d7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-11' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=01f9372b374e7fffb135a755f5b3d310
28289-12-12 00:00:00.250  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 span=707b3c756227e7d7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-10' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found trace=01f9372b374e7fffb135a755f5b3d310
28289-12-12 00:00:00.250  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 trace=01f9372b374e7fffb135a755f5b3d310 error=record not found span=707b3c756227e7d7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-09' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1
28289-12-12 00:00:00.250  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-08' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7
28289-12-12 00:00:00.251  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-07' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found
28289-12-12 00:00:00.251  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 span=707b3c756227e7d7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-06' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found trace=01f9372b374e7fffb135a755f5b3d310
28289-12-12 00:00:00.251  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-05' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=01f9372b374e7fffb135a755f5b3d310 error=record not found span=707b3c756227e7d7
28289-12-12 00:00:00.251  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-04' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=01f9372b374e7fffb135a755f5b3d310 rows=0 error=record not found span=707b3c756227e7d7
28289-12-12 00:00:00.252  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-03' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found
28289-12-12 00:00:00.252  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-02' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=01f9372b374e7fffb135a755f5b3d310 span=707b3c756227e7d7
28289-12-12 00:00:00.252  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 error=record not found span=707b3c756227e7d7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-01' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=01f9372b374e7fffb135a755f5b3d310
282819-12-12 00:00:00.980  error  invalid character 'S' looking for beginning of value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.980  error  invalid character 'S' looking for beginning of value caller=tool/getSystemLogLogic.go:40 span=a87aa250a22a5bf7 trace=d79265d8b6fcae31637d961a08fd298c
282819-12-12 00:00:00.980  error  invalid character 'F' looking for beginning of value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.980  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.980  error  invalid character 'D' looking for beginning of value caller=tool/getSystemLogLogic.go:40 span=a87aa250a22a5bf7 trace=d79265d8b6fcae31637d961a08fd298c
282819-12-12 00:00:00.980  error  invalid character 'C' looking for beginning of value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.980  error  invalid character 'I' looking for beginning of value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.980  error  invalid character 'I' looking for beginning of value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.980  error  invalid character 'F' looking for beginning of value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.980  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.980  error  invalid character 'D' looking for beginning of value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.980  error  invalid character 'S' looking for beginning of value caller=tool/getSystemLogLogic.go:40 span=a87aa250a22a5bf7 trace=d79265d8b6fcae31637d961a08fd298c
282819-12-12 00:00:00.980  error  invalid character 'S' looking for beginning of value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.980  error  invalid character 'S' looking for beginning of value caller=tool/getSystemLogLogic.go:40 span=a87aa250a22a5bf7 trace=d79265d8b6fcae31637d961a08fd298c
282819-12-12 00:00:00.980  error  invalid character 'F' looking for beginning of value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.980  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character 'C' looking for beginning of value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character 'C' looking for beginning of value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character 'F' looking for beginning of value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character 'D' looking for beginning of value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character 'C' looking for beginning of value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character 'I' looking for beginning of value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character 'I' looking for beginning of value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character 'F' looking for beginning of value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 span=a87aa250a22a5bf7 trace=d79265d8b6fcae31637d961a08fd298c
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 span=a87aa250a22a5bf7 trace=d79265d8b6fcae31637d961a08fd298c
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 span=a87aa250a22a5bf7 trace=d79265d8b6fcae31637d961a08fd298c
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 span=a87aa250a22a5bf7 trace=d79265d8b6fcae31637d961a08fd298c
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 span=a87aa250a22a5bf7 trace=d79265d8b6fcae31637d961a08fd298c
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 span=a87aa250a22a5bf7 trace=d79265d8b6fcae31637d961a08fd298c
282819-12-12 00:00:00.981  error  invalid character '-' after top-level value caller=tool/getSystemLogLogic.go:40 trace=d79265d8b6fcae31637d961a08fd298c span=a87aa250a22a5bf7
282845-12-12 00:00:00.147  error  [GORM] duration=3.7ms caller=middleware/authMiddleware.go:83 sql=SELECT count(*) FROM `subscribe_group` rows=0 error=Error 1146 (42S02): Table 'dev_ppanel.subscribe_group' doesn't exist
282845-12-12 00:00:00.147  error  [GetSubscribeGroupListLogic] get subscribe group list failed: {error Error 1146 (42S02): Table 'dev_ppanel.subscribe_group' doesn't exist} caller=subscribe/getSubscribeGroupListLogic.go:35 trace=f7cb04e2815dd33540404ed4531bb745 span=6c9398b325f5fa85
282845-12-12 00:00:00.148  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 sql=SELECT count(*) FROM `subscribe_group` rows=0 error=Error 1146 (42S02): Table 'dev_ppanel.subscribe_group' doesn't exist
282845-12-12 00:00:00.148  error  [GetSubscribeGroupListLogic] get subscribe group list failed: {error Error 1146 (42S02): Table 'dev_ppanel.subscribe_group' doesn't exist} caller=subscribe/getSubscribeGroupListLogic.go:35 trace=0e0c1b04e9c81ea02d61ae0933355b0a span=74d81019c9be7b48
282845-12-12 00:00:00.168  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 sql=SELECT count(*) FROM `subscribe_group` rows=0 error=Error 1146 (42S02): Table 'dev_ppanel.subscribe_group' doesn't exist
282845-12-12 00:00:00.168  error  [GetSubscribeGroupListLogic] get subscribe group list failed: {error Error 1146 (42S02): Table 'dev_ppanel.subscribe_group' doesn't exist} caller=subscribe/getSubscribeGroupListLogic.go:35 trace=2b0b2644c8c538a646cefc9abf374846 span=1ad06eb3d5c545a1
282845-12-12 00:00:00.188  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 sql=SELECT count(*) FROM `subscribe_group` rows=0 error=Error 1146 (42S02): Table 'dev_ppanel.subscribe_group' doesn't exist
282845-12-12 00:00:00.188  error  [GetSubscribeGroupListLogic] get subscribe group list failed: {error Error 1146 (42S02): Table 'dev_ppanel.subscribe_group' doesn't exist} caller=subscribe/getSubscribeGroupListLogic.go:35 trace=fe6f8db1b3fd564f9ad041a5bd5c6951 span=ac65d163cdb07153
282837-12-12 00:00:00.667  error  [GORM] duration=0.7ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 40 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found span=db2d2f7fd3888c84 rows=0 trace=32ea5e0fbf79c7c0b33856d3357d363a
282837-12-12 00:00:00.802  error  [GORM] duration=0.6ms caller=gin@v1.10.0/context.go:185 rows=0 error=record not found trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84 sql=SELECT * FROM `servers` WHERE id = 3 ORDER BY `servers`.`id` LIMIT 1
282837-12-12 00:00:00.802  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 server_id=3 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84 error=record not found
282837-12-12 00:00:00.803  error  [GORM] duration=0.5ms caller=gin@v1.10.0/context.go:185 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84 sql=SELECT * FROM `servers` WHERE id = 33 ORDER BY `servers`.`id` LIMIT 1 rows=0 error=record not found
282837-12-12 00:00:00.803  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84 error=record not found server_id=33
282837-12-12 00:00:00.803  error  [GORM] duration=0.4ms caller=gin@v1.10.0/context.go:185 span=db2d2f7fd3888c84 error=record not found sql=SELECT * FROM `servers` WHERE id = 17 ORDER BY `servers`.`id` LIMIT 1 rows=0 trace=32ea5e0fbf79c7c0b33856d3357d363a
282837-12-12 00:00:00.803  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=17 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84
282837-12-12 00:00:00.803  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 error=record not found sql=SELECT * FROM `servers` WHERE id = 14 ORDER BY `servers`.`id` LIMIT 1 rows=0 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84
282837-12-12 00:00:00.803  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=14 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84
282837-12-12 00:00:00.804  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 trace=32ea5e0fbf79c7c0b33856d3357d363a sql=SELECT * FROM `servers` WHERE id = 2 ORDER BY `servers`.`id` LIMIT 1 error=record not found span=db2d2f7fd3888c84 rows=0
282837-12-12 00:00:00.804  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=2 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84
282837-12-12 00:00:00.804  error  [GORM] duration=0.4ms caller=gin@v1.10.0/context.go:185 rows=0 error=record not found trace=32ea5e0fbf79c7c0b33856d3357d363a sql=SELECT * FROM `servers` WHERE id = 34 ORDER BY `servers`.`id` LIMIT 1 span=db2d2f7fd3888c84
282837-12-12 00:00:00.804  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84 error=record not found server_id=34
282837-12-12 00:00:00.804  error  [GORM] duration=0.4ms caller=gin@v1.10.0/context.go:185 rows=0 error=record not found span=db2d2f7fd3888c84 trace=32ea5e0fbf79c7c0b33856d3357d363a sql=SELECT * FROM `servers` WHERE id = 32 ORDER BY `servers`.`id` LIMIT 1
282837-12-12 00:00:00.805  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84 error=record not found server_id=32
282837-12-12 00:00:00.805  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 span=db2d2f7fd3888c84 rows=0 sql=SELECT * FROM `servers` WHERE id = 23 ORDER BY `servers`.`id` LIMIT 1 error=record not found trace=32ea5e0fbf79c7c0b33856d3357d363a
282837-12-12 00:00:00.805  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=23 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84
282837-12-12 00:00:00.805  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84 sql=SELECT * FROM `servers` WHERE id = 28 ORDER BY `servers`.`id` LIMIT 1 rows=0 error=record not found
282837-12-12 00:00:00.805  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=28 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84
282837-12-12 00:00:00.805  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 error=record not found span=db2d2f7fd3888c84 sql=SELECT * FROM `servers` WHERE id = 30 ORDER BY `servers`.`id` LIMIT 1 rows=0 trace=32ea5e0fbf79c7c0b33856d3357d363a
282837-12-12 00:00:00.805  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=30 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84
282837-12-12 00:00:00.806  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84 rows=0 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 41 ORDER BY `system_logs`.`id` LIMIT 1
282837-12-12 00:00:00.909  error  [GORM] duration=0.7ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=32ea5e0fbf79c7c0b33856d3357d363a rows=0 error=record not found span=db2d2f7fd3888c84
282837-12-12 00:00:00.910  error  [GORM] duration=0.6ms caller=middleware/authMiddleware.go:83 error=record not found trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-26' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0
282837-12-12 00:00:00.912  error  [GORM] duration=1.5ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-25' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 span=db2d2f7fd3888c84 rows=0 error=record not found trace=32ea5e0fbf79c7c0b33856d3357d363a
282837-12-12 00:00:00.912  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-24' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84 rows=0
282837-12-12 00:00:00.912  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 rows=0 error=record not found span=db2d2f7fd3888c84 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-23' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=32ea5e0fbf79c7c0b33856d3357d363a
282837-12-12 00:00:00.913  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 trace=32ea5e0fbf79c7c0b33856d3357d363a sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-22' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 span=db2d2f7fd3888c84 error=record not found
282837-12-12 00:00:00.914  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 rows=0 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-21' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84
282837-12-12 00:00:00.914  error  [GORM] duration=0.6ms caller=middleware/authMiddleware.go:83 trace=32ea5e0fbf79c7c0b33856d3357d363a sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-20' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found span=db2d2f7fd3888c84
282837-12-12 00:00:00.914  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 error=record not found span=db2d2f7fd3888c84 rows=0 trace=32ea5e0fbf79c7c0b33856d3357d363a sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-19' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1
282837-12-12 00:00:00.915  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-18' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found rows=0 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84
282837-12-12 00:00:00.915  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-17' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84
282837-12-12 00:00:00.915  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-16' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found
282837-12-12 00:00:00.916  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-15' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84
282837-12-12 00:00:00.916  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 error=record not found span=db2d2f7fd3888c84 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-14' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=32ea5e0fbf79c7c0b33856d3357d363a
282837-12-12 00:00:00.916  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 error=record not found span=db2d2f7fd3888c84 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-13' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=32ea5e0fbf79c7c0b33856d3357d363a
282837-12-12 00:00:00.917  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 trace=32ea5e0fbf79c7c0b33856d3357d363a sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-12' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found span=db2d2f7fd3888c84
282837-12-12 00:00:00.917  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-11' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found span=db2d2f7fd3888c84 trace=32ea5e0fbf79c7c0b33856d3357d363a
282837-12-12 00:00:00.917  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 error=record not found span=db2d2f7fd3888c84 rows=0 trace=32ea5e0fbf79c7c0b33856d3357d363a sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-10' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1
282837-12-12 00:00:00.917  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-09' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84 error=record not found
282837-12-12 00:00:00.918  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-08' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84
282837-12-12 00:00:00.918  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 span=db2d2f7fd3888c84 trace=32ea5e0fbf79c7c0b33856d3357d363a sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-07' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found
282837-12-12 00:00:00.918  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-06' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84
282837-12-12 00:00:00.919  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 span=db2d2f7fd3888c84 error=record not found trace=32ea5e0fbf79c7c0b33856d3357d363a sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-05' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1
282837-12-12 00:00:00.919  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 error=record not found trace=32ea5e0fbf79c7c0b33856d3357d363a sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-04' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 span=db2d2f7fd3888c84
282837-12-12 00:00:00.919  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 error=record not found trace=32ea5e0fbf79c7c0b33856d3357d363a span=db2d2f7fd3888c84 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-03' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1
282837-12-12 00:00:00.920  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 span=db2d2f7fd3888c84 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-02' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=32ea5e0fbf79c7c0b33856d3357d363a
282837-12-12 00:00:00.920  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-01' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 span=db2d2f7fd3888c84 error=record not found trace=32ea5e0fbf79c7c0b33856d3357d363a
282844-12-12 00:00:00.082  error  [GORM] duration=0.6ms caller=middleware/authMiddleware.go:83 rows=0 error=record not found span=75f86b505c590213 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 40 ORDER BY `system_logs`.`id` LIMIT 1 trace=ee530e7347d62a1a4a85223982d992ec
282844-12-12 00:00:00.219  error  [GORM] duration=0.6ms caller=gin@v1.10.0/context.go:185 rows=0 span=75f86b505c590213 sql=SELECT * FROM `servers` WHERE id = 3 ORDER BY `servers`.`id` LIMIT 1 error=record not found trace=ee530e7347d62a1a4a85223982d992ec
282844-12-12 00:00:00.219  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=3 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213
282844-12-12 00:00:00.220  error  [GORM] duration=0.4ms caller=gin@v1.10.0/context.go:185 rows=0 span=75f86b505c590213 sql=SELECT * FROM `servers` WHERE id = 33 ORDER BY `servers`.`id` LIMIT 1 error=record not found trace=ee530e7347d62a1a4a85223982d992ec
282844-12-12 00:00:00.220  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=33 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213
282844-12-12 00:00:00.220  error  [GORM] duration=0.4ms caller=gin@v1.10.0/context.go:185 trace=ee530e7347d62a1a4a85223982d992ec sql=SELECT * FROM `servers` WHERE id = 17 ORDER BY `servers`.`id` LIMIT 1 span=75f86b505c590213 rows=0 error=record not found
282844-12-12 00:00:00.220  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 server_id=17 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213 error=record not found
282844-12-12 00:00:00.221  error  [GORM] duration=0.4ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 14 ORDER BY `servers`.`id` LIMIT 1 error=record not found trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213 rows=0
282844-12-12 00:00:00.221  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=14 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213
282844-12-12 00:00:00.221  error  [GORM] duration=0.5ms caller=gin@v1.10.0/context.go:185 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213 sql=SELECT * FROM `servers` WHERE id = 2 ORDER BY `servers`.`id` LIMIT 1 rows=0 error=record not found
282844-12-12 00:00:00.221  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213 error=record not found server_id=2
282844-12-12 00:00:00.222  error  [GORM] duration=0.4ms caller=gin@v1.10.0/context.go:185 rows=0 error=record not found sql=SELECT * FROM `servers` WHERE id = 34 ORDER BY `servers`.`id` LIMIT 1 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213
282844-12-12 00:00:00.222  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=34 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213
282844-12-12 00:00:00.222  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 rows=0 error=record not found sql=SELECT * FROM `servers` WHERE id = 32 ORDER BY `servers`.`id` LIMIT 1 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213
282844-12-12 00:00:00.222  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213 error=record not found server_id=32
282844-12-12 00:00:00.222  error  [GORM] duration=0.4ms caller=gin@v1.10.0/context.go:185 sql=SELECT * FROM `servers` WHERE id = 23 ORDER BY `servers`.`id` LIMIT 1 rows=0 span=75f86b505c590213 error=record not found trace=ee530e7347d62a1a4a85223982d992ec
282844-12-12 00:00:00.222  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=23 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213
282844-12-12 00:00:00.223  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 rows=0 trace=ee530e7347d62a1a4a85223982d992ec sql=SELECT * FROM `servers` WHERE id = 28 ORDER BY `servers`.`id` LIMIT 1 error=record not found span=75f86b505c590213
282844-12-12 00:00:00.223  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=28 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213
282844-12-12 00:00:00.223  error  [GORM] duration=0.3ms caller=gin@v1.10.0/context.go:185 error=record not found trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213 sql=SELECT * FROM `servers` WHERE id = 30 ORDER BY `servers`.`id` LIMIT 1 rows=0
282844-12-12 00:00:00.223  error  [QueryServerTotalDataLogic] FindOneServer error caller=console/queryServerTotalDataLogic.go:111 error=record not found server_id=30 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213
282844-12-12 00:00:00.223  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 error=record not found span=75f86b505c590213 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 41 ORDER BY `system_logs`.`id` LIMIT 1 trace=ee530e7347d62a1a4a85223982d992ec
282844-12-12 00:00:00.329  error  [GORM] duration=0.6ms caller=middleware/authMiddleware.go:83 span=75f86b505c590213 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=ee530e7347d62a1a4a85223982d992ec error=record not found
282844-12-12 00:00:00.330  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-26' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213
282844-12-12 00:00:00.330  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-25' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found rows=0 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213
282844-12-12 00:00:00.331  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 span=75f86b505c590213 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-24' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found trace=ee530e7347d62a1a4a85223982d992ec
282844-12-12 00:00:00.331  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-23' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213
282844-12-12 00:00:00.331  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-22' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213
282844-12-12 00:00:00.332  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 trace=ee530e7347d62a1a4a85223982d992ec sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-21' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found span=75f86b505c590213
282844-12-12 00:00:00.332  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 span=75f86b505c590213 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-20' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=ee530e7347d62a1a4a85223982d992ec
282844-12-12 00:00:00.332  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 trace=ee530e7347d62a1a4a85223982d992ec sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-19' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found span=75f86b505c590213
282844-12-12 00:00:00.333  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:83 rows=0 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-18' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213
282844-12-12 00:00:00.333  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213 rows=0 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-17' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1
282844-12-12 00:00:00.333  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 error=record not found span=75f86b505c590213 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-16' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=ee530e7347d62a1a4a85223982d992ec
282844-12-12 00:00:00.334  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-15' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found
282844-12-12 00:00:00.334  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-14' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213 error=record not found
282844-12-12 00:00:00.334  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-13' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found trace=ee530e7347d62a1a4a85223982d992ec rows=0 span=75f86b505c590213
282844-12-12 00:00:00.335  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-12' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=ee530e7347d62a1a4a85223982d992ec rows=0 error=record not found span=75f86b505c590213
282844-12-12 00:00:00.335  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 error=record not found span=75f86b505c590213 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-11' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=ee530e7347d62a1a4a85223982d992ec
282844-12-12 00:00:00.335  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-10' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found span=75f86b505c590213 rows=0 trace=ee530e7347d62a1a4a85223982d992ec
282844-12-12 00:00:00.336  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-09' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213
282844-12-12 00:00:00.336  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 span=75f86b505c590213 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-08' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=ee530e7347d62a1a4a85223982d992ec
282844-12-12 00:00:00.336  error  [GORM] duration=0.2ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-07' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=ee530e7347d62a1a4a85223982d992ec rows=0 error=record not found span=75f86b505c590213
282844-12-12 00:00:00.336  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 rows=0 error=record not found trace=ee530e7347d62a1a4a85223982d992ec sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-06' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 span=75f86b505c590213
282844-12-12 00:00:00.337  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-05' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found span=75f86b505c590213 rows=0 trace=ee530e7347d62a1a4a85223982d992ec
282844-12-12 00:00:00.337  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-04' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213 error=record not found
282844-12-12 00:00:00.337  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-03' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213 rows=0
282844-12-12 00:00:00.338  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-02' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213 rows=0
282844-12-12 00:00:00.338  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:83 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-01' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found rows=0 trace=ee530e7347d62a1a4a85223982d992ec span=75f86b505c590213
28281-12-12 00:00:00.475  error  [Init Telegram Config] New Bot API Error: {error Not Found} caller=initialize/telegram.go:39
282820-12-12 00:00:00.048  error  [Init Telegram Config] New Bot API Error: {error Not Found} caller=initialize/telegram.go:39
282848-12-12 00:00:00.172  error  [Init Telegram Config] New Bot API Error: {error Not Found} caller=initialize/telegram.go:39
282832-12-12 00:00:00.038  error  [GORM] duration=1.3ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 40 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found span=cfd883a7dc7270b7 trace=5a9a567b61b723bdfc6136ec158de571
282832-12-12 00:00:00.041  error  [GORM] duration=2.1ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 41 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found span=cfd883a7dc7270b7 rows=0 trace=5a9a567b61b723bdfc6136ec158de571
282832-12-12 00:00:00.049  error  [GORM] duration=0.7ms caller=middleware/authMiddleware.go:89 error=record not found trace=5a9a567b61b723bdfc6136ec158de571 span=cfd883a7dc7270b7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0
282832-12-12 00:00:00.050  error  [GORM] duration=0.6ms caller=middleware/authMiddleware.go:89 rows=0 error=record not found trace=5a9a567b61b723bdfc6136ec158de571 span=cfd883a7dc7270b7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-26' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1
282832-12-12 00:00:00.051  error  [GORM] duration=1.1ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-25' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 span=cfd883a7dc7270b7 error=record not found trace=5a9a567b61b723bdfc6136ec158de571
282832-12-12 00:00:00.053  error  [GORM] duration=1.9ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-24' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 span=cfd883a7dc7270b7 error=record not found trace=5a9a567b61b723bdfc6136ec158de571
282832-12-12 00:00:00.054  error  [GORM] duration=0.6ms caller=middleware/authMiddleware.go:89 rows=0 error=record not found trace=5a9a567b61b723bdfc6136ec158de571 span=cfd883a7dc7270b7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-23' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1
282832-12-12 00:00:00.054  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:89 rows=0 error=record not found trace=5a9a567b61b723bdfc6136ec158de571 span=cfd883a7dc7270b7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-22' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1
282832-12-12 00:00:00.054  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-21' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=5a9a567b61b723bdfc6136ec158de571 span=cfd883a7dc7270b7 rows=0 error=record not found
282832-12-12 00:00:00.055  error  [GORM] duration=0.5ms caller=middleware/authMiddleware.go:89 error=record not found span=cfd883a7dc7270b7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-20' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=5a9a567b61b723bdfc6136ec158de571
282832-12-12 00:00:00.055  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-19' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found trace=5a9a567b61b723bdfc6136ec158de571 rows=0 span=cfd883a7dc7270b7
282832-12-12 00:00:00.056  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-18' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=5a9a567b61b723bdfc6136ec158de571 span=cfd883a7dc7270b7
282832-12-12 00:00:00.056  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:89 rows=0 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-17' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=5a9a567b61b723bdfc6136ec158de571 span=cfd883a7dc7270b7
282832-12-12 00:00:00.057  error  [GORM] duration=0.7ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-16' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=5a9a567b61b723bdfc6136ec158de571 span=cfd883a7dc7270b7 rows=0 error=record not found
282832-12-12 00:00:00.057  error  [GORM] duration=0.5ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-15' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=5a9a567b61b723bdfc6136ec158de571 span=cfd883a7dc7270b7 rows=0 error=record not found
282832-12-12 00:00:00.058  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:89 trace=5a9a567b61b723bdfc6136ec158de571 rows=0 span=cfd883a7dc7270b7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-14' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found
282832-12-12 00:00:00.059  error  [GORM] duration=1.1ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-13' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found span=cfd883a7dc7270b7 rows=0 trace=5a9a567b61b723bdfc6136ec158de571
282832-12-12 00:00:00.060  error  [GORM] duration=0.8ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-12' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=5a9a567b61b723bdfc6136ec158de571 span=cfd883a7dc7270b7
282832-12-12 00:00:00.060  error  [GORM] duration=0.5ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-11' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=5a9a567b61b723bdfc6136ec158de571 span=cfd883a7dc7270b7 rows=0 error=record not found
282832-12-12 00:00:00.061  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-10' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 span=cfd883a7dc7270b7 rows=0 error=record not found trace=5a9a567b61b723bdfc6136ec158de571
282832-12-12 00:00:00.061  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:89 trace=5a9a567b61b723bdfc6136ec158de571 span=cfd883a7dc7270b7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-09' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found rows=0
282832-12-12 00:00:00.062  error  [GORM] duration=1.0ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-08' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=5a9a567b61b723bdfc6136ec158de571 span=cfd883a7dc7270b7
282832-12-12 00:00:00.062  error  [GORM] duration=0.5ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-07' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=5a9a567b61b723bdfc6136ec158de571 span=cfd883a7dc7270b7
282832-12-12 00:00:00.063  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-06' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 span=cfd883a7dc7270b7 error=record not found trace=5a9a567b61b723bdfc6136ec158de571
282832-12-12 00:00:00.063  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:89 trace=5a9a567b61b723bdfc6136ec158de571 span=cfd883a7dc7270b7 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-05' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0
282832-12-12 00:00:00.064  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:89 rows=0 error=record not found trace=5a9a567b61b723bdfc6136ec158de571 span=cfd883a7dc7270b7 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-04' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1
282832-12-12 00:00:00.064  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-03' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found span=cfd883a7dc7270b7 trace=5a9a567b61b723bdfc6136ec158de571
282832-12-12 00:00:00.064  error  [GORM] duration=0.2ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-02' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found span=cfd883a7dc7270b7 trace=5a9a567b61b723bdfc6136ec158de571
282832-12-12 00:00:00.064  error  [GORM] duration=0.2ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-01' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=5a9a567b61b723bdfc6136ec158de571 rows=0 error=record not found span=cfd883a7dc7270b7
292912-12-12 00:00:00.022  error  [Init Telegram Config] New Bot API Error: {error Post "https://api.telegram.org/bot/getMe": dial tcp 74.86.17.48:443: i/o timeout} caller=initialize/telegram.go:39
29298-12-12 00:00:00.788  error  [GORM] duration=1.2ms caller=middleware/authMiddleware.go:89 span=4a4bcbad732bd00f sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-28' AND `type` = 40 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=21179e3acc2b81d32df7625b94cb7031
29298-12-12 00:00:00.790  error  [GORM] duration=0.5ms caller=middleware/authMiddleware.go:89 error=record not found rows=0 trace=21179e3acc2b81d32df7625b94cb7031 span=4a4bcbad732bd00f sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-28' AND `type` = 41 ORDER BY `system_logs`.`id` LIMIT 1
29298-12-12 00:00:00.792  error  [GORM] duration=0.7ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-28' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found trace=21179e3acc2b81d32df7625b94cb7031 rows=0 span=4a4bcbad732bd00f
29298-12-12 00:00:00.793  error  [GORM] duration=0.5ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-27' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=21179e3acc2b81d32df7625b94cb7031 span=4a4bcbad732bd00f
29298-12-12 00:00:00.793  error  [GORM] duration=0.5ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-26' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=21179e3acc2b81d32df7625b94cb7031 rows=0 error=record not found span=4a4bcbad732bd00f
29298-12-12 00:00:00.794  error  [GORM] duration=0.8ms caller=middleware/authMiddleware.go:89 rows=0 error=record not found trace=21179e3acc2b81d32df7625b94cb7031 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-25' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 span=4a4bcbad732bd00f
29298-12-12 00:00:00.795  error  [GORM] duration=0.7ms caller=middleware/authMiddleware.go:89 trace=21179e3acc2b81d32df7625b94cb7031 span=4a4bcbad732bd00f sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-24' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found
29298-12-12 00:00:00.796  error  [GORM] duration=0.8ms caller=middleware/authMiddleware.go:89 rows=0 trace=21179e3acc2b81d32df7625b94cb7031 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-23' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found span=4a4bcbad732bd00f
29298-12-12 00:00:00.796  error  [GORM] duration=0.5ms caller=middleware/authMiddleware.go:89 span=4a4bcbad732bd00f rows=0 error=record not found trace=21179e3acc2b81d32df7625b94cb7031 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-22' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1
29298-12-12 00:00:00.797  error  [GORM] duration=1.2ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-21' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=21179e3acc2b81d32df7625b94cb7031 rows=0 error=record not found span=4a4bcbad732bd00f
29298-12-12 00:00:00.798  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:89 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-20' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=21179e3acc2b81d32df7625b94cb7031 span=4a4bcbad732bd00f rows=0
29298-12-12 00:00:00.798  error  [GORM] duration=0.5ms caller=middleware/authMiddleware.go:89 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-19' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=21179e3acc2b81d32df7625b94cb7031 span=4a4bcbad732bd00f
29298-12-12 00:00:00.799  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:89 rows=0 trace=21179e3acc2b81d32df7625b94cb7031 span=4a4bcbad732bd00f sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-18' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found
29298-12-12 00:00:00.799  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-17' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=21179e3acc2b81d32df7625b94cb7031 span=4a4bcbad732bd00f
29298-12-12 00:00:00.799  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-16' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=21179e3acc2b81d32df7625b94cb7031 span=4a4bcbad732bd00f
29298-12-12 00:00:00.800  error  [GORM] duration=0.2ms caller=middleware/authMiddleware.go:89 rows=0 error=record not found sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-15' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=21179e3acc2b81d32df7625b94cb7031 span=4a4bcbad732bd00f
29298-12-12 00:00:00.800  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:89 rows=0 error=record not found span=4a4bcbad732bd00f sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-14' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=21179e3acc2b81d32df7625b94cb7031
29298-12-12 00:00:00.800  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:89 trace=21179e3acc2b81d32df7625b94cb7031 error=record not found span=4a4bcbad732bd00f sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-13' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0
29298-12-12 00:00:00.801  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-12' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=21179e3acc2b81d32df7625b94cb7031 span=4a4bcbad732bd00f error=record not found
29298-12-12 00:00:00.801  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:89 error=record not found trace=21179e3acc2b81d32df7625b94cb7031 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-11' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 span=4a4bcbad732bd00f
29298-12-12 00:00:00.802  error  [GORM] duration=0.5ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-10' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=21179e3acc2b81d32df7625b94cb7031 span=4a4bcbad732bd00f
29298-12-12 00:00:00.802  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-09' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 span=4a4bcbad732bd00f error=record not found trace=21179e3acc2b81d32df7625b94cb7031
29298-12-12 00:00:00.803  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-08' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found span=4a4bcbad732bd00f rows=0 trace=21179e3acc2b81d32df7625b94cb7031
29298-12-12 00:00:00.803  error  [GORM] duration=0.5ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-07' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 span=4a4bcbad732bd00f error=record not found trace=21179e3acc2b81d32df7625b94cb7031
29298-12-12 00:00:00.803  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-06' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=21179e3acc2b81d32df7625b94cb7031 span=4a4bcbad732bd00f rows=0 error=record not found
29298-12-12 00:00:00.804  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:89 span=4a4bcbad732bd00f sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-05' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found rows=0 trace=21179e3acc2b81d32df7625b94cb7031
29298-12-12 00:00:00.804  error  [GORM] duration=0.5ms caller=middleware/authMiddleware.go:89 error=record not found span=4a4bcbad732bd00f sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-04' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 trace=21179e3acc2b81d32df7625b94cb7031
29298-12-12 00:00:00.805  error  [GORM] duration=0.4ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-03' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 error=record not found rows=0 trace=21179e3acc2b81d32df7625b94cb7031 span=4a4bcbad732bd00f
29298-12-12 00:00:00.805  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-02' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 rows=0 error=record not found trace=21179e3acc2b81d32df7625b94cb7031 span=4a4bcbad732bd00f
29298-12-12 00:00:00.805  error  [GORM] duration=0.3ms caller=middleware/authMiddleware.go:89 sql=SELECT * FROM `system_logs` WHERE `date` = '2025-12-01' AND `type` = 42 ORDER BY `system_logs`.`id` LIMIT 1 trace=21179e3acc2b81d32df7625b94cb7031 span=4a4bcbad732bd00f rows=0 error=record not found

0
logs/severe.log Normal file
View File

0
logs/slow.log Normal file
View File

0
logs/stat.log Normal file
View File

View File

@ -81,7 +81,10 @@ func (l *ActivateOrderLogic) ProcessTask(ctx context.Context, task *asynq.Task)
return nil return nil
} }
l.finalizeCouponAndOrder(ctx, orderInfo) if err := l.finalizeCouponAndOrder(ctx, orderInfo); err != nil {
logger.WithContext(ctx).Error("[ActivateOrderLogic] Finalize order failed", logger.Field("error", err.Error()))
return err
}
return nil return nil
} }
@ -140,7 +143,7 @@ func (l *ActivateOrderLogic) processOrderByType(ctx context.Context, orderInfo *
// finalizeCouponAndOrder handles post-processing tasks including coupon updates // finalizeCouponAndOrder handles post-processing tasks including coupon updates
// and order status finalization // and order status finalization
func (l *ActivateOrderLogic) finalizeCouponAndOrder(ctx context.Context, orderInfo *order.Order) { func (l *ActivateOrderLogic) finalizeCouponAndOrder(ctx context.Context, orderInfo *order.Order) error {
// Update coupon if exists // Update coupon if exists
if orderInfo.Coupon != "" { if orderInfo.Coupon != "" {
if err := l.svc.CouponModel.UpdateCount(ctx, orderInfo.Coupon); err != nil { if err := l.svc.CouponModel.UpdateCount(ctx, orderInfo.Coupon); err != nil {
@ -158,7 +161,9 @@ func (l *ActivateOrderLogic) finalizeCouponAndOrder(ctx context.Context, orderIn
logger.Field("error", err.Error()), logger.Field("error", err.Error()),
logger.Field("order_no", orderInfo.OrderNo), logger.Field("order_no", orderInfo.OrderNo),
) )
return err
} }
return nil
} }
// NewPurchase handles new subscription purchase including user creation, // NewPurchase handles new subscription purchase including user creation,

31
see.sh Normal file
View File

@ -0,0 +1,31 @@
#!/bin/bash
# 简洁的代码对比脚本
echo "🔍 代码对比报告"
echo "==========================================="
echo ""
# 检查old远程仓库是否存在
if ! git remote | grep -q "old"; then
echo "❌ 请先添加old远程仓库: git remote add old https://github.com/perfect-panel/server.git && git fetch old"
exit 1
fi
echo "📋 文件变更对比:"
echo "-------------------------------------------"
echo "我们修改的文件:"
git diff --name-status old/master main | grep -E '^[AM]' | sed 's/^A/🆕 新增: /' | sed 's/^M/✏️ 修改: /'
echo ""
echo "他们修改的文件:"
git diff --name-status main old/master | grep -E '^[AM]' | sed 's/^A/🆕 新增: /' | sed 's/^M/✏️ 修改: /'
echo ""
echo "📊 变更统计:"
echo "-------------------------------------------"
echo "我们的变更:"
git diff --stat --color=always old/master main | tail -1
echo "他们的变更:"
git diff --stat --color=always main old/master | tail -1
echo ""
echo "✅ 对比完成!"

14
说明文档.md Normal file
View File

@ -0,0 +1,14 @@
# 项目说明文档
## 1. 项目规划
- [ ] 核心业务逻辑维护与Bug修复
- [ ] 确保支付与订单流程闭环
## 2. 实施方案
- **订单状态修复**:针对支付后订单状态未更新问题,完善异步任务的错误处理机制。
## 3. 进度记录
- **2026-01-15 [已完成] 修复订单状态更新 Bug**
- **问题描述**:用户支付成功后,订单状态停留在“已支付”,未流转到“已完成”,导致订阅未下发。
- **原因分析**`finalizeCouponAndOrder` 函数在更新数据库失败时仅打印日志未返回错误,导致 Asynq 消息队列误判任务成功,未触发重试机制。
- **解决方案**:重构该函数及其调用方 `ProcessTask`,确保数据库更新错误能向上抛出,触发 Asynq 的自动重试策略。