feat(system): 完成客户端自定义与系统设置
新增管理端客户端自定义标签页、公开与管理端系统设置接口、文件存储设置持久化、数据库迁移、契约类型和 OpenAPI 文档。
This commit is contained in:
@@ -83,6 +83,76 @@ func (s *Server) updateFileStorageSettings(w http.ResponseWriter, r *http.Reques
|
||||
writeJSON(w, http.StatusOK, settings)
|
||||
}
|
||||
|
||||
// getClientCustomizationSettings godoc
|
||||
// @Summary 获取客户端自定义设置
|
||||
// @Description 返回客户端名称、英文名称、平台名和图标路径;数据库对象尚未创建时返回默认设置。
|
||||
// @Tags system
|
||||
// @Produce json
|
||||
// @Security BearerAuth
|
||||
// @Success 200 {object} store.ClientCustomizationSettings
|
||||
// @Failure 401 {object} ErrorEnvelope
|
||||
// @Failure 403 {object} ErrorEnvelope
|
||||
// @Failure 500 {object} ErrorEnvelope
|
||||
// @Router /api/admin/system/client-customization/settings [get]
|
||||
func (s *Server) getClientCustomizationSettings(w http.ResponseWriter, r *http.Request) {
|
||||
s.writeClientCustomizationSettings(w, r)
|
||||
}
|
||||
|
||||
// getPublicClientCustomizationSettings godoc
|
||||
// @Summary 获取公开客户端自定义设置
|
||||
// @Description 无需鉴权返回客户端名称、英文名称、平台名和图标路径;数据库对象尚未创建时返回默认设置。
|
||||
// @Tags system
|
||||
// @Produce json
|
||||
// @Success 200 {object} store.ClientCustomizationSettings
|
||||
// @Failure 500 {object} ErrorEnvelope
|
||||
// @Router /api/v1/public/client-customization [get]
|
||||
func (s *Server) getPublicClientCustomizationSettings(w http.ResponseWriter, r *http.Request) {
|
||||
s.writeClientCustomizationSettings(w, r)
|
||||
}
|
||||
|
||||
func (s *Server) writeClientCustomizationSettings(w http.ResponseWriter, r *http.Request) {
|
||||
settings, err := s.store.GetClientCustomizationSettings(r.Context())
|
||||
if err != nil {
|
||||
if store.IsUndefinedDatabaseObject(err) {
|
||||
writeJSON(w, http.StatusOK, store.DefaultClientCustomizationSettings())
|
||||
return
|
||||
}
|
||||
s.logger.Error("get client customization settings failed", "error", err)
|
||||
writeError(w, http.StatusInternalServerError, "get client customization settings failed")
|
||||
return
|
||||
}
|
||||
writeJSON(w, http.StatusOK, settings)
|
||||
}
|
||||
|
||||
// updateClientCustomizationSettings godoc
|
||||
// @Summary 更新客户端自定义设置
|
||||
// @Description 更新客户端名称、英文名称、平台名和图标路径。
|
||||
// @Tags system
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Security BearerAuth
|
||||
// @Param body body store.ClientCustomizationSettingsInput true "客户端自定义设置"
|
||||
// @Success 200 {object} store.ClientCustomizationSettings
|
||||
// @Failure 400 {object} ErrorEnvelope
|
||||
// @Failure 401 {object} ErrorEnvelope
|
||||
// @Failure 403 {object} ErrorEnvelope
|
||||
// @Failure 500 {object} ErrorEnvelope
|
||||
// @Router /api/admin/system/client-customization/settings [patch]
|
||||
func (s *Server) updateClientCustomizationSettings(w http.ResponseWriter, r *http.Request) {
|
||||
var input store.ClientCustomizationSettingsInput
|
||||
if err := json.NewDecoder(r.Body).Decode(&input); err != nil {
|
||||
writeError(w, http.StatusBadRequest, "invalid json body")
|
||||
return
|
||||
}
|
||||
settings, err := s.store.UpdateClientCustomizationSettings(r.Context(), input)
|
||||
if err != nil {
|
||||
s.logger.Error("update client customization settings failed", "error", err)
|
||||
writeError(w, http.StatusInternalServerError, "update client customization settings failed")
|
||||
return
|
||||
}
|
||||
writeJSON(w, http.StatusOK, settings)
|
||||
}
|
||||
|
||||
// createFileStorageChannel godoc
|
||||
// @Summary 创建文件存储通道
|
||||
// @Description 创建文件存储通道,当前主要用于配置 server-main OpenAPI 上传通道。
|
||||
|
||||
Reference in New Issue
Block a user