home.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package models
  2. import (
  3. "fmt"
  4. "hongze/hongze_api/utils"
  5. "rdluck_tools/orm"
  6. )
  7. type HomeList struct {
  8. ClassifyId int `orm:"column(id)"`
  9. ClassifyName string `description:"分类名称"`
  10. Child []*HomeClassifyItem
  11. TitleType string `description:"标题类型,FICC或者权益"`
  12. }
  13. type HomeClassifyItem struct {
  14. ClassifyId int `orm:"column(id)"`
  15. ClassifyName string `description:"分类名称"`
  16. Child *Report
  17. }
  18. func ListHome(userId, maxPermission, userPermission int, permissionStr string) (items []*HomeList, err error) {
  19. o := orm.NewOrm()
  20. o.Using("rddp")
  21. sql := `SELECT id,classify_name FROM classify WHERE parent_id=0 ORDER BY create_time ASC `
  22. _, err = o.Raw(sql).QueryRows(&items)
  23. if err != nil {
  24. fmt.Println("Get classify Err:" + err.Error())
  25. return
  26. }
  27. lenItem := len(items)
  28. fmt.Println("lenItem:", lenItem)
  29. for i := 0; i < lenItem; i++ {
  30. item := items[i]
  31. subItems := make([]*HomeClassifyItem, 0)
  32. subWhere := ``
  33. if maxPermission < 15 && userPermission == 0 {
  34. if permissionStr != "" {
  35. subWhere = ` WHERE parent_id=? AND classify_name IN(` + permissionStr + `) `
  36. } else {
  37. subWhere = ` WHERE parent_id=? `
  38. }
  39. } else {
  40. subWhere = ` WHERE parent_id=? `
  41. }
  42. subSql := `SELECT id ,classify_name FROM classify `
  43. subSql += subWhere
  44. subSql += ` ORDER BY create_time ASC `
  45. _, err = o.Raw(subSql, item.ClassifyId).QueryRows(&subItems)
  46. if err != nil {
  47. fmt.Println("Sub Err:" + err.Error())
  48. return
  49. }
  50. lenSub := len(subItems)
  51. for k := 0; k < lenSub; k++ {
  52. subItem := subItems[k]
  53. reportSql := ` SELECT a.id,a.classify_name,b.*,
  54. (SELECT COUNT(1) FROM report_view_log AS c WHERE c.user_id=? AND c.report_id=b.id ) AS is_show_new_label,
  55. CASE WHEN DATE(b.modify_time)=DATE(NOW()) THEN 1 ELSE 0 END AS is_current_date
  56. FROM classify AS a
  57. INNER JOIN report AS b ON a.id=b.classify_id_second
  58. WHERE b.state=2 AND a.id=?
  59. ORDER BY b.publish_time DESC LIMIT 1 `
  60. report := new(Report)
  61. err = o.Raw(reportSql, userId, subItem.ClassifyId).QueryRow(&report)
  62. if err != nil {
  63. if err.Error() != utils.ErrNoRow() {
  64. return
  65. } else {
  66. err = nil
  67. }
  68. }
  69. subItems[k].Child = report
  70. }
  71. items[i].Child = subItems
  72. }
  73. return
  74. }