diff --git a/main.go b/main.go index fa5d309..77e47c2 100644 --- a/main.go +++ b/main.go @@ -46,6 +46,11 @@ func main() { r.HandleFunc("/api/codes", routers.CodesGet).Methods("GET") // 获取验证码列表 r.HandleFunc("/api/codes", routers.CodesPost).Methods("POST") // 创建一条验证码 + r.HandleFunc("/api/settings", routers.SettingsGet).Methods("GET") // 获取设置列表 + r.HandleFunc("/api/settings", routers.SettingsPost).Methods("POST") // 创建一条设置 + r.HandleFunc("/api/settings/{id}", routers.SettingsGetItem).Methods("GET") // 获取一条设置 + r.HandleFunc("/api/settings/{id}", routers.SettingsPatch).Methods("PATCH") // 修改一条设置 + r.HandleFunc("/api/users", routers.UsersGet).Methods("GET") // 获取用户列表 r.HandleFunc("/api/users", routers.UsersPost).Methods("POST") // 创建一条用户 r.HandleFunc("/api/users/{id}", routers.UsersItemGet).Methods("GET") // 获取一条用户 diff --git a/routers/setting.go b/routers/setting.go new file mode 100644 index 0000000..406fc8b --- /dev/null +++ b/routers/setting.go @@ -0,0 +1,96 @@ +package routers + +import ( + "encoding/json" + "fmt" + "net/http" + "os" + "path/filepath" + + "github.com/gorilla/mux" +) + +func init() { + // 初始化检查 data/setting 目录是否存在,不存在则创建 + if _, err := os.Stat("data/settings"); os.IsNotExist(err) { + if err := os.MkdirAll("data/settings", 0755); err != nil { + fmt.Println(err) + } + } + + // 初始化阿里云短信服务配置 aliyun.json + if _, err := os.Stat("data/settings/aliyun.json"); os.IsNotExist(err) { + // 如果不存在则创建 + var config = struct { + AccessKeyId string + AccessKeySecret string + SignName string + TemplateCode string + }{ + AccessKeyId: "your-access-key-id", + AccessKeySecret: "", + SignName: "", + TemplateCode: "", + } + data, err := json.MarshalIndent(config, "", " ") + if err != nil { + fmt.Println(err) + return + } + err = os.WriteFile("data/settings/aliyun.json", data, 0644) + if err != nil { + fmt.Println(err) + return + } + fmt.Println("初始化阿里云短信服务配置 aliyun.json 成功") + fmt.Println(string(data)) + } +} + +func SettingsGetItem(w http.ResponseWriter, r *http.Request) { + // 从 data/setting 目录下读取json文件 + vars := mux.Vars(r) + filename := vars["id"] + ".json" + data, err := os.ReadFile("data/settings/" + filename) + if err != nil { + fmt.Println(err) + return + } + w.Write(data) +} + +func SettingsGet(w http.ResponseWriter, r *http.Request) { + // 获取设置列表, 直接从 data/setting 目录下读取json文件列表 + var files []string + err := filepath.Walk("data/settings", func(path string, info os.FileInfo, err error) error { + if info.IsDir() { + return nil + } + // 去除文件后缀名, 且不要展示路径 + files = append(files, info.Name()[:len(info.Name())-5]) + return nil + }) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(files) + // 输出json列表, files 数组转 JSON + data, _ := json.MarshalIndent(files, "", " ") + w.Write(data) +} + +// 创建一条设置 +func SettingsPost(w http.ResponseWriter, r *http.Request) { + w.Write([]byte("[]")) +} + +// 读取一条设置 +func SettingsItemGet(w http.ResponseWriter, r *http.Request) { + w.Write([]byte("[]")) +} + +// 修改一条设置 +func SettingsPatch(w http.ResponseWriter, r *http.Request) { + w.Write([]byte("[]")) +}