diff --git a/business/jxstore/cms/user.go b/business/jxstore/cms/user.go index ef1a03960..87cc52d3e 100644 --- a/business/jxstore/cms/user.go +++ b/business/jxstore/cms/user.go @@ -12,15 +12,18 @@ import ( type StoreUserInfo struct { model.WeiXins - Members []*model.WeiXins `orm:"-" json:"members"` - MembersStr string `json:"-"` + ParentMobile string `json:"parentMobile"` + Members []*model.WeiXins `orm:"-" json:"members"` + MembersStr string `json:"-"` } func GetStoreUsers(storeID int) (storeUserInfo *StoreUserInfo, err error) { sql := ` - SELECT t1.id, t1.jxstoreid, t1.openid, t1.tel, t1.nickname, t1.parentid, - CONCAT("[", GROUP_CONCAT(CONCAT('{"id":', t2.id, ',"parentID":', t2.parentid, ',"openID":"', IF(t2.openid IS NULL, "", t2.openid), '","tel":"', t2.tel, '","nickname":"', IF(t2.nickname IS NULL, "", t2.nickname), '"}')), "]") members_str FROM weixins t1 + SELECT t1.id, t1.jxstoreid, t1.openid, t1.tel, t1.nickname, t1.parentid, t3.tel parent_mobile, + CONCAT("[", GROUP_CONCAT(CONCAT('{"id":', t2.id, ',"parentID":', t2.parentid, ',"openID":"', IF(t2.openid IS NULL, "", t2.openid), '","tel":"', t2.tel, '","nickname":"', IF(t2.nickname IS NULL, "", t2.nickname), '"}')), "]") members_str + FROM weixins t1 LEFT JOIN weixins t2 ON t2.parentid = t1.id + LEFT JOIN weixins t3 ON t1.parentid = t3.id WHERE t1.parentid = -1 AND t1.jxstoreid = ? GROUP BY t1.id, t1.jxstoreid, t1.openid, t1.tel, t1.nickname, t1.parentid; ` @@ -35,10 +38,11 @@ func GetStoreUsers(storeID int) (storeUserInfo *StoreUserInfo, err error) { func GetUserInfo(mobile string) (storeUserInfo *StoreUserInfo, err error) { sql := ` - SELECT t1.id, t1.jxstoreid, t1.openid, t1.tel, t1.nickname, t1.parentid, + SELECT t1.id, t1.jxstoreid, t1.openid, t1.tel, t1.nickname, t1.parentid, t3.tel parent_mobile, CONCAT("[", GROUP_CONCAT(CONCAT('{"id":', t2.id, ',"openID":"', IF(t2.openid IS NULL, "", t2.openid), '","tel":"', t2.tel, '","nickname":"', IF(t2.nickname IS NULL, "", t2.nickname), '"}')), "]") members_str FROM weixins t1 LEFT JOIN weixins t2 ON t2.parentid = t1.id + LEFT JOIN weixins t3 ON t1.parentid = t3.id WHERE t1.tel = ? GROUP BY t1.id, t1.jxstoreid, t1.openid, t1.tel, t1.nickname, t1.parentid; ` @@ -82,14 +86,16 @@ func AddMobile2Mobile(parentMobile, mobile string) (num int64, err error) { if err = dao.GetEntity(db, parentUser, "Tel"); err == nil { if parentUser.ParentID == -1 { globals.SugarLogger.Debug(parentUser) - user, err2 := verifyMobileIsBlank(db, mobile) - if err = err2; err == nil || err == orm.ErrNoRows { - user.ParentID = parentUser.ID - if err == nil { - num, err = dao.UpdateEntity(db, user, "ParentID") - } else { - err = dao.CreateEntity(db, user) - num = 1 + if err = verifyMobileHasNoMembers(db, mobile); err == nil { + user, err2 := verifyMobileIsBlank(db, mobile) + if err = err2; err == nil || err == orm.ErrNoRows { + user.ParentID = parentUser.ID + if err == nil { + num, err = dao.UpdateEntity(db, user, "ParentID") + } else { + err = dao.CreateEntity(db, user) + num = 1 + } } } } else { @@ -120,3 +126,17 @@ func verifyMobileIsBlank(db *dao.DaoDB, mobile string) (user *model.WeiXins, err } return user, err } + +func verifyMobileHasNoMembers(db *dao.DaoDB, mobile string) (err error) { + countInfo := &struct{ Ct int }{} + if err = dao.GetRows(db, countInfo, ` + SELECT COUNT(*) ct + FROM weixins t1 + JOIN weixins t2 ON t1.parent_id = t2.id AND t2.mobile = ? + `, mobile); err == nil { + if countInfo.Ct > 0 { + err = fmt.Errorf("%s本身已经是组长", mobile) + } + } + return err +}