refactor: centralize protobuf and remove go-zero

This commit is contained in:
2026-08-09 15:10:19 +08:00
parent 5cc5fd92ed
commit 4bbed3156c
357 changed files with 14208 additions and 19903 deletions

View File

@@ -1,70 +0,0 @@
# FTS微服务更新日志
所有FTS微服务的重要更改都将记录在此文件中。
格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/)
并且此项目遵循 [语义版本控制](https://semver.org/lang/zh-CN/)。
## [v2.0.0] - 2024-10-02
### 重大更新 🚀
- **升级Go版本到1.25.1** - 使用最新Go版本获得更好的性能和特性
- **现代化项目架构** - 参考最佳实践重构项目结构
- **移除gRPC依赖** - 简化架构专注HTTP API服务
### 新增功能 ✨
- **现代化构建工具链**
- 添加完整的Makefile支持多平台构建
- Docker容器化支持包含优化的多阶段构建
- docker-compose完整开发环境配置
- **增强的错误处理系统**
- 统一的业务错误定义和处理
- 标准化的响应格式
- 详细的错误码分类
- **完善的健康检查机制**
- 详细健康检查端点(/health
- 简单健康检查端点(/health/simple
- 系统资源监控
- 依赖服务状态检查
- **优雅关闭机制** - 支持服务的优雅启动和关闭
- **版本信息端点** - /version接口显示构建信息
### 开发体验改进 🛠️
- **开发工具支持**
- golangci-lint代码检查
- gosec安全扫描
- 代码覆盖率测试
- 自动化格式化
- **完整的项目文档** - 详细的README和使用指南
- **标准化项目结构** - 清晰的目录组织
### 技术升级 📦
- 升级bsm-sdk/core到v0.0.88
- 保持所有核心依赖的最新兼容版本
- 优化依赖管理,移除不必要的包
### 性能优化 ⚡
- 改进的配置加载机制
- 更好的资源管理
- 优化的HTTP服务器配置
### 安全增强 🔒
- 增强的错误处理,避免信息泄露
- 更安全的依赖配置
- 标准化的认证和授权准备
### 运维支持 📊
- 详细的健康检查
- 结构化日志支持
- 监控友好的端点设计
- 容器化部署支持
## [v1.0.0] - 2024-xx-xx
### 新增
- 初始版本发布
- 文件传输服务核心功能
- OSS存储支持
- 本地存储支持
- 文件上传接口
- 健康检查接口

View File

@@ -1,59 +0,0 @@
# 构建阶段
FROM golang:1.26.5-alpine AS builder
# 设置工作目录
WORKDIR /app
# 安装必要的工具
RUN apk add --no-cache git ca-certificates tzdata
# 设置Go环境变量
ENV GO111MODULE=on \
GOPROXY=https://goproxy.cn,direct \
GOPRIVATE=git.apinb.com/* \
GONOPROXY=git.apinb.com/* \
GOINSECURE=git.apinb.com/* \
GONOSUMDB=git.apinb.com/* \
GOEXPERIMENT=jsonv2
# 复制go模块文件
COPY go.mod go.sum ./
# 下载依赖
RUN go mod download
# 复制源代码
COPY . .
# 构建应用
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-w -s' -o fts ./cmd/main/main.go
# 运行阶段
FROM alpine:latest
# 设置时区
RUN apk --no-cache add ca-certificates tzdata \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& apk del tzdata
WORKDIR /root/
# 从构建阶段复制二进制文件
COPY --from=builder /app/fts .
# 复制配置文件
COPY --from=builder /app/etc ./etc
# 创建日志目录
RUN mkdir -p /var/log/fts
# 暴露端口
EXPOSE 8080
# 设置健康检查
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD curl -f http://localhost:8080/ || exit 1
# 运行应用
CMD ["./fts"]

View File

@@ -1,167 +0,0 @@
# FTS Service Makefile
# 变量定义
APP_NAME := fts
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "v1.0.0")
BUILD_TIME := $(shell date +%Y-%m-%d\ %H:%M:%S)
GIT_COMMIT := $(shell git rev-parse HEAD 2>/dev/null || echo "unknown")
GO_VERSION := $(shell go version | awk '{print $$3}')
# 构建标志
LDFLAGS := -ldflags "-X main.Version=$(VERSION) -X main.BuildTime=$(BUILD_TIME) -X main.GitCommit=$(GIT_COMMIT) -w -s"
BUILD_FLAGS := -trimpath $(LDFLAGS)
# 目录
BUILD_DIR := build
# Go环境变量
export GO111MODULE=on
export GOPROXY=https://goproxy.cn,direct
export GOPRIVATE=git.apinb.com/*
export GONOPROXY=git.apinb.com/*
export GOINSECURE=git.apinb.com/*
export GONOSUMDB=git.apinb.com/*
export GOEXPERIMENT=jsonv2
.PHONY: help
help: ## 显示帮助信息
@echo "FTS Service - 可用的命令:"
@echo ""
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
.PHONY: deps
deps: ## 下载依赖
@echo "下载Go依赖..."
go mod download
go mod tidy
.PHONY: build
build: deps ## 构建应用
@echo "构建应用..."
@mkdir -p $(BUILD_DIR)
CGO_ENABLED=0 go build $(BUILD_FLAGS) -o $(BUILD_DIR)/$(APP_NAME) ./cmd/main/main.go
@echo "构建完成: $(BUILD_DIR)/$(APP_NAME)"
.PHONY: build-linux
build-linux: deps ## 构建Linux版本
@echo "构建Linux版本..."
@mkdir -p $(BUILD_DIR)
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build $(BUILD_FLAGS) -o $(BUILD_DIR)/$(APP_NAME)-linux-amd64 ./cmd/main/main.go
@echo "构建完成: $(BUILD_DIR)/$(APP_NAME)-linux-amd64"
.PHONY: build-windows
build-windows: deps ## 构建Windows版本
@echo "构建Windows版本..."
@mkdir -p $(BUILD_DIR)
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build $(BUILD_FLAGS) -o $(BUILD_DIR)/$(APP_NAME)-windows-amd64.exe ./cmd/main/main.go
@echo "构建完成: $(BUILD_DIR)/$(APP_NAME)-windows-amd64.exe"
.PHONY: build-darwin
build-darwin: deps ## 构建macOS版本
@echo "构建macOS版本..."
@mkdir -p $(BUILD_DIR)
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build $(BUILD_FLAGS) -o $(BUILD_DIR)/$(APP_NAME)-darwin-amd64 ./cmd/main/main.go
@echo "构建完成: $(BUILD_DIR)/$(APP_NAME)-darwin-amd64"
.PHONY: build-all
build-all: build-linux build-windows build-darwin ## 构建所有平台版本
.PHONY: run
run: build ## 运行应用
@echo "启动应用..."
./$(BUILD_DIR)/$(APP_NAME)
.PHONY: dev
dev: ## 开发模式运行
@echo "开发模式启动..."
go run ./cmd/main/main.go
.PHONY: test
test: ## 运行测试
@echo "运行测试..."
go test -v ./...
.PHONY: test-coverage
test-coverage: ## 运行测试并生成覆盖率报告
@echo "运行测试覆盖率..."
go test -v -coverprofile=coverage.out ./...
go tool cover -html=coverage.out -o coverage.html
@echo "覆盖率报告生成: coverage.html"
.PHONY: lint
lint: ## 运行代码检查
@echo "运行代码检查..."
@if command -v golangci-lint >/dev/null 2>&1; then \
golangci-lint run; \
else \
echo "golangci-lint 未安装使用go vet..."; \
go vet ./...; \
fi
.PHONY: fmt
fmt: ## 格式化代码
@echo "格式化代码..."
go fmt ./...
@if command -v goimports >/dev/null 2>&1; then \
goimports -w .; \
fi
.PHONY: security
security: ## 安全检查
@echo "运行安全检查..."
@if command -v gosec >/dev/null 2>&1; then \
gosec ./...; \
else \
echo "gosec 未安装,请运行: go install github.com/securego/gosec/v2/cmd/gosec@latest"; \
fi
.PHONY: docker-build
docker-build: ## 构建Docker镜像
@echo "构建Docker镜像..."
docker build -t $(APP_NAME):$(VERSION) .
docker tag $(APP_NAME):$(VERSION) $(APP_NAME):latest
.PHONY: docker-run
docker-run: ## 运行Docker容器
@echo "运行Docker容器..."
docker run -d --name $(APP_NAME) -p 8080:8080 $(APP_NAME):latest
.PHONY: docker-stop
docker-stop: ## 停止Docker容器
@echo "停止Docker容器..."
docker stop $(APP_NAME) || true
docker rm $(APP_NAME) || true
.PHONY: clean
clean: ## 清理构建文件
@echo "清理构建文件..."
rm -rf $(BUILD_DIR)
rm -f coverage.out coverage.html
docker system prune -f
.PHONY: install-tools
install-tools: ## 安装开发工具
@echo "安装开发工具..."
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
go install golang.org/x/tools/cmd/goimports@latest
go install github.com/securego/gosec/v2/cmd/gosec@latest
.PHONY: mod-update
mod-update: ## 更新依赖
@echo "更新依赖..."
go get -u ./...
go mod tidy
.PHONY: version
version: ## 显示版本信息
@echo "应用名称: $(APP_NAME)"
@echo "版本: $(VERSION)"
@echo "构建时间: $(BUILD_TIME)"
@echo "Git提交: $(GIT_COMMIT)"
@echo "Go版本: $(GO_VERSION)"
.PHONY: all
all: clean deps build test lint ## 执行完整的构建流程
# 默认目标
.DEFAULT_GOAL := help

View File

@@ -1,95 +0,0 @@
version: '3.8'
services:
fts:
build: .
container_name: fts-service
ports:
- "8080:8080"
environment:
- ENV=dev
- GIN_MODE=release
volumes:
- ./etc:/root/etc:ro
- ./logs:/var/log/fts
depends_on:
- postgres
- redis
- etcd
networks:
- fts-network
restart: unless-stopped
postgres:
image: postgres:15-alpine
container_name: fts-postgres
environment:
POSTGRES_DB: fts
POSTGRES_USER: fts
POSTGRES_PASSWORD: fts123456
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- fts-network
restart: unless-stopped
redis:
image: redis:7-alpine
container_name: fts-redis
ports:
- "6379:6379"
volumes:
- redis_data:/data
networks:
- fts-network
restart: unless-stopped
etcd:
image: quay.io/coreos/etcd:v3.5.9
container_name: fts-etcd
environment:
- ETCD_NAME=etcd-server
- ETCD_DATA_DIR=/etcd-data
- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
- ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379
- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://0.0.0.0:2380
- ETCD_INITIAL_CLUSTER=etcd-server=http://0.0.0.0:2380
- ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
- ETCD_INITIAL_CLUSTER_STATE=new
ports:
- "2379:2379"
- "2380:2380"
volumes:
- etcd_data:/etcd-data
networks:
- fts-network
restart: unless-stopped
minio:
image: minio/minio:latest
container_name: fts-minio
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: admin123456
ports:
- "9000:9000"
- "9001:9001"
volumes:
- minio_data:/data
networks:
- fts-network
restart: unless-stopped
volumes:
postgres_data:
redis_data:
etcd_data:
minio_data:
networks:
fts-network:
driver: bridge

View File

@@ -9,7 +9,6 @@ package logic
// "bsm/full/module/base/fts/internal/types"
// "git.apinb.com/bsm-sdk/core/exception"
// "github.com/zeromicro/go-zero/core/logx"
// )
// func (l *ListLogic) List(in *types.Paginate, r *http.Request) (resp *types.Base, err error) {