| | |
| | | package service |
| | | |
| | | import ( |
| | | "car-service/cache" |
| | | "car-service/extend/util" |
| | | "car-service/models" |
| | | "car-service/vo" |
| | | "errors" |
| | | "fmt" |
| | | "github.com/aliyun/alibaba-cloud-sdk-go/services/dysmsapi" |
| | | "github.com/gomodule/redigo/redis" |
| | | "github.com/satori/go.uuid" |
| | | "sync" |
| | | "time" |
| | | ) |
| | | |
| | | type UserService struct { |
| | |
| | | return false |
| | | } |
| | | |
| | | type CodCache struct { |
| | | phoneNum string |
| | | cod string |
| | | ex time.Time |
| | | } |
| | | var codMap = make(map[string]CodCache) |
| | | var codLock sync.RWMutex |
| | | func add2Cache(phoneNum string, code string) { |
| | | //写到redis缓存中 |
| | | c := cache.Get() |
| | | defer c.Close() |
| | | |
| | | reply, err := c.Do("SET", phoneNum, code, "EX", 5 * 60)//超时五分钟 |
| | | if err != nil { |
| | | fmt.Println("写入redis失败") |
| | | } else { |
| | | fmt.Println("写入redis成功,reply:", reply) |
| | | //c := cache.Get() |
| | | //defer c.Close() |
| | | // |
| | | //reply, err := c.Do("SET", phoneNum, code, "EX", 5 * 60)//超时五分钟 |
| | | //if err != nil { |
| | | // fmt.Println("写入redis失败") |
| | | //} else { |
| | | // fmt.Println("写入redis成功,reply:", reply) |
| | | //} |
| | | codLock.Lock() |
| | | defer codLock.Unlock() |
| | | expireTime := time.Now().Add(time.Minute * 5) |
| | | codMap[phoneNum] = CodCache{ |
| | | phoneNum:phoneNum, |
| | | cod: code, |
| | | ex:expireTime, |
| | | } |
| | | } |
| | | func existCode(phoneNum string) (bool,string) { |
| | | c := cache.Get() |
| | | defer c.Close() |
| | | |
| | | r, err := redis.String(c.Do("GET", phoneNum)) |
| | | if err != nil { |
| | | fmt.Println("existCode err:", err) |
| | | return false,"" |
| | | //c := cache.Get() |
| | | //defer c.Close() |
| | | // |
| | | //r, err := redis.String(c.Do("GET", phoneNum)) |
| | | //if err != nil { |
| | | // fmt.Println("existCode err:", err) |
| | | // return false,"" |
| | | //} |
| | | //return true,r |
| | | codLock.Lock() |
| | | defer codLock.Unlock() |
| | | if cache,exist := codMap[phoneNum];exist { |
| | | if cache.ex.Before(time.Now()) {//已过期 |
| | | return false, "" |
| | | } else { |
| | | return true, cache.cod |
| | | } |
| | | } else { |
| | | return false, "" |
| | | } |
| | | return true,r |
| | | } |