Dockerfile
This commit is contained in:
189
service/asset/private_sku_service.go
Normal file
189
service/asset/private_sku_service.go
Normal file
@@ -0,0 +1,189 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user