mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-29 22:06:38 +08:00
46 lines
1.5 KiB
Go
46 lines
1.5 KiB
Go
// Copyright 2026 Arctel.net
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package references
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"fmt"
|
|
|
|
"github.com/Rain-kl/Wavelet/pkg/logger"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
// CustomService 示例业务 Service 结构体(通常放在 internal/apps/custom/service.go 中)
|
|
type CustomService struct {
|
|
// 这里可以注入数据库连接、配置对象或者其他基础服务的客户端
|
|
// 例如:db *gorm.DB
|
|
}
|
|
|
|
// NewCustomService 创建 CustomService 实例的构造函数
|
|
func NewCustomService() *CustomService {
|
|
return &CustomService{}
|
|
}
|
|
|
|
// ProcessBusinessData 演示核心业务处理逻辑的 Service 方法
|
|
// 1. 首位参数必须是 context.Context,以传播链路追踪 (OTel) 和超时控制。
|
|
// 2. 方法签名应该只包含纯 Go 的参数与返回值,禁止导入 Gin 或与 HTTP 相关的协议依赖。
|
|
// 3. 将可能发生的核心异常通过 error 返回给上层,而不是在这一层转换成 HTTP 状态码。
|
|
func (s *CustomService) ProcessBusinessData(ctx context.Context, userID int64, payload string) (string, error) {
|
|
if payload == "" {
|
|
return "", errors.New("payload cannot be empty")
|
|
}
|
|
|
|
// 模拟执行业务逻辑...
|
|
logger.Info(ctx, "processing custom business data in service",
|
|
zap.Int64("user_id", userID),
|
|
zap.String("payload", payload),
|
|
)
|
|
|
|
// 这里可以包含数据库读写、事务控制、或者远程 API 调用等复杂逻辑。
|
|
result := fmt.Sprintf("Success processed data for user %d: %s", userID, payload)
|
|
|
|
return result, nil
|
|
}
|