ReplaceRuleController.kt 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package io.legato.kazusa.api.controller
  2. import io.legato.kazusa.api.ReturnData
  3. import io.legato.kazusa.data.appDb
  4. import io.legato.kazusa.data.entities.ReplaceRule
  5. import io.legato.kazusa.utils.GSON
  6. import io.legato.kazusa.utils.fromJsonObject
  7. import io.legato.kazusa.utils.replace
  8. import io.legato.kazusa.utils.stackTraceStr
  9. object ReplaceRuleController {
  10. val allRules: ReturnData
  11. get() {
  12. val rules = appDb.replaceRuleDao.all
  13. val returnData = ReturnData()
  14. returnData.setData(GSON.toJson(rules))
  15. return returnData
  16. }
  17. fun saveRule(postData: String?): ReturnData {
  18. val returnData = ReturnData()
  19. postData ?: return returnData.setErrorMsg("数据不能为空")
  20. val rule = GSON.fromJsonObject<ReplaceRule>(postData).getOrNull()
  21. if (rule == null) {
  22. returnData.setErrorMsg("格式不对")
  23. } else {
  24. if (rule.order == Int.MIN_VALUE) {
  25. rule.order = appDb.replaceRuleDao.maxOrder + 1
  26. }
  27. appDb.replaceRuleDao.insert(rule)
  28. }
  29. return returnData
  30. }
  31. fun delete(postData: String?): ReturnData {
  32. val returnData = ReturnData()
  33. postData ?: return returnData.setErrorMsg("数据不能为空")
  34. val rule = GSON.fromJsonObject<ReplaceRule>(postData).getOrNull()
  35. if (rule == null) {
  36. returnData.setErrorMsg("格式不对")
  37. } else {
  38. appDb.replaceRuleDao.delete(rule)
  39. }
  40. return returnData
  41. }
  42. /**
  43. * 传入测试数据格式
  44. * {
  45. * rule: Replace,
  46. * text: "xxx"
  47. * }
  48. */
  49. fun testRule(postData: String?): ReturnData {
  50. val returnData = ReturnData()
  51. postData ?: return returnData.setErrorMsg("数据不能为空")
  52. val map = GSON.fromJsonObject<Map<String, *>>(postData).getOrNull()
  53. if (map == null) {
  54. returnData.setErrorMsg("格式不对")
  55. } else {
  56. val rule = map["rule"]?.let {
  57. if (it is String) {
  58. GSON.fromJsonObject<ReplaceRule>(it).getOrNull()
  59. } else {
  60. GSON.fromJsonObject<ReplaceRule>(GSON.toJson(it)).getOrNull()
  61. }
  62. }
  63. if (rule == null) {
  64. returnData.setErrorMsg("格式不对")
  65. return returnData
  66. }
  67. if (rule.pattern.isEmpty()) {
  68. returnData.setErrorMsg("替换规则不能为空")
  69. }
  70. val text = map["text"] as String
  71. val content = try {
  72. if (rule.isRegex) {
  73. text.replace(
  74. rule.pattern.toRegex(),
  75. rule.replacement,
  76. rule.getValidTimeoutMillisecond()
  77. )
  78. } else {
  79. text.replace(rule.pattern, rule.replacement)
  80. }
  81. } catch (e: Exception) {
  82. e.stackTraceStr
  83. }
  84. returnData.setData(content)
  85. }
  86. return returnData
  87. }
  88. }