learnLog.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package api
  2. import (
  3. "copter-train/db/model"
  4. "copter-train/db/repo"
  5. "copter-train/log"
  6. "errors"
  7. "time"
  8. "github.com/gin-gonic/gin"
  9. "go.mongodb.org/mongo-driver/bson"
  10. )
  11. // 具体数据库中创建
  12. // 每个用户每个模块只有一条记录
  13. func SyncLearnTime(c *gin.Context, apictx *ApiSession) (interface{}, error) {
  14. db := c.Param("scope")
  15. if len(db) == 0 {
  16. return nil, errors.New("scope不能为空")
  17. }
  18. learnLog := &model.LearnLog{}
  19. err := c.ShouldBindJSON(learnLog)
  20. if err != nil {
  21. log.Error(err)
  22. return nil, err
  23. }
  24. if len(learnLog.Cid) < 1 {
  25. return nil, errors.New("模块id不能为空")
  26. }
  27. // 查询该学员的学习记录是否存在
  28. searchLearnLog := &model.LearnLog{}
  29. found, err := repo.RepoSeachDoc(apictx.CreateRepoCtx(), &repo.DocSearchOptions{
  30. Db: db,
  31. Query: repo.Map{"uid": apictx.User.ID, "cid": learnLog.Cid},
  32. }, searchLearnLog)
  33. if err != nil {
  34. return nil, err
  35. }
  36. if found {
  37. update := bson.M{"$inc": bson.M{"learnTime": 1}, "$set": bson.M{"updateTime": time.Now()}}
  38. res, err := repo.RepoUpdateSetDbDocProps(apictx.CreateRepoCtx(), db, repo.CollectionLearnLog, searchLearnLog.Id.Hex(), update)
  39. if err != nil {
  40. return nil, err
  41. }
  42. if res.ModifiedCount > 0 {
  43. return true, nil
  44. }
  45. return false, nil
  46. }
  47. // 没找到数据,创建
  48. learnLog.Uid = apictx.User.ID
  49. zero := 1
  50. learnLog.LearnTime = &zero
  51. learnLog.CreateTime = time.Now()
  52. learnLog.UpdateTime = time.Now()
  53. _, err = repo.RepoAddDbDoc(apictx.CreateRepoCtx(), db, repo.CollectionLearnLog, learnLog)
  54. if err != nil {
  55. log.Error(err)
  56. return false, nil
  57. }
  58. return true, nil
  59. }
  60. // 每分钟记录下学习时长
  61. // sync/time/:id/:scope
  62. // func SyncLearnTime(c *gin.Context, apictx *ApiSession) (interface{}, error) {
  63. // id := c.Param("id")
  64. // db := c.Param("scope")
  65. // objId, _ := primitive.ObjectIDFromHex(id)
  66. // if objId.IsZero() {
  67. // return nil, errors.New("id错误")
  68. // }
  69. // update := bson.M{"$inc": bson.M{"learnTime": 1}, "$set": bson.M{"updateTime": time.Now()}}
  70. // return repo.RepoUpdateSetDbDocProps(apictx.CreateRepoCtx(), db, repo.CollectionLearnLog, id, update)
  71. // }