| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- package daytask
- import (
- "app/commons/model/entity"
- "app/commons/services"
- "github.com/gin-gonic/gin"
- )
- // MaterialCategories 素材分类列表
- func (s *Server) MaterialCategories(c *gin.Context) {
- ctx := s.FromContext(c)
- db := s.DB()
- var categories []entity.DtMaterialCategory
- db.Where("status = ?", 1).
- Order("sort ASC, id ASC").
- Find(&categories)
- ctx.OK(gin.H{
- "list": categories,
- })
- }
- // MaterialList 素材列表
- func (s *Server) MaterialList(c *gin.Context) {
- ctx := s.FromContext(c)
- db := s.DB()
- groupId := ctx.QueryInt64("groupId", 0)
- materialType := ctx.QueryString("type", "")
- paging := &services.Pagination{
- Current: ctx.QueryInt64("current", 1),
- Size: ctx.QueryInt64("size", 20),
- }
- // 查询系统内部分组ID(banner、task_icon、category_icon),这些分组的素材不对用户展示
- var excludeGroupIds []int64
- db.Table("dt_material_group").
- Where("code IN ?", []string{"banner", "task_icon", "category_icon"}).
- Pluck("id", &excludeGroupIds)
- query := db.Model(&entity.DtMaterial{}).Where("status = ?", 1)
- if groupId > 0 {
- query = query.Where("group_id = ?", groupId)
- } else if len(excludeGroupIds) > 0 {
- query = query.Where("group_id NOT IN ?", excludeGroupIds)
- }
- if materialType != "" {
- query = query.Where("type = ?", materialType)
- }
- query.Count(&paging.Total)
- paging.Computer()
- type MaterialInfo struct {
- Id int64 `json:"id"`
- Name string `json:"name"`
- Url string `json:"url"`
- Content string `json:"content"`
- Type string `json:"type"`
- CreatedAt int64 `json:"createdAt"`
- }
- materials := make([]*MaterialInfo, 0)
- query.Select("id, name, url, content, type, created_at").
- Order("sort ASC, id DESC").
- Offset(int(paging.Start)).
- Limit(int(paging.Size)).
- Scan(&materials)
- ctx.OK(gin.H{
- "list": materials,
- "paging": paging,
- })
- }
- // MaterialDetail 素材详情
- func (s *Server) MaterialDetail(c *gin.Context) {
- ctx := s.FromContext(c)
- db := s.DB()
- type Req struct {
- Id int64 `json:"id" form:"id" binding:"required"`
- }
- var req Req
- if err := c.ShouldBind(&req); err != nil {
- ctx.Fail("invalid_params")
- return
- }
- var material entity.DtMaterial
- if err := db.Where("id = ? AND status = ?", req.Id, 1).First(&material).Error; err != nil {
- ctx.Fail("material_not_found")
- return
- }
- ctx.OK(gin.H{
- "id": material.Id,
- "name": material.Name,
- "url": material.Url,
- "content": material.Content,
- "type": material.Type,
- "createdAt": material.CreatedAt,
- })
- }
- // MaterialLike 素材点赞
- func (s *Server) MaterialLike(c *gin.Context) {
- ctx := s.FromContext(c)
- db := s.DB()
- type Req struct {
- Id int64 `json:"id" form:"id" binding:"required"`
- }
- var req Req
- if err := c.ShouldBind(&req); err != nil {
- ctx.Fail("invalid_params")
- return
- }
- var material entity.DtMaterial
- if err := db.Where("id = ? AND status = ?", req.Id, 1).First(&material).Error; err != nil {
- ctx.Fail("material_not_found")
- return
- }
- ctx.OK(gin.H{
- "success": true,
- })
- }
|