blog_classification.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. package blog_classification
  2. import (
  3. "gfast/app/service/cache_service"
  4. "github.com/gogf/gf/errors/gerror"
  5. "github.com/gogf/gf/frame/g"
  6. )
  7. // AddReq 用于存储新增记录请求参数
  8. type AddReq struct {
  9. ClassificationName string `p:"classificationName" v:"required#名称不能为空"` // 名称
  10. ClassificationSort uint `p:"classificationSort" v:"required#排序不能为空"` // 排序
  11. ClassificationDescribe string `p:"classificationDescribe"` // 分类描述
  12. ClassificationPid uint `p:"classificationPid"` // 父id
  13. ClassificationType uint `p:"classificationType"` // 分类类型1.频道页/2.发布栏目/3.跳转栏目/4.单页栏目
  14. ClassificationStatus uint `p:"classificationStatus" v:"required#分类状态不能为空"` // 状态
  15. ClassificationAddress string `p:"classificationAddress"`
  16. ClassificationContent string `p:"classificationContent"`
  17. }
  18. // EditReq 用于存储修改广告位请求参数
  19. type EditReq struct {
  20. ClassificationId int64 `p:"classificationId" v:"required|min:1#主键ID不能为空|主键ID值错误"`
  21. AddReq
  22. }
  23. // SelectPageReq 用于存储分页查询的请求参数
  24. type SelectPageReq struct {
  25. ClassificationName string `p:"classificationName"` // 名称
  26. PageNum int64 `p:"pageNum"` // 当前页
  27. PageSize int64 `p:"pageSize"` // 每页显示记录数
  28. }
  29. // GetClassificationByID 根据ID查询记录
  30. func GetClassificationByID(id int64) (*Entity, error) {
  31. entity, err := Model.FindOne(id)
  32. if err != nil {
  33. g.Log().Error(err)
  34. return nil, gerror.New("根据ID查询记录出错")
  35. }
  36. if entity == nil {
  37. return nil, gerror.New("根据ID未能查询到记录")
  38. }
  39. return entity, nil
  40. }
  41. // 根据名称和ID来判断是否已存在相同名称的分类
  42. func CheakClassificationNameUnique(classificationName string, classificationId int64) error {
  43. var (
  44. entity *Entity
  45. err error
  46. )
  47. if classificationId == 0 {
  48. entity, err = Model.FindOne(Columns.ClassificationName, classificationName)
  49. } else {
  50. entity, err = Model.Where(Columns.ClassificationName, classificationName).And(Columns.ClassificationId+"!=?", classificationId).FindOne()
  51. }
  52. if err != nil {
  53. g.Log().Error(err)
  54. return gerror.New("校验名称唯一性失败")
  55. }
  56. if entity != nil {
  57. return gerror.New("名称已经存在!")
  58. }
  59. return nil
  60. }
  61. // AddSave 添加
  62. func AddSave(req *AddReq) error {
  63. var entity Entity
  64. entity.ClassificationName = req.ClassificationName
  65. entity.ClassificationSort = req.ClassificationSort
  66. entity.ClassificationDescribe = req.ClassificationDescribe
  67. entity.ClassificationPid = req.ClassificationPid
  68. entity.ClassificationType = req.ClassificationType
  69. entity.ClassificationStatus = req.ClassificationStatus
  70. entity.ClassificationAddress = req.ClassificationAddress
  71. entity.ClassificationContent = req.ClassificationContent
  72. _, err := Model.Save(entity)
  73. if err != nil {
  74. g.Log().Error(err)
  75. return gerror.New("添加失败")
  76. }
  77. return nil
  78. }
  79. // 批量删除
  80. func DeleteClassificationByIds(ids []int) error {
  81. _, err := Model.Where("classification_id in(?)", ids).Delete()
  82. if err != nil {
  83. g.Log().Error(err)
  84. return gerror.New("删除失败")
  85. }
  86. return nil
  87. }
  88. // 根据ID修改信息
  89. func EditSave(editReq *EditReq) error {
  90. // 先根据ID来查询要修改的记录
  91. entity, err := GetClassificationByID(editReq.ClassificationId)
  92. if err != nil {
  93. return err
  94. }
  95. // 修改实体
  96. entity.ClassificationName = editReq.ClassificationName
  97. entity.ClassificationSort = editReq.ClassificationSort
  98. entity.ClassificationStatus = editReq.ClassificationStatus
  99. entity.ClassificationType = editReq.ClassificationType
  100. entity.ClassificationPid = editReq.ClassificationPid
  101. entity.ClassificationDescribe = editReq.ClassificationDescribe
  102. entity.ClassificationAddress = editReq.ClassificationAddress
  103. entity.ClassificationContent = editReq.ClassificationContent
  104. _, err = Model.Save(entity)
  105. if err != nil {
  106. g.Log().Error(err)
  107. return gerror.New("修改失败")
  108. }
  109. return nil
  110. }
  111. // 分页查询,返回值total总记录数,page当前页
  112. func SelectListByPage(req *SelectPageReq) (total int, page int64, list []*Entity, err error) {
  113. model := Model
  114. if req != nil {
  115. if req.ClassificationName != "" {
  116. model = model.Where("classification_name like ?", "%"+req.ClassificationName+"%")
  117. }
  118. }
  119. // 查询总记录数(总行数)
  120. total, err = model.Count()
  121. if err != nil {
  122. g.Log().Error(err)
  123. err = gerror.New("获取总记录数失败")
  124. return 0, 0, nil, err
  125. }
  126. if req.PageNum == 0 {
  127. req.PageNum = 1
  128. }
  129. page = req.PageNum
  130. if req.PageSize == 0 {
  131. req.PageSize = 10
  132. }
  133. // 分页排序查询
  134. list, err = model.Page(int(page), int(req.PageSize)).Order("classification_sort asc,classification_id asc").All()
  135. if err != nil {
  136. g.Log().Error(err)
  137. err = gerror.New("分页查询失败")
  138. return 0, 0, nil, err
  139. }
  140. return total, page, list, nil
  141. }
  142. //获取所有菜单列表
  143. func GetList() (list []*Entity, err error) {
  144. cache := cache_service.New()
  145. //从缓存获取数据
  146. iList := cache.Get(cache_service.AdminBlogClassification)
  147. if iList != nil {
  148. list = iList.([]*Entity)
  149. return
  150. }
  151. list, err = Model.Order("classification_sort ASC,classification_id ASC").All()
  152. if err != nil {
  153. g.Log().Error()
  154. err = gerror.New("获取菜单数据失败")
  155. return
  156. }
  157. //缓存数据
  158. cache.Set(cache_service.AdminBlogClassification, list, 0, cache_service.AdminBlogTag)
  159. return
  160. }
  161. // 查询所有状态为正常的分类
  162. func FindAllList() (list []*Entity, err error) {
  163. list, err = Model.Where("classification_status = ?", 1).Order("classification_sort asc,classification_id asc").All()
  164. if err != nil {
  165. g.Log().Error(err)
  166. return nil, gerror.New("查询博客分类列表出错")
  167. }
  168. return list, nil
  169. }