abiao лет назад: 5
Родитель
Сommit
629b160e58

+ 0 - 2
go/gopath/src/fohow.com/apps/controllers/cron_controller/init.go

@@ -75,8 +75,6 @@ func exec(name string) {
 		updateSoldCount()
 	case "comb_user_relation": //梳理内部推荐关系
 		combUserRelation()
-	case "test_inser_three": //测试三位关系
-		insertThreeWxusers()
 	case "comb_three_user": //梳理三位关系
 		threebUserRelation()
 	case "register_wxuser": //修复数据--注册会员

+ 13 - 3
go/gopath/src/fohow.com/apps/controllers/cron_controller/three_user_relation.go

@@ -31,11 +31,21 @@ func threebUserRelation() {
 }
 
 func UpdateClassThreeInner(list []*user_model.ThreeWxUser, innerNo string, inviteId int64) {
+	inviteRank := int64(0)
+	//更新每个会员的 invite_rank
 	for _, item := range list {
 		if item != nil {
-			item.IntroInnerNo = innerNo
-			introArea := user_model.GetAvailableThreeIntroArea(inviteId)
-			introInnerNo := innerNo + introArea
+			item.InviteRank = inviteRank
+			item.Save()
+			inviteRank++
+		}
+	}
+
+	//更新每会员内部编号
+	for _, item := range list {
+		if item != nil {
+			newArea, introArea := user_model.NewAvailableIntroArea(inviteId, item.InviteRank)
+			introInnerNo := innerNo + newArea
 			item.IntroArea = introArea
 			item.IntroInnerNo = introInnerNo
 			item.Save()

+ 0 - 5
go/gopath/src/fohow.com/apps/helpers/invite_helper.go

@@ -27,23 +27,18 @@ func SetInviter(loginedWxUId, ivId int64) {
 			return
 		}
 		introUserId := int64(0)
-		innerNo := ""
 		beego.BeeLogger.Warn("*******inviteWxuser:%s", inviter)
 		//设置群员内部编号
 		if inviter != nil {
 			//邀请人是群主,则直接进入该群,邀请人不为群主,则进入邀请人所在群
 			if inviter.ShowInviteMode == 1 {
 				introUserId = inviter.Id
-				innerNo = inviter.IntroInnerNo
 			} else if inviter.ShowInviteMode == 0 && inviter.IntroUserId > 0 {
 				introUserId = inviter.IntroUserId
-				innerNo = inviter.IntroInnerNo
 			}
 		}
 		beego.BeeLogger.Warn("*******inviteWxuser introUserId:%d", introUserId)
-		wxUser.InviteId = ivId
 		wxUser.InviteId = introUserId
-		wxUser.IntroInnerNo = innerNo
 		err := wxUser.Save()
 		if err != nil {
 			beego.BeeLogger.Error("save err: %s", err)

+ 81 - 1
go/gopath/src/fohow.com/apps/models/user_model/three_wx_user.go

@@ -16,7 +16,8 @@ const (
 
 type ThreeWxUser struct {
 	Id           int64     `orm:"column(id);pk"                                  json:"id"`          // int(11)
-	InviteId     int64     `orm:"column(invite_id);null"                           json:"invite_id"` // int(11)
+	InviteId     int64     `orm:"column(invite_id);null"                         json:"invite_id"`   // int(11)
+	InviteRank   int64     `orm:"column(invite_rank);null"                       json:"invite_rank"` // int(11)
 	Nickname     string    `orm:"column(nickname)"                               json:"nickname"`    // varchar(100)
 	IntroArea    string    `orm:"intro_area"                         json:"-"`                       // varchar(100)
 	IntroInnerNo string    `orm:"intro_inner_no"                                  json:"-"`          // varchar(100)
@@ -148,3 +149,82 @@ func (self *ThreeWxUser) Save() error {
 	cache.Cache.Delete(k)
 	return nil
 }
+
+//迁移微信老会员
+func (self *ThreeWxUser) CopyWxUsers() error {
+	o := orm.NewOrm()
+
+	//迁移当前记录
+	sql := `
+		delete from three_wx_users 
+	`
+	_, err := o.Raw(sql).Exec()
+	if err != nil {
+		beego.BeeLogger.Warn("ThreeWxUser.CopyWxUsers() err[%s]", err)
+		return err
+	}
+	//迁移当前记录
+	sql = `
+		insert into three_wx_users select * from wx_users 
+	`
+	_, err = o.Raw(sql, self.Id).Exec()
+	if err != nil {
+		beego.BeeLogger.Warn("ThreeWxUser.CopyWxUsers() err[%s]", err)
+		return err
+	}
+	return nil
+}
+
+//获取团队成员内部编号
+func NewAvailableIntroArea(wxUserId, inviteRank int64) (string, string) {
+	//确定首字母
+	firstArea := string(rune(int((inviteRank)/100) + int(65)))
+	introArea := ""
+	//确定二级字母
+	if len(firstArea) > 0 {
+		mul := inviteRank / int64(100)
+		minRank := int64(mul * 100)
+		maxRank := int64(mul*100 + 99)
+		var list []*WxUser
+		o := orm.NewOrm()
+		sql := `
+		SELECT
+			intro_area 
+		FROM
+			wx_users
+		WHERE
+			invite_id = ?
+		AND
+			invite_rank > ?
+		AND
+			invite_rank <= ?
+		GROUP BY
+			intro_area 
+		ORDER BY
+			intro_area
+	`
+		_, err := o.Raw(sql, wxUserId, minRank, maxRank).QueryRows(&list)
+		if err != nil {
+			beego.BeeLogger.Error("GetAvailableIntroArea err=[%s]", err)
+			return firstArea, ""
+		}
+		temp := int(0)
+
+		for _, item := range list {
+			if len(item.IntroArea) != 2 {
+				continue
+			}
+			areas := fmt.Sprintf("%s%d", string(rune(int((temp)/10)+int(65))), temp%int(10))
+			if item.IntroArea != areas {
+				break
+			}
+			temp++
+		}
+		introArea = fmt.Sprintf("%s%d", string(rune(int((temp)/10)+int(65))), temp%int(10))
+
+	} else {
+		firstArea = "A"
+	}
+	newIntroArea := fmt.Sprintf("%s%s", firstArea, introArea)
+	return newIntroArea, introArea
+}