github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/internal/server/controller/admin.go (about)

     1  package controller
     2  
     3  import (
     4  	"strconv"
     5  
     6  	consts "github.com/easysoft/zendata/internal/pkg/const"
     7  	"github.com/easysoft/zendata/internal/pkg/model"
     8  	serverConfig "github.com/easysoft/zendata/internal/server/config"
     9  	serverService "github.com/easysoft/zendata/internal/server/service"
    10  	serverUtils "github.com/easysoft/zendata/internal/server/utils"
    11  	"github.com/easysoft/zendata/pkg/utils/vari"
    12  	"github.com/kataras/iris/v12"
    13  )
    14  
    15  type AdminCtrl struct {
    16  	BaseCtrl
    17  
    18  	Config *serverConfig.Config `inject:""`
    19  
    20  	DefService     *serverService.DefService     `inject:""`
    21  	FieldService   *serverService.FieldService   `inject:""`
    22  	PreviewService *serverService.PreviewService `inject:""`
    23  	SectionService *serverService.SectionService `inject:""`
    24  	ReferService   *serverService.ReferService   `inject:""`
    25  	ResService     *serverService.ResService     `inject:""`
    26  	SyncService    *serverService.SyncService    `inject:""`
    27  
    28  	RangesService    *serverService.RangesService    `inject:""`
    29  	InstancesService *serverService.InstancesService `inject:""`
    30  	TextService      *serverService.TextService      `inject:""`
    31  	ExcelService     *serverService.ExcelService     `inject:""`
    32  	ConfigService    *serverService.ConfigService    `inject:""`
    33  }
    34  
    35  func (c *AdminCtrl) Handle(ctx iris.Context) {
    36  	reqData := model.ReqData{}
    37  
    38  	err := ctx.ReadJSON(&reqData)
    39  	if err != nil {
    40  		ctx.JSON(c.ErrResp(consts.CommErr, err.Error()))
    41  		return
    42  	}
    43  
    44  	ret := model.RespData{Code: 1, Msg: "success"}
    45  
    46  	switch reqData.Action {
    47  	// common
    48  	//case "getWorkDir":
    49  	//	ret.WorkDir = vari.WorkDir
    50  
    51  	// def
    52  	//case "syncData":
    53  	//	s.SyncService.SyncData()
    54  	//case "listDef":
    55  	//	ret.Data, ret.Total = s.DefService.List(reqData.Keywords, reqData.Page)
    56  
    57  	case "getDef":
    58  		ret.Data, ret.Res = c.DefService.Get(reqData.Id)
    59  		ret.WorkDir = vari.WorkDir
    60  	case "saveDef":
    61  		def := serverUtils.ConvertDef(reqData.Data)
    62  		c.DefService.Save(&def)
    63  		ret.Data = def
    64  	case "removeDef":
    65  		err = c.DefService.Remove(reqData.Id)
    66  
    67  	// field
    68  	case "getDefFieldTree":
    69  		ret.Data, err = c.FieldService.GetTree(uint(reqData.Id))
    70  	case "getDefField":
    71  		ret.Data, err = c.FieldService.Get(reqData.Id)
    72  	case "createDefField":
    73  		var field *model.ZdField
    74  		field, err = c.FieldService.Create(0, uint(reqData.Id), "新字段", reqData.Mode)
    75  
    76  		ret.Data, err = c.FieldService.GetTree(field.DefID)
    77  		ret.Model = field
    78  	case "saveDefField":
    79  		field := serverUtils.ConvertField(reqData.Data)
    80  		err = c.FieldService.Save(&field)
    81  	case "removeDefField":
    82  		var defId int
    83  		defId, err = c.FieldService.Remove(reqData.Id)
    84  		ret.Data, err = c.FieldService.GetTree(uint(defId))
    85  	case "moveDefField":
    86  		var defId uint
    87  		defId, ret.Model, err = c.FieldService.Move(uint(reqData.Src), uint(reqData.Dist), reqData.Mode)
    88  		ret.Data, err = c.FieldService.GetTree(defId)
    89  
    90  	// preview
    91  	case "previewDefData":
    92  		ret.Data = c.PreviewService.PreviewDefData(uint(reqData.Id))
    93  	case "previewFieldData":
    94  		ret.Data = c.PreviewService.PreviewFieldData(uint(reqData.Id), reqData.Mode)
    95  
    96  	// field or instances section
    97  	case "listSection":
    98  		ret.Data, err = c.SectionService.List(uint(reqData.Id), reqData.Mode)
    99  
   100  	case "createSection":
   101  		paramMap := serverUtils.ConvertParams(reqData.Data)
   102  		ownerType, _ := paramMap["ownerType"]
   103  		ownerId, _ := strconv.Atoi(paramMap["ownerId"])
   104  		sectionId, _ := strconv.Atoi(paramMap["sectionId"])
   105  
   106  		err = c.SectionService.Create(uint(ownerId), uint(sectionId), ownerType)
   107  		ret.Data, err = c.SectionService.List(uint(ownerId), ownerType)
   108  	case "updateSection":
   109  		section := serverUtils.ConvertSection(reqData.Data)
   110  		err = c.SectionService.Update(&section)
   111  
   112  		ret.Data, err = c.SectionService.List(section.OwnerID, reqData.Mode)
   113  	case "removeSection":
   114  		var fieldId uint
   115  		fieldId, err = c.SectionService.Remove(reqData.Id, reqData.Mode)
   116  		ret.Data, err = c.SectionService.List(fieldId, reqData.Mode)
   117  
   118  	// field or instances refer, be create when init its owner
   119  	case "getRefer":
   120  		var refer model.ZdRefer
   121  		refer, err = c.ReferService.Get(uint(reqData.Id), reqData.Mode)
   122  		ret.Data = refer
   123  	case "updateRefer":
   124  		refer := serverUtils.ConvertRefer(reqData.Data)
   125  		err = c.ReferService.Update(&refer)
   126  	case "listReferFileForSelection":
   127  		ret.Data = c.ResService.ListReferFileForSelection(reqData.Mode)
   128  	case "listReferSheetForSelection":
   129  		ret.Data = c.ResService.ListReferSheetForSelection(reqData.Mode)
   130  
   131  	case "listReferExcelColForSelection":
   132  		ret.Data = c.ResService.ListReferExcelColForSelection(reqData.Mode)
   133  	case "listReferResFieldForSelection":
   134  		ret.Data = c.ResService.ListReferResFieldForSelection(reqData.Id, reqData.Mode)
   135  
   136  	// resource
   137  	case "listRanges":
   138  		ret.Data, ret.Total = c.RangesService.List(reqData.Keywords, reqData.Page)
   139  	case "getRanges":
   140  		ret.Data, ret.Res = c.RangesService.Get(reqData.Id)
   141  		ret.WorkDir = vari.WorkDir
   142  	case "saveRanges":
   143  		ranges := serverUtils.ConvertRanges(reqData.Data)
   144  		ret.Data = c.RangesService.Save(&ranges)
   145  	case "removeRanges":
   146  		err = c.RangesService.Remove(reqData.Id)
   147  
   148  	case "getResRangesItemTree":
   149  		ret.Data = c.RangesService.GetItemTree(reqData.Id)
   150  	case "getResRangesItem":
   151  		ret.Data = c.RangesService.GetItem(reqData.Id)
   152  	case "createResRangesItem":
   153  		var rangesItem *model.ZdRangesItem
   154  		rangesId := reqData.DomainId
   155  		rangesItem, err = c.RangesService.CreateItem(rangesId, reqData.Id, reqData.Mode)
   156  
   157  		ret.Data = c.RangesService.GetItemTree(rangesId)
   158  		ret.Model = rangesItem
   159  	case "saveRangesItem":
   160  		rangesItem := serverUtils.ConvertRangesItem(reqData.Data)
   161  		ret.Data = c.RangesService.SaveItem(&rangesItem)
   162  	case "removeResRangesItem":
   163  		err = c.RangesService.RemoveItem(reqData.Id, reqData.DomainId)
   164  		ret.Data = c.RangesService.GetItemTree(reqData.DomainId)
   165  
   166  	case "listInstances":
   167  		ret.Data, ret.Total = c.InstancesService.List(reqData.Keywords, reqData.Page)
   168  	case "getInstances":
   169  		ret.Data, ret.Res = c.InstancesService.Get(reqData.Id)
   170  		ret.WorkDir = vari.WorkDir
   171  	case "saveInstances":
   172  		ranges := serverUtils.ConvertInstances(reqData.Data)
   173  		ret.Data = c.InstancesService.Save(&ranges)
   174  	case "removeInstances":
   175  		err = c.InstancesService.Remove(reqData.Id)
   176  	case "getResInstancesItemTree":
   177  		ret.Data = c.InstancesService.GetItemTree(uint(reqData.Id))
   178  	case "getResInstancesItem":
   179  		ret.Data = c.InstancesService.GetItem(reqData.Id)
   180  	case "createResInstancesItem":
   181  		var item *model.ZdInstancesItem
   182  		ownerId := reqData.DomainId
   183  		item, err = c.InstancesService.CreateItem(ownerId, reqData.Id, reqData.Mode)
   184  
   185  		ret.Data = c.InstancesService.GetItemTree(uint(ownerId))
   186  		ret.Model = item
   187  	case "saveInstancesItem":
   188  		rangesItem := serverUtils.ConvertInstancesItem(reqData.Data)
   189  		ret.Data = c.InstancesService.SaveItem(&rangesItem)
   190  	case "removeResInstancesItem":
   191  		err = c.InstancesService.RemoveItem(reqData.Id)
   192  		ret.Data = c.InstancesService.GetItemTree(uint(reqData.DomainId))
   193  
   194  	case "listExcel":
   195  		ret.Data, ret.Total = c.ExcelService.List(reqData.Keywords, reqData.Page)
   196  	case "getExcel":
   197  		ret.Data, ret.Res = c.ExcelService.Get(reqData.Id)
   198  		ret.WorkDir = vari.WorkDir
   199  	case "saveExcel":
   200  		ranges := serverUtils.ConvertExcel(reqData.Data)
   201  		ret.Data = c.ExcelService.Save(&ranges)
   202  	case "removeExcel":
   203  		err = c.ExcelService.Remove(reqData.Id)
   204  
   205  	case "listText":
   206  		ret.Data, ret.Total = c.TextService.List(reqData.Keywords, reqData.Page)
   207  	case "getText":
   208  		ret.Data, ret.Res = c.TextService.Get(reqData.Id)
   209  		ret.WorkDir = vari.WorkDir
   210  	case "saveText":
   211  		ranges := serverUtils.ConvertText(reqData.Data)
   212  		ret.Data = c.TextService.Save(&ranges)
   213  	case "removeText":
   214  		err = c.TextService.Remove(reqData.Id)
   215  
   216  	case "listConfig":
   217  		ret.Data, ret.Total = c.ConfigService.List(reqData.Keywords, reqData.Page)
   218  	case "getConfig":
   219  		ret.Data, ret.Res = c.ConfigService.Get(reqData.Id)
   220  		ret.WorkDir = vari.WorkDir
   221  	case "saveConfig":
   222  		ranges := serverUtils.ConvertConfig(reqData.Data)
   223  		ret.Data = c.ConfigService.Save(&ranges)
   224  	case "removeConfig":
   225  		err = c.ConfigService.Remove(reqData.Id)
   226  
   227  	case "getResConfigItemTree":
   228  		ret.Data = c.ConfigService.GConfigItemTree(reqData.Id)
   229  
   230  	default:
   231  		ret.Code = 0
   232  		ret.Msg = "api not found"
   233  	}
   234  
   235  	if err != nil {
   236  		ret.Code = 0
   237  		ret.Msg = "api error: " + err.Error()
   238  	}
   239  
   240  	ctx.JSON(ret)
   241  }