diff --git a/business/jxstore/cms/authz.go b/business/jxstore/cms/authz.go index 7599e3cb6..578d2ab57 100644 --- a/business/jxstore/cms/authz.go +++ b/business/jxstore/cms/authz.go @@ -55,7 +55,7 @@ func TransferLegacyWeixins() (err error) { if user.Name == "" { user.Name = user.Mobile } - userList, err2 := dao.GetUsers(db, 0, "", nil, "", v.Tel) + userList, _, err2 := dao.GetUsers(db, 0, "", nil, "", v.Tel, 0, -1) if err = err2; err != nil { return err } diff --git a/business/jxstore/cms/cms.go b/business/jxstore/cms/cms.go index c2fe56f6d..dff8ca85a 100644 --- a/business/jxstore/cms/cms.go +++ b/business/jxstore/cms/cms.go @@ -265,8 +265,8 @@ func DeleteConfig(ctx *jxcontext.Context, key, configType string) (err error) { errList := errlist.New() userIDs, err2 := api2.RoleMan.GetRoleUserList(autils.NewRole(key, 0)) if err = err2; err == nil && len(userIDs) > 0 { - userList, err2 := GetUsers(ctx, 0, "", userIDs, "", "") - if err = err2; err == nil { + userList, totalCount, err2 := dao.GetUsers(dao.GetDB(), 0, "", userIDs, "", "", 0, -1) + if err = err2; err == nil && totalCount > 0 { err = fmt.Errorf("还有人员在使用角色:%s,人员信息:%s", key, utils.MustMarshal(utils.Struct2Map(userList, "compact"))) } } diff --git a/business/jxstore/cms/user2.go b/business/jxstore/cms/user2.go index 944ce7b0f..fae03d8f7 100644 --- a/business/jxstore/cms/user2.go +++ b/business/jxstore/cms/user2.go @@ -155,8 +155,15 @@ func OnDingDingMsg(msg map[string]interface{}) (callbackResponse *dingdingapi.Ca return api.DingDingAPI.Err2CallbackResponse(nil) } -func GetUsers(ctx *jxcontext.Context, userType int, keyword string, userIDs []string, userID2, mobile string) (userList []*model.User, err error) { - return dao.GetUsers(dao.GetDB(), userType, keyword, userIDs, userID2, mobile) +func GetUsers(ctx *jxcontext.Context, userType int, keyword string, userIDs []string, userID2, mobile string, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) { + userList, totalCount, err := dao.GetUsers(dao.GetDB(), userType, keyword, userIDs, userID2, mobile, offset, pageSize) + if err == nil { + pagedInfo = &model.PagedInfo{ + TotalCount: totalCount, + Data: userList, + } + } + return pagedInfo, err } func GetStoreList4User(ctx *jxcontext.Context, mobileNum, userID string) (storeList []*dao.StoreWithCityName, err error) { diff --git a/business/jxutils/jxutils.go b/business/jxutils/jxutils.go index b679a503b..2a15f0379 100644 --- a/business/jxutils/jxutils.go +++ b/business/jxutils/jxutils.go @@ -438,7 +438,7 @@ func HandleUserWXRemark(db *dao.DaoDB, mobile string) (err error) { storeID = wxinfo.JxStoreID } } else { - userList, err2 := dao.GetUsers(db, model.UserTypeStoreBoss, "", nil, "", mobile) + userList, _, err2 := dao.GetUsers(db, model.UserTypeStoreBoss, "", nil, "", mobile, 0, -1) if err = err2; len(userList) > 0 { userID := userList[0].GetID() authBind, err2 := dao.GetAuthBind(db, userID, weixin.AuthTypeMP, "") diff --git a/business/model/dao/dao_user2.go b/business/model/dao/dao_user2.go index b06d601ae..ca95345eb 100644 --- a/business/model/dao/dao_user2.go +++ b/business/model/dao/dao_user2.go @@ -23,12 +23,15 @@ func GetUserByID(db *DaoDB, fieldName, fieldValue string) (user *model.User, err return user, err } -func GetUsers(db *DaoDB, userType int, keyword string, userIDs []string, userID2, mobile string) (userList []*model.User, err error) { +func GetUsers(db *DaoDB, userType int, keyword string, userIDs []string, userID2, mobile string, offset, pageSize int) (userList []*model.User, totalCount int, err error) { + offset = FormalizePageOffset(offset) + pageSize = FormalizePageSize(pageSize) if userType == 0 { userType = 255 } sql := ` - SELECT * + SELECT SQL_CALC_FOUND_ROWS + t1.* FROM user t1 WHERE t1.status = 1 AND t1.deleted_at = ? AND t1.type & ? <> 0` sqlParams := []interface{}{ @@ -52,6 +55,12 @@ func GetUsers(db *DaoDB, userType int, keyword string, userIDs []string, userID2 sql += " AND (t1.user_id2 LIKE ? OR t1.mobile LIKE ? OR t1.email LIKE ? OR t1.name LIKE ?)" sqlParams = append(sqlParams, keywordLike, keywordLike, keywordLike, keywordLike) } - err = GetRows(db, &userList, sql, sqlParams...) - return userList, err + sql += " LIMIT ? OFFSET ?" + sqlParams = append(sqlParams, pageSize, offset) + Begin(db) + defer Rollback(db) + if err = GetRows(db, &userList, sql, sqlParams...); err == nil { + totalCount = GetLastTotalRowCount(db) + } + return userList, totalCount, err } diff --git a/controllers/cms_user2.go b/controllers/cms_user2.go index c7d84e26e..fa936589d 100644 --- a/controllers/cms_user2.go +++ b/controllers/cms_user2.go @@ -61,6 +61,8 @@ func (c *User2Controller) GetBindAuthInfo() { // @Param userIDs query string faslse "用户id列表" // @Param userID2 query string faslse "用户id2,必须全匹配(外部唯一标识)" // @Param mobile query string faslse "用户手机,必须全匹配" +// @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" +// @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetUsers [get] @@ -68,7 +70,7 @@ func (c *User2Controller) GetUsers() { c.callGetUsers(func(params *tUser2GetUsersParams) (retVal interface{}, errCode string, err error) { var userIDs []string if err = jxutils.Strings2Objs(params.UserIDs, &userIDs); err == nil { - retVal, err = cms.GetUsers(params.Ctx, params.UserType, params.Keyword, userIDs, params.UserID2, params.Mobile) + retVal, err = cms.GetUsers(params.Ctx, params.UserType, params.Keyword, userIDs, params.UserID2, params.Mobile, params.Offset, params.PageSize) } return retVal, "", err })