102 lines
2.6 KiB
Go
102 lines
2.6 KiB
Go
package jsonConfig
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
type JsonConfiger interface {
|
|
GetImportData() error
|
|
// ExportFile()
|
|
}
|
|
|
|
type ConfigModel struct {
|
|
AppName string `json:"AppName"`
|
|
Ability string `json:"Ability"`
|
|
Version string `json:"Version"`
|
|
AbilityVersion string `json:"AbilityVersion"`
|
|
AppAllowLowVersion string `json:"AppAllowLowVersion"`
|
|
Data interface{} `json:"Data"`
|
|
}
|
|
|
|
var expoprtSuffix = ".lcn.json"
|
|
|
|
const (
|
|
ABILITY_MODE_EVENT_STYLE = "EventStyle" // 时间风格
|
|
ABILITY_MODE_SPECIAL_DAY = "SpecialDay" // 特殊的日期
|
|
)
|
|
|
|
// 生成输出文件
|
|
func BuildExportFile(cfgModel *ConfigModel) ([]byte, error) {
|
|
content, err := json.Marshal(cfgModel)
|
|
return content, err
|
|
}
|
|
|
|
func Write(ctx *gin.Context, fileName string, content []byte) {
|
|
ctx.Writer.Header().Add("Content-Type", "application/octet-stream")
|
|
ctx.Writer.Header().Add("Content-disposition", "attachment;filename="+fileName+expoprtSuffix)
|
|
ctx.Writer.Header().Add("Content-Transfer-Encoding", "binary")
|
|
ctx.Writer.Write(content)
|
|
}
|
|
|
|
func GetImportData(JsonConfiger) {
|
|
|
|
}
|
|
|
|
func NewConfigModel(ability, abilityVersion string) *ConfigModel {
|
|
return &ConfigModel{
|
|
AppName: "Li-Calendar",
|
|
Version: "1",
|
|
AppAllowLowVersion: "1",
|
|
Ability: ability,
|
|
AbilityVersion: abilityVersion,
|
|
}
|
|
}
|
|
|
|
// 验证配置模型数据是否相同
|
|
func ConfigModelCheck(data *ConfigModel, ability, abilityVersion string) bool {
|
|
newData := NewConfigModel(ability, abilityVersion)
|
|
if *data != *newData {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
// func InportConfigFile(f multipart.FileHeader, eventStyle EventStyleModel) (EventStyleModel, error) {
|
|
|
|
// src, err := f.Open()
|
|
// defer src.Close()
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
|
|
// contentByte, err := ioutil.ReadAll(src)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
// configFile := ConfigModel{}
|
|
// if err := json.Unmarshal(contentByte, &configFile); err != nil {
|
|
// return err
|
|
// }
|
|
// v, ok := configFile.Data.(EventStyleModel)
|
|
// return errors.New("格式")
|
|
// if !ok {
|
|
// return errors.New("格式错误")
|
|
// }
|
|
|
|
// if err := json.Unmarshal(contentByte, &configFile); err != nil {
|
|
// return err
|
|
// }
|
|
|
|
// fileExt := strings.ToLower(path.Ext(f.Filename))
|
|
// fileName := cmn.Md5(fmt.Sprintf("%s%s", f.Filename, time.Now().String()))
|
|
// fildDir := fmt.Sprintf("%s/%d/%d/%d/", configUpload, time.Now().Year(), time.Now().Month(), time.Now().Day())
|
|
// isExist, _ := cmn.PathExists(fildDir)
|
|
// if !isExist {
|
|
// os.MkdirAll(fildDir, os.ModePerm)
|
|
// }
|
|
// filepath := fmt.Sprintf("%s%s%s", fildDir, fileName, fileExt)
|
|
|
|
// }
|