models_util.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package models
  2. import "database/sql"
  3. func compareAndCopy(sqlResult SQLResult, target *TargetOALicenseInfo) bool {
  4. // 标志位,初始为 true,表示默认所有值相等
  5. isEqual := true
  6. // 辅助函数,用于处理 sql.NullString 类型的比较
  7. compareAndAssignNullString := func(sqlValue sql.NullString, targetValue *sql.NullString) bool {
  8. if sqlValue.Valid && (!targetValue.Valid || sqlValue.String != targetValue.String) {
  9. *targetValue = sqlValue
  10. return false
  11. }
  12. return true
  13. }
  14. // 辅助函数,用于处理 sql.NullInt64 类型的比较
  15. compareAndAssignNullInt64 := func(sqlValue sql.NullInt64, targetValue *sql.NullInt64) bool {
  16. if sqlValue.Valid && (!targetValue.Valid || sqlValue.Int64 != targetValue.Int64) {
  17. *targetValue = sqlValue
  18. return false
  19. }
  20. return true
  21. }
  22. // 比较 OARequestName
  23. if !compareAndAssignNullString(sqlResult.OARequestName, &target.OARequestName) {
  24. isEqual = false
  25. }
  26. // 比较 OARequestNameNew
  27. if !compareAndAssignNullString(sqlResult.OARequestNameNew, &target.OARequestNameNew) {
  28. isEqual = false
  29. }
  30. // 比较 OARequestNameHTMLNew
  31. if !compareAndAssignNullString(sqlResult.OARequestNameHTMLNew, &target.OARequestNameHTMLNew) {
  32. isEqual = false
  33. }
  34. // 比较 OAGLXMID(处理 sql.NullInt64)
  35. if !compareAndAssignNullInt64(sqlResult.OAGLXMID, &target.OAGLXMID) {
  36. isEqual = false
  37. }
  38. // 比较 OAGLXMName
  39. if !compareAndAssignNullString(sqlResult.OAGLXMName, &target.OAGLXMName) {
  40. isEqual = false
  41. }
  42. // 比较 OASQSJ
  43. if !compareAndAssignNullString(sqlResult.OASQSJ, &target.OASQSJ) {
  44. isEqual = false
  45. }
  46. // 比较 OASalespersonName
  47. if !compareAndAssignNullString(sqlResult.OASalespersonName, &target.OASalespersonName) {
  48. isEqual = false
  49. }
  50. // 比较 OAOperationsPersonName
  51. if !compareAndAssignNullString(sqlResult.OAOperationsPersonName, &target.OAOperationsPersonName) {
  52. isEqual = false
  53. }
  54. // 比较 OAXSJSYX
  55. if !compareAndAssignNullString(sqlResult.OAXSJSYX, &target.OAXSJSYX) {
  56. isEqual = false
  57. }
  58. // 比较 OAJFJSYX
  59. if !compareAndAssignNullString(sqlResult.OAJFJSYX, &target.OAJFJSYX) {
  60. isEqual = false
  61. }
  62. // 比较 OASYDW
  63. if !compareAndAssignNullString(sqlResult.OASYDW, &target.OASYDW) {
  64. isEqual = false
  65. }
  66. // 比较 OAXMXXMS
  67. if !compareAndAssignNullString(sqlResult.OAXMXXMS, &target.OAXMXXMS) {
  68. isEqual = false
  69. }
  70. // 比较 OAJDS(处理 int 类型)
  71. if sqlResult.OAJDS != target.OAJDS {
  72. target.OAJDS = sqlResult.OAJDS
  73. isEqual = false
  74. }
  75. // 比较 OANodeCount(处理 int 类型)
  76. if sqlResult.OANodeCount != target.OANodeCount {
  77. target.OANodeCount = sqlResult.OANodeCount
  78. isEqual = false
  79. }
  80. // 比较 OAProductName
  81. if !compareAndAssignNullString(sqlResult.OAProductName, &target.OAProductName) {
  82. isEqual = false
  83. }
  84. // 比较 OAProductVersion
  85. if !compareAndAssignNullString(sqlResult.OAProductVersion, &target.OAProductVersion) {
  86. isEqual = false
  87. }
  88. // 比较 CLQ(处理 int 类型)
  89. if sqlResult.CLQ != target.OACPU {
  90. target.OACPU = sqlResult.CLQ
  91. isEqual = false
  92. }
  93. // 比较 CZXT
  94. if !compareAndAssignNullString(sqlResult.CZXT, &target.OAOperatingSystem) {
  95. isEqual = false
  96. }
  97. // 比较 IP
  98. if !compareAndAssignNullString(sqlResult.IP, &target.OAMainMAC) {
  99. isEqual = false
  100. }
  101. // 比较 MAC
  102. if !compareAndAssignNullString(sqlResult.MAC, &target.OASecondMAC) {
  103. isEqual = false
  104. }
  105. // 比较 OACreationDate
  106. if !compareAndAssignNullString(sqlResult.OACreationDate, &target.OACreationDate) {
  107. isEqual = false
  108. }
  109. // 比较 OACreationTime
  110. if !compareAndAssignNullString(sqlResult.OACreationTime, &target.OACreationTime) {
  111. isEqual = false
  112. }
  113. // 比较 OALastOperateDate
  114. if !compareAndAssignNullString(sqlResult.OALastOperateDate, &target.OALastOperateDate) {
  115. isEqual = false
  116. }
  117. // 比较 OALastOperateTime
  118. if !compareAndAssignNullString(sqlResult.OALastOperateTime, &target.OALastOperateTime) {
  119. isEqual = false
  120. }
  121. // 返回标志位
  122. return isEqual
  123. }