package service import ( dao "assets/dao/asset" dto "assets/model/dto/asset" "context" "github.com/gogf/gf/v2/errors/gerror" "go.mongodb.org/mongo-driver/v2/bson" ) type privateSku struct{} // PrivateSku 私域SKU服务 var PrivateSku = new(privateSku) // CreatePrivateSku 创建私域SKU func (s *privateSku) CreatePrivateSku(ctx context.Context, req *dto.CreatePrivateSkuReq) (*dto.CreatePrivateSkuRes, error) { // 保存到数据库 ids, err := dao.PrivateSku.Insert(ctx, req) if err != nil { return nil, gerror.Wrap(err, "创建私域SKU失败") } var id *bson.ObjectID if len(ids) > 0 { if objectID, ok := ids[0].(bson.ObjectID); ok { id = &objectID } } return &dto.CreatePrivateSkuRes{ID: id}, nil } // BatchCreatePrivateSku 批量创建私域SKU func (s *privateSku) BatchCreatePrivateSku(ctx context.Context, req *dto.BatchCreatePrivateSkuReq) (*dto.BatchCreatePrivateSkuRes, error) { // 保存到数据库 ids, err := dao.PrivateSku.BatchInsert(ctx, req) if err != nil { return nil, gerror.Wrap(err, "批量创建私域SKU失败") } // 转换ID列表 idList := make([]*bson.ObjectID, 0, len(ids)) for _, id := range ids { if objectID, ok := id.(bson.ObjectID); ok { idList = append(idList, &objectID) } } return &dto.BatchCreatePrivateSkuRes{IDs: idList}, nil } // UpdatePrivateSku 更新私域SKU func (s *privateSku) UpdatePrivateSku(ctx context.Context, req *dto.UpdatePrivateSkuReq) error { // 更新到数据库 err := dao.PrivateSku.Update(ctx, req) if err != nil { return gerror.Wrap(err, "更新私域SKU失败") } return nil } // DeletePrivateSku 删除私域SKU func (s *privateSku) DeletePrivateSku(ctx context.Context, id *bson.ObjectID) error { return dao.PrivateSku.DeleteFake(ctx, id) } // GetPrivateSku 获取私域SKU详情 func (s *privateSku) GetPrivateSku(ctx context.Context, id *bson.ObjectID) (*dto.GetPrivateSkuRes, error) { sku, err := dao.PrivateSku.GetOne(ctx, id) if err != nil { return nil, gerror.Wrap(err, "获取私域SKU失败") } // 转换为响应 res := &dto.GetPrivateSkuRes{ ID: sku.Id, SkuName: sku.SkuName, ImageURL: sku.ImageURL, Price: sku.Price, Stock: sku.Stock, Sort: sku.Sort, PrivateCategoryPath: sku.PrivateCategoryPath, CreatedAt: sku.CreatedAt.Format("2006-01-02 15:04:05"), UpdatedAt: sku.UpdatedAt.Format("2006-01-02 15:04:05"), } return res, nil } // ListPrivateSku 获取私域SKU列表 func (s *privateSku) ListPrivateSku(ctx context.Context, req *dto.ListPrivateSkuReq) (*dto.ListPrivateSkuRes, error) { // 获取数据 skus, total, err := dao.PrivateSku.List(ctx, req) if err != nil { return nil, gerror.Wrap(err, "获取私域SKU列表失败") } // 转换为响应 listItems := make([]*dto.PrivateSkuListItem, 0, len(skus)) for _, sku := range skus { listItems = append(listItems, &dto.PrivateSkuListItem{ ID: sku.Id, SkuName: sku.SkuName, ImageURL: sku.ImageURL, Price: sku.Price, Stock: sku.Stock, Sort: sku.Sort, PrivateCategoryPath: sku.PrivateCategoryPath, CreatedAt: sku.CreatedAt.Format("2006-01-02 15:04:05"), UpdatedAt: sku.UpdatedAt.Format("2006-01-02 15:04:05"), }) } return &dto.ListPrivateSkuRes{ List: listItems, Total: total, }, nil } // UpdatePrivateSkuStock 更新私域SKU库存 func (s *privateSku) UpdatePrivateSkuStock(ctx context.Context, id *bson.ObjectID, stockChange int) error { return dao.PrivateSku.UpdateStock(ctx, id, stockChange) } // GenerateTestData 生成测试数据 func (s *privateSku) GenerateTestData(ctx context.Context) error { testData := &dto.BatchCreatePrivateSkuReq{ Skus: []dto.CreatePrivateSkuReq{ { SkuName: "联想ThinkPad X1 Carbon 14英寸 i7 16G 512G", ImageURL: "https://example.com/images/lenovo_x1_carbon.jpg", Price: 899900, // 8999.00元 Stock: 100, Sort: 1, PrivateCategoryPath: "/笔记本电脑/ThinkPad", }, { SkuName: "联想ThinkPad X1 Carbon 14英寸 i7 32G 1T", ImageURL: "https://example.com/images/lenovo_x1_carbon_32g.jpg", Price: 1199900, // 11999.00元 Stock: 50, Sort: 2, PrivateCategoryPath: "/笔记本电脑/ThinkPad", }, { SkuName: "戴尔Latitude 7440 14英寸 i7 16G 512G", ImageURL: "https://example.com/images/dell_latitude_7440.jpg", Price: 750000, // 7500.00元 Stock: 80, Sort: 1, PrivateCategoryPath: "/笔记本电脑/Latitude", }, { SkuName: "戴尔Latitude 7440 14英寸 i7 32G 1T", ImageURL: "https://example.com/images/dell_latitude_7440_32g.jpg", Price: 999900, // 9999.00元 Stock: 60, Sort: 2, PrivateCategoryPath: "/笔记本电脑/Latitude", }, { SkuName: "惠普暗影精灵9 16.1英寸 i7 32G 1T RTX4060", ImageURL: "https://example.com/images/hp_omen_9.jpg", Price: 849900, // 8499.00元 Stock: 70, Sort: 1, PrivateCategoryPath: "/游戏笔记本/暗影精灵", }, { SkuName: "惠普暗影精灵9 16.1英寸 i9 32G 2T RTX4070", ImageURL: "https://example.com/images/hp_omen_9_i9.jpg", Price: 1249900, // 12499.00元 Stock: 40, Sort: 2, PrivateCategoryPath: "/游戏笔记本/暗影精灵", }, }, } _, err := s.BatchCreatePrivateSku(ctx, testData) if err != nil { return gerror.Wrap(err, "生成测试数据失败") } return nil }