news.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package cms_service
  2. import (
  3. "gfast/app/model/admin/cms_category"
  4. "gfast/app/model/admin/cms_category_news"
  5. "gfast/app/model/admin/cms_news"
  6. "gfast/library/utils"
  7. "github.com/gogf/gf/container/gvar"
  8. "github.com/gogf/gf/database/gdb"
  9. "github.com/gogf/gf/util/gconv"
  10. )
  11. //添加文章操作
  12. func AddNews(req *cms_news.ReqAddParams, cateIds []int, userId int) (insId int64, err error) {
  13. return cms_news.AddNews(req, cateIds, userId)
  14. }
  15. //修改文章操作
  16. func EditNews(req *cms_news.ReqEditParams, cateIds []int) (err error) {
  17. return cms_news.EditNews(req, cateIds)
  18. }
  19. //文章列表查询
  20. func NewsListByPage(req *cms_news.ReqListSearchParams) (total, page int, list gdb.Result, err error) {
  21. var menuList []*cms_category.Entity
  22. //获取所有栏目
  23. menuList, err = GetMenuList()
  24. if err != nil {
  25. return
  26. }
  27. if len(req.CateId) > 0 {
  28. //查询可发布栏目id
  29. menuListSlice := gconv.SliceMap(menuList)
  30. cateIds := req.CateId
  31. for _, cid := range cateIds {
  32. mList := make([]*cms_category.Entity, 0)
  33. sonList := utils.FindSonByParentId(menuListSlice, cid, "parent_id", "id")
  34. gconv.Structs(sonList, &mList)
  35. for _, v := range mList {
  36. if v.CateType == cms_category.PublishCateType {
  37. req.CateId = append(req.CateId, gconv.Int(v.Id))
  38. }
  39. }
  40. }
  41. }
  42. total, page, list, err = cms_news.ListByPage(req)
  43. if err != nil || len(list) == 0 {
  44. return
  45. }
  46. //匹配文章所属栏目
  47. var cateIds []int
  48. for _, v := range list {
  49. cateIds, err = GetCheckedCategoryIdByNewsId(gconv.Uint64(v["id"]))
  50. if err != nil {
  51. return
  52. }
  53. cateNameList := make(map[int]string)
  54. for _, menu := range menuList {
  55. for _, cateId := range cateIds {
  56. if menu.Id == gconv.Uint64(cateId) {
  57. cateNameList[cateId] = menu.Name
  58. }
  59. }
  60. }
  61. cateVal := new(gvar.Var)
  62. if len(cateNameList) > 0 {
  63. cateVal.Set(cateNameList)
  64. }
  65. v["cateList"] = cateVal
  66. }
  67. return
  68. }
  69. //通过id获取文章信息
  70. func GetNewsById(id int) (news *cms_news.Entity, err error) {
  71. return cms_news.GetById(id)
  72. }
  73. //通过文章id获取关联的栏目id
  74. func GetCheckedCategoryIdByNewsId(newsId uint64) (catIds []int, err error) {
  75. categories, err := GetCategoriesByNewsId(newsId)
  76. if err != nil {
  77. return
  78. }
  79. catIds = make([]int, len(categories))
  80. for k, v := range categories {
  81. catIds[k] = gconv.Int(v.CategoryId)
  82. }
  83. return
  84. }
  85. //通过文章id获取关联栏目信息
  86. func GetCategoriesByNewsId(newsId uint64) (categories []*cms_category_news.Entity, err error) {
  87. return cms_category_news.GetCategoriesByNewsId(newsId)
  88. }
  89. func DeleteCmsByIds(ids []int) (err error) {
  90. return cms_news.DeleteByIds(ids)
  91. }