From 32cd46a14abe00ecb55b054c953eab31f323e255 Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Mon, 5 Jun 2023 18:32:14 +0800 Subject: [PATCH] fix --- ddl/fs_product_model.sql | 24 ++++ model/fsproductmodelmodel.go | 24 ++++ model/fsproductmodelmodel_gen.go | 108 ++++++++++++++++++ product/internal/logic/getproductinfologic.go | 18 ++- 4 files changed, 172 insertions(+), 2 deletions(-) create mode 100644 ddl/fs_product_model.sql create mode 100755 model/fsproductmodelmodel.go create mode 100755 model/fsproductmodelmodel_gen.go diff --git a/ddl/fs_product_model.sql b/ddl/fs_product_model.sql new file mode 100644 index 00000000..0ff3baa7 --- /dev/null +++ b/ddl/fs_product_model.sql @@ -0,0 +1,24 @@ +-- fusentest.fs_product_model definition + +CREATE TABLE `fs_product_model` ( + `id` int(10) NOT NULL AUTO_INCREMENT, + `product_id` int(10) unsigned DEFAULT NULL COMMENT '产品ID', + `tag` tinyint(1) NOT NULL DEFAULT '1' COMMENT '类别(1:模型,2:配件,3:场景)', + `title` varchar(255) NOT NULL COMMENT '标题', + `name` varchar(255) DEFAULT '' COMMENT '详情页展示名称', + `model_info` varchar(3000) NOT NULL COMMENT '模型详情', + `material_id` tinyint(3) unsigned NOT NULL COMMENT '材质ID', + `size_id` int(10) unsigned NOT NULL COMMENT '尺寸ID', + `sort` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '排序', + `light` int(10) DEFAULT NULL COMMENT '灯光组', + `light_list` varchar(255) DEFAULT NULL COMMENT '灯光备选项', + `part_id` int(10) DEFAULT NULL COMMENT '配件选项id(配件就是模型的id)', + `part_list` varchar(255) DEFAULT NULL COMMENT '配件备选项', + `status` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '状态位 显示 删除', + `ctime` int(10) unsigned NOT NULL COMMENT '添加时间', + `option_template` int(10) DEFAULT NULL COMMENT '配件绑定的公共模板', + `price` int(10) NOT NULL DEFAULT '0' COMMENT '仅配件用,配件的价格, 单位:美分', + `sku` varchar(255) NOT NULL DEFAULT '' COMMENT 'sku', + PRIMARY KEY (`id`) USING BTREE, + KEY `product_id` (`product_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=215 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='产品模型表'; \ No newline at end of file diff --git a/model/fsproductmodelmodel.go b/model/fsproductmodelmodel.go new file mode 100755 index 00000000..4b30577a --- /dev/null +++ b/model/fsproductmodelmodel.go @@ -0,0 +1,24 @@ +package model + +import "github.com/zeromicro/go-zero/core/stores/sqlx" + +var _ FsProductModelModel = (*customFsProductModelModel)(nil) + +type ( + // FsProductModelModel is an interface to be customized, add more methods here, + // and implement the added methods in customFsProductModelModel. + FsProductModelModel interface { + fsProductModelModel + } + + customFsProductModelModel struct { + *defaultFsProductModelModel + } +) + +// NewFsProductModelModel returns a model for the database table. +func NewFsProductModelModel(conn sqlx.SqlConn) FsProductModelModel { + return &customFsProductModelModel{ + defaultFsProductModelModel: newFsProductModelModel(conn), + } +} diff --git a/model/fsproductmodelmodel_gen.go b/model/fsproductmodelmodel_gen.go new file mode 100755 index 00000000..e889ee7b --- /dev/null +++ b/model/fsproductmodelmodel_gen.go @@ -0,0 +1,108 @@ +// Code generated by goctl. DO NOT EDIT. + +package model + +import ( + "context" + "database/sql" + "fmt" + "strings" + + "github.com/zeromicro/go-zero/core/stores/builder" + "github.com/zeromicro/go-zero/core/stores/sqlc" + "github.com/zeromicro/go-zero/core/stores/sqlx" + "github.com/zeromicro/go-zero/core/stringx" +) + +var ( + fsProductModelFieldNames = builder.RawFieldNames(&FsProductModel{}) + fsProductModelRows = strings.Join(fsProductModelFieldNames, ",") + fsProductModelRowsExpectAutoSet = strings.Join(stringx.Remove(fsProductModelFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",") + fsProductModelRowsWithPlaceHolder = strings.Join(stringx.Remove(fsProductModelFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?" +) + +type ( + fsProductModelModel interface { + Insert(ctx context.Context, data *FsProductModel) (sql.Result, error) + FindOne(ctx context.Context, id int64) (*FsProductModel, error) + Update(ctx context.Context, data *FsProductModel) error + Delete(ctx context.Context, id int64) error + ListBySizeIdsTag(ctx context.Context, sizeIds []string, tag int) ([]FsProductModel, error) + } + + defaultFsProductModelModel struct { + conn sqlx.SqlConn + table string + } + + FsProductModel struct { + Id int64 `db:"id"` + ProductId sql.NullInt64 `db:"product_id"` // 产品ID + Tag int64 `db:"tag"` // 类别(1:模型,2:配件,3:场景) + Title string `db:"title"` // 标题 + Name string `db:"name"` // 详情页展示名称 + ModelInfo string `db:"model_info"` // 模型详情 + MaterialId int64 `db:"material_id"` // 材质ID + SizeId int64 `db:"size_id"` // 尺寸ID + Sort int64 `db:"sort"` // 排序 + Light sql.NullInt64 `db:"light"` // 灯光组 + LightList sql.NullString `db:"light_list"` // 灯光备选项 + PartId sql.NullInt64 `db:"part_id"` // 配件选项id(配件就是模型的id) + PartList sql.NullString `db:"part_list"` // 配件备选项 + Status int64 `db:"status"` // 状态位 显示 删除 + Ctime int64 `db:"ctime"` // 添加时间 + OptionTemplate sql.NullInt64 `db:"option_template"` // 配件绑定的公共模板 + Price int64 `db:"price"` // 仅配件用,配件的价格, 单位:美分 + Sku string `db:"sku"` // sku + } +) + +func newFsProductModelModel(conn sqlx.SqlConn) *defaultFsProductModelModel { + return &defaultFsProductModelModel{ + conn: conn, + table: "`fs_product_model`", + } +} + +func (m *defaultFsProductModelModel) Delete(ctx context.Context, id int64) error { + query := fmt.Sprintf("delete from %s where `id` = ?", m.table) + _, err := m.conn.ExecCtx(ctx, query, id) + return err +} + +func (m *defaultFsProductModelModel) FindOne(ctx context.Context, id int64) (*FsProductModel, error) { + query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", fsProductModelRows, m.table) + var resp FsProductModel + err := m.conn.QueryRowCtx(ctx, &resp, query, id) + switch err { + case nil: + return &resp, nil + case sqlc.ErrNotFound: + return nil, ErrNotFound + default: + return nil, err + } +} + +func (m *defaultFsProductModelModel) Insert(ctx context.Context, data *FsProductModel) (sql.Result, error) { + query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, fsProductModelRowsExpectAutoSet) + ret, err := m.conn.ExecCtx(ctx, query, data.ProductId, data.Tag, data.Title, data.Name, data.ModelInfo, data.MaterialId, data.SizeId, data.Sort, data.Light, data.LightList, data.PartId, data.PartList, data.Status, data.Ctime, data.OptionTemplate, data.Price, data.Sku) + return ret, err +} + +func (m *defaultFsProductModelModel) Update(ctx context.Context, data *FsProductModel) error { + query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, fsProductModelRowsWithPlaceHolder) + _, err := m.conn.ExecCtx(ctx, query, data.ProductId, data.Tag, data.Title, data.Name, data.ModelInfo, data.MaterialId, data.SizeId, data.Sort, data.Light, data.LightList, data.PartId, data.PartList, data.Status, data.Ctime, data.OptionTemplate, data.Price, data.Sku, data.Id) + return err +} +func (m *defaultFsProductModelModel) ListBySizeIdsTag(ctx context.Context, sizeIds []string, tag int) (resp []FsProductModel, err error) { + query := fmt.Sprintf("select %s from %s where `size_id` in (?) and `tag` = ?", fsProductModelRows, m.table) + err = m.conn.QueryRowsCtx(ctx, &resp, query, strings.Join(sizeIds, ","), tag) + if err != nil { + return nil, err + } + return +} +func (m *defaultFsProductModelModel) tableName() string { + return m.table +} diff --git a/product/internal/logic/getproductinfologic.go b/product/internal/logic/getproductinfologic.go index 10c748ab..1090ae68 100644 --- a/product/internal/logic/getproductinfologic.go +++ b/product/internal/logic/getproductinfologic.go @@ -2,9 +2,15 @@ package logic import ( "context" + "errors" + "fmt" + "fusenapi/model" "fusenapi/product/internal/svc" "fusenapi/product/internal/types" "fusenapi/utils/auth" + "fusenapi/utils/image" + "github.com/zeromicro/go-zero/core/stores/sqlc" + "strings" "github.com/zeromicro/go-zero/core/logx" ) @@ -26,7 +32,7 @@ func NewGetProductInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Ge // 获取产品详情 func (l *GetProductInfoLogic) GetProductInfo(req *types.GetProductInfoReq, loginInfo auth.UserInfo) (resp *types.Response) { //校验前台登录情况 - /*if loginInfo.UserId == 0 { + if loginInfo.UserId == 0 { return &types.Response{Code: 402, Message: "please sign in"} } req.Pid = strings.Trim(req.Pid, " ") @@ -61,6 +67,14 @@ func (l *GetProductInfoLogic) GetProductInfo(req *types.GetProductInfoReq, login sizeIds := make([]string, 0, len(productSizeList)) for _, v := range productSizeList { sizeIds = append(sizeIds, fmt.Sprintf("%d", v.Id)) - }*/ + } + //获取这些尺寸下的模型数据 + productModelModel := model.NewFsProductModelModel(l.svcCtx.MysqlConn) + models, err := productModelModel.ListBySizeIdsTag(l.ctx, sizeIds, 1) + if err != nil { + logx.Error(err) + return &types.Response{Code: 510, Message: "failed to get product models"} + } + //通过产品id和模型id获取模板信息 return }