From 61a10d29390848c9bf71e889d1c1d75ba8a94a55 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期三, 29 七月 2020 15:02:41 +0800
Subject: [PATCH] rm redis, use local cache

---
 service/userService.go |   62 ++++++++++++++++++++++---------
 1 files changed, 44 insertions(+), 18 deletions(-)

diff --git a/service/userService.go b/service/userService.go
index a3e643f..9ca0963 100644
--- a/service/userService.go
+++ b/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
 }
\ No newline at end of file

--
Gitblit v1.8.0