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

143
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

@ -16,11 +16,12 @@ type (
Status *uint8 `json:"status" validate:"required"` Status *uint8 `json:"status" validate:"required"`
} }
GetTicketListRequest { GetTicketListRequest {
Page int64 `form:"page"` Page int64 `form:"page"`
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"`
Search string `form:"search,omitempty"` IssueType *uint8 `form:"issue_type,omitempty"`
Search string `form:"search,omitempty"`
} }
GetTicketListResponse { GetTicketListResponse {
Total int64 `json:"total"` Total int64 `json:"total"`

View File

@ -18,12 +18,14 @@ 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"`
Search string `form:"search,omitempty"` IssueType *uint8 `form:"issue_type,omitempty"`
Search string `form:"search,omitempty"`
} }
GetUserTicketDetailRequest { GetUserTicketDetailRequest {
Id int64 `form:"id" validate:"required"` Id int64 `form:"id" validate:"required"`

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") logger.Errorf("[Migrate] Up error: %v", err.Error())
return panic(err)
} }
logger.Errorf("[Migrate] Up error: %v", err.Error()) logger.Info("[Migrate] database not change")
panic(err)
} 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,12 +58,16 @@ 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 != "" {
if err != nil { servers, err := l.svcCtx.ServerModel.FindServerListByGroupIds(l.ctx, tool.StringToInt64Slice(item.ServerGroup))
l.Errorw("[QuerySubscribeListLogic] FindServerListByGroupIds error", logger.Field("error", err.Error())) if err != nil {
sub.ServerCount = 0 l.Errorw("[QuerySubscribeListLogic] FindServerListByGroupIds error", logger.Field("error", err.Error()))
sub.ServerCount = 0
} else {
sub.ServerCount = int64(len(servers))
}
} else { } else {
sub.ServerCount = int64(len(servers)) sub.ServerCount = 0
} }
list[i] = sub list[i] = sub
} }

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

@ -9,12 +9,15 @@ import (
) )
const ( const (
RelayModeNone = "none" RelayModeNone = "none"
RelayModeAll = "all" RelayModeAll = "all"
RelayModeRandom = "random" RelayModeRandom = "random"
RuleGroupTypeReject = "reject" RelayModeMixed = "mixed"
RuleGroupTypeDefault = "default" RelayModeAllDirect = "all_direct"
RuleGroupTypeDirect = "direct" RelayModeRandomDirect = "random_direct"
RuleGroupTypeReject = "reject"
RuleGroupTypeDefault = "default"
RuleGroupTypeDirect = "direct"
) )
type ServerFilter struct { type ServerFilter struct {

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"
@ -41,18 +42,18 @@ type ServiceContext struct {
GeoIP *IPLocation GeoIP *IPLocation
//NodeCache *cache.NodeCacheClient //NodeCache *cache.NodeCacheClient
AuthModel auth.Model AuthModel auth.Model
AdsModel ads.Model AdsModel ads.Model
LogModel log.Model LogModel log.Model
NodeModel node.Model NodeModel node.Model
UserModel user.Model UserModel user.Model
OrderModel order.Model OrderModel order.Model
ClientModel client.Model ClientModel client.Model
TicketModel ticket.Model TicketModel ticket.Model
ServerModel server.Model ServerModel server.Model
SystemModel system.Model SystemModel system.Model
CouponModel coupon.Model CouponModel coupon.Model
PaymentModel payment.Model PaymentModel payment.Model
DocumentModel document.Model DocumentModel document.Model
SubscribeModel subscribe.Model SubscribeModel subscribe.Model
TrafficLogModel traffic.Model TrafficLogModel traffic.Model
@ -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{
@ -101,15 +103,15 @@ func NewServiceContext(c config.Config) *ServiceContext {
ExchangeRate: 1.0, ExchangeRate: 1.0,
GeoIP: geoIP, GeoIP: geoIP,
//NodeCache: cache.NewNodeCacheClient(rds), //NodeCache: cache.NewNodeCacheClient(rds),
AuthLimiter: authLimiter, AuthLimiter: authLimiter,
AdsModel: ads.NewModel(db, rds), AdsModel: ads.NewModel(db, rds),
LogModel: log.NewModel(db), LogModel: log.NewModel(db),
NodeModel: node.NewModel(db, rds), NodeModel: node.NewModel(db, rds),
AuthModel: auth.NewModel(db, rds), AuthModel: auth.NewModel(db, rds),
UserModel: user.NewModel(db, rds), UserModel: user.NewModel(db, rds),
OrderModel: order.NewModel(db, rds), OrderModel: order.NewModel(db, rds),
ClientModel: client.NewSubscribeApplicationModel(db), ClientModel: client.NewSubscribeApplicationModel(db),
TicketModel: ticket.NewModel(db, rds), TicketModel: ticket.NewModel(db, rds),
ServerModel: server.NewModel(db, rds), ServerModel: server.NewModel(db, rds),
SystemModel: system.NewModel(db, rds), SystemModel: system.NewModel(db, rds),
CouponModel: coupon.NewModel(db, rds), CouponModel: coupon.NewModel(db, rds),

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 {
@ -949,8 +950,8 @@ type GetServerUserListResponse struct {
} }
type GetStatResponse struct { type GetStatResponse struct {
User int64 `json:"user"` User int64 `json:"user"`
Node int64 `json:"node"` Node int64 `json:"node"`
Country int64 `json:"country"` Country int64 `json:"country"`
Protocol []string `json:"protocol"` Protocol []string `json:"protocol"`
OnlineDevice int64 `json:"online_devices"` OnlineDevice int64 `json:"online_devices"`
@ -1011,11 +1012,12 @@ type GetSubscriptionResponse struct {
} }
type GetTicketListRequest struct { type GetTicketListRequest struct {
Page int64 `form:"page"` Page int64 `form:"page"`
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"`
Search string `form:"search,omitempty"` IssueType *uint8 `form:"issue_type,omitempty"`
Search string `form:"search,omitempty"`
} }
type GetTicketListResponse struct { type GetTicketListResponse struct {
@ -1133,10 +1135,11 @@ type GetUserTicketDetailRequest struct {
} }
type GetUserTicketListRequest struct { 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"`
Search string `form:"search,omitempty"` IssueType *uint8 `form:"issue_type,omitempty"`
Search string `form:"search,omitempty"`
} }
type GetUserTicketListResponse struct { type GetUserTicketListResponse struct {
@ -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 的自动重试策略。