datasmt.go 4.2 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. "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.DataType {
  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, update_time desc,CONVERT(name USING gbk) asc,id desc 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 a.keyword as keyword from (SELECT keyword,min(serial_number) as serial_number,max(update_time) as update_time FROM %s where keyword<>'' and keyword is not null and status=1 GROUP BY keyword ) a ORDER BY a.serial_number, a.update_time desc,CONVERT(a.keyword USING gbk) asc limit 8", DATA_SUPERMARKET)
  69. hotData := db.Mysql_BaseService.SelectBySql(hotKeySql)
  70. hotKeyArr := []string{}
  71. for _, m := range *hotData {
  72. hotKeyArr = append(hotKeyArr, common.InterfaceToStr(m["keyword"]))
  73. }
  74. result.HotKeys = hotKeyArr
  75. result.DataTypeStr = fieldIllustrateMap[dataType]
  76. return &result
  77. }
  78. // 详情
  79. func (d *DataSmt) Detail(id string) *pb.DatasmtRespDetail {
  80. result := &pb.DatasmtRespDetail{}
  81. querySql := fmt.Sprintf("select id,name,data_type,format,clear_status,data_example,introduce,keyword from %s where id =%s", DATA_SUPERMARKET, id)
  82. data := db.Mysql_BaseService.SelectBySql(querySql)
  83. if data != nil && len(*data) > 0 {
  84. //数据处理
  85. v := (*data)[0]
  86. dataType := common.InterfaceToStr(v["data_type"])
  87. result = &pb.DatasmtRespDetail{
  88. Name: common.InterfaceToStr(v["name"]),
  89. DataType: common.InterfaceToStr(v["data_type"]),
  90. Format: common.InterfaceToStr(v["format"]),
  91. ClearStatus: common.InterfaceToStr(v["clear_status"]),
  92. DataExample: config.C.DataSmt.ResUrl + common.InterfaceToStr(v["data_example"]),
  93. Introduce: common.InterfaceToStr(v["introduce"]),
  94. Keyword: common.InterfaceToStr(v["keyword"]),
  95. }
  96. for _, v := range config.C.DataSmt.DataType {
  97. if dataType == v.Code {
  98. result.FieldIllustrate = &pb.Field{
  99. Code: v.Code,
  100. Name: v.Name,
  101. Describe: v.Describe,
  102. Application: config.C.DataSmt.ResUrl + v.Application,
  103. ApplicationApp: config.C.DataSmt.ResUrl + v.ApplicationApp,
  104. }
  105. }
  106. }
  107. result.DataType = result.FieldIllustrate.Name
  108. }
  109. return result
  110. }