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