Browse Source

fix wx_user inner_no

abiao 5 years ago
parent
commit
2b016117f1

+ 30 - 7
go/gopath/src/fohow.com/apps/controllers/cron_controller/three_user_relation.go

@@ -2,6 +2,8 @@ package cron_controller
 
 import (
 	"fohow.com/apps/models/user_model"
+	"github.com/astaxie/beego"
+	"time"
 )
 
 /*
@@ -27,6 +29,7 @@ func threebUserRelation() {
 	//更改下级群主关系
 	inviteList := user_model.GetThreeWxUsersByInviteIdAll(wxUserId, false)
 	UpdateClassThreeInner(inviteList, innerNo, wxUserId)
+	time.Sleep(time.Duration(300) * time.Second)
 }
 
 func UpdateClassThreeInner(list []*user_model.ThreeWxUser, innerNo string, inviteId int64) {
@@ -36,21 +39,41 @@ func UpdateClassThreeInner(list []*user_model.ThreeWxUser, innerNo string, invit
 		threeWxUser := user_model.GetThreeWxUserById(item.Id, true)
 		if threeWxUser != nil {
 			threeWxUser.InviteRank = inviteRank
-			threeWxUser.UpdateField("InviteRank")
+			err := threeWxUser.UpdateField("InviteRank")
+			if err != nil {
+				beego.BeeLogger.Error("UpdateClassThreeInner rank err=[%s]", err)
+
+				return
+			}
 			inviteRank++
 		}
 	}
 
-	//更新每会员内部编号
+	//更新会员内部编号
 	for _, item := range list {
-		if item != nil {
-			/*newArea, introArea := user_model.NewAvailableIntroArea(inviteId, item.InviteRank)
-			introInnerNo := innerNo + newArea
+		threeWxUser := user_model.GetThreeWxUserById(item.Id, true)
 
+		if threeWxUser != nil {
+			newArea, introArea := user_model.NewAvailableIntroArea(inviteId, item.InviteRank)
+			introInnerNo := innerNo + newArea
 			threeWxUser.IntroArea = introArea
 			threeWxUser.IntroInnerNo = introInnerNo
-			threeWxUser.UpdateField("IntroArea")
-			threeWxUser.UpdateField("introInnerNo")*/
+			err := threeWxUser.UpdateField("introInnerNo")
+			if err != nil {
+				beego.BeeLogger.Error("UpdateClassThreeInner introInnerNo err=[%s]", err)
+				return
+			}
+			err = threeWxUser.UpdateField("IntroArea")
+			if err != nil {
+				beego.BeeLogger.Error("UpdateClassThreeInner IntroArea err=[%s]", err)
+				return
+			}
+		}
+	}
+
+	//递归更新
+	for _, item := range list {
+		if item != nil {
 			secondList := user_model.GetThreeWxUsersByInviteIdAll(item.Id, true)
 			UpdateClassThreeInner(secondList, item.IntroInnerNo, item.Id)
 		}

+ 9 - 2
go/gopath/src/fohow.com/apps/models/user_model/three_wx_user.go

@@ -117,13 +117,20 @@ func GetAvailableThreeIntroArea(wxUserId int64) string {
 }
 
 func GetThreeWxUserById(id int64, useCache bool) *ThreeWxUser {
+	k := cache.GetKey(cache.GetThreeWxUserById, id)
+	if useCache {
+		if usr, ok := cache.Cache.Get(k).(*ThreeWxUser); ok {
+			return usr
+		}
+	}
 	usr := new(ThreeWxUser)
 	o := orm.NewOrm()
 	err := o.QueryTable(usr).Filter("id", id).Limit(1).One(usr)
 	if err != nil {
-		beego.Debug("GetThreeWxUserById(%d), err=[%s]", id, err)
+		beego.Debug("GetWxUserById(%d), err=[%s]", id, err)
 		return nil
 	} else {
+		cache.Cache.Put(k, usr, 24*time.Hour)
 		return usr
 	}
 }
@@ -133,7 +140,7 @@ func GetThreeWxUsersByInviteIdAll(inviteWxId int64, useCache bool) (list []*Thre
 	user := new(ThreeWxUser)
 	qs := orm.NewOrm().QueryTable(user)
 	qs = qs.Filter("invite_id", inviteWxId)
-	if _, err := qs.OrderBy("-created_at").All(&list); err != nil {
+	if _, err := qs.OrderBy("-id").All(&list); err != nil {
 		beego.BeeLogger.Debug("GetThreeWxUsersByInviteIdAll err=[%s]", err)
 		return nil
 	}