datasmt.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package service
  2. import (
  3. "app.yhyue.com/moapp/jybase/common"
  4. "app.yhyue.com/moapp/jybase/encrypt"
  5. "fmt"
  6. "jygit.jydev.jianyu360.cn/ApplicationCenter/publicService/rpc/db"
  7. "jygit.jydev.jianyu360.cn/ApplicationCenter/publicService/rpc/internal/config"
  8. "jygit.jydev.jianyu360.cn/ApplicationCenter/publicService/rpc/pb"
  9. "log"
  10. "strings"
  11. )
  12. const (
  13. DATA_SUPERMARKET = "data_supermarket"
  14. )
  15. type DataSmt struct {
  16. }
  17. // 列表数据
  18. func (d *DataSmt) List(searchValue, dataType string, pageNum, pageSize int64) *pb.DatasmtRespList {
  19. result := pb.DatasmtRespList{}
  20. //包含字段说明
  21. fieldIllustrate := []*pb.Field{}
  22. fieldIllustrateMap := map[string]string{}
  23. for _, v := range config.C.DataSmt.FieldIllustrate {
  24. fieldIllustrate = append(fieldIllustrate, &pb.Field{
  25. Code: v.Code,
  26. Name: v.Name,
  27. Describe: v.Describe,
  28. })
  29. fieldIllustrateMap[v.Code] = v.Name
  30. }
  31. result.FieldIllustrate = fieldIllustrate
  32. if pageSize == 0 {
  33. pageSize = 40
  34. }
  35. //数据查询
  36. data := &[]map[string]interface{}{}
  37. querySql := "select id,name,data_type,format,clear_status from %s where %s ORDER BY serial_number limit %v ,%v "
  38. queryStrArr := []string{
  39. " status=1 ",
  40. }
  41. if searchValue != "" {
  42. queryStrArr = append(queryStrArr, " name LIKE '%"+searchValue+"%' ")
  43. }
  44. if dataType != "" {
  45. queryStrArr = append(queryStrArr, fmt.Sprintf(" data_type = '%s' ", dataType))
  46. }
  47. querySql = fmt.Sprintf(querySql, DATA_SUPERMARKET, strings.Join(queryStrArr, " and "), (pageNum-1)*pageSize, pageSize)
  48. log.Println("querySql", querySql)
  49. data = db.Mysql_BaseService.SelectBySql(querySql)
  50. if data != nil && len(*data) > 0 {
  51. //数据处理
  52. dataList := []*pb.DatasmtList{}
  53. for _, v := range *data {
  54. dataList = append(dataList, &pb.DatasmtList{
  55. Id: encrypt.SE.Encode2Hex(common.InterfaceToStr(v["id"])),
  56. Name: common.InterfaceToStr(v["name"]),
  57. DataType: fieldIllustrateMap[common.InterfaceToStr(v["data_type"])],
  58. Format: common.InterfaceToStr(v["format"]),
  59. ClearStatus: common.InterfaceToStr(v["clear_status"]),
  60. })
  61. }
  62. result.List = dataList
  63. }
  64. //总数查询
  65. countQuerySql := "select count(id) from %s where %s "
  66. countQuerySql = fmt.Sprintf(countQuerySql, DATA_SUPERMARKET, strings.Join(queryStrArr, " and "))
  67. count := db.Mysql_BaseService.CountBySql(countQuerySql)
  68. result.PageCount = count
  69. //热搜词处理
  70. hotKeySql := fmt.Sprintf("select keyword from %s where status=1 ORDER BY serial_number LIMIT 0,8", DATA_SUPERMARKET)
  71. log.Println("querySql", hotKeySql)
  72. hotData := db.Mysql_BaseService.SelectBySql(hotKeySql)
  73. hotKeyArr := []string{}
  74. for _, m := range *hotData {
  75. hotKeyArr = append(hotKeyArr, common.InterfaceToStr(m["keyword"]))
  76. }
  77. result.HotKeys = hotKeyArr
  78. result.DataTypeStr = fieldIllustrateMap[dataType]
  79. return &result
  80. }
  81. // 详情
  82. func (d *DataSmt) Detail(id string) *pb.DatasmtRespDetail {
  83. result := &pb.DatasmtRespDetail{}
  84. querySql := fmt.Sprintf("select id,name,data_type,format,clear_status,data_example,introduce,keyword from %s where id =%s", DATA_SUPERMARKET, id)
  85. data := db.Mysql_BaseService.SelectBySql(querySql)
  86. if data != nil && len(*data) > 0 {
  87. //数据处理
  88. v := (*data)[0]
  89. dataType := common.InterfaceToStr(v["data_type"])
  90. result = &pb.DatasmtRespDetail{
  91. Name: common.InterfaceToStr(v["name"]),
  92. DataType: common.InterfaceToStr(v["data_type"]),
  93. Format: common.InterfaceToStr(v["format"]),
  94. ClearStatus: common.InterfaceToStr(v["clear_status"]),
  95. DataExample: common.InterfaceToStr(v["data_example"]),
  96. Introduce: common.InterfaceToStr(v["introduce"]),
  97. Keyword: common.InterfaceToStr(v["keyword"]),
  98. }
  99. for _, v := range config.C.DataSmt.FieldIllustrate {
  100. if dataType == v.Code {
  101. result.FieldIllustrate = &pb.Field{
  102. Code: v.Code,
  103. Name: v.Name,
  104. Describe: v.Describe,
  105. }
  106. }
  107. }
  108. }
  109. return result
  110. }