liuxiaolong
2020-07-29 61a10d29390848c9bf71e889d1c1d75ba8a94a55
service/userService.go
@@ -1,15 +1,15 @@
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 {
@@ -135,26 +135,52 @@
   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
}