sqlService.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package service
  2. import (
  3. "app.yhyue.com/moapp/jybase/common"
  4. "app.yhyue.com/moapp/jybase/encrypt"
  5. elastic "app.yhyue.com/moapp/jybase/es"
  6. "app.yhyue.com/moapp/jybase/redis"
  7. MC "bp.jydev.jianyu360.cn/BaseService/biCenter/api/common"
  8. "bp.jydev.jianyu360.cn/BaseService/biCenter/api/internal/types"
  9. "fmt"
  10. "github.com/gogf/gf/v2/util/gconv"
  11. )
  12. type SqlService struct {
  13. }
  14. func (l SqlService) SqlManage(in *types.SqlManageReq) map[string]interface{} {
  15. sqlData := MC.BaseMysql.FindOne("sql_manage", map[string]interface{}{
  16. "id": common.Int64All(in.Id),
  17. }, "", "")
  18. if sqlData == nil || len(*sqlData) == 0 {
  19. return map[string]interface{}{}
  20. }
  21. dbType := (*sqlData)["db_type"]
  22. cache_time := common.IntAll((*sqlData)["cache_time"])
  23. key := common.GetMd5String(gconv.String(in))
  24. if cache_time != 0 {
  25. dataStr := redis.Get("other", key)
  26. if dataStr != nil {
  27. data, _ := dataStr.(map[string]interface{})
  28. return data
  29. }
  30. }
  31. rs := &[]map[string]interface{}{}
  32. count := int64(0)
  33. switch dbType {
  34. case "es":
  35. count, rs = elastic.GetWithCount(common.InterfaceToStr((*sqlData)["db_name"]), common.InterfaceToStr((*sqlData)["db_name"]), "", Sqlformat(common.InterfaceToStr((*sqlData)["content"]), *in))
  36. }
  37. for k, v := range *rs {
  38. (*rs)[k]["id"] = encrypt.EncodeArticleId2ByCheck(common.InterfaceToStr(v["id"]))
  39. delete((*rs)[k], "_id")
  40. }
  41. result := map[string]interface{}{
  42. "data": rs,
  43. "count": count,
  44. }
  45. if count > 0 && cache_time != 0 {
  46. redis.Put("other", key, result, cache_time)
  47. }
  48. return result
  49. }
  50. func Sqlformat(sqlStr string, sqlData types.SqlManageReq) string {
  51. data := []interface{}{}
  52. for _, v := range sqlData.Params {
  53. switch v.Type {
  54. case "string":
  55. data = append(data, v.Value)
  56. case "int":
  57. data = append(data, common.Int64All(v.Value))
  58. }
  59. }
  60. return fmt.Sprintf(sqlStr, data...)
  61. }