@@ -0,0 +1,98 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user