liuxiaolu 6 år sedan
förälder
incheckning
cf6b1d7a2c
1 ändrade filer med 98 tillägg och 17 borttagningar
  1. 98 17
      src/jfw/front/pchelper.go

+ 98 - 17
src/jfw/front/pchelper.go

@@ -28,12 +28,17 @@ func (l *Login) Login() error {
 	defer util.Catch()
 	defer util.Catch()
 	//登录页面
 	//登录页面
 	if l.Method() == "GET" {
 	if l.Method() == "GET" {
-		return l.Render("/pcHelper/login.html", nil)
+		return l.Render("/pchelper/login.html", nil)
+	}
+	mac := l.GetString("mac")
+	if mac == "" {
+		return l.Render("/pchelper/login.html", nil)
 	}
 	}
 	reToken := ""
 	reToken := ""
+	reOpenId := ""
+	reNickname := ""
 	status := func() int {
 	status := func() int {
 		reqType := l.GetString("reqType")
 		reqType := l.GetString("reqType")
-		mac := l.GetString("mac")
 		if reqType == "phoneLogin" {
 		if reqType == "phoneLogin" {
 			phone := l.GetString("phone")
 			phone := l.GetString("phone")
 			password := l.GetString("password")
 			password := l.GetString("password")
@@ -49,22 +54,18 @@ func (l *Login) Login() error {
 			user, ok := mongodb.FindOne("user", query)
 			user, ok := mongodb.FindOne("user", query)
 			//登录成功
 			//登录成功
 			if ok && user != nil && len(*user) > 0 {
 			if ok && user != nil && len(*user) > 0 {
+				if (*user)["s_m_openid"] != nil {
+					reOpenId = (*user)["s_m_openid"].(string)
+				}
+				if (*user)["s_nickname"] != nil {
+					reNickname = (*user)["s_nickname"].(string)
+				}else if (*user)["s_phone"] != nil {
+					reNickname = (*user)["s_phone"].(string)
+				}
 				reToken = getUToken(mac, phone)
 				reToken = getUToken(mac, phone)
 				return 1
 				return 1
 			}
 			}
 			return -1 //用户名或密码不正确
 			return -1 //用户名或密码不正确
-		} else if reqType == "sendIdentCode" {
-			phone := jyutil.CheckSendMsg(l.GetString("token"))
-			//手机号验证不通过
-
-			if phone == "" {
-				return -2
-			} else if !phoneReg.MatchString(phone) {
-				return -1
-			} else if SendIdentCode(phone, l.Session()) {
-				return 1
-			}
-			return 0
 		} else if reqType == "identCodeLogin" {
 		} else if reqType == "identCodeLogin" {
 			phone, _ := l.GetSession("identCodeKey").(string)
 			phone, _ := l.GetSession("identCodeKey").(string)
 			if phone == "" || l.GetSession("identCodeValue") == nil || l.GetString("identCode") != l.GetSession("identCodeValue") { //验证码不正确
 			if phone == "" || l.GetSession("identCodeValue") == nil || l.GetString("identCode") != l.GetSession("identCodeValue") { //验证码不正确
@@ -82,22 +83,69 @@ func (l *Login) Login() error {
 					if user == nil || len(*user) == 0 {
 					if user == nil || len(*user) == 0 {
 						return -4 //用户不存在
 						return -4 //用户不存在
 					} else {
 					} else {
+						if (*user)["s_m_openid"] != nil {
+							reOpenId = (*user)["s_m_openid"].(string)
+						}
+						if (*user)["s_nickname"] != nil {
+							reNickname = (*user)["s_nickname"].(string)
+						}else if (*user)["s_phone"] != nil {
+							reNickname = (*user)["s_phone"].(string)
+						}
 						reToken = getUToken(mac, phone)
 						reToken = getUToken(mac, phone)
 						return 1
 						return 1
 					}
 					}
 				}
 				}
 			}
 			}
+		}else if reqType == "sendIdentCode" {
+			//phone := jyutil.CheckSendMsg(l.GetString("token"))
+			phone := l.GetString("phone")
+			//手机号验证不通过
+
+			if phone == "" {
+				return -2
+			} else if !phoneReg.MatchString(phone) {
+				return -1
+			} else if SendIdentCode(phone, l.Session()) {
+				return 1
+			}
+			return 0
+		}else if reqType == "autoLogin" {
+			token := l.GetString("token")
+			deMac,phone := decryptUToken(token)
+			if phone != "" && mac == deMac {
+				query := map[string]interface{}{
+					"i_appid":    2,
+					"s_m_openid": phone,
+					"i_type":     1,
+				}
+				user, ok := mongodb.FindOne("user", query)
+				if ok && user != nil && len(*user) > 0 {
+					if (*user)["s_m_openid"] != nil {
+						reOpenId = (*user)["s_m_openid"].(string)
+					}
+					if (*user)["s_nickname"] != nil {
+						reNickname = (*user)["s_nickname"].(string)
+					}else if (*user)["s_phone"] != nil {
+						reNickname = (*user)["s_phone"].(string)
+					}
+					reToken = getUToken(mac, phone)
+					return 1
+				}
+			} else {
+				return -1
+			}
 		}
 		}
 		return 0
 		return 0
 	}()
 	}()
 
 
 	result := map[string]interface{}{
 	result := map[string]interface{}{
 		"status": status,
 		"status": status,
-		"openid": util.ObjToString(l.GetSession("s_m_openid")),
 	}
 	}
 	if status == 1 {
 	if status == 1 {
 		result["token"] = reToken
 		result["token"] = reToken
 	}
 	}
+	result["openid"] = reOpenId
+	result["nickname"] = reNickname
 	l.ServeJson(result)
 	l.ServeJson(result)
 	return nil
 	return nil
 }
 }
@@ -105,7 +153,7 @@ func (l *Login) Login() error {
 func (l *Login) GetSubscribeToken() error {
 func (l *Login) GetSubscribeToken() error {
 	mac := l.GetString("mac")
 	mac := l.GetString("mac")
 	token := l.GetString("token")
 	token := l.GetString("token")
-	phone, deMac := decryptUToken(token)
+	deMac,phone := decryptUToken(token)
 	reToken := ""
 	reToken := ""
 	if phone != "" && mac == deMac {
 	if phone != "" && mac == deMac {
 		reToken = getSToken(token)
 		reToken = getSToken(token)
@@ -176,7 +224,39 @@ func deleteIdentSession_(session *httpsession.Session) {
 
 
 //订阅记录token
 //订阅记录token
 func getSToken(token string) string {
 func getSToken(token string) string {
-	return se.EncodeString(token)
+	v, err := jyutil.AC.Encrypt(token)
+	if err != nil {
+		log.Println("Encrypt error", err)
+		return ""
+	}
+	return v
+}
+
+func decryptSToken(token string) (string,string) {
+	if token == "" {
+		return "", ""
+	}
+	log.Println("UToken解析前token", token)
+	token, e := url.QueryUnescape(token)
+	if e != nil {
+		log.Println("UToken QueryUnescape error", e)
+	}
+	v, err := jyutil.AC.Decrypt(token)
+	if err != nil {
+		log.Println("UToken Decrypt error", err)
+		return "", ""
+	}
+	log.Println("UToken解析后token", v)
+	vs := strings.Split(v, "_")
+	if len(vs) != 4 {
+		log.Println("UToken error", vs)
+		return "", ""
+	}
+	if vs[3] != util.GetMd5String(fmt.Sprintf("%s&%s&%s", vs[0], vs[1], vs[2])) {
+		log.Println("UToken mx error", vs)
+		return "", ""
+	}
+	return vs[0], vs[1]
 }
 }
 
 
 //登录成功后的token
 //登录成功后的token
@@ -197,6 +277,7 @@ func getUToken(params ...string) string {
 	return ""
 	return ""
 }
 }
 
 
+//返回mac phone
 func decryptUToken(token string) (string, string) {
 func decryptUToken(token string) (string, string) {
 	if token == "" {
 	if token == "" {
 		return "", ""
 		return "", ""