package questionnreser import ( "time" "91porn-server/common/stderr" "91porn-server/models/v/exchcodemod" "91porn-server/models/v/idmod" "91porn-server/models/v/questionnremod" "91porn-server/models/v/usermod" "91porn-server/web/service/exchcodeser" ) var QuestionnaireGiftGold = []int{50, 100, 200} var BatchNum = "YS-dzwj" var Remark = "调查问卷活动奖励兑换码" var InvalidTime = time.Hour * 24 * 3 // 生成活动兑换码 reward 奖励天数 count生成兑换码数 func makeExchangeCode(reward int, count int) ([]string, error) { now := time.Now() exchangeCodes := make([]exchcodemod.ExchCode, count) codes := make([]string, count) for i := 0; i < count; i++ { var exchangeCode = exchcodeser.ProduceExchangeCode(0) codes[i] = exchangeCode exchangeCodes[i] = exchcodemod.ExchCode{ BatchNum: BatchNum, App: exchcodemod.AppTypeYSVideo, Code: exchangeCode, Authority: exchcodemod.AuthorityShortVideoVip, Status: exchcodemod.StatusUnused, Reward: reward, Operator: exchcodemod.SystemOperator, Remark: Remark, EffectiveAt: now, InvalidAt: now.Add(InvalidTime), CreatedAt: now, UpdatedAt: now, } } return codes, exchcodemod.BulkWrite(exchangeCodes) } func Submit(q questionnremod.Questionnaire) (code stderr.Code, res questionnremod.SubmitRes) { code = stderr.Success qid, err := idmod.GetQuestionnaireId() if err != nil { code = stderr.ErrNetWorkBusy return } q.QuestionId = qid u, err := usermod.FindUserByUID(q.UID) if err != nil { code = stderr.ErrNetWorkBusy return } if u == nil { code = stderr.UserIsNotExists return } //不是vip||vip过期||vip小于试卷允许最小等级||vip越界 if u.VipLevel < 1 || u.VipExpireDate.Before(time.Now()) || u.VipLevel < q.Level || u.VipLevel > 3 { code = stderr.ErrAccessForbid return } q.Gold = QuestionnaireGiftGold[q.Level-1] switch q.Level { case 1: q.Codes, _ = makeExchangeCode(7, 1) case 2: //30天会员 q.Codes, _ = makeExchangeCode(30, 1) case 3: //30天会员*2 q.Codes, _ = makeExchangeCode(30, 2) default: } if err = questionnremod.Insert(q); err != nil { code = stderr.ErrNetWorkBusy return } res.Gold = q.Gold res.Codes = q.Codes res.QuestionId = q.QuestionnaireId return } func GetByUID(uid uint64) (int, []questionnremod.Questionnaire, error) { vipLevel := 0 u, _ := usermod.FindUserByUID(uid) if u != nil && u.VipExpireDate.After(time.Now()) { vipLevel = u.VipLevel } data, err := questionnremod.GetByUID(uid) return vipLevel, data, err }