datasmt.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package service
  2. import (
  3. "fmt"
  4. "strings"
  5. "app.yhyue.com/moapp/jybase/common"
  6. "app.yhyue.com/moapp/jybase/encrypt"
  7. "jygit.jydev.jianyu360.cn/ApplicationCenter/publicService/rpc/db"
  8. "jygit.jydev.jianyu360.cn/ApplicationCenter/publicService/rpc/internal/config"
  9. "jygit.jydev.jianyu360.cn/ApplicationCenter/publicService/rpc/pb"
  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. args := []interface{}{}
  41. if searchValue != "" {
  42. queryStrArr = append(queryStrArr, " name LIKE ? ")
  43. args = append(args, "%"+searchValue+"%")
  44. }
  45. if dataType != "" {
  46. queryStrArr = append(queryStrArr, " data_type=? ")
  47. args = append(args, dataType)
  48. }
  49. querySql = fmt.Sprintf(querySql, DATA_SUPERMARKET, strings.Join(queryStrArr, " and "), (pageNum-1)*pageSize, pageSize)
  50. data = db.Mysql_BaseService.SelectBySql(querySql, args...)
  51. if data != nil && len(*data) > 0 {
  52. //数据处理
  53. dataList := []*pb.DatasmtList{}
  54. for _, v := range *data {
  55. dataList = append(dataList, &pb.DatasmtList{
  56. Id: encrypt.SE.Encode2Hex(common.InterfaceToStr(v["id"])),
  57. Name: common.InterfaceToStr(v["name"]),
  58. DataType: fieldIllustrateMap[common.InterfaceToStr(v["data_type"])],
  59. Format: common.InterfaceToStr(v["format"]),
  60. ClearStatus: common.InterfaceToStr(v["clear_status"]),
  61. })
  62. }
  63. result.List = dataList
  64. }
  65. //总数查询
  66. countQuerySql := "select count(id) from %s where %s "
  67. countQuerySql = fmt.Sprintf(countQuerySql, DATA_SUPERMARKET, strings.Join(queryStrArr, " and "))
  68. count := db.Mysql_BaseService.CountBySql(countQuerySql, args...)
  69. result.PageCount = count
  70. //热搜词处理
  71. 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)
  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=?", DATA_SUPERMARKET)
  85. data := db.Mysql_BaseService.SelectBySql(querySql, id)
  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: config.C.DataSmt.ResUrl + 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.DataType {
  100. if dataType == v.Code {
  101. result.FieldIllustrate = &pb.Field{
  102. Code: v.Code,
  103. Name: v.Name,
  104. Describe: v.Describe,
  105. }
  106. if v.Application != "" {
  107. result.FieldIllustrate.Application = config.C.DataSmt.ResUrl + v.Application
  108. }
  109. if v.ApplicationApp != "" {
  110. result.FieldIllustrate.ApplicationApp = config.C.DataSmt.ResUrl + v.ApplicationApp
  111. }
  112. }
  113. }
  114. result.DataType = result.FieldIllustrate.Name
  115. }
  116. return result
  117. }