Dockerfile

This commit is contained in:
2026-03-18 10:18:03 +08:00
parent 5c5dbc7420
commit b65f3439f3
189 changed files with 19027 additions and 0 deletions

164
cmd/seed_data/main.go Normal file
View File

@@ -0,0 +1,164 @@
package main
import (
"context"
"fmt"
"time"
"go.mongodb.org/mongo-driver/v2/bson"
"go.mongodb.org/mongo-driver/v2/mongo"
"go.mongodb.org/mongo-driver/v2/mongo/options"
)
func main() {
ctx := context.Background()
client, err := mongo.Connect(options.Client().ApplyURI("mongodb://192.168.3.200:27017/?directConnection=true"))
if err != nil {
panic(err)
}
defer client.Disconnect(ctx)
db := client.Database("assets")
now := time.Now()
// 0. 清理之前的测试数据按warehouseCode匹配
fmt.Println("=== 清理旧测试数据 ===")
db.Collection("warehouse").DeleteMany(ctx, bson.M{"warehouseCode": "WH-TEST-001"})
db.Collection("zone").DeleteMany(ctx, bson.M{"zoneCode": "ZN-TEST-001"})
db.Collection("location").DeleteMany(ctx, bson.M{"locationCode": "LC-TEST-001"})
db.Collection("private_sku").DeleteMany(ctx, bson.M{"skuName": "测试商品-矿泉水550ml"})
db.Collection("private_stock").DeleteMany(ctx, bson.M{"warehouseCode": "WH-TEST-001"})
db.Collection("inventory_count").DeleteMany(ctx, bson.M{"title": bson.M{"$regex": "测试"}})
db.Collection("inventory_count_detail").DeleteMany(ctx, bson.M{})
fmt.Println("✅ 旧测试数据已清理")
// 基础字段MongoBaseDO
base := func() bson.M {
return bson.M{
"creator": "admin",
"createdAt": now,
"updater": "admin",
"updatedAt": now,
"tenantId": float64(1),
"isDeleted": false,
}
}
// 1. 创建仓库(匹配现有数据格式)
warehouseId := bson.NewObjectID()
whDoc := base()
whDoc["_id"] = warehouseId
whDoc["warehouseCode"] = "WH-TEST-001"
whDoc["warehouseName"] = "测试仓库"
whDoc["address"] = "测试地址"
whDoc["contactPerson"] = "测试联系人"
whDoc["contactPhone"] = "13800138000"
whDoc["status"] = "enable"
whDoc["remark"] = "自动生成的测试数据"
_, err = db.Collection("warehouse").InsertOne(ctx, whDoc)
if err != nil {
fmt.Printf("创建仓库失败: %v\n", err)
return
}
fmt.Printf("✅ 仓库已创建: %s\n", warehouseId.Hex())
// 2. 创建库区Zone.WarehouseId是string类型zoneType是string枚举
zoneId := bson.NewObjectID()
znDoc := base()
znDoc["_id"] = zoneId
znDoc["warehouseId"] = warehouseId.Hex()
znDoc["zoneCode"] = "ZN-TEST-001"
znDoc["zoneName"] = "测试库区A"
znDoc["zoneType"] = "normal"
znDoc["status"] = "enable"
znDoc["remark"] = "自动生成的测试数据"
_, err = db.Collection("zone").InsertOne(ctx, znDoc)
if err != nil {
fmt.Printf("创建库区失败: %v\n", err)
return
}
fmt.Printf("✅ 库区已创建: %s\n", zoneId.Hex())
// 3. 创建库位匹配现有数据maxCapacity/currentCapacity为顶层字段
locationId := bson.NewObjectID()
lcDoc := base()
lcDoc["_id"] = locationId
lcDoc["warehouseId"] = warehouseId
lcDoc["zoneId"] = zoneId
lcDoc["locationCode"] = "LC-TEST-001"
lcDoc["locationName"] = "测试库位A-1"
lcDoc["locationType"] = "shelf"
lcDoc["status"] = "idle"
lcDoc["maxCapacity"] = 100
lcDoc["currentCapacity"] = 0
lcDoc["remark"] = "自动生成的测试数据"
_, err = db.Collection("location").InsertOne(ctx, lcDoc)
if err != nil {
fmt.Printf("创建库位失败: %v\n", err)
return
}
fmt.Printf("✅ 库位已创建: %s\n", locationId.Hex())
// 4. 创建私域SKU匹配现有数据格式
skuId := bson.NewObjectID()
skuDoc := base()
skuDoc["_id"] = skuId
skuDoc["skuName"] = "测试商品-矿泉水550ml"
skuDoc["price"] = 200
skuDoc["stock"] = 150
skuDoc["sort"] = 1
skuDoc["capacityUnitType"] = 1
skuDoc["capacity"] = bson.M{"value": 550, "unit": "ml"}
skuDoc["privateCategoryPath"] = "/饮品/矿泉水"
_, err = db.Collection("private_sku").InsertOne(ctx, skuDoc)
if err != nil {
fmt.Printf("创建SKU失败: %v\n", err)
return
}
fmt.Printf("✅ 私域SKU已创建: %s\n", skuId.Hex())
// 5. 创建私域库存2条批次枚举用string类型
for i := 1; i <= 2; i++ {
stockId := bson.NewObjectID()
stDoc := base()
stDoc["_id"] = stockId
stDoc["stockType"] = 2
stDoc["warehouseId"] = warehouseId
stDoc["warehouseCode"] = "WH-TEST-001"
stDoc["warehouseName"] = "测试仓库"
stDoc["zoneId"] = zoneId
stDoc["zoneCode"] = "ZN-TEST-001"
stDoc["zoneName"] = "测试库区A"
stDoc["zoneType"] = "normal"
stDoc["locationId"] = locationId
stDoc["locationCode"] = "LC-TEST-001"
stDoc["locationName"] = "测试库位A-1"
stDoc["locationType"] = "shelf"
stDoc["privateSkuId"] = skuId
stDoc["batchNo"] = fmt.Sprintf("BATCH-TEST-%03d", i)
stDoc["batchQty"] = 50 * i
stDoc["availableQty"] = 50 * i
stDoc["batchStatus"] = 1
stDoc["supportsRecycle"] = false
stDoc["privateCategoryPath"] = "/饮品/矿泉水"
stDoc["stockStatus"] = 1
_, err = db.Collection("private_stock").InsertOne(ctx, stDoc)
if err != nil {
fmt.Printf("创建库存批次%d失败: %v\n", i, err)
return
}
fmt.Printf("✅ 私域库存批次%d已创建: %s (数量:%d)\n", i, stockId.Hex(), 50*i)
}
fmt.Println("\n========== 测试数据创建完成 ==========")
fmt.Printf("仓库ID: %s\n", warehouseId.Hex())
fmt.Printf("库区ID: %s\n", zoneId.Hex())
fmt.Printf("库位ID: %s\n", locationId.Hex())
fmt.Printf("SKU ID: %s\n", skuId.Hex())
fmt.Println("\n可使用仓库ID创建盘点任务进行测试")
}