config.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package v1
  2. import (
  3. "log"
  4. )
  5. import (
  6. "github.com/gin-gonic/gin"
  7. "github.com/spf13/cast"
  8. )
  9. import (
  10. "resource-server/common"
  11. "resource-server/models"
  12. "resource-server/service"
  13. )
  14. func GetConfigs(c *gin.Context) {
  15. res, err := service.GetConfigList()
  16. if err != nil {
  17. common.HttpErr(c, err)
  18. return
  19. }
  20. common.HttpSuccess(c, res)
  21. }
  22. func GetConfigOptions(c *gin.Context) {
  23. flag := c.Query("flag")
  24. enable := cast.ToBool(c.Query("enable"))
  25. res, err := service.GetConfigOptionList(flag, enable)
  26. if err != nil {
  27. common.HttpErr(c, err)
  28. return
  29. }
  30. common.HttpSuccess(c, res)
  31. }
  32. func UpdateConfigItems(c *gin.Context) {
  33. var items map[string]interface{}
  34. if err := c.ShouldBindJSON(&items); err != nil {
  35. common.HttpErr(c, err)
  36. return
  37. }
  38. for key, value := range items {
  39. log.Printf("Key: %s, Value: %v", key, value)
  40. var configItem models.ConfigItem
  41. if err := models.DB.Model(&models.ConfigItem{}).First(&configItem, "uri = ?", key).Error; err != nil {
  42. //todo 回滚
  43. common.HttpErr(c, err)
  44. return
  45. } else {
  46. //todo 校验 回滚
  47. switch configItem.ValueType {
  48. case "string":
  49. configItem.Value = cast.ToString(value)
  50. case "int":
  51. configItem.Value = cast.ToString(cast.ToInt(value))
  52. case "bool":
  53. configItem.Value = cast.ToString(cast.ToBool(value))
  54. }
  55. err := models.DB.Save(&configItem).Error
  56. if err != nil {
  57. common.HttpErr(c, err)
  58. return
  59. }
  60. }
  61. }
  62. common.HttpSuccess(c)
  63. }