wangchuanjin 2 anos atrás
pai
commit
a246df58c3
3 arquivos alterados com 156 adições e 55 exclusões
  1. 109 0
      compatible/compatible.go
  2. 46 0
      compatible/compatible_test.go
  3. 1 55
      public/public.go

+ 109 - 0
compatible/compatible.go

@@ -0,0 +1,109 @@
+package compatible
+
+import (
+	util "app.yhyue.com/moapp/jybase/common"
+	. "app.yhyue.com/moapp/jybase/mongodb"
+	"app.yhyue.com/moapp/jybase/mysql"
+)
+
+type compatible struct {
+	mgo                    *MongodbSim
+	baseService, mainMysql *mysql.Mysql
+}
+
+func NewCompatible(mgo *MongodbSim, baseService, mainMysql *mysql.Mysql) *compatible {
+	return &compatible{
+		mgo:         mgo,
+		baseService: baseService,
+		mainMysql:   mainMysql,
+	}
+}
+
+//
+func (c *compatible) GetCompatibleUser(id string, fd interface{}) *map[string]interface{} {
+	field := ObjToOth(fd)
+	user := map[string]interface{}{}
+	if field == nil || len(*field) == 0 {
+		return &user
+	}
+	(*field)["_id"] = 0
+	if IsObjectIdHex(id) {
+		temp, ok := c.mgo.FindById("user", id, field)
+		if ok && temp != nil && len(*temp) > 0 {
+			user = *temp
+		}
+	} else {
+		list := c.baseService.SelectBySql(`select a.ent_id,b.phone,a.user_id from base_position a inner join base_user b on (a.id=? and a.user_id=b.id)`, util.IntAll(id))
+		if list == nil || len(*list) == 0 {
+			return &user
+		}
+		phone := util.ObjToString((*list)[0]["phone"])
+		entId := util.IntAll((*list)[0]["ent_id"])
+		if baseUserId := util.IntAll((*list)[0]["user_id"]); baseUserId > 0 {
+			ufd := map[string]interface{}{}
+			for _, k := range []string{"s_m_openid", "s_phone", "s_m_phone", "s_unionid", "s_headimage", "s_headimageurl", "s_nickname", "l_registedate", "s_appversion", "i_ispush", "s_jyname"} {
+				if v, ok := (*field)[k]; ok {
+					ufd[k] = v
+				}
+			}
+			if len(ufd) > 0 {
+				ufd["_id"] = 0
+				data, ok := c.mgo.FindOneByField("user", map[string]interface{}{"base_user_id": baseUserId}, ufd)
+				if ok && data != nil && len(*data) > 0 {
+					for k, v := range *data {
+						user[k] = v
+					}
+				}
+			}
+		}
+		entUsers := c.mainMysql.SelectBySql(`select id from entniche_user where phone=? and ent_id=?`, phone, entId)
+		if entUsers != nil && len(*entUsers) > 0 {
+			entUserId := util.IntAll((*entUsers)[0]["id"])
+			if (*field)["o_entniche"] != nil || (*field)["o_vipjy"] != nil || (*field)["o_member_jy"] != nil || (*field)["o_jy"] != nil {
+				entniche_rule, ok := c.mgo.Find("entniche_rule", map[string]interface{}{
+					"i_userid": entUserId,
+				}, nil, `{"_id":0,"o_entniche":1,"i_type":1}`, false, -1, -1)
+				if ok && entniche_rule != nil && len(*entniche_rule) > 0 {
+					for _, v := range *entniche_rule {
+						i_type := util.IntAll(v["i_type"])
+						if i_type == 0 {
+							if (*field)["o_entniche"] != nil {
+								user["o_entniche"] = v["o_entniche"]
+							}
+						} else if i_type == 1 {
+							if (*field)["o_vipjy"] != nil {
+								user["o_vipjy"] = v["o_entniche"]
+							}
+							if (*field)["o_member_jy"] != nil {
+								user["o_member_jy"] = v["o_entniche"]
+							}
+						} else if i_type == 2 {
+							if (*field)["o_jy"] != nil {
+								user["o_jy"] = v["o_entniche"]
+							}
+						}
+					}
+				}
+			}
+			delete((*field), "o_jy")
+			delete((*field), "o_vipjy")
+			delete((*field), "o_member_jy")
+			delete((*field), "o_entniche")
+			if len((*field)) > 0 {
+				ent_user, ok := c.mgo.FindOneByField("ent_user", map[string]interface{}{
+					"i_userid": entUserId,
+				}, field)
+				if ok && ent_user != nil && len(*ent_user) > 0 {
+					for k, v := range *ent_user {
+						user[k] = v
+					}
+				}
+			}
+		}
+	}
+	return &user
+}
+
+//
+func (c *compatible) UpdateCompatibleUser() {
+}

+ 46 - 0
compatible/compatible_test.go

@@ -0,0 +1,46 @@
+package compatible
+
+import (
+	"log"
+	"testing"
+
+	. "app.yhyue.com/moapp/jybase/mongodb"
+	. "app.yhyue.com/moapp/jybase/mysql"
+)
+
+var (
+	mgo         *MongodbSim
+	baseService *Mysql
+	mainMysql   *Mysql
+)
+
+func init() {
+	mgo = &MongodbSim{
+		MongodbAddr: "192.168.3.206:27080",
+		Size:        2,
+		DbName:      "qfw",
+	}
+	mgo.InitPool()
+	mainMysql = &Mysql{
+		Address:      "192.168.3.11:3366",
+		UserName:     "root",
+		PassWord:     "Topnet123",
+		DBName:       "jianyu",
+		MaxOpenConns: 2,
+		MaxIdleConns: 2,
+	}
+	mainMysql.Init()
+	baseService = &Mysql{
+		Address:      "192.168.3.217:4000",
+		UserName:     "root",
+		PassWord:     "=PDT49#80Z!RVv52_z",
+		DBName:       "base_service",
+		MaxOpenConns: 2,
+		MaxIdleConns: 2,
+	}
+	baseService.Init()
+}
+func TestGetCompatibleUser(t *testing.T) {
+	c := NewCompatible(mgo, baseService, mainMysql)
+	log.Println(c.GetCompatibleUser("5d6378301c298a5aac7b5402", `{"s_phone":1,"i_vip_status":1,"i_member_status":1,"o_vipjy":1,"o_member_jy":1}`))
+}

+ 1 - 55
public/public.go

@@ -12,6 +12,7 @@ import (
 	. "app.yhyue.com/moapp/jybase/encrypt"
 	elastic "app.yhyue.com/moapp/jybase/esv1"
 	. "app.yhyue.com/moapp/jybase/mongodb"
+	"app.yhyue.com/moapp/jybase/mysql"
 	"app.yhyue.com/moapp/jybase/redis"
 	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
 )
@@ -277,58 +278,3 @@ func isEmail(value string) bool {
 	var emailPattern = regexp.MustCompile("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$")
 	return emailPattern.MatchString(value)
 }
-
-func GetCompatibleUser(mgo *MongodbSim, sessVal map[string]interface{}, field map[string]int) *map[string]interface{} {
-	user := map[string]interface{}{}
-	if field == nil || len(field) == 0 {
-		return &user
-	}
-	field["_id"] = 0
-	if util.IntAll(sessVal["positionType"]) == 0 {
-		temp, ok := mgo.FindById("user", util.ObjToString(sessVal["userId"]), field)
-		if ok && temp != nil && len(*temp) > 0 {
-			user = *temp
-		}
-	} else {
-		entUserId := util.IntAll(sessVal["entUserId"])
-		if field["o_entniche"] > 0 || field["o_vipjy"] > 0 || field["o_member_jy"] > 0 || field["o_jy"] > 0 {
-			entniche_rule, ok := mgo.Find("entniche_rule", map[string]interface{}{
-				"i_userid": entUserId,
-			}, nil, `{"o_entniche":1}`, false, -1, -1)
-			if ok && entniche_rule != nil && len(*entniche_rule) > 0 {
-				for _, v := range *entniche_rule {
-					i_type := util.IntAll(v["i_type"])
-					if i_type == 0 {
-						if field["o_entniche"] > 0 {
-							user["o_entniche"] = v["o_entniche"]
-						}
-					} else if i_type == 1 {
-						if field["o_vipjy"] > 0 {
-							user["o_vipjy"] = v["o_entniche"]
-						}
-						if field["o_member_jy"] > 0 {
-							user["o_member_jy"] = v["o_entniche"]
-						}
-					} else if i_type == 2 {
-						if field["o_jy"] > 0 {
-							user["o_jy"] = v["o_entniche"]
-						}
-					}
-				}
-			}
-		}
-		delete(field, "o_jy")
-		delete(field, "o_vipjy")
-		delete(field, "o_member_jy")
-		delete(field, "o_entniche")
-		ent_user, ok := mgo.FindOneByField("ent_user", map[string]interface{}{
-			"i_userid": entUserId,
-		}, field)
-		if ok && ent_user != nil && len(*ent_user) > 0 {
-			for k, v := range *ent_user {
-				user[k] = v
-			}
-		}
-	}
-	return &user
-}