// Package service // @Link https://github.com/bufanyun/hotgo // @Copyright Copyright (c) 2023 HotGo CLI // @Author Yl // @License https://github.com/bufanyun/hotgo/blob/master/LICENSE package service import ( "context" "hotgo/api/admin/mycourse" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gtime" "github.com/gogf/gf/v2/util/gconv" ) type sMyCourse struct{} func init() { service := &sMyCourse{} if err := gconv.Struct(service, &MyCourse); err != nil { g.Log().Fatal(context.TODO(), err) } } func MyCourse() *sMyCourse { return &sMyCourse{} } // List 获取我的课程列表(模拟数据) func (s *sMyCourse) List(ctx context.Context, userId uint64, req *mycourse.MyCourseListReq) (list []*mycourse.MyCourseListModel, totalCount int, err error) { // 模拟数据 - 根据截图内容 mockData := []*mycourse.MyCourseListModel{ { Id: 1, CourseId: 1, Title: "教育心理学的起源", Subtitle: "计算机二级考前直播", CoverImage: "/uploads/course/cover1.jpg", Instructor: "代万权", Subject: "史学", Description: "本课程紧跟风向,让每一位数据了解数据分析使用DeepSeek,结合办公自动化职业岗位标准,以实际工作任务为导向,强调课程内容的实用性和针对性,课程内容紧贴全国计算机等级考试,技能。", TotalEpisodes: 9, TotalLessons: 54, TotalDuration: "12小时43分钟", StudiedDuration: "10小时20分钟", StudyStatus: 1, StudyStatusText: "学习中", EnrollmentTime: gtime.New("2025-01-20 10:30:00"), }, { Id: 2, CourseId: 2, Title: "数据分析基础", Subtitle: "Python数据分析入门", CoverImage: "/uploads/course/cover2.jpg", Instructor: "张老师", Subject: "计算机", Description: "从零开始学习Python数据分析,掌握pandas、numpy等核心库的使用方法。", TotalEpisodes: 8, TotalLessons: 32, TotalDuration: "16小时", StudiedDuration: "16小时", StudyStatus: 2, StudyStatusText: "已完结", EnrollmentTime: gtime.New("2025-01-15 09:00:00"), }, } // 根据学习状态筛选 if req.StudyStatus > 0 { var filteredData []*mycourse.MyCourseListModel for _, item := range mockData { if item.StudyStatus == req.StudyStatus { filteredData = append(filteredData, item) } } mockData = filteredData } totalCount = len(mockData) // 分页处理 pageNum := req.Page pageSize := req.Size if pageNum <= 0 { pageNum = 1 } if pageSize <= 0 { pageSize = 10 } start := (pageNum - 1) * pageSize end := start + pageSize if start >= totalCount { list = []*mycourse.MyCourseListModel{} return } if end > totalCount { end = totalCount } list = mockData[start:end] return }