jiangshuai
2023-10-30 3f1fb8181a80624ec3f77412040777892a462fdc
controllers/location_product.go
@@ -1,8 +1,11 @@
package controllers
import (
   "errors"
   "github.com/gin-gonic/gin"
   "gorm.io/gorm"
   "strconv"
   "wms/constvar"
   "wms/extend/code"
   "wms/extend/util"
   "wms/models"
@@ -40,14 +43,43 @@
      util.ResponseFormat(c, code.RequestParamError, "请选择位置")
      return
   }
   if params.ProductId == "" {
      util.ResponseFormat(c, code.RequestParamError, "请选择产品")
   if params.RuleType != constvar.RuleType_Product && params.RuleType != constvar.RuleType_ProductCategory {
      util.ResponseFormat(c, code.RequestParamError, "ruleType异常")
      return
   }
   //if params.ProductCategoryID == 0 {
   //   util.ResponseFormat(c, code.RequestParamError, "请选择产品类别")
   //   return
   //}
   if params.RuleType == constvar.RuleType_Product {
      if params.ProductId == "" {
         util.ResponseFormat(c, code.RequestParamError, "请选择产品")
         return
      }
      if _, err := models.NewLocationProductSearch().SetProductId(params.ProductId).SetLocationId(params.LocationId).SetAreaId(params.AreaId).First(); err != nil {
         if !errors.Is(err, gorm.ErrRecordNotFound) {
            util.ResponseFormat(c, code.RequestParamError, err.Error())
            return
         }
      } else {
         util.ResponseFormat(c, code.RequestParamError, "已存在该上家规则,请勿重复添加")
         return
      }
   }
   if params.RuleType == constvar.RuleType_ProductCategory {
      if params.ProductCategoryID == 0 {
         util.ResponseFormat(c, code.RequestParamError, "请选择产品类别")
         return
      }
      if _, err := models.NewLocationProductSearch().SetProductCategoryId(params.ProductCategoryID).SetLocationId(params.LocationId).SetAreaId(params.AreaId).First(); err != nil {
         if !errors.Is(err, gorm.ErrRecordNotFound) {
            util.ResponseFormat(c, code.RequestParamError, err.Error())
            return
         }
      } else {
         util.ResponseFormat(c, code.RequestParamError, "已存在该上家规则,请勿重复添加")
         return
      }
   }
   if err := models.NewLocationProductSearch().Create(&params); err != nil {
      logx.Errorf("Operation create err: %v", err)
@@ -116,14 +148,44 @@
      util.ResponseFormat(c, code.RequestParamError, "请选择位置")
      return
   }
   if params.ProductId == "" {
      util.ResponseFormat(c, code.RequestParamError, "请选择产品")
   if params.RuleType != constvar.RuleType_Product && params.RuleType != constvar.RuleType_ProductCategory {
      util.ResponseFormat(c, code.RequestParamError, "ruleType异常")
      return
   }
   if params.ProductCategoryID == 0 {
      util.ResponseFormat(c, code.RequestParamError, "请选择产品类别")
      return
   if params.RuleType == constvar.RuleType_Product {
      if params.ProductId == "" {
         util.ResponseFormat(c, code.RequestParamError, "请选择产品")
         return
      }
      if rule, err := models.NewLocationProductSearch().SetProductId(params.ProductId).SetLocationId(params.LocationId).SetAreaId(params.AreaId).First(); err != nil {
         if !errors.Is(err, gorm.ErrRecordNotFound) {
            util.ResponseFormat(c, code.RequestParamError, err.Error())
            return
         }
      } else if params.Id != rule.Id {
         util.ResponseFormat(c, code.RequestParamError, "已存在该上家规则,请勿重复添加")
         return
      }
   }
   if params.RuleType == constvar.RuleType_ProductCategory {
      if params.ProductCategoryID == 0 {
         util.ResponseFormat(c, code.RequestParamError, "请选择产品类别")
         return
      }
      if rule, err := models.NewLocationProductSearch().SetProductCategoryId(params.ProductCategoryID).SetLocationId(params.LocationId).SetAreaId(params.AreaId).First(); err != nil {
         if !errors.Is(err, gorm.ErrRecordNotFound) {
            util.ResponseFormat(c, code.RequestParamError, err.Error())
            return
         }
      } else if params.Id != rule.Id {
         util.ResponseFormat(c, code.RequestParamError, "已存在该上家规则,请勿重复添加")
         return
      }
   }
   if err := models.NewLocationProductSearch().SetID(params.Id).Update(&params); err != nil {
      logx.Errorf("LocationProduct update err: %v", err)
      util.ResponseFormat(c, code.SaveFail, "修改失败:"+err.Error())