learn.go 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package learn
  2. import (
  3. "errors"
  4. "strconv"
  5. "strings"
  6. "zhiyuan/models"
  7. "zhiyuan/pkg/app"
  8. "zhiyuan/pkg/db"
  9. "zhiyuan/pkg/utils"
  10. "zhiyuan/services/train/courses"
  11. )
  12. var Learn models.Learn
  13. func LearnCourses(courses_id int, adminID int) error {
  14. coursesInfo, err := courses.GetInfoByID(courses_id, nil, nil)
  15. if coursesInfo == nil {
  16. return errors.New("invalid id")
  17. }
  18. info, err := GetOne(map[string]interface{}{"course_id": coursesInfo.CourseId, "admin_id": adminID}, nil, nil)
  19. if info == nil {
  20. learnMap := map[string]interface{}{
  21. "`course_id`": coursesInfo.CourseId,
  22. "`admin_id`": adminID,
  23. "`courses_ids`": strconv.Itoa(courses_id),
  24. }
  25. _, err = db.InsertOne(Learn.TableName(), learnMap)
  26. return err
  27. }
  28. coursesSlice := strings.Split(info.CoursesIds, ",")
  29. for _, v := range coursesSlice {
  30. if v == strconv.Itoa(courses_id) {
  31. return nil
  32. }
  33. }
  34. learnMap := map[string]interface{}{
  35. "`courses_ids`": info.CoursesIds + "," + strconv.Itoa(courses_id),
  36. }
  37. _, err = db.Update(Learn.TableName(), map[string]interface{}{"id": info.ID}, learnMap)
  38. return err
  39. }
  40. func Count(where map[string]interface{}) (int64, error) {
  41. return db.Count(Learn.TableName(), where)
  42. }
  43. func CountRaw(where string, param map[string]interface{}) (int64, error) {
  44. query := "`zy_learn` WHERE " + where
  45. return db.CountRaw(query, param)
  46. }
  47. func GetList(where map[string]interface{}, fields []string, page app.Page, retVal interface{}) ([]*models.Learn, error) {
  48. if page.PageNum > 0 && page.PageSize > 0 {
  49. where["_limit"] = db.GetOffset(uint(page.PageNum), uint(page.PageSize))
  50. }
  51. return Learn.GetMulti(where, fields, retVal)
  52. }
  53. func GetLearnsRaw(where map[string]string, param map[string]interface{}, retVal interface{}) error {
  54. field := "SELECT `zy_learn`.* FROM `zy_learn` "
  55. return db.GetMultiRaw(field, where, param, retVal)
  56. }
  57. func GetOne(where map[string]interface{}, fields []string, retVal interface{}) (*models.Learn, error) {
  58. return Learn.GetOne(where, fields, retVal)
  59. }
  60. func GetLearnOne(where map[string]string, param map[string]interface{}, retVal interface{}) error {
  61. field := "SELECT `zy_learn`.* FROM `zy_learn` "
  62. where["_page_size"] = utils.ToStr(1)
  63. where["_page_num"] = utils.ToStr(1)
  64. return db.GetMultiRaw(field, where, param, retVal)
  65. }
  66. func GetLearnByID(id int, retVal interface{}) error {
  67. where := map[string]string{
  68. "where": "`zy_learn`.`id` = {{id}}",
  69. }
  70. param := map[string]interface{}{"id": id}
  71. return GetLearnOne(where, param, retVal)
  72. }
  73. func GetInfoByID(id int, fields []string, retVal interface{}) (*models.Learn, error) {
  74. return GetOne(map[string]interface{}{"id": id}, fields, retVal)
  75. }