package collection import ( "errors" "fmt" "hongze/hongze_yb/models/tables/rddp/report" "hongze/hongze_yb/models/tables/rddp/report_chapter" "hongze/hongze_yb/models/tables/yb_community_video" "hongze/hongze_yb/models/tables/yb_road_video" "hongze/hongze_yb/models/tables/yb_user_collection" "time" ) // 收藏类型 const ( CollectionTypeReport = iota + 1 // 研报 CollectionTypeVideo // 视频社区 CollectionTypeRoadVideo // 微路演视频 ) // AddCollection 加入收藏 func AddCollection(userId, collectionType, primaryId, extendId, sourceAgent int) (err error) { title := "" nowTime := time.Now().Local() publishTime := nowTime // 收藏类型:1-研报; 2-视频社区; 3-微路演视频 switch collectionType { case CollectionTypeReport: // 晨周报章节 if extendId > 0 { chapter, e := report_chapter.GetItemById(extendId) if e != nil { err = errors.New("获取章节失败, Err: " + e.Error()) return } title = chapter.Title publishTime = chapter.PublishTime break } rp, e := report.GetPublishByReportId(primaryId) if e != nil { err = errors.New("获取报告失败, Err: " + e.Error()) return } title = rp.Title publishTime = rp.PublishTime case CollectionTypeVideo: video, e := yb_community_video.GetItemById(primaryId) if e != nil { err = errors.New("获取视频失败, Err: " + e.Error()) return } title = video.Title publishTime = video.PublishTime case CollectionTypeRoadVideo: roadVideo, e := yb_road_video.GetItemById(primaryId) if e != nil { err = errors.New("获取路演视频失败, Err: " + e.Error()) return } title = roadVideo.Title publishTime = roadVideo.PublishTime default: err = errors.New(fmt.Sprintf("收藏类型有误, 当前收藏类型")) return } item := &yb_user_collection.YbUserCollection{ CollectionType: collectionType, UserID: userId, PrimaryID: primaryId, ExtendID: extendId, State: 1, SourceAgent: sourceAgent, Title: title, PublishTime: publishTime, CreateTime: nowTime, ModifyTime: nowTime, } if e := item.Create(); e != nil { err = errors.New("新增收藏失败, Err: " + e.Error()) return } return } // CancelCollection 取消收藏 func CancelCollection(userId, collectionId int) (err error) { item, e := yb_user_collection.GetItemById(collectionId) if e != nil { err = errors.New("获取收藏失败, Err: " + e.Error()) return } if item.CollectionID <= 0 { err = errors.New("收藏信息有误") return } if item.State != 1 { err = errors.New("收藏状态有误") return } if item.UserID != userId { err = errors.New(fmt.Sprintf("收藏人信息有误, 操作人ID: %d, 被操作人ID: %d", userId, item.UserID)) return } updateCols := []string{"State", "ModifyTime"} item.State = 0 item.ModifyTime = time.Now().Local() if e = item.Update(updateCols); e != nil { err = errors.New("更新收藏失败, Err: " + e.Error()) return } return } // GetCollectionList 收藏列表 // @Param from_type query int false "来源类型:0-全部; 1-研报; 2-线上路演; 3-视频社区" // @Param keywords query string false "搜索关键词" // @Param curr_page query int false "当前页码" // @Param page_size query int false "每页数量" func GetCollectionList(fromType, currPage, pageSize int, keywords string) (total int, err error) { if fromType <= 0 { fromType = 0 } // TODO:查询收藏列表 var cond string var pars []interface{} if fromType > 0 { cond += ` AND collection_type = ?` pars = append(pars, fromType) } if keywords != "" { keywords = "%" + keywords + "%" cond += ` AND title LIKE ?` pars = append(pars, keywords) } collections, e := yb_user_collection.GetPageListByCondition(cond, pars, currPage, pageSize) if e != nil { err = errors.New("获取收藏列表失败, Err: " + e.Error()) return } // TODO:遍历收藏列表取出各类型的ID reportIdArr := make([]int, 0) chapterIdArr := make([]int, 0) videoIdArr := make([]int, 0) roadVideoIdArr := make([]int, 0) for i := range collections { switch collections[i].CollectionType { case CollectionTypeReport: if collections[i].ExtendID > 0 { chapterIdArr = append(chapterIdArr, collections[i].ExtendID) break } reportIdArr = append(reportIdArr, collections[i].PrimaryID) case CollectionTypeVideo: videoIdArr = append(videoIdArr, collections[i].PrimaryID) case CollectionTypeRoadVideo: roadVideoIdArr = append(roadVideoIdArr, collections[i].PrimaryID) } } // TODO:各类型ID大于0则进行相应的查询 // TODO:根据收藏类型组合list return }