查询用户分页

This commit is contained in:
s2042968 2024-11-20 17:08:10 +08:00
parent eea01eab93
commit 00103fdff5
15 changed files with 140 additions and 27 deletions

View File

@ -50,8 +50,8 @@ public class UserController {
} }
@ApiOperation(value = "查询用户信息", notes = "") @ApiOperation(value = "查询用户信息", notes = "")
@RequestMapping(value = "/list", method = RequestMethod.GET) @RequestMapping(value = "/list", method = RequestMethod.POST)
public ElectromagneticResult<?> searchUser(SearchUserRequest searchUserRequest) { public ElectromagneticResult<?> searchUser(@RequestBody SearchUserRequest searchUserRequest) {
return userFacade.searchUser(searchUserRequest); return userFacade.searchUser(searchUserRequest);
} }

View File

@ -23,7 +23,7 @@ public class LoginInterceptor implements HandlerInterceptor {
response.setStatus(401); response.setStatus(401);
return false; return false;
} else { } else {
token = token.substring(7); //token = token.substring(7);
} }
boolean result = tokenService.isTokenValid(token.substring(7)); boolean result = tokenService.isTokenValid(token.substring(7));
if (!result) { if (!result) {

View File

@ -17,7 +17,7 @@ public class SearchKeyWords {
/** /**
* 用户发布状态 * 用户发布状态
*/ */
private int isPublished; private String isPublished;
/** /**
* 排序方式: "asc" "desc" * 排序方式: "asc" "desc"
@ -33,4 +33,14 @@ public class SearchKeyWords {
* 排序方式: "asc" "desc" * 排序方式: "asc" "desc"
*/ */
private String internEndDate; private String internEndDate;
/**
* 页码
*/
private int pageIndex;
/**
* 单页条目数量
*/
private int pageSize;
} }

View File

@ -48,6 +48,13 @@ public interface UserRepository {
*/ */
List<User> search(SearchKeyWords searchKeyWords); List<User> search(SearchKeyWords searchKeyWords);
/**
* 查询数据总条目数
* @param searchKeywords
* @return
*/
int getTotalCount (SearchKeyWords searchKeywords);
/** /**
* 删除用户 * 删除用户
* @param userId * @param userId

View File

@ -58,6 +58,13 @@ public interface UserService {
*/ */
List<User> searchUser(SearchKeyWords searchKeyWords); List<User> searchUser(SearchKeyWords searchKeyWords);
/**
* 查询数据总条目数
* @param searchKeywords
* @return
*/
int getTotalCount (SearchKeyWords searchKeywords);
/** /**
* 根据userId逻辑删除用户 * 根据userId逻辑删除用户
* @param userId * @param userId

View File

@ -89,6 +89,16 @@ public class UserServiceImpl implements UserService {
@Override @Override
public List<User> searchUser(SearchKeyWords searchKeyWords) { return userRepository.search(searchKeyWords); } public List<User> searchUser(SearchKeyWords searchKeyWords) { return userRepository.search(searchKeyWords); }
/**
* 查询数据总条目数
* @param searchKeywords
* @return
*/
@Override
public int getTotalCount (SearchKeyWords searchKeywords) {
return userRepository.getTotalCount(searchKeywords);
}
/** /**
* 根据userId逻辑删除用户 * 根据userId逻辑删除用户
* *

View File

@ -22,19 +22,10 @@ public class SearchUserRequest extends BaseRequest implements Serializable {
private String userStatus; private String userStatus;
/** /**
* 用户发布状态 * 用户发布状态1已发布0未发布
*/ */
private int isPublished; private String isPublished;
// /**
// * 排序字段: "gmtCreate", "joinTime", "internEndDate"
// */
// private String sortBy;
//
// /**
// * 排序方式: "asc" "desc"
// */
// private String sortOrder;
/** /**
* 排序方式: "asc" "desc" * 排序方式: "asc" "desc"
*/ */
@ -49,4 +40,14 @@ public class SearchUserRequest extends BaseRequest implements Serializable {
* 排序方式: "asc" "desc" * 排序方式: "asc" "desc"
*/ */
private String internEndDate; private String internEndDate;
/**
* 页码
*/
private int pageIndex;
/**
* 单页条目数量
*/
private int pageSize;
} }

View File

@ -23,8 +23,6 @@ public class UserModiRequest extends BaseRequest implements Serializable {
*/ */
private String userName; private String userName;
/** /**
* 工号 * 工号
*/ */

View File

@ -1,13 +1,8 @@
package com.electromagnetic.industry.software.data.manage.response.user; package com.electromagnetic.industry.software.data.manage.response.user;
import com.electromagnetic.industry.software.data.manage.response.indicator.IndicatorCardResponse;
import com.electromagnetic.industry.software.data.manage.response.indicator.IndicatorResponse;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
@Data @Data
public class SingleUserResponse { public class SingleUserResponse {

View File

@ -0,0 +1,13 @@
package com.electromagnetic.industry.software.data.manage.response.user;
import lombok.Data;
import java.io.Serializable;
@Data
public class UserLoginResponse implements Serializable {
private String token;
private String userId;
}

View File

@ -22,5 +22,10 @@ public class UserSearchResponse implements Serializable {
* 用户列表 * 用户列表
*/ */
private List<SingleUserResponse> userList; private List<SingleUserResponse> userList;
//private List<User> userList;
/**
* 总数据数
*/
private long totalCount;
} }

View File

@ -50,6 +50,13 @@ public interface UserMapper {
*/ */
List<User> search(SearchKeyWords searchKeywords); List<User> search(SearchKeyWords searchKeywords);
/**
* 查询数据总条目数
* @param searchKeywords
* @return
*/
int getTotalCount (SearchKeyWords searchKeywords);
/** /**
* 通过用户ID删除用户 * 通过用户ID删除用户
* @param userId * @param userId

View File

@ -81,6 +81,14 @@ public class UserRepositoryImpl implements UserRepository {
return userMapper.search(searchKeywords); return userMapper.search(searchKeywords);
} }
/**
* 查询数据总条目数
* @param searchKeywords
* @return
*/
@Override
public int getTotalCount (SearchKeyWords searchKeywords) {return userMapper.getTotalCount(searchKeywords);}
/** /**
* 删除用户 * 删除用户
* @param userId * @param userId

View File

@ -116,6 +116,49 @@
</choose> </choose>
</if> </if>
<!-- 条件 3按发布状态搜索 -->
<if test="isPublished != null and isPublished != ''">
<choose>
<when test="isPublished != 'all'">
AND is_published = CAST(#{isPublished} AS INT)
</when>
</choose>
</if>
</where>
<!-- 动态排序条件 -->
<choose>
<when test="gmtCreate == 'asc' or gmtCreate == 'desc'">
ORDER BY gmt_create ${gmtCreate}
</when>
<when test="joinTime == 'asc' or joinTime == 'desc'">
ORDER BY join_time ${joinTime}
</when>
<when test="internEndDate == 'asc' or internEndDate == 'desc'">
ORDER BY internship_end_date ${internEndDate}
</when>
</choose>
LIMIT #{pageSize} OFFSET #{pageIndex}
</select>
<select id="getTotalCount" parameterType="com.electromagnetic.industry.software.data.manage.domain.boardservice.user.params.SearchKeyWords" resultType="Integer">
SELECT COUNT(*)
FROM ed_users
<where>
<!-- 条件 1按用户名或工号搜索 -->
<if test="keyWord != null and keyWord != ''">
(user_name LIKE CONCAT('%', #{keyWord}, '%') OR work_number LIKE CONCAT('%', #{keyWord}, '%'))
</if>
<!-- 条件 2按用户状态搜索 -->
<if test="userStatus != null and userStatus != ''">
<choose>
<when test="userStatus != 'all'">
AND user_status = #{userStatus}
</when>
</choose>
</if>
<!-- 条件 3按发布状态搜索 --> <!-- 条件 3按发布状态搜索 -->
<if test="isPublished != null and isPublished != ''"> <if test="isPublished != null and isPublished != ''">
<choose> <choose>
@ -140,7 +183,6 @@
</choose> </choose>
</select> </select>
<select id="selectUserByWorkNumber" parameterType="String" resultMap="UserResultMap"> <select id="selectUserByWorkNumber" parameterType="String" resultMap="UserResultMap">
<include refid="selectUserVo" /> <include refid="selectUserVo" />
where work_number = #{workNumber} where work_number = #{workNumber}

View File

@ -3,6 +3,7 @@ package com.electromagnetic.industry.software.data.manage.service.facade.user;
import com.electromagnetic.industry.software.data.manage.common.ElectromagneticErrorEnum; import com.electromagnetic.industry.software.data.manage.common.ElectromagneticErrorEnum;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.UserLoginInfo; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.UserLoginInfo;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.params.SearchKeyWords;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.TokenService; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.TokenService;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.UserService; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.UserService;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.util.UserConstant; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.util.UserConstant;
@ -13,8 +14,10 @@ import com.electromagnetic.industry.software.data.manage.request.user.UserPublis
import com.electromagnetic.industry.software.data.manage.request.user.UserLoginRequest; import com.electromagnetic.industry.software.data.manage.request.user.UserLoginRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserRequest; import com.electromagnetic.industry.software.data.manage.request.user.UserRequest;
import com.electromagnetic.industry.software.data.manage.response.user.SingleUserResponse; import com.electromagnetic.industry.software.data.manage.response.user.SingleUserResponse;
import com.electromagnetic.industry.software.data.manage.response.user.UserLoginResponse;
import com.electromagnetic.industry.software.data.manage.response.user.UserSearchResponse; import com.electromagnetic.industry.software.data.manage.response.user.UserSearchResponse;
import com.electromagnetic.industry.software.data.manage.service.mappers.UserMappers; import com.electromagnetic.industry.software.data.manage.service.mappers.UserMappers;
import com.github.pagehelper.PageInfo;
import electromagnetic.data.framework.share.id.IdWorker; import electromagnetic.data.framework.share.id.IdWorker;
import electromagnetic.data.framework.share.model.ElectromagneticResult; import electromagnetic.data.framework.share.model.ElectromagneticResult;
import electromagnetic.data.framework.share.model.ElectromagneticResultUtil; import electromagnetic.data.framework.share.model.ElectromagneticResultUtil;
@ -40,14 +43,17 @@ public class UserFacadeImpl implements UserFacade {
* @return * @return
*/ */
@Override @Override
public ElectromagneticResult<String> login(UserLoginRequest loginRequest) { public ElectromagneticResult<UserLoginResponse> login(UserLoginRequest loginRequest) {
UserLoginInfo info = UserMappers.INSTANCE.getUserLoginRequestToModel(loginRequest); UserLoginInfo info = UserMappers.INSTANCE.getUserLoginRequestToModel(loginRequest);
String decodePwd = AESUtils.decrypt(info.getUserPwd(), UserConstant.SECRET_KEY); String decodePwd = AESUtils.decrypt(info.getUserPwd(), UserConstant.SECRET_KEY);
User user = userService.getUserByWorkNumber(info.getWorkNumber()); User user = userService.getUserByWorkNumber(info.getWorkNumber());
if ( user!=null && userService.matchPassword(user, decodePwd)) { if ( user!=null && userService.matchPassword(user, decodePwd)) {
String tokenStr = tokenService.createToken(info); String tokenStr = tokenService.createToken(info);
tokenService.createUserToken(user, tokenStr); tokenService.createUserToken(user, tokenStr);
return ElectromagneticResultUtil.success(tokenStr); UserLoginResponse userLoginResponse = new UserLoginResponse();
userLoginResponse.setToken(tokenStr);
userLoginResponse.setUserId(user.getUserId());
return ElectromagneticResultUtil.success(userLoginResponse);
} }
return ElectromagneticResultUtil.fail("500","用户不存在/密码错误"); return ElectromagneticResultUtil.fail("500","用户不存在/密码错误");
} }
@ -126,10 +132,14 @@ public class UserFacadeImpl implements UserFacade {
*/ */
@Override @Override
public ElectromagneticResult<UserSearchResponse> searchUser(SearchUserRequest searchUserRequest){ public ElectromagneticResult<UserSearchResponse> searchUser(SearchUserRequest searchUserRequest){
List<User> userList = userService.searchUser(UserMappers.INSTANCE.getSearchKeywordsRequestToModel(searchUserRequest)); searchUserRequest.setPageIndex((searchUserRequest.getPageIndex()-1)*searchUserRequest.getPageSize());
SearchKeyWords model = UserMappers.INSTANCE.getSearchKeywordsRequestToModel(searchUserRequest);
List<User> userList = userService.searchUser(model);
int totalCount = userService.getTotalCount(model);
List<SingleUserResponse> singleUserResponseList = UserMappers.INSTANCE.userListToResponseList(userList); List<SingleUserResponse> singleUserResponseList = UserMappers.INSTANCE.userListToResponseList(userList);
UserSearchResponse userSearchResponse = new UserSearchResponse(); UserSearchResponse userSearchResponse = new UserSearchResponse();
userSearchResponse.setUserList(singleUserResponseList); userSearchResponse.setUserList(singleUserResponseList);
userSearchResponse.setTotalCount(totalCount);
return ElectromagneticResultUtil.success(userSearchResponse); return ElectromagneticResultUtil.success(userSearchResponse);
} }