157 lines
4.1 KiB
Go
157 lines
4.1 KiB
Go
|
|
package main
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"encoding/json"
|
|||
|
|
"log"
|
|||
|
|
"tyapi-server/internal/config"
|
|||
|
|
"tyapi-server/internal/domains/product/entities"
|
|||
|
|
"tyapi-server/internal/infrastructure/database"
|
|||
|
|
|
|||
|
|
"github.com/google/uuid"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
func main() {
|
|||
|
|
// 加载配置
|
|||
|
|
cfg, err := config.LoadConfig()
|
|||
|
|
if err != nil {
|
|||
|
|
log.Fatalf("加载配置失败: %v", err)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 连接数据库
|
|||
|
|
db, err := database.NewConnection(database.Config{
|
|||
|
|
Host: cfg.Database.Host,
|
|||
|
|
Port: cfg.Database.Port,
|
|||
|
|
User: cfg.Database.User,
|
|||
|
|
Password: cfg.Database.Password,
|
|||
|
|
Name: cfg.Database.Name,
|
|||
|
|
SSLMode: cfg.Database.SSLMode,
|
|||
|
|
Timezone: cfg.Database.Timezone,
|
|||
|
|
MaxOpenConns: cfg.Database.MaxOpenConns,
|
|||
|
|
MaxIdleConns: cfg.Database.MaxIdleConns,
|
|||
|
|
ConnMaxLifetime: cfg.Database.ConnMaxLifetime,
|
|||
|
|
})
|
|||
|
|
if err != nil {
|
|||
|
|
log.Fatalf("连接数据库失败: %v", err)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 获取所有产品
|
|||
|
|
var products []entities.Product
|
|||
|
|
if err := db.Find(&products).Error; err != nil {
|
|||
|
|
log.Fatalf("获取产品失败: %v", err)
|
|||
|
|
}
|
|||
|
|
log.Printf("找到 %d 个产品", len(products))
|
|||
|
|
|
|||
|
|
for _, product := range products {
|
|||
|
|
// 检查是否已有API配置
|
|||
|
|
var count int64
|
|||
|
|
db.Model(&entities.ProductApiConfig{}).Where("product_id = ?", product.ID).Count(&count)
|
|||
|
|
if count > 0 {
|
|||
|
|
log.Printf("产品已有API配置,跳过: %s (%s)", product.Name, product.Code)
|
|||
|
|
continue
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 创建默认请求参数
|
|||
|
|
requestParams := []entities.RequestParam{
|
|||
|
|
{
|
|||
|
|
Name: "姓名",
|
|||
|
|
Field: "name",
|
|||
|
|
Type: "text",
|
|||
|
|
Required: true,
|
|||
|
|
Description: "用户真实姓名",
|
|||
|
|
Example: "张三",
|
|||
|
|
Validation: "^[\\u4e00-\\u9fa5]{2,4}$",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
Name: "身份证号",
|
|||
|
|
Field: "id_card",
|
|||
|
|
Type: "idcard",
|
|||
|
|
Required: true,
|
|||
|
|
Description: "用户身份证号码",
|
|||
|
|
Example: "110101199001011234",
|
|||
|
|
Validation: "^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
Name: "手机号",
|
|||
|
|
Field: "mobile",
|
|||
|
|
Type: "phone",
|
|||
|
|
Required: true,
|
|||
|
|
Description: "用户手机号码",
|
|||
|
|
Example: "13800138000",
|
|||
|
|
Validation: "^1[3-9]\\d{9}$",
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 创建默认响应字段
|
|||
|
|
responseFields := []entities.ResponseField{
|
|||
|
|
{
|
|||
|
|
Name: "结果",
|
|||
|
|
Path: "result",
|
|||
|
|
Type: "string",
|
|||
|
|
Required: true,
|
|||
|
|
Description: "查询结果",
|
|||
|
|
Example: "success",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
Name: "状态码",
|
|||
|
|
Path: "code",
|
|||
|
|
Type: "number",
|
|||
|
|
Required: true,
|
|||
|
|
Description: "响应状态码",
|
|||
|
|
Example: "200",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
Name: "消息",
|
|||
|
|
Path: "message",
|
|||
|
|
Type: "string",
|
|||
|
|
Required: true,
|
|||
|
|
Description: "响应消息",
|
|||
|
|
Example: "查询成功",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
Name: "数据",
|
|||
|
|
Path: "data",
|
|||
|
|
Type: "object",
|
|||
|
|
Required: false,
|
|||
|
|
Description: "查询结果数据",
|
|||
|
|
Example: "{}",
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 创建默认响应示例
|
|||
|
|
responseExample := map[string]interface{}{
|
|||
|
|
"result": "success",
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "查询成功",
|
|||
|
|
"data": map[string]interface{}{
|
|||
|
|
"name": "张三",
|
|||
|
|
"id_card": "110101199001011234",
|
|||
|
|
"mobile": "13800138000",
|
|||
|
|
"status": "正常",
|
|||
|
|
"query_time": "2024-01-01 12:00:00",
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 序列化为JSON
|
|||
|
|
requestParamsJSON, _ := json.Marshal(requestParams)
|
|||
|
|
responseFieldsJSON, _ := json.Marshal(responseFields)
|
|||
|
|
responseExampleJSON, _ := json.Marshal(responseExample)
|
|||
|
|
|
|||
|
|
// 创建API配置
|
|||
|
|
apiConfig := entities.ProductApiConfig{
|
|||
|
|
ID: uuid.New().String(),
|
|||
|
|
ProductID: product.ID,
|
|||
|
|
RequestParams: string(requestParamsJSON),
|
|||
|
|
ResponseFields: string(responseFieldsJSON),
|
|||
|
|
ResponseExample: string(responseExampleJSON),
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 保存到数据库
|
|||
|
|
if err := db.Create(&apiConfig).Error; err != nil {
|
|||
|
|
log.Printf("创建产品API配置失败: %s, 错误: %v", product.Name, err)
|
|||
|
|
} else {
|
|||
|
|
log.Printf("成功创建产品API配置: %s (%s)", product.Name, product.Code)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
log.Println("产品API配置初始化完成")
|
|||
|
|
}
|