|
@@ -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() {
|
|
|
|
+}
|