瀏覽代碼

add migrate wx_user function

abiao 5 年之前
父節點
當前提交
7bc1e409bc

+ 59 - 0
go/gopath/src/fohow.com/apps/controllers/user_controller/user_controller.go

@@ -2,6 +2,8 @@ package user_controller
 
 import (
 	"fmt"
+	"strconv"
+
 	// "strconv"
 	// // "bufio"
 	"crypto/md5"
@@ -433,3 +435,60 @@ func (self *UserController) ShopApplication() {
 	self.Data["json"] = ret
 	self.ServeJSON()
 }
+
+//修改交易密码
+func (self *UserController) SysUserBind() {
+	_id := self.Ctx.Input.Param(":invite_wxid")
+	wxId, _ := strconv.ParseInt(_id, 10, 64)
+	userNo := self.GetString("user_no")
+	remark := self.GetString("remark")
+
+	useCache, _ := self.GetBool("cache", false)
+	//wxUser := self.GetCurrentWxUser(useCache)
+	// if inviteWxId == 0 {
+	// 	self.ReturnError(403, apps.NoExist, "", nil)
+	// }
+	// wxUser := user_model.GetWxUserById(inviteWxId, useCache)
+	wxUser := user_model.GetWxUserById(wxId, useCache)
+	if wxUser == nil {
+		self.ReturnError(403, apps.NoExist, "", nil)
+	}
+	bindUser := user_model.GetBindUserByUserNo(userNo)
+	if bindUser != nil {
+		self.ReturnError(403, apps.HasBind, "", nil)
+	}
+
+	sysWxUser := user_model.GetWxUserByUserNo(userNo)
+	//同步会员资料--原会员迁移至新会员(除ID,invite_id之外)
+	sysWxUser.UserId = wxUser.UserId
+	sysWxUser.MpOpenid = wxUser.MpOpenid
+	sysWxUser.Openid = wxUser.Openid
+	sysWxUser.Nickname = wxUser.Nickname
+	sysWxUser.Unionid = wxUser.Unionid
+	sysWxUser.City = wxUser.City
+	sysWxUser.Country = wxUser.Country
+	sysWxUser.Province = wxUser.Province
+	sysWxUser.Sex = wxUser.Sex
+	sysWxUser.Head = wxUser.Head
+	sysWxUser.ChannelQrcodeId = wxUser.ChannelQrcodeId
+	sysWxUser.ShowInviteMode = wxUser.ShowInviteMode
+	sysWxUser.Rank = wxUser.Rank
+	err := sysWxUser.Save()
+	if err != nil {
+		self.ReturnError(403, apps.BindFail, "", nil)
+	}
+	//迁移该会员至备份表,删除微信表记录
+	wxUser.MigrateWxUsers()
+	//创建绑定记录
+	record := new(user_model.BindUser).Create(wxUser.Id, userNo, remark)
+	if record == nil {
+		self.ReturnError(403, apps.BindFail, "", nil)
+	}
+
+	type Ret struct {
+		Result bool `json:"result"`
+	}
+	ret := &Ret{Result: true}
+	self.Data["json"] = ret
+	self.ServeJSON()
+}

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

@@ -27,6 +27,8 @@ const (
 
 var (
 	// 共用
+	BindFail              = []string{"bindFail", "迁移失败,请联系管理员"}
+	HasBind               = []string{"hasBind", "该会员编号已绑定会员"}
 	DailySignRepeat       = []string{"dailySignRepeat", "已经领取过啦"}
 	RedisError            = []string{"redisError", "redis初始化错误"}
 	RedisGetError         = []string{"redisGetError", "redisGet错误"}

+ 105 - 0
go/gopath/src/fohow.com/apps/models/user_model/bind_user.go

@@ -0,0 +1,105 @@
+package user_model
+
+import (
+	"time"
+
+	"github.com/astaxie/beego"
+	"github.com/astaxie/beego/orm"
+)
+
+const (
+	bind_users_tablename = "bind_users"
+)
+
+type BindUser struct {
+	Id        int64     `orm:"column(id);pk"                                       json:"id"`      // int(11)
+	WxUId     int64     `orm:"column(wx_uid)"                                      json:"wx_uid"`  // int(11)
+	UserNo    string    `orm:"column(user_no)"                                     json:"user_no"` // varchar(64)
+	Remark    string    `orm:"column(remark);null"                                 json:"remark"`  // varchar(255)
+	CreatedAt time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`       // datetime
+	UpdatedAt time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`       // datetime
+}
+
+func (self *BindUser) TableName() string {
+	return bind_users_tablename
+}
+
+func (self *BindUser) Create(wxUId int64, userNo, remark string) *BindUser {
+	item := &BindUser{
+		WxUId:  wxUId,
+		UserNo: userNo,
+		Remark: remark,
+	}
+	id, err := orm.NewOrm().Insert(item)
+	if err != nil {
+		beego.BeeLogger.Error("insert BindUser err=[%s]", err)
+		return nil
+	}
+	item.Id = id
+	return item
+}
+
+func (self *BindUser) Save() error {
+	if _, err := orm.NewOrm().Update(self); err != nil {
+		beego.BeeLogger.Error("Save BindUser id=[%d] .err=[%s]", self.Id, err)
+		return err
+	}
+	return nil
+}
+
+func GetBindUserByWxUId(wxUId int64) *BindUser {
+	item := &BindUser{}
+	if err := orm.NewOrm().QueryTable(item).
+		Filter("wx_uid", wxUId).Limit(1).
+		One(item); err != nil {
+		beego.BeeLogger.Info("GetBindUserByWxUId(%d), err=%s",
+			wxUId, err)
+		return nil
+	}
+	return item
+}
+
+func GetBindUserByUserNo(userNo string) *BindUser {
+	item := &BindUser{}
+	if err := orm.NewOrm().QueryTable(item).
+		Filter("user_no", userNo).Limit(1).
+		One(item); err != nil {
+		beego.BeeLogger.Info("GetBindUserByUserNo(%s), err=%s",
+			userNo, err)
+		return nil
+	}
+	return item
+}
+
+func GetWxUserByUserNo(userNo string) *WxUser {
+	item := &WxUser{}
+	if err := orm.NewOrm().QueryTable(item).
+		Filter("user_no", userNo).Limit(1).
+		One(item); err != nil {
+		beego.BeeLogger.Info("GetWxUserByUserNo(%s), err=%s",
+			userNo, err)
+		return nil
+	}
+	return item
+}
+
+//迁移微信老会员
+func (self *WxUser) MigrateWxUsers() {
+	o := orm.NewOrm()
+	//迁移当前记录
+	sql := `
+		insert into 1125_wx_users select * from wx_users where id=?
+	`
+	_, err := o.Raw(sql, self.Id).Exec()
+	if err != nil {
+		beego.BeeLogger.Warn("models.MigrateWxUsers() err[%s]", err)
+		return
+	} else {
+		//迁移当前记录
+		sql = `
+		delete from wx_users where id = ?
+	`
+		o.Raw(sql, self.Id).Exec()
+	}
+	return
+}

+ 5 - 4
go/gopath/src/fohow.com/apps/models/user_model/wx_user.go

@@ -59,10 +59,11 @@ type WxUser struct {
 	SaleGroup    float64 `orm:"column(sale_group);null"              json:"sale_group"` // int(11)
 	SaleGroupSum float64 `orm:"column(sale_group_sum)" json:"sale_group_sum"`           // datetime
 	//等级
-	Rank        int64     `orm:"column(rank);null"              json:"rank"`                 // int(11)
-	PartnerTime int64     `orm:"column(partner_time);null"              json:"partner_time"` // 群主时间
-	CreatedAt   time.Time `orm:"column(created_at);auto_now_add;type(datetime)" json:"-"`    // datetime
-	UpdatedAt   time.Time `orm:"column(updated_at);auto_now;type(datetime)"     json:"-"`    // datetime
+	Rank        int64     `orm:"column(rank);null"              json:"rank"`              // int(11)
+	PartnerTime int64     `orm:"column(partner_time);null"              json:"-"`         // 群主时间
+	UserNo      string    `orm:"column(user_no);null"              json:"-"`              // int(11)
+	CreatedAt   time.Time `orm:"column(created_at);auto_now_add;type(datetime)" json:"-"` // datetime
+	UpdatedAt   time.Time `orm:"column(updated_at);auto_now;type(datetime)"     json:"-"` // datetime
 }
 
 func (self *WxUser) TableName() string {

+ 3 - 0
go/gopath/src/fohow.com/routers/routes.go

@@ -296,4 +296,7 @@ func init() {
 	//积分专区下单
 	beego.Router("/v1/cent/order_mul", &order_controller.OrderController{}, "post:MultCentCreate")
 
+	//老会员绑定
+	beego.Router("/v1/sys_user/:invite_wxid/bind", &user_controller.UserController{}, "put:SysUserBind")
+
 }