2
0

api_bbs_w_comment_one.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package route
  2. import (
  3. "database/sql"
  4. "opennamu/route/tool"
  5. "strings"
  6. )
  7. func Api_bbs_w_comment_one(config tool.Config, already_auth_check bool, do_type string, sub_code string) map[string]any {
  8. db := tool.DB_connect()
  9. defer tool.DB_close(db)
  10. sub_code_parts := strings.Split(sub_code, "-")
  11. sub_code_last := ""
  12. new_sub_code := ""
  13. if do_type == "around" {
  14. new_sub_code = sub_code
  15. } else {
  16. if len(sub_code_parts) > 2 {
  17. sub_code_last = sub_code_parts[len(sub_code_parts) - 1]
  18. sub_code_parts = sub_code_parts[:len(sub_code_parts) - 1]
  19. new_sub_code = strings.Join(sub_code_parts, "-")
  20. }
  21. }
  22. var rows *sql.Rows
  23. if do_type == "around" {
  24. rows = tool.Query_DB(
  25. db,
  26. "select set_name, set_data, set_code, set_id from bbs_data where (set_name = 'comment' or set_name like 'comment%') and set_id = ?",
  27. new_sub_code,
  28. )
  29. } else {
  30. rows = tool.Query_DB(
  31. db,
  32. "select set_name, set_data, set_code, set_id from bbs_data where (set_name = 'comment' or set_name like 'comment%') and set_id = ? and set_code = ?",
  33. new_sub_code, sub_code_last,
  34. )
  35. }
  36. defer rows.Close()
  37. data_list := []map[string]string{}
  38. temp_dict := map[string]string{}
  39. ip_parser_temp := map[string][]string{}
  40. before_set_code := ""
  41. for rows.Next() {
  42. var set_name string
  43. var set_data string
  44. var set_code string
  45. var set_id string
  46. err := rows.Scan(&set_name, &set_data, &set_code, &set_id)
  47. if err != nil {
  48. panic(err)
  49. }
  50. if before_set_code != set_code {
  51. if before_set_code != "" {
  52. data_list = append(data_list, temp_dict)
  53. }
  54. temp_dict = map[string]string{}
  55. temp_dict["id"] = set_id
  56. temp_dict["code"] = set_code
  57. before_set_code = set_code
  58. }
  59. if set_name == "comment_user_id" {
  60. var ip_pre string
  61. var ip_render string
  62. if _, ok := ip_parser_temp[set_data]; ok {
  63. ip_pre = ip_parser_temp[set_data][0]
  64. ip_render = ip_parser_temp[set_data][1]
  65. } else {
  66. ip_pre = tool.IP_preprocess(db, set_data, config.IP)[0]
  67. ip_render = tool.IP_parser(db, set_data, config.IP)
  68. ip_parser_temp[set_data] = []string{ip_pre, ip_render}
  69. }
  70. temp_dict["comment_user_id"] = ip_pre
  71. temp_dict["comment_user_id_render"] = ip_render
  72. } else {
  73. temp_dict[set_name] = set_data
  74. }
  75. }
  76. if before_set_code != "" {
  77. data_list = append(data_list, temp_dict)
  78. }
  79. return_data := make(map[string]any)
  80. if !already_auth_check {
  81. if !tool.Check_acl(db, "", "", "bbs_comment", config.IP) {
  82. data_list = []map[string]string{}
  83. return_data["response"] = "require auth"
  84. }
  85. }
  86. if do_type == "around" {
  87. return_data["data"] = data_list
  88. } else {
  89. if len(data_list) > 0 {
  90. return_data["data"] = []map[string]string{
  91. data_list[0],
  92. }
  93. } else {
  94. return_data["data"] = []map[string]string{}
  95. }
  96. }
  97. return return_data
  98. }