package cms

// var (
// 	LoginTypeFieldMap = map[string]string{
// 		mobile.LoginType:            "tel",
// 		weixin.LoginType:            "openid",
// 		weixin.LoginTypeMiniProgram: "openid_mini",
// 	}
// )

// func GetStoreUsers(ctx *jxcontext.Context, storeID int) (storeUserInfos []*dao.StoreUserInfo, err error) {
// 	sql := `
// 	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, ',"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 1,2,3,4,5,6,7;
// 	`
// 	if err = dao.GetRows(nil, &storeUserInfos, sql, storeID); err == nil {
// 		for _, storeUserInfo := range storeUserInfos {
// 			if storeUserInfo.MembersStr != "" {
// 				err = utils.UnmarshalUseNumber([]byte(storeUserInfo.MembersStr), &storeUserInfo.Members)
// 			}
// 		}
// 	}
// 	return storeUserInfos, err
// }

// func GetUserInfo(ctx *jxcontext.Context, mobile string) (storeUserInfo *dao.StoreUserInfo, err error) {
// 	storeUserInfo, err = dao.GetUserStoreInfo(dao.GetDB(), "tel", mobile)
// 	globals.SugarLogger.Debugf("GetUserInfo:%s, token:%s, mobile:%s, storeUserInfo:%s, err:%v", ctx.GetTrackInfo(), ctx.GetToken(), mobile, utils.Format4Output(storeUserInfo, true), err)
// 	return storeUserInfo, err
// }

// func GetSelfInfo(ctx *jxcontext.Context) (storeUserInfo *dao.StoreUserInfo, err error) {
// 	loginInfo := ctx.GetLoginInfo()
// 	if loginInfo == nil {
// 		return nil, auth.ErrAPINeedRealLogin
// 	}
// 	fieldName := LoginTypeFieldMap[loginInfo.GetAuthType()]
// 	if fieldName == "" {
// 		return nil, auth.ErrIllegalLoginType
// 	}
// 	storeUserInfo, err = dao.GetUserStoreInfo(dao.GetDB(), fieldName, loginInfo.GetAuthID())
// 	return storeUserInfo, err
// }

// func GetMyStoreList(ctx *jxcontext.Context) (storeList []*dao.StoreWithCityName, err error) {
// 	mobileNum, _ := ctx.GetMobileAndUserID()
// 	if mobileNum == "" {
// 		return nil, fmt.Errorf("不能得到用户手机号")
// 	}
// 	storeList, err = dao.GetStoreListByMobile(dao.GetDB(), mobileNum)
// 	return storeList, err
// }

// func UnbindMobile(ctx *jxcontext.Context, mobile string) (num int64, err error) {
// 	db := dao.GetDB()
// 	num, err = dao.UpdateEntityByKV(db, &legacymodel.WeiXins{}, map[string]interface{}{
// 		"JxStoreID": 0,
// 		"ParentID":  -1,
// 	}, map[string]interface{}{
// 		"Tel": mobile,
// 	})
// 	if err == nil {
// 		jxutils.HandleUserWXRemark(db, mobile, false)
// 		TransferLegacyWeixins(mobile)
// 	}
// 	return num, err
// }

// func BindMobile2Store(ctx *jxcontext.Context, mobile string, storeID int) (num int64, err error) {
// 	db := dao.GetDB()
// 	user, err2 := verifyMobileIsBlank(db, mobile)
// 	if err = err2; err == nil || err == orm.ErrNoRows {
// 		user.JxStoreID = storeID
// 		if err == nil {
// 			txDB , _ := dao.Begin(db)
// 			defer func() {
// 				if r := recover(); r != nil {
// 					dao.Rollback(db, txDB)
// 					panic(r)
// 				}
// 			}()
// 			if num, err = dao.UpdateEntity(db, user, "JxStoreID"); err == nil {
// 				err = dao.SetWeiXinsEmpty2Null(db, user)
// 			}
// 			if err != nil {
// 				dao.Rollback(db, txDB)
// 			} else {
// 				dao.Commit(db, txDB)
// 			}
// 		} else {
// 			// globals.SugarLogger.Debug(utils.Format4Output(user, false))
// 			dao.WrapAddIDCULEntity(user, ctx.GetUserName())
// 			user.ParentID = -1
// 			if err = dao.CreateWeiXins(db, user); err == nil {
// 				num = 1
// 			}
// 		}
// 	}
// 	if err == nil {
// 		jxutils.HandleUserWXRemark(db, mobile, false)
// 		TransferLegacyWeixins(mobile)
// 	}
// 	return num, err
// }

// func AddMobile2Mobile(ctx *jxcontext.Context, parentMobile, mobile string) (num int64, err error) {
// 	db := dao.GetDB()
// 	parentUser := &legacymodel.WeiXins{}
// 	parentUser.Tel = parentMobile
// 	if err = dao.GetEntity(db, parentUser, "Tel"); err == nil {
// 		if parentUser.ParentID == -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 {
// 						// todo transaction
// 						if num, err = dao.UpdateEntity(db, user, "ParentID"); err == nil {
// 							err = dao.SetWeiXinsEmpty2Null(db, user)
// 						}
// 					} else {
// 						dao.WrapAddIDCULEntity(user, ctx.GetUserName())
// 						if err = dao.CreateWeiXins(db, user); err == nil {
// 							num = 1
// 						}
// 					}
// 				}
// 			}
// 		} else {
// 			err = fmt.Errorf("%s本身是成员", parentMobile)
// 		}
// 	}
// 	if err == nil {
// 		jxutils.HandleUserWXRemark(db, mobile, false)
// 		TransferLegacyWeixins(mobile)
// 	}
// 	return num, err
// }

// func ChangeMobile(ctx *jxcontext.Context, curMobile, expectedMobile string) (num int64, err error) {
// 	num, err = dao.UpdateEntityByKV(nil, &legacymodel.WeiXins{}, map[string]interface{}{
// 		"Tel": expectedMobile,
// 	}, map[string]interface{}{
// 		"Tel": curMobile,
// 	})
// 	if err == nil {
// 		TransferLegacyWeixins(curMobile)
// 		TransferLegacyWeixins(expectedMobile)
// 	}
// 	return num, err
// }

// func verifyMobileIsBlank(db *dao.DaoDB, mobile string) (user *legacymodel.WeiXins, err error) {
// 	if !jxutils.IsStringLikeMobile(mobile) {
// 		return nil, fmt.Errorf("%s看起来不像是一个手机号", mobile)
// 	}
// 	user = &legacymodel.WeiXins{
// 		Tel: mobile,
// 	}
// 	if err = dao.GetEntity(db, user, "Tel"); err == nil {
// 		if user.ParentID != -1 && user.ParentID != 0 {
// 			userParent := &legacymodel.WeiXins{
// 				ID: user.ParentID,
// 			}
// 			if err = dao.GetEntity(db, userParent); err != nil && err != orm.ErrNoRows {
// 				return nil, err
// 			}
// 			if err != orm.ErrNoRows {
// 				err = fmt.Errorf("%s已经是组长：%s，门店：%d的小组成员", mobile, userParent.Tel, userParent.JxStoreID)
// 			} else {
// 				err = nil
// 			}
// 		} else if user.JxStoreID != 0 {
// 			store := &model.Store{}
// 			store.ID = user.JxStoreID
// 			if err = dao.GetEntity(db, store); err == nil {
// 				err = fmt.Errorf("%s本身已经是门店：%d的组长", mobile, user.JxStoreID)
// 			} else if dao.IsNoRowsError(err) {
// 				err = nil
// 			}
// 		}
// 	}
// 	return user, err
// }

// func verifyMobileHasNoMembers(db *dao.DaoDB, mobile string) (err error) {
// 	countInfo := &struct{ Ct int }{}
// 	if err = dao.GetRow(db, countInfo, `
// 	SELECT COUNT(*) ct
// 	FROM weixins t1
// 	JOIN weixins t2 ON t1.parentid = t2.id AND t2.tel = ?
// 	`, mobile); err == nil {
// 		if countInfo.Ct > 0 {
// 			user := &legacymodel.WeiXins{
// 				Tel: mobile,
// 			}
// 			dao.GetEntity(db, user, "Tel")
// 			err = fmt.Errorf("%s本身已经是门店：%d组长", mobile, user.JxStoreID)
// 		}
// 	}
// 	return err
// }
