Dockerfile
This commit is contained in:
44
cmd/clear_cache/main.go
Normal file
44
cmd/clear_cache/main.go
Normal file
@@ -0,0 +1,44 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
goredis "github.com/redis/go-redis/v9"
|
||||
)
|
||||
|
||||
func main() {
|
||||
ctx := context.Background()
|
||||
rdb := goredis.NewClient(&goredis.Options{
|
||||
Addr: "192.168.3.200:6379",
|
||||
DB: 0,
|
||||
})
|
||||
defer rdb.Close()
|
||||
|
||||
patterns := []string{
|
||||
"*private_stock*",
|
||||
"*inventory_count*",
|
||||
"*private_sku*",
|
||||
"*warehouse*",
|
||||
"*zone*",
|
||||
"*location*",
|
||||
}
|
||||
|
||||
total := 0
|
||||
for _, pattern := range patterns {
|
||||
keys, err := rdb.Keys(ctx, pattern).Result()
|
||||
if err != nil {
|
||||
fmt.Printf("查询模式[%s]失败: %v\n", pattern, err)
|
||||
continue
|
||||
}
|
||||
for _, key := range keys {
|
||||
rdb.Del(ctx, key)
|
||||
total++
|
||||
}
|
||||
if len(keys) > 0 {
|
||||
fmt.Printf("✅ 模式[%s] 清除了 %d 个key\n", pattern, len(keys))
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Printf("\n共清除 %d 个Redis缓存key\n", total)
|
||||
}
|
||||
164
cmd/seed_data/main.go
Normal file
164
cmd/seed_data/main.go
Normal 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创建盘点任务进行测试")
|
||||
}
|
||||
Reference in New Issue
Block a user