From c14c24cad0f8ec362cacc1368c115bb5b4de9744 Mon Sep 17 00:00:00 2001 From: dsmzx <dsmzx@123.com> Date: 星期五, 14 六月 2024 21:13:33 +0800 Subject: [PATCH] 属性信息(增删改查)操作 --- controllers/attribute.go | 186 ++++++++++++++++++++++++++++++++++++++++++++++ models/attribute.go | 11 ++ request/attribute.go | 19 ++++ controllers/attribute_value.go | 6 router/router.go | 11 ++ 5 files changed, 230 insertions(+), 3 deletions(-) diff --git a/controllers/attribute.go b/controllers/attribute.go new file mode 100644 index 0000000..5f94874 --- /dev/null +++ b/controllers/attribute.go @@ -0,0 +1,186 @@ +package controllers + +import ( + "errors" + "fmt" + "github.com/gin-gonic/gin" + "github.com/spf13/cast" + "gorm.io/gorm" + "wms/extend/code" + "wms/extend/util" + "wms/models" + "wms/pkg/structx" + "wms/request" +) + +type AttributeController struct{} + +// Add +// @Tags 灞炴�� +// @Summary 娣诲姞灞炴�� +// @Produce application/json +// @Param object body request.AddAttribute true "灞炴�т俊鎭�" +// @Param Authorization header string true "token" +// @Success 200 {object} util.Response "鎴愬姛" +// @Router /api-wms/v1/attribute/attribute [post] +func (slf *AttributeController) Add(c *gin.Context) { + var reqParams request.AddAttribute + var params models.Attribute + if err := c.BindJSON(&reqParams); err != nil { + util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�:"+err.Error()) + return + } + if err := structx.AssignTo(reqParams, ¶ms); err != nil { + util.ResponseFormat(c, code.RequestParamError, "鏁版嵁杞崲閿欒") + return + } + if err := slf.CheckAttribute(params); err != nil { + util.ResponseFormat(c, code.RequestParamError, err) + return + } + err := models.WithTransaction(func(tx *gorm.DB) error { + if err := models.NewAttributeSearch().BeforeCreate(tx); err != nil { + return err + } + if err := models.NewAttributeSearch().Create(¶ms); err != nil { + return err + } + return nil + }) + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "鍒涘缓澶辫触") + return + } + util.ResponseFormat(c, code.Success, "鍒涘缓鎴愬姛") +} + +func (slf AttributeController) CheckAttribute(params models.Attribute) error { + if params.Name == "" { + return errors.New("鍚嶇О涓嶈兘涓虹┖") + } + if params.DataType == 0 { + return errors.New("浜у搧涓嶈兘涓虹┖") + } + if params.DataType == 3 && len(params.SelectValues) == 0 { + return errors.New("涓嬫媺妗嗗睘鎬у�间笉鑳戒负绌�") + } + return nil +} + +// Update +// @Tags 灞炴�� +// @Summary 缂栬緫灞炴�� +// @Produce application/json +// @Param object body request.UpdateAttribute true "灞炴�т俊鎭�" +// @Param id path string true "灞炴�d" +// @Param Authorization header string true "token" +// @Success 200 {object} util.Response "鎴愬姛" +// @Router /api-wms/v1/attribute/updateAttribute/{id} [put] +func (slf AttributeController) Update(c *gin.Context) { + id := cast.ToUint(c.Param("id")) + if id == 0 { + util.ResponseFormat(c, code.RequestParamError, "绌虹殑璁板綍id") + return + } + var ( + reqParams request.UpdateAttribute + params models.Attribute + ) + if err := c.BindJSON(&reqParams); err != nil { + util.ResponseFormat(c, code.RequestParamError, fmt.Sprintf("鍙傛暟瑙f瀽澶辫触: %v"+err.Error())) + return + } + if err := structx.AssignTo(reqParams, ¶ms); err != nil { + util.ResponseFormat(c, code.RequestParamError, fmt.Sprintf("鏁版嵁杞崲閿欒: %v", err.Error())) + return + } + params.ID = id + if _, err := models.NewAttributeSearch().SetID(params.ID).First(); errors.Is(err, gorm.ErrRecordNotFound) { + util.ResponseFormat(c, code.RequestParamError, fmt.Sprintf("璁板綍涓嶅瓨鍦�: %v", err)) + return + } + err := models.WithTransaction(func(tx *gorm.DB) error { + if err := models.NewAttributeSearch().BeforeUpdate(tx); err != nil { + return err + } + if err := models.NewAttributeSearch().SetID(params.ID).Save(¶ms); err != nil { + return err + } + return nil + }) + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "淇敼澶辫触") + return + } + util.ResponseFormat(c, code.UpdateSuccess, "鏇存柊鎴愬姛") +} + +// Delete +// @Tags 灞炴�� +// @Summary 鍒犻櫎灞炴�� +// @Produce application/json +// @Param Authorization header string true "token" +// @Param id path string true "灞炴�d" +// @Success 200 {object} util.Response "鎴愬姛" +// @Router /api-wms/v1/attribute/delete/{id} [delete] +func (slf AttributeController) Delete(c *gin.Context) { + id := cast.ToUint(c.Param("id")) + if id == 0 { + util.ResponseFormat(c, code.RequestParamError, "绌虹殑璁板綍id") + return + } + if _, err := models.NewAttributeSearch().SetID(id).First(); errors.Is(err, gorm.ErrRecordNotFound) { + util.ResponseFormat(c, code.RequestParamError, fmt.Sprintf("璁板綍涓嶅瓨鍦�: %v", err)) + return + } + err := models.NewAttributeSearch().SetID(id).Delete() + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "鍒犻櫎澶辫触") + return + } + util.ResponseFormat(c, code.UpdateSuccess, "鍒犻櫎鎴愬姛") +} + +// List +// @Tags 灞炴�� +// @Summary 鏌ヨ灞炴�у垪琛� +// @Produce application/json +// @Param object query request.GetAttributeList true "鏌ヨ鍙傛暟" +// @Param Authorization header string true "token" +// @Success 200 {object} util.ResponseList{data=[]models.Attribute} "鎴愬姛" +// @Router /api-wms/v1/attribute/attribute [get] +func (slf AttributeController) List(c *gin.Context) { + var params request.GetAttributeList + if err := c.ShouldBindQuery(¶ms); err != nil { + util.ResponseFormat(c, code.RequestParamError, err.Error()) + return + } + list, count, err := models.NewAttributeSearch().SetPage(params.Page, params.PageSize).SetOrder("id desc").Find() + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "鏌ヨ澶辫触") + return + } + util.ResponseFormatList(c, code.Success, list, cast.ToInt(count)) +} + +// GetAttributeDetail +// @Tags 灞炴�� +// @Summary 鑾峰彇灞炴�ц鎯� +// @Produce application/json +// @Param id path string true "灞炴�d" +// @Success 200 {object} util.ResponseList{data=models.Attribute} "鎴愬姛" +// @Router /api-wms/v1/attribute/attribute/{id} [get] +//func (slf AttributeController) GetAttributeDetail(c *gin.Context) { +// id := cast.ToUint(c.Param("id")) +// if id == 0 { +// util.ResponseFormat(c, code.RequestParamError, "绌虹殑璁板綍id") +// return +// } +// first, err := models.NewAttributeSearch().SetID(id).First() +// if err != nil { +// util.ResponseFormat(c, code.RequestParamError, "鑾峰彇灞炴�т俊鎭け璐�") +// return +// } +// +// util.ResponseFormat(c, code.UpdateSuccess, first) +//} diff --git a/controllers/attribute_value.go b/controllers/attribute_value.go index 7e5cdf7..736b1d5 100644 --- a/controllers/attribute_value.go +++ b/controllers/attribute_value.go @@ -18,7 +18,7 @@ // @Tags 灞炴�у�煎拰瀵硅薄 // @Summary 娣诲姞灞炴�у�煎拰瀵硅薄 // @Produce application/json -// @Param object body request.AttributeValue true "灞炴�у�煎拰瀵硅薄淇℃伅" +// @Param object body request.AddAttributeValue true "灞炴�у�煎拰瀵硅薄淇℃伅" // @Success 200 {object} util.Response "鎴愬姛" // @Router /api-wms/v1/attributeValue/add [post] func (slf *AttributeValueController) AddAttributeValue(c *gin.Context) { @@ -55,7 +55,7 @@ // @Tags 灞炴�у�煎拰瀵硅薄 // @Summary 鏇存柊灞炴�у�煎拰瀵硅薄 // @Produce application/json -// @Param object body request.AttributeValue true "灞炴�у�煎拰瀵硅薄淇℃伅" +// @Param object body request.UpdateAttributeValue true "灞炴�у�煎拰瀵硅薄淇℃伅" // @Success 200 {object} util.Response "鎴愬姛" // @Router /api-wms/v1/attributeValue/update [post] func (slf *AttributeValueController) UpdateAttributeValue(c *gin.Context) { @@ -95,7 +95,7 @@ // DeleteAttributeValue // @Tags 灞炴�у�煎拰瀵硅薄 // @Summary 鍒犻櫎灞炴�у�煎拰瀵硅薄 -// @Param id path unit true "id" +// @Param id path string true "id" // @Success 200 {object} util.Response "鎴愬姛" // @Router /api-wms/v1/attributeValue/delete/{id} [delete] func (slf *AttributeValueController) DeleteAttributeValue(c *gin.Context) { diff --git a/models/attribute.go b/models/attribute.go index 19fc906..f3b0d13 100644 --- a/models/attribute.go +++ b/models/attribute.go @@ -57,6 +57,17 @@ return nil } +func (slf *Attribute) BeforeUpdate(tx *gorm.DB) (err error) { + if len(slf.SelectValues) != 0 { + bts, err := json.Marshal(slf.SelectValues) + if err != nil { + return err + } + slf.SelectValue = string(bts) + } + return nil +} + func (slf *Attribute) AfterFind(tx *gorm.DB) (err error) { if slf.SelectValue != "" { var list []string diff --git a/request/attribute.go b/request/attribute.go new file mode 100644 index 0000000..d20032d --- /dev/null +++ b/request/attribute.go @@ -0,0 +1,19 @@ +package request + +type GetAttributeList struct { + PageInfo + Keyword string `json:"keyword"` +} + +type AddAttribute struct { + Name string `gorm:"type:varchar(100);not null;default:''" json:"name"` //灞炴�у悕绉� + DataType int `gorm:"type:tinyint;not null;default:0" json:"dataType"` //鍊肩被鍨嬶紙1瀛楃涓� 2 int 3 涓嬫媺妗� 锛� + EntityType int `gorm:"type:tinyint;not null;default:0" json:"entityType"` //缁欒皝鐢ㄧ殑 1 鐗╂枡锛堜骇鍝侊級 + SelectValues []string `json:"selectValues" gorm:"_"` + SelectValue string `json:"-" gorm:"type:text;"` +} + +type UpdateAttribute struct { + ID uint `gorm:"comment:涓婚敭ID;primaryKey;" json:"id"` + AddAttribute +} diff --git a/router/router.go b/router/router.go index f51224c..e6e6faf 100644 --- a/router/router.go +++ b/router/router.go @@ -66,6 +66,17 @@ locationAPI.GET("getLocationTreeList", locationController.GetLocationTreeList) //鑾峰彇浣嶇疆鍒楄〃鏍� } + // 灞炴�т俊鎭� + attributeController := new(controllers.AttributeController) + attributeAPI := r.Group(urlPrefix + "/attribute") + { + attributeAPI.POST("attribute", attributeController.Add) // 娣诲姞灞炴�� + attributeAPI.PUT("updateAttribute/:id", attributeController.Update) // 淇敼灞炴�� + attributeAPI.DELETE("delete/:id", attributeController.Delete) // 鍒犻櫎灞炴�� + attributeAPI.GET("attribute", attributeController.List) // 鑾峰彇灞炴�� + //attributeAPI.GET("attribute/:id", attributeController.GetAttributeDetail) // 鑾峰彇灞炴�� + } + // 涓氬姟绫诲瀷 operationTypeController := new(controllers.OperationTypeController) operationTypeAPI := r.Group(urlPrefix + "/operationType") -- Gitblit v1.8.0