1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- package survey_token
- import (
- "fmt"
- "surveyService/cache"
- "surveyService/response"
- "surveyService/util"
- "surveyService/validators"
- "time"
- jsoniter "github.com/json-iterator/go"
- "gogs.uu.mdfitnesscao.com/cuiguohai/sdk"
- )
- var json = jsoniter.ConfigCompatibleWithStandardLibrary
- type Mechanism struct {
- *sdk.AuthMechanism
- }
- func InitMechanism(authMechanism *sdk.AuthMechanism) *Mechanism {
- return &Mechanism{authMechanism}
- }
- // 生成一个临时凭证
- func (m *Mechanism) GenerateSurveyToken(surveyId, surveyResultId, extra string, expired int64) string {
- var tokenData = &validators.SurveyToken{
- Extra: extra,
- SurveyId: surveyId,
- MechanismId: m.Mechanism.ID,
- SurveyResultId: surveyResultId,
- }
- token := util.RandString(12)
- cacheKey := fmt.Sprintf("survey-result:token:%s", token)
- expiredAt := time.Duration(expired) * time.Second
- // 保存到redis
- cacheErr := cache.Instance().Put(cacheKey, tokenData, expiredAt)
- if cacheErr != nil {
- return ""
- }
- return token
- }
- // 重新修改凭证里存储的数据
- func RenewSurveyToken(token string, renewSurveyToken *validators.SurveyToken, expired int64) *response.ErrCode {
- tokenData, getErr := GetSurveyTokenData(token)
- if getErr != nil {
- return getErr
- }
- var renewTokenData = &validators.SurveyToken{
- Extra: tokenData.Extra,
- SurveyId: tokenData.SurveyId,
- MechanismId: tokenData.MechanismId,
- SurveyResultId: renewSurveyToken.SurveyResultId,
- }
- cacheKey := fmt.Sprintf("survey-result:token:%s", token)
- expiredAt := time.Duration(expired) * time.Second
- // 保存到redis
- cacheErr := cache.Instance().Put(cacheKey, renewTokenData, expiredAt)
- if cacheErr != nil {
- return &response.ErrCode{
- Msg: "数据更新失败",
- Code: response.ERROR,
- }
- }
- return nil
- }
- // 获取临时凭证的数据
- func GetSurveyTokenData(token string) (*validators.SurveyToken, *response.ErrCode) {
- cacheKey := fmt.Sprintf("survey-result:token:%s", token)
- var tokenData *validators.SurveyToken
- tokenDataStr, cacheErr := cache.Instance().Get(cacheKey)
- if cacheErr != nil {
- return nil, &response.ErrCode{
- Msg: "无效的凭证信息",
- Code: response.ERROR,
- }
- }
- json.UnmarshalFromString(tokenDataStr, &tokenData)
- return tokenData, nil
- }
- // 移除临时凭证
- func RemoveSurveyToken(token string) {
- cacheKey := fmt.Sprintf("survey-result:token:%s", token)
- cache.Instance().Delete(cacheKey)
- }
|