新增后台管理
This commit is contained in:
		| @@ -0,0 +1,75 @@ | ||||
| package product | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"tydata-server/app/user/model" | ||||
| 	"tydata-server/common/xerr" | ||||
|  | ||||
| 	"github.com/Masterminds/squirrel" | ||||
| 	"github.com/jinzhu/copier" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"github.com/zeromicro/go-zero/core/mr" | ||||
|  | ||||
| 	"tydata-server/app/user/cmd/api/internal/svc" | ||||
| 	"tydata-server/app/user/cmd/api/internal/types" | ||||
|  | ||||
| 	"github.com/zeromicro/go-zero/core/logx" | ||||
| ) | ||||
|  | ||||
| type GetProductAppByEnLogic struct { | ||||
| 	logx.Logger | ||||
| 	ctx    context.Context | ||||
| 	svcCtx *svc.ServiceContext | ||||
| } | ||||
|  | ||||
| func NewGetProductAppByEnLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetProductAppByEnLogic { | ||||
| 	return &GetProductAppByEnLogic{ | ||||
| 		Logger: logx.WithContext(ctx), | ||||
| 		ctx:    ctx, | ||||
| 		svcCtx: svcCtx, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (l *GetProductAppByEnLogic) GetProductAppByEn(req *types.GetProductByEnRequest) (resp *types.ProductResponse, err error) { | ||||
| 	productModel, err := l.svcCtx.ProductModel.FindOneByProductEn(l.ctx, req.ProductEn) | ||||
| 	if err != nil { | ||||
| 		return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "产品查询, 查找产品错误: %v", err) | ||||
| 	} | ||||
|  | ||||
| 	build := l.svcCtx.ProductFeatureModel.SelectBuilder().Where(squirrel.Eq{ | ||||
| 		"product_id": productModel.Id, | ||||
| 	}) | ||||
| 	productFeatureAll, err := l.svcCtx.ProductFeatureModel.FindAll(l.ctx, build, "") | ||||
| 	if err != nil { | ||||
| 		return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "产品查询, 查找产品关联错误: %v", err) | ||||
| 	} | ||||
| 	var product types.Product | ||||
| 	err = copier.Copy(&product, productModel) | ||||
| 	if err != nil { | ||||
| 		return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "用户信息, 用户信息结构体复制失败, %v", err) | ||||
| 	} | ||||
| 	mr.MapReduceVoid(func(source chan<- interface{}) { | ||||
| 		for _, productFeature := range productFeatureAll { | ||||
| 			source <- productFeature.FeatureId | ||||
| 		} | ||||
| 	}, func(item interface{}, writer mr.Writer[*model.Feature], cancel func(error)) { | ||||
| 		id := item.(int64) | ||||
|  | ||||
| 		feature, findFeatureErr := l.svcCtx.FeatureModel.FindOne(l.ctx, id) | ||||
| 		if findFeatureErr != nil { | ||||
| 			logx.WithContext(l.ctx).Errorf("产品查询, 查找关联feature错误: %d, err:%v", id, findFeatureErr) | ||||
| 			return | ||||
| 		} | ||||
| 		if feature != nil && feature.Id > 0 { | ||||
| 			writer.Write(feature) | ||||
| 		} | ||||
| 	}, func(pipe <-chan *model.Feature, cancel func(error)) { | ||||
| 		for item := range pipe { | ||||
| 			var feature types.Feature | ||||
| 			_ = copier.Copy(&feature, item) | ||||
| 			product.Features = append(product.Features, feature) | ||||
| 		} | ||||
| 	}) | ||||
|  | ||||
| 	return &types.ProductResponse{Product: product}, nil | ||||
| } | ||||
							
								
								
									
										75
									
								
								app/main/api/internal/logic/product/getproductbyenlogic.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								app/main/api/internal/logic/product/getproductbyenlogic.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | ||||
| package product | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"tydata-server/app/user/model" | ||||
| 	"tydata-server/common/xerr" | ||||
|  | ||||
| 	"github.com/Masterminds/squirrel" | ||||
| 	"github.com/jinzhu/copier" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"github.com/zeromicro/go-zero/core/mr" | ||||
|  | ||||
| 	"tydata-server/app/user/cmd/api/internal/svc" | ||||
| 	"tydata-server/app/user/cmd/api/internal/types" | ||||
|  | ||||
| 	"github.com/zeromicro/go-zero/core/logx" | ||||
| ) | ||||
|  | ||||
| type GetProductByEnLogic struct { | ||||
| 	logx.Logger | ||||
| 	ctx    context.Context | ||||
| 	svcCtx *svc.ServiceContext | ||||
| } | ||||
|  | ||||
| func NewGetProductByEnLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetProductByEnLogic { | ||||
| 	return &GetProductByEnLogic{ | ||||
| 		Logger: logx.WithContext(ctx), | ||||
| 		ctx:    ctx, | ||||
| 		svcCtx: svcCtx, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (l *GetProductByEnLogic) GetProductByEn(req *types.GetProductByEnRequest) (resp *types.ProductResponse, err error) { | ||||
| 	productModel, err := l.svcCtx.ProductModel.FindOneByProductEn(l.ctx, req.ProductEn) | ||||
| 	if err != nil { | ||||
| 		return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "产品查询, 查找产品错误: %v", err) | ||||
| 	} | ||||
|  | ||||
| 	build := l.svcCtx.ProductFeatureModel.SelectBuilder().Where(squirrel.Eq{ | ||||
| 		"product_id": productModel.Id, | ||||
| 	}) | ||||
| 	productFeatureAll, err := l.svcCtx.ProductFeatureModel.FindAll(l.ctx, build, "") | ||||
| 	if err != nil { | ||||
| 		return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "产品查询, 查找产品关联错误: %v", err) | ||||
| 	} | ||||
| 	var product types.Product | ||||
| 	err = copier.Copy(&product, productModel) | ||||
| 	if err != nil { | ||||
| 		return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "用户信息, 用户信息结构体复制失败, %v", err) | ||||
| 	} | ||||
| 	mr.MapReduceVoid(func(source chan<- interface{}) { | ||||
| 		for _, productFeature := range productFeatureAll { | ||||
| 			source <- productFeature.FeatureId | ||||
| 		} | ||||
| 	}, func(item interface{}, writer mr.Writer[*model.Feature], cancel func(error)) { | ||||
| 		id := item.(int64) | ||||
|  | ||||
| 		feature, findFeatureErr := l.svcCtx.FeatureModel.FindOne(l.ctx, id) | ||||
| 		if findFeatureErr != nil { | ||||
| 			logx.WithContext(l.ctx).Errorf("产品查询, 查找关联feature错误: %d, err:%v", id, findFeatureErr) | ||||
| 			return | ||||
| 		} | ||||
| 		if feature != nil && feature.Id > 0 { | ||||
| 			writer.Write(feature) | ||||
| 		} | ||||
| 	}, func(pipe <-chan *model.Feature, cancel func(error)) { | ||||
| 		for item := range pipe { | ||||
| 			var feature types.Feature | ||||
| 			_ = copier.Copy(&feature, item) | ||||
| 			product.Features = append(product.Features, feature) | ||||
| 		} | ||||
| 	}) | ||||
|  | ||||
| 	return &types.ProductResponse{Product: product}, nil | ||||
| } | ||||
							
								
								
									
										30
									
								
								app/main/api/internal/logic/product/getproductbyidlogic.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								app/main/api/internal/logic/product/getproductbyidlogic.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| package product | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
|  | ||||
| 	"tydata-server/app/user/cmd/api/internal/svc" | ||||
| 	"tydata-server/app/user/cmd/api/internal/types" | ||||
|  | ||||
| 	"github.com/zeromicro/go-zero/core/logx" | ||||
| ) | ||||
|  | ||||
| type GetProductByIDLogic struct { | ||||
| 	logx.Logger | ||||
| 	ctx    context.Context | ||||
| 	svcCtx *svc.ServiceContext | ||||
| } | ||||
|  | ||||
| func NewGetProductByIDLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetProductByIDLogic { | ||||
| 	return &GetProductByIDLogic{ | ||||
| 		Logger: logx.WithContext(ctx), | ||||
| 		ctx:    ctx, | ||||
| 		svcCtx: svcCtx, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (l *GetProductByIDLogic) GetProductByID(req *types.GetProductByIDRequest) (resp *types.ProductResponse, err error) { | ||||
| 	// todo: add your logic here and delete this line | ||||
|  | ||||
| 	return | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 liangzai
					liangzai