package user import ( "go_dreamfactory/comm" "go_dreamfactory/lego/core" "go_dreamfactory/modules" "go_dreamfactory/pb" "go_dreamfactory/utils" "time" "go.mongodb.org/mongo-driver/mongo" ) // 签到 type ModelSign struct { modules.MCompModel module *User } func (this *ModelSign) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { this.TableName = comm.TableSign err = this.MCompModel.Init(service, module, comp, options) this.module = module.(*User) return } func (this *ModelSign) GetUserSign(uid string) (result *pb.DBSign, err error) { result = &pb.DBSign{} if err = this.module.modelSign.Get(uid, result); err != nil && mongo.ErrNoDocuments != err { return } err = nil return result, err } //修改用户签到数据 func (this *ModelSign) ChangeUserSign(uid string, value map[string]interface{}) (err error) { if len(value) == 0 { return nil } return this.module.modelSign.Change(uid, value) } // 累计登录天数 func (this *ModelSign) updateSignData(uid string, sign *pb.DBSign) (err error) { if !utils.IsToday(sign.SignTime) { sign.SignCount += 1 count := sign.SignCount update := map[string]interface{}{ "signCount": count, "signTime": time.Now().UTC(), } this.ChangeUserSign(uid, update) } return } // 重置签到数据 func (this *ModelSign) resetSignData(uid string, sign *pb.DBSign) (err error) { start, _ := utils.GetMonthStartEnd() if sign.RTime < start { // 重置 sign.RTime = time.Now().Unix() sign.SignTime = sign.RTime sign.SignCount = 1 } if this.module.configure.GetSignResetConf(sign.Cid+1) != -1 { // 获取当前的组id sign.Cid += 1 } return }