datasmt.go 3.6 KB

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