package learn import ( "errors" "strconv" "strings" "zhiyuan/models" "zhiyuan/pkg/app" "zhiyuan/pkg/db" "zhiyuan/pkg/utils" "zhiyuan/services/train/courses" ) var Learn models.Learn func LearnCourses(courses_id int, adminID int) error { coursesInfo, err := courses.GetInfoByID(courses_id, nil, nil) if coursesInfo == nil { return errors.New("invalid id") } info, err := GetOne(map[string]interface{}{"course_id": coursesInfo.CourseId, "admin_id": adminID}, nil, nil) if info == nil { learnMap := map[string]interface{}{ "`course_id`": coursesInfo.CourseId, "`admin_id`": adminID, "`courses_ids`": strconv.Itoa(courses_id), } _, err = db.InsertOne(Learn.TableName(), learnMap) return err } coursesSlice := strings.Split(info.CoursesIds, ",") for _, v := range coursesSlice { if v == strconv.Itoa(courses_id) { return nil } } learnMap := map[string]interface{}{ "`courses_ids`": info.CoursesIds + "," + strconv.Itoa(courses_id), } _, err = db.Update(Learn.TableName(), map[string]interface{}{"id": info.ID}, learnMap) return err } func Count(where map[string]interface{}) (int64, error) { return db.Count(Learn.TableName(), where) } func CountRaw(where string, param map[string]interface{}) (int64, error) { query := "`zy_learn` WHERE " + where return db.CountRaw(query, param) } func GetList(where map[string]interface{}, fields []string, page app.Page, retVal interface{}) ([]*models.Learn, error) { if page.PageNum > 0 && page.PageSize > 0 { where["_limit"] = db.GetOffset(uint(page.PageNum), uint(page.PageSize)) } return Learn.GetMulti(where, fields, retVal) } func GetLearnsRaw(where map[string]string, param map[string]interface{}, retVal interface{}) error { field := "SELECT `zy_learn`.* FROM `zy_learn` " return db.GetMultiRaw(field, where, param, retVal) } func GetOne(where map[string]interface{}, fields []string, retVal interface{}) (*models.Learn, error) { return Learn.GetOne(where, fields, retVal) } func GetLearnOne(where map[string]string, param map[string]interface{}, retVal interface{}) error { field := "SELECT `zy_learn`.* FROM `zy_learn` " where["_page_size"] = utils.ToStr(1) where["_page_num"] = utils.ToStr(1) return db.GetMultiRaw(field, where, param, retVal) } func GetLearnByID(id int, retVal interface{}) error { where := map[string]string{ "where": "`zy_learn`.`id` = {{id}}", } param := map[string]interface{}{"id": id} return GetLearnOne(where, param, retVal) } func GetInfoByID(id int, fields []string, retVal interface{}) (*models.Learn, error) { return GetOne(map[string]interface{}{"id": id}, fields, retVal) }