|
|
@@ -2,7 +2,9 @@ package service
|
|
|
|
|
|
import (
|
|
|
"errors"
|
|
|
+ "time"
|
|
|
"xps/cache"
|
|
|
+ "xps/constant"
|
|
|
"xps/datasource"
|
|
|
"xps/repositories"
|
|
|
"xps/viewmodels"
|
|
|
@@ -12,11 +14,12 @@ type ApiGatewayService interface {
|
|
|
Get(objectCode, oamCode string, m map[string]interface{})(map[string]interface{}, error)
|
|
|
GetPage(objectCode, oamCode string, m map[string]interface{})(*viewmodels.PageResult, error)
|
|
|
GetList(objectCode, oamCode string, m map[string]interface{})([]map[string]interface{}, error)
|
|
|
+ GetParams(objectCode, oamCode string)(map[string]interface{}, error)
|
|
|
|
|
|
- Create(objectCode, oamCode string, m map[string]interface{})error
|
|
|
- Update(objectCode, oamCode string, m map[string]interface{})error
|
|
|
- Patch(objectCode, oamCode string, m map[string]interface{})error
|
|
|
- Delete(objectCode, oamCode string, m map[string]interface{})error
|
|
|
+ Create(objectCode, oamCode string, m map[string]interface{}, user *viewmodels.CurUserInfo)error
|
|
|
+ Update(objectCode, oamCode string, m map[string]interface{}, user *viewmodels.CurUserInfo)error
|
|
|
+ Patch(objectCode, oamCode string, m map[string]interface{}, user *viewmodels.CurUserInfo)error
|
|
|
+ Delete(objectCode, oamCode string, m map[string]interface{}, user *viewmodels.CurUserInfo)error
|
|
|
}
|
|
|
|
|
|
type apiGatewayService struct {
|
|
|
@@ -29,6 +32,32 @@ func NewApiGatewayService() ApiGatewayService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (a *apiGatewayService) GetParams(objectCode, oamCode string) (map[string]interface{}, error) {
|
|
|
+ bzObjectData, err := cache.GetBizObjectData(objectCode)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ attrs := bzObjectData.Attrs
|
|
|
+ result := make(map[string]interface{}, 0)
|
|
|
+ for _, attr := range attrs {
|
|
|
+ attrType := attr.AttrType
|
|
|
+ if attrType == constant.DATA_TYPE_INT {
|
|
|
+ result[attr.AttrCode] = 1
|
|
|
+ } else if attrType == constant.DATA_TYPE_VARCHAR {
|
|
|
+ result[attr.AttrCode] = "test"
|
|
|
+ } else if attrType == constant.DATA_TYPE_FLOAT {
|
|
|
+ result[attr.AttrCode] = 1.1
|
|
|
+ } else if attrType == constant.DATA_TYPE_DATE {
|
|
|
+ result[attr.AttrCode] = "2022-01-01"
|
|
|
+ } else if attrType == constant.DATA_TYPE_DATETIME {
|
|
|
+ result[attr.AttrCode] = "2022-01-01 01:01:01"
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return result, nil
|
|
|
+}
|
|
|
+
|
|
|
func (a *apiGatewayService) Get(objectCode, oamCode string, m map[string]interface{})(map[string]interface{}, error) {
|
|
|
params, err1 := a.Mapping2ModelObjectAttr(objectCode, m)
|
|
|
if err1 != nil {
|
|
|
@@ -88,7 +117,12 @@ func (a *apiGatewayService) GetPage(objectCode, oamCode string, m map[string]int
|
|
|
return a.Mapping2BizPageObject(objectCode, pageData)
|
|
|
}
|
|
|
|
|
|
-func (a *apiGatewayService) Create(objectCode, oamCode string, m map[string]interface{}) error {
|
|
|
+func (a *apiGatewayService) Create(objectCode, oamCode string, m map[string]interface{}, user *viewmodels.CurUserInfo) error {
|
|
|
+ err1 := a.HandleOAMRuleList(objectCode, oamCode, m, user)
|
|
|
+ if err1 != nil {
|
|
|
+ return err1
|
|
|
+ }
|
|
|
+
|
|
|
params, err2 := a.Mapping2ModelObjectAttr(objectCode, m)
|
|
|
if err2 != nil {
|
|
|
return err2
|
|
|
@@ -97,7 +131,12 @@ func (a *apiGatewayService) Create(objectCode, oamCode string, m map[string]inte
|
|
|
return a.dataBus.Create(objectCode, params)
|
|
|
}
|
|
|
|
|
|
-func (a *apiGatewayService) Update(objectCode, oamCode string, m map[string]interface{}) error {
|
|
|
+func (a *apiGatewayService) Update(objectCode, oamCode string, m map[string]interface{}, user *viewmodels.CurUserInfo) error {
|
|
|
+ err1 := a.HandleOAMRuleList(objectCode, oamCode, m, user)
|
|
|
+ if err1 != nil {
|
|
|
+ return err1
|
|
|
+ }
|
|
|
+
|
|
|
params, err2 := a.Mapping2ModelObjectAttr(objectCode, m)
|
|
|
if err2 != nil {
|
|
|
return err2
|
|
|
@@ -106,7 +145,12 @@ func (a *apiGatewayService) Update(objectCode, oamCode string, m map[string]inte
|
|
|
return a.dataBus.Update(objectCode, params)
|
|
|
}
|
|
|
|
|
|
-func (a *apiGatewayService) Patch(objectCode, oamCode string, m map[string]interface{}) error {
|
|
|
+func (a *apiGatewayService) Patch(objectCode, oamCode string, m map[string]interface{}, user *viewmodels.CurUserInfo) error {
|
|
|
+ err1 := a.HandleOAMRuleList(objectCode, oamCode, m, user)
|
|
|
+ if err1 != nil {
|
|
|
+ return err1
|
|
|
+ }
|
|
|
+
|
|
|
params, err2 := a.Mapping2ModelObjectAttr(objectCode, m)
|
|
|
if err2 != nil {
|
|
|
return err2
|
|
|
@@ -115,7 +159,12 @@ func (a *apiGatewayService) Patch(objectCode, oamCode string, m map[string]inter
|
|
|
return a.dataBus.Patch(objectCode, params)
|
|
|
}
|
|
|
|
|
|
-func (a *apiGatewayService) Delete(objectCode, oamCode string, m map[string]interface{}) error {
|
|
|
+func (a *apiGatewayService) Delete(objectCode, oamCode string, m map[string]interface{}, user *viewmodels.CurUserInfo) error {
|
|
|
+ err1 := a.HandleOAMRuleList(objectCode, oamCode, m, user)
|
|
|
+ if err1 != nil {
|
|
|
+ return err1
|
|
|
+ }
|
|
|
+
|
|
|
params, err2 := a.Mapping2ModelObjectAttr(objectCode, m)
|
|
|
if err2 != nil {
|
|
|
return err2
|
|
|
@@ -124,6 +173,44 @@ func (a *apiGatewayService) Delete(objectCode, oamCode string, m map[string]inte
|
|
|
return a.dataBus.Delete(objectCode, params)
|
|
|
}
|
|
|
|
|
|
+func (a *apiGatewayService) HandleOAMRuleList(objectCode, oamCode string, m map[string]interface{}, user *viewmodels.CurUserInfo) error {
|
|
|
+ oamData, err1 := cache.GetBizObjectOAMData(objectCode, oamCode)
|
|
|
+ if err1 != nil {
|
|
|
+ return err1
|
|
|
+ }
|
|
|
+ oamRules := oamData.OamRules
|
|
|
+ for _, oamRule := range oamRules {
|
|
|
+ err2 := a.HandleOAMRule(&oamRule, m, user)
|
|
|
+ if err2 != nil {
|
|
|
+ return err2
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+func (a *apiGatewayService) HandleOAMRule(oamRule *viewmodels.BizObjectOAMRuleInfo, m map[string]interface{}, user *viewmodels.CurUserInfo)(error) {
|
|
|
+ if oamRule.RuleId == constant.BIZ_RULE_NEW_ID {
|
|
|
+ m[oamRule.TargetAttrCode] = NewID()
|
|
|
+ } else if oamRule.RuleId == constant.BIZ_RULE_CUR_DATETIME {
|
|
|
+ m[oamRule.TargetAttrCode] = time.Now()
|
|
|
+ } else if oamRule.RuleId == constant.BIZ_RULE_CUR_DATE {
|
|
|
+ m[oamRule.TargetAttrCode] = time.Now()
|
|
|
+ } else if oamRule.RuleId == constant.BIZ_RULE_CUR_USER_ID {
|
|
|
+ m[oamRule.TargetAttrCode] = user.UserId
|
|
|
+ } else if oamRule.RuleId == constant.BIZ_RULE_CUR_USER_NAME {
|
|
|
+ m[oamRule.TargetAttrCode] = user.UserName
|
|
|
+ } else if oamRule.RuleId == constant.BIZ_RULE_CUR_USER_POSITION_ID {
|
|
|
+ m[oamRule.TargetAttrCode] = user.PositionId
|
|
|
+ } else if oamRule.RuleId == constant.BIZ_RULE_CUR_USER_POSITION_NAME {
|
|
|
+ m[oamRule.TargetAttrCode] = user.PositionName
|
|
|
+ } else if oamRule.RuleId == constant.BIZ_RULE_CUR_USER_GROUP_ID {
|
|
|
+ m[oamRule.TargetAttrCode] = user.GroupId
|
|
|
+ } else if oamRule.RuleId == constant.BIZ_RULE_CUR_USER_GROUP_NAME {
|
|
|
+ m[oamRule.TargetAttrCode] = user.GroupName
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
func (a *apiGatewayService) Mapping2ModelObjectAttr(objectCode string, m map[string]interface{})(map[string]interface{}, error) {
|
|
|
bzObject, err := cache.GetBizObjectData(objectCode)
|
|
|
if err != nil {
|
|
|
@@ -216,4 +303,5 @@ func (a *apiGatewayService) Mapping2BizPageObject(objectCode string, pageData *v
|
|
|
}
|
|
|
|
|
|
return targetPageData, nil
|
|
|
-}
|
|
|
+}
|
|
|
+
|