123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package sms
- import (
- "eta/eta_mini_ht_api/common/component/cache"
- logger "eta/eta_mini_ht_api/common/component/log"
- "eta/eta_mini_ht_api/common/utils/redis"
- "eta/eta_mini_ht_api/models/sms"
- )
- const (
- secondToMinute = 60
- )
- var (
- redisCache *cache.RedisCache
- )
- type CodeDTO struct {
- Mobile string
- Code string
- ExpireMinute int
- }
- func rd() *cache.RedisCache {
- if redisCache == nil {
- redisCache = cache.GetInstance()
- }
- return redisCache
- }
- func TryExpireCode(codeDTO CodeDTO) (err error) {
- verificationRecord := convertCodeDTO(codeDTO)
- verificationRecord.Status = sms.StatusExpired
- return sms.UpdateVerificationRecordByCode(codeDTO.Mobile, codeDTO.Code, verificationRecord)
- }
- func TryVerifiedCode(codeDTO CodeDTO) (err error) {
- verificationRecord := convertCodeDTO(codeDTO)
- verificationRecord.Status = sms.StatusVerified
- return sms.UpdateVerificationRecordByCode(codeDTO.Mobile, codeDTO.Code, verificationRecord)
- }
- func VerifiedCodeTask() (err error) {
- return sms.ExpiredCodesByTask()
- }
- func SendSMSCode(codeDTO CodeDTO) (smid int, err error) {
- verificationRecord := convertCodeDTO(codeDTO)
- //写库
- smid, err = sms.InsertVerificationRecord(verificationRecord)
- if err != nil {
- return
- }
- //设置redis
- err = rd().SetString(redis.GenerateSmsKey(codeDTO.Mobile), codeDTO.Code, codeDTO.ExpireMinute*secondToMinute)
- if err != nil {
- logger.Error("redis验证记录操作失败:", err)
- return
- }
- return
- }
- func convertCodeDTO(codeDTO CodeDTO) sms.VerificationRecord {
- return sms.VerificationRecord{
- Mobile: codeDTO.Mobile,
- Code: codeDTO.Code,
- ExpiredDuration: codeDTO.ExpireMinute,
- Status: sms.StatusPending,
- }
- }
|