config.go 1.8 KB
Newer Older
aaronchen2k2k's avatar
aaronchen2k2k 已提交
1 2 3 4 5 6 7
package serverService

import (
	"github.com/easysoft/zendata/src/model"
	"github.com/easysoft/zendata/src/server/repo"
	logUtils "github.com/easysoft/zendata/src/utils/log"
	stringUtils "github.com/easysoft/zendata/src/utils/string"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
8 9
	"gopkg.in/yaml.v3"
	"io/ioutil"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
)

type ConfigService struct {
	configRepo *serverRepo.ConfigRepo
	resService *ResService
}

func (s *ConfigService) List() (list []*model.ZdConfig) {
	config := s.resService.LoadRes("config")
	list, _ = s.configRepo.List()

	s.saveResToDB(config, list)
	list, _ = s.configRepo.List()

	return
}

func (s *ConfigService) Get(id int) (config model.ZdConfig) {
	config, _ = s.configRepo.Get(uint(id))

	return
}

func (s *ConfigService) Save(config *model.ZdConfig) (err error) {
	err = s.configRepo.Save(config)

	return
}

func (s *ConfigService) Remove(id int) (err error) {
	err = s.configRepo.Remove(uint(id))
	if err != nil {
		return
	}

	config, _ := s.configRepo.Get(uint(id))
	logUtils.PrintTo(config.Path)
	//fileUtils.RemoveExist(config.Path)

	return
}

func (s *ConfigService) saveResToDB(config []model.ResFile, list []*model.ZdConfig) (err error) {
	names := make([]string, 0)
	for _, item := range list {
		names = append(names, item.Path)
	}

	for _, item := range config {
		if !stringUtils.FindInArrBool(item.Path, names) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
60 61 62 63 64 65 66 67 68 69 70
			content, _ := ioutil.ReadFile(item.Path)
			yamlContent := stringUtils.ReplaceSpecialChars(content)
			config := model.ZdConfig{}
			err = yaml.Unmarshal(yamlContent, &config)
			config.Title = item.Title
			config.Name = item.Name
			config.Desc = item.Desc
			config.Path = item.Path
			config.Field = item.Title
			config.Note = item.Desc

aaronchen2k2k's avatar
aaronchen2k2k 已提交
71 72 73 74 75 76 77 78 79 80
			s.configRepo.Save(&config)
		}
	}

	return
}

func NewConfigService(configRepo *serverRepo.ConfigRepo) *ConfigService {
	return &ConfigService{configRepo: configRepo}
}