|
|
@@ -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
|
|
|
+}
|