other.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. // Copyright (c) 2015 qianqiusoft.com
  2. // Licensed to You under the GNU Affero GPL v3
  3. // See the LICENSE file at git.qianqiusoft.com/qianqiusoft/light-vocation/LICENSE
  4. // http://www.gnu.org/licenses/why-affero-gpl.en.html
  5. package utils
  6. import (
  7. "fmt"
  8. "net/url"
  9. "strings"
  10. "git.qianqiusoft.com/qianqiusoft/light-apiengine/logs"
  11. )
  12. func SubString(str string, begin, length int) (substr string) {
  13. //将字符串的转换成[]rune
  14. rs := []rune(str)
  15. lth := len(rs)
  16. // 简单的越界判断
  17. if begin < 0 {
  18. begin = 0
  19. }
  20. if begin >= lth {
  21. begin = lth
  22. }
  23. end := begin + length
  24. if end > lth {
  25. end = lth
  26. }
  27. // 返回子串
  28. return string(rs[begin:end])
  29. }
  30. func FormatCamelString(str string) string {
  31. res := ""
  32. array := strings.Split(str, "_")
  33. for _, val := range array {
  34. if len(val) > 0 {
  35. res += strings.ToUpper(SubString(val, 0, 1)) + strings.ToLower(SubString(val, 1, len(str)-1))
  36. }
  37. }
  38. return res
  39. }
  40. func FormatFieldAndJsonString(columnName string) string {
  41. return strings.ToLower(columnName)
  42. }
  43. func GetSizeOfColumn(size int) string {
  44. //fmt.Printf(".............size is %d", size)
  45. if size <= 0 {
  46. return ""
  47. } else {
  48. ss := fmt.Sprintf("size(%d);", size)
  49. //fmt.Println(ss)
  50. return ss
  51. }
  52. }
  53. func ConvertColTypeToDBType(colType string) string {
  54. colType = strings.ToLower(colType)
  55. switch colType {
  56. case "string":
  57. return "varchar"
  58. case "text":
  59. return "text"
  60. case "datetime":
  61. return "datetime"
  62. default:
  63. return colType
  64. }
  65. }
  66. func ConvertColType(colType string) string {
  67. colType = strings.ToLower(colType)
  68. switch colType {
  69. case "string-text":
  70. return "string"
  71. case "time.Time-date":
  72. return "time.Time"
  73. case "text":
  74. return "string"
  75. case "string":
  76. return "string"
  77. case "datetime":
  78. return "time.Time"
  79. default:
  80. return colType
  81. }
  82. }
  83. func TotalPage(record, size int) int {
  84. tp := record / size
  85. if tp < 0 {
  86. return 1
  87. }
  88. if record%size == 0 {
  89. return tp
  90. }
  91. return tp + 1
  92. }
  93. func FormatForBrowse(agent, val string) string {
  94. if strings.Contains(strings.ToLower(agent), "safari/") && !strings.Contains(strings.ToLower(agent), "chrome/") {
  95. logs.Debug("Safari浏览器编码")
  96. } else if strings.Contains(strings.ToLower(agent), "firefox/") {
  97. logs.Debug("Firefox浏览器编码")
  98. } else if strings.Contains(strings.ToLower(agent), "chrome/") && strings.Contains(strings.ToLower(agent), "safari/") && !strings.Contains(strings.ToLower(agent), "edge/") {
  99. logs.Debug("Chrome浏览器编码")
  100. } else {
  101. logs.Debug("IE浏览器编码")
  102. val = url.QueryEscape(val)
  103. val = strings.Replace(val, "+", "%20", -1)
  104. }
  105. return val
  106. }