|
|
@@ -0,0 +1,146 @@
|
|
|
+package permission
|
|
|
+
|
|
|
+import (
|
|
|
+ "git.sxidc.com/go-framework/baize/framework/core/domain"
|
|
|
+ "git.sxidc.com/go-framework/baize/framework/core/domain/entity"
|
|
|
+ "git.sxidc.com/go-framework/baize/framework/core/tag/check"
|
|
|
+ "git.sxidc.com/go-tools/utils/strutils"
|
|
|
+ "github.com/pkg/errors"
|
|
|
+)
|
|
|
+
|
|
|
+const (
|
|
|
+ FieldName = "Name"
|
|
|
+ FieldDescription = "Description"
|
|
|
+ FieldResource = "Resource"
|
|
|
+ FieldAction = "Action"
|
|
|
+)
|
|
|
+
|
|
|
+var (
|
|
|
+ ColumnName = domain.ColumnName(FieldName)
|
|
|
+ ColumnDescription = domain.ColumnName(FieldDescription)
|
|
|
+ ColumnResource = domain.ColumnName(FieldResource)
|
|
|
+ ColumnAction = domain.ColumnName(FieldAction)
|
|
|
+)
|
|
|
+
|
|
|
+var fieldMap = map[string]string{
|
|
|
+ FieldName: "权限名称",
|
|
|
+ FieldDescription: "权限描述",
|
|
|
+ FieldResource: "resource",
|
|
|
+ FieldAction: "action",
|
|
|
+}
|
|
|
+
|
|
|
+type Entity struct {
|
|
|
+ entity.Base
|
|
|
+ Name string `sqlmapping:"column:name" sqlresult:"column:name" check:"required,lte=256"`
|
|
|
+ Description string `sqlmapping:"column:description;updateClear" sqlresult:"column:description"`
|
|
|
+ Resource string `sqlmapping:"column:resource" sqlresult:"column:resource" check:"required"`
|
|
|
+ Action string `sqlmapping:"column:action" sqlresult:"column:action" check:"required,lte=128"`
|
|
|
+
|
|
|
+ PermissionGroupIDs []string `sqlmapping:"-" sqlresult:"-"`
|
|
|
+ RoleIDs []string `sqlmapping:"-" sqlresult:"-"`
|
|
|
+
|
|
|
+ entity.UserIDFields
|
|
|
+ entity.TimeFields
|
|
|
+}
|
|
|
+
|
|
|
+func (e *Entity) DomainCNName() string {
|
|
|
+ return "权限"
|
|
|
+}
|
|
|
+
|
|
|
+func (e *Entity) DomainCamelName() string {
|
|
|
+ return "Permission"
|
|
|
+}
|
|
|
+
|
|
|
+func (e *Entity) ForCreate() error {
|
|
|
+ checkResult := check.Struct(e, fieldMap)
|
|
|
+
|
|
|
+ err := entity.CheckFieldIDResult(checkResult)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ err = domain.CheckField(checkResult, e.DomainCNName(), FieldName)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ err = domain.CheckField(checkResult, e.DomainCNName(), FieldResource)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ err = domain.CheckField(checkResult, e.DomainCNName(), FieldAction)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ err = entity.CheckFieldCreateUserIDResult(checkResult)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ e.LastUpdateUserID = e.CreateUserID
|
|
|
+
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+func (e *Entity) ForDelete() error {
|
|
|
+ checkResult := check.Struct(e, fieldMap)
|
|
|
+
|
|
|
+ err := entity.CheckFieldIDResult(checkResult)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+func (e *Entity) ForUpdate() error {
|
|
|
+ checkResult := check.Struct(e, fieldMap)
|
|
|
+
|
|
|
+ err := entity.CheckFieldIDResult(checkResult)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ err = entity.CheckFieldLastUpdateUserIDResult(checkResult)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ err = e.checkUpdateFields(checkResult)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+func (e *Entity) checkUpdateFields(checkResult check.Result) error {
|
|
|
+ if strutils.AllBlank(e.Name, e.Resource, e.Action) {
|
|
|
+ return errors.New(e.DomainCNName() + "没有传递需要更新的字段")
|
|
|
+ }
|
|
|
+
|
|
|
+ if strutils.IsStringNotEmpty(e.Name) {
|
|
|
+ err := domain.CheckField(checkResult, e.DomainCNName(), FieldName)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if strutils.IsStringNotEmpty(e.Resource) {
|
|
|
+ err := domain.CheckField(checkResult, e.DomainCNName(), FieldResource)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if strutils.IsStringNotEmpty(e.Action) {
|
|
|
+ err := domain.CheckField(checkResult, e.DomainCNName(), FieldAction)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil
|
|
|
+}
|