| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- package controllers
- import (
- "github.com/kataras/iris/v12/mvc"
- "strconv"
- "time"
- "xps/cache"
- "xps/constant"
- "xps/service"
- "xps/viewmodels"
- )
- type ApiGatewayController struct {
- Base
- Service service.XGatewayService
- }
- func (c *ApiGatewayController) BeforeActivation(b mvc.BeforeActivation) {
- b.Handle("GET", "/{objectCode:string}/{oamCode:string}", "Get" )
- b.Handle("GET", "/GenerateParams/{objectCode:string}/{oamCode:string}", "GenerateParams" )
- b.Handle("POST", "/{objectCode:string}/{oamCode:string}", "Post" )
- b.Handle("PUT", "/{objectCode:string}/{oamCode:string}", "Put" )
- b.Handle("PATCH", "/{objectCode:string}/{oamCode:string}", "Patch" )
- b.Handle("DELETE", "/{objectCode:string}/{oamCode:string}", "Delete" )
- }
- func (c *ApiGatewayController) HandleParamRule(ruleId int64) interface{} {
- var result interface{}
- if ruleId == constant.BIZ_RULE_NEW_ID {
-
- } else if ruleId == constant.BIZ_RULE_CUR_DATETIME {
- result = time.Now()
- } else if ruleId == constant.BIZ_RULE_CUR_DATE {
- result = time.Now()
- } else if ruleId == constant.BIZ_RULE_CUR_USER_ID {
- result = c.GetCurUserId()
- } else if ruleId == constant.BIZ_RULE_CUR_USER_NAME {
- result = c.GetCurUserName()
- } else if ruleId == constant.BIZ_RULE_CUR_USER_POSITION_ID {
- result = c.GetCurUserPositionId()
- } else if ruleId == constant.BIZ_RULE_CUR_USER_POSITION_NAME {
- result = c.GetCurUserPositionName()
- } else if ruleId == constant.BIZ_RULE_CUR_USER_GROUP_ID {
- result = c.GetCurUserGroupId()
- } else if ruleId == constant.BIZ_RULE_CUR_USER_GROUP_NAME {
- result = c.GetCurUserGroupName()
- }
- return result
- }
- func (c *ApiGatewayController) buildUrlParams(objectCode, oamCode string) ([]viewmodels.QueryParam, error) {
- oamParams, err1 := cache.GetBizObjectOAMParams(objectCode, oamCode)
- if err1 != nil {
- return nil, err1
- }
-
- urlParams := c.Ctx.URLParams()
- queryParams := make([]viewmodels.QueryParam, 0)
- for _, oamParam := range oamParams {
- paramValueCode := oamParam.ParamValue
- paramType := oamParam.ParamType
- var paramValue interface{}
- isRuled := oamParam.IsRuled
- if isRuled > 0 {
- paramValue := c.HandleParamRule(oamParam.RuleId)
- param := viewmodels.QueryParam{
- LogicalOperator: oamParam.LogicalOperator,
- Name: oamParam.ParamName,
- CompareOperator: oamParam.CompareOperator,
- Type: oamParam.ParamType,
- Value: paramValue,
- }
- queryParams = append(queryParams, param)
- } else if urlVal, ok := urlParams[paramValueCode]; ok {
- if paramType == constant.DATA_TYPE_INT {
- ret, err := strconv.Atoi(urlVal)
- if err != nil {
- return nil, err
- }
- paramValue = ret
- } else if paramType == constant.DATA_TYPE_VARCHAR {
- paramValue = urlVal
- } else if paramType == constant.DATA_TYPE_DECIMAL {
- ret, err := strconv.ParseFloat(urlVal, 64)
- if err != nil {
- return nil, err
- }
- paramValue = ret
- } else if paramType == constant.DATA_TYPE_DATE {
- paramValue = urlVal
- } else if paramType == constant.DATA_TYPE_DATETIME {
- paramValue = urlVal
- }
-
- param := viewmodels.QueryParam{
- LogicalOperator: oamParam.LogicalOperator,
- Name: oamParam.ParamName,
- CompareOperator: oamParam.CompareOperator,
- Type: oamParam.ParamType,
- Value: paramValue,
- }
- queryParams = append(queryParams, param)
- }
- }
- return queryParams, nil
- }
- func (c *ApiGatewayController) GenerateParams(objectCode, oamCode string)*JsonResult {
- data, err := c.Service.GenerateParams(objectCode, oamCode)
- if err != nil {
- return ResultErr(err.Error(), nil)
- } else {
- return ResultOk("获取成功", data)
- }
- }
- func (c *ApiGatewayController) Get(objectCode, oamCode string)*JsonResult {
- oamInfo, err1 := cache.GetApiData(objectCode, oamCode)
- if err1 != nil {
- return ResultErr(err1.Error(), nil)
- }
-
- params, err2 := c.buildUrlParams(objectCode, oamCode)
- if err2 != nil {
- return ResultErr(err2.Error(), nil)
- }
-
- oamType := oamInfo.OamType
- if oamType == constant.OAM_GET_ONE {
- data, err := c.Service.Get(objectCode, oamCode, params)
- if err != nil {
- return ResultErr(err.Error(), nil)
- } else {
- return ResultOk("获取成功", data)
- }
- }
- if oamType == constant.OAM_GET_LIST{
- data, err := c.Service.GetList(objectCode, oamCode, params)
- if err != nil {
- return ResultErr(err.Error(), nil)
- } else {
- return ResultOk("获取成功", data)
- }
- }
- if oamType == constant.OAM_GET_PAGE {
- page := c.Ctx.URLParamIntDefault("page", 0)
- if page <= 0 {
- page = 1
- }
-
- limit := c.Ctx.URLParamIntDefault("limit", 0)
- if limit <= 0 {
- limit = 10
- }
-
- data, err := c.Service.GetPage(objectCode, oamCode, params, page, limit)
- if err != nil {
- return ResultErr(err.Error(), nil)
- } else {
- return ResultOk("获取成功", data)
- }
- }
-
- return ResultErr("方法不存在", nil)
- }
- func (c *ApiGatewayController) Post(objectCode, oamCode string)*JsonResult {
- m, err := c.GetJsonData()
- if err != nil {
- return ResultErr(err.Error(), nil)
- }
-
- userInfo := &viewmodels.CurUserInfo{
- UserId: c.GetCurUserId(),
- UserName: c.GetCurUserName(),
- PositionId: c.GetCurUserPositionId(),
- PositionName: c.GetCurUserPositionName(),
- GroupId: c.GetCurUserGroupId(),
- GroupName: c.GetCurUserGroupName(),
- }
-
- err = c.Service.Create(objectCode, oamCode, m, userInfo)
- if err != nil {
- return ResultErr(err.Error(), nil)
- } else {
- return ResultOk("创建成功", nil)
- }
- }
- func (c *ApiGatewayController) Put(objectCode, oamCode string)*JsonResult {
- m, err := c.GetJsonData()
- if err != nil {
- return ResultErr(err.Error(), nil)
- }
-
- userInfo := &viewmodels.CurUserInfo{
- UserId: c.GetCurUserId(),
- UserName: c.GetCurUserName(),
- PositionId: c.GetCurUserPositionId(),
- PositionName: c.GetCurUserPositionName(),
- GroupId: c.GetCurUserGroupId(),
- GroupName: c.GetCurUserGroupName(),
- }
-
- err = c.Service.Update(objectCode, oamCode, m, userInfo)
- if err != nil {
- return ResultErr(err.Error(), nil)
- } else {
- return ResultOk("更新成功", nil)
- }
- }
- func (c *ApiGatewayController) Patch(objectCode, oamCode string)*JsonResult {
- m, err := c.GetJsonData()
- if err != nil {
- return ResultErr(err.Error(), nil)
- }
-
- userInfo := &viewmodels.CurUserInfo{
- UserId: c.GetCurUserId(),
- UserName: c.GetCurUserName(),
- PositionId: c.GetCurUserPositionId(),
- PositionName: c.GetCurUserPositionName(),
- GroupId: c.GetCurUserGroupId(),
- GroupName: c.GetCurUserGroupName(),
- }
- err = c.Service.Patch(objectCode, oamCode, m, userInfo)
- if err != nil {
- return ResultErr(err.Error(), nil)
- } else {
- return ResultOk("更新成功", nil)
- }
- }
- func (c *ApiGatewayController) Delete(objectCode, oamCode string)*JsonResult {
- m, err := c.GetJsonData()
- if err != nil {
- return ResultErr(err.Error(), nil)
- }
-
- userInfo := &viewmodels.CurUserInfo{
- UserId: c.GetCurUserId(),
- UserName: c.GetCurUserName(),
- PositionId: c.GetCurUserPositionId(),
- PositionName: c.GetCurUserPositionName(),
- GroupId: c.GetCurUserGroupId(),
- GroupName: c.GetCurUserGroupName(),
- }
-
- err = c.Service.Delete(objectCode, oamCode, m, userInfo)
- if err != nil {
- return ResultErr(err.Error(), nil)
- } else {
- return ResultOk("删除成功", nil)
- }
- }
|