From 029c8611556aa3b77cdae78376842e8531521c9f Mon Sep 17 00:00:00 2001 From: lishihai <dslsh@dscom> Date: 星期四, 20 六月 2024 22:24:01 +0800 Subject: [PATCH] 产品->动态属性增改查 --- controllers/product_controller.go | 49 ++++++++++++++++++++---- controllers/attribute.go | 8 ++-- models/attribute.go | 10 ++++- request/attribute.go | 6 +- 4 files changed, 55 insertions(+), 18 deletions(-) diff --git a/controllers/attribute.go b/controllers/attribute.go index a2cc273..079fb27 100644 --- a/controllers/attribute.go +++ b/controllers/attribute.go @@ -144,14 +144,14 @@ // ListAttribute // @Tags 灞炴�у�煎拰瀵硅薄 -// @Summary 鏌ヨ灞炴�у�煎拰瀵硅薄 +// @Summary 娣诲姞灞炴�у�煎拰瀵硅薄 // @Produce application/json -// object body request.GetAttributeList true "鏌ヨ鍙傛暟" +// @Param object body request.GetAttributeList true "灞炴�у�煎拰瀵硅薄淇℃伅" // @Success 200 {object} util.Response "鎴愬姛" // @Router /api-wms/v1/attribute/list [post] func (slf AttributeController) ListAttribute(c *gin.Context) { - var params request.GetAttributeList - if err := c.ShouldBindQuery(¶ms); err != nil { + var params request.AttributeList + if err := c.ShouldBind(¶ms); err != nil { util.ResponseFormat(c, code.RequestParamError, err.Error()) return } diff --git a/controllers/product_controller.go b/controllers/product_controller.go index cb0e7fc..dea98e2 100644 --- a/controllers/product_controller.go +++ b/controllers/product_controller.go @@ -181,6 +181,37 @@ product.MaxInventoryRule = reorderRules[0].MaxInventory } product.ReorderRuleNum = rulesTotal + attributeValues, err := models.NewAttributeValueSearch().SetEntityID(product.ID).FindNotTotal() + aids := make([]uint, 0) + for _, v := range attributeValues { + aids = append(aids, v.AttributeID) + } + attributes, err := models.NewAttributeSearch().SetIDs(aids).FindNotTotal() + attributesMap := make(map[uint]*models.Attribute, len(attributes)) + for _, v := range attributes { + attributesMap[v.ID] = v + } + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "鏈煡鍔ㄦ�佸睘鎬�") + } + for _, v1 := range attributeValues { + attribute := attributesMap[v1.AttributeID] + if attribute == nil { + continue + } + //product.Attributes = append(product.Attributes,v1) + product.Attributes = append(product.Attributes, models.Attribute{ + Model: gorm.Model{ID: v1.ID, CreatedAt: v1.CreatedAt, UpdatedAt: v1.UpdatedAt, DeletedAt: v1.DeletedAt}, + Name: attribute.Name, + DataType: attribute.DataType, + EntityType: attribute.EntityType, + SelectValues: attribute.SelectValues, + SelectValue: attribute.SelectValue, + //Value: v1.Value, + Value: v1.Value, + }) + } + } util.ResponseFormatList(c, code.Success, products, int(total)) } @@ -268,25 +299,25 @@ } } - attributeValueSearch := models.NewAttributeValueSearch() + /*attributeValueSearch := models.NewAttributeValueSearch() //鍒犻櫎浠庢柊鎻掑叆 if err := attributeValueSearch.SetOrm(tx).SetEntityID(params.ID).Delete(); err != nil { return err - } - avs := make([]*models.AttributeValue, 0) + }*/ + //avs := make([]*models.AttributeValue, 0) for _, v := range params.Attributes { av := models.AttributeValue{ - Model: gorm.Model{}, + Model: gorm.Model{ID: v.ID}, EntityID: params.ID, AttributeID: v.ID, Value: v.Value, } - avs = append(avs, &av) + //avs = append(avs, &av) + if err := models.NewAttributeValueSearch().SetOrm(tx).Save(&av); err != nil { + return err + } + } - } - if err := models.NewAttributeValueSearch().SetOrm(tx).CreateBatch(avs); err != nil { - return err - } return nil }) if err != nil { diff --git a/models/attribute.go b/models/attribute.go index 92ca831..8f1a368 100644 --- a/models/attribute.go +++ b/models/attribute.go @@ -26,6 +26,7 @@ PageSize int Orm *gorm.DB Keyword string + IDs []uint } ) @@ -104,7 +105,10 @@ slf.ID = id return slf } - +func (slf *AttributeSearch) SetIDs(ids []uint) *AttributeSearch { + slf.IDs = ids + return slf +} func (slf *AttributeSearch) SetName(name string) *AttributeSearch { slf.Name = name return slf @@ -120,7 +124,9 @@ if slf.ID != 0 { db = db.Where("id = ?", slf.ID) } - + if len(slf.IDs) != 0 { + db = db.Where("id in ?", slf.IDs) + } if slf.Order != "" { db = db.Order(slf.Order) } diff --git a/request/attribute.go b/request/attribute.go index df8d05a..0b72fbc 100644 --- a/request/attribute.go +++ b/request/attribute.go @@ -2,10 +2,10 @@ import "wms/models" -type GetAttributeList struct { +type AttributeList struct { PageInfo - Keyword string `json:"keyword"` - EntityType models.EntityType `json:"entityType"` + Keyword string `json:"keyword" form:"keyword"` + EntityType models.EntityType `json:"entityType" form:"entityType"` } type AddAttribute struct { -- Gitblit v1.8.0