12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package api
- import (
- "copter-train/db/model"
- "copter-train/db/repo"
- "copter-train/log"
- "errors"
- "time"
- "github.com/gin-gonic/gin"
- "go.mongodb.org/mongo-driver/bson"
- )
- // 具体数据库中创建
- // 每个用户每个模块只有一条记录
- func SyncLearnTime(c *gin.Context, apictx *ApiSession) (interface{}, error) {
- db := c.Param("scope")
- if len(db) == 0 {
- return nil, errors.New("scope不能为空")
- }
- learnLog := &model.LearnLog{}
- err := c.ShouldBindJSON(learnLog)
- if err != nil {
- log.Error(err)
- return nil, err
- }
- if len(learnLog.Cid) < 1 {
- return nil, errors.New("模块id不能为空")
- }
- // 查询该学员的学习记录是否存在
- searchLearnLog := &model.LearnLog{}
- found, err := repo.RepoSeachDoc(apictx.CreateRepoCtx(), &repo.DocSearchOptions{
- Db: db,
- Query: repo.Map{"uid": apictx.User.ID, "cid": learnLog.Cid},
- }, searchLearnLog)
- if err != nil {
- return nil, err
- }
- if found {
- update := bson.M{"$inc": bson.M{"learnTime": 1}, "$set": bson.M{"updateTime": time.Now()}}
- res, err := repo.RepoUpdateSetDbDocProps(apictx.CreateRepoCtx(), db, repo.CollectionLearnLog, searchLearnLog.Id.Hex(), update)
- if err != nil {
- return nil, err
- }
- if res.ModifiedCount > 0 {
- return true, nil
- }
- return false, nil
- }
- // 没找到数据,创建
- learnLog.Uid = apictx.User.ID
- zero := 1
- learnLog.LearnTime = &zero
- learnLog.CreateTime = time.Now()
- learnLog.UpdateTime = time.Now()
- _, err = repo.RepoAddDbDoc(apictx.CreateRepoCtx(), db, repo.CollectionLearnLog, learnLog)
- if err != nil {
- log.Error(err)
- return false, nil
- }
- return true, nil
- }
- // 每分钟记录下学习时长
- // sync/time/:id/:scope
- // func SyncLearnTime(c *gin.Context, apictx *ApiSession) (interface{}, error) {
- // id := c.Param("id")
- // db := c.Param("scope")
- // objId, _ := primitive.ObjectIDFromHex(id)
- // if objId.IsZero() {
- // return nil, errors.New("id错误")
- // }
- // update := bson.M{"$inc": bson.M{"learnTime": 1}, "$set": bson.M{"updateTime": time.Now()}}
- // return repo.RepoUpdateSetDbDocProps(apictx.CreateRepoCtx(), db, repo.CollectionLearnLog, id, update)
- // }
|