Files
huangguo_server/app/service/questionnreser/questionnreser.go
T
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

99 lines
2.5 KiB
Go

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
}