diff --git a/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/orguser/req/ListOrgUserReq.java b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/orguser/req/ListOrgUserReq.java index ac70775..2e43797 100644 --- a/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/orguser/req/ListOrgUserReq.java +++ b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/orguser/req/ListOrgUserReq.java @@ -6,6 +6,7 @@ import cn.axzo.foundation.page.PageReqV2; import lombok.*; import lombok.experimental.SuperBuilder; +import java.util.Date; import java.util.List; import java.util.Set; @@ -89,18 +90,33 @@ public class ListOrgUserReq extends PageReqV2 { @CriteriaField(field = "status", operator = Operator.IN) private Set statuses; - @CriteriaField(ignore = true) - @Builder.Default - private Integer page = 1; - /** - * 最大支持1000条数据,不支持单页超过1000的查询,接入方按需分页 - */ - @Builder.Default - @CriteriaField(ignore = true) - private Integer pageSize = 1000; - @CriteriaField(ignore = true) - private List sort; - @CriteriaField(ignore = true) private Boolean needPersonProfile; + + /** + * 关键字查询: + * 1、用户名称模糊匹配; + * 2、手机号、身份证号精确匹配; + */ + @CriteriaField(ignore = true) + private String keyword; + + + /** + * 离职时间筛选起始 + */ + @CriteriaField(field = "transferTime", operator = Operator.GE) + private Date leaveAtStart; + + /** + * 离职时间筛选结束 + */ + @CriteriaField(field = "transferTime", operator = Operator.LE) + private Date leaveAtEnd; + + /** + * 是都包含删除(默认走查询未删除) + */ + @CriteriaField(ignore = true) + private Boolean includeDeleted; } diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/orguser/repository/impl/OrgUserQueryRepositoryImpl.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/orguser/repository/impl/OrgUserQueryRepositoryImpl.java index f0c39d8..0ae7e7f 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/orguser/repository/impl/OrgUserQueryRepositoryImpl.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/orguser/repository/impl/OrgUserQueryRepositoryImpl.java @@ -10,14 +10,18 @@ import cn.axzo.orgmanax.infra.client.profile.dto.ProfilePersonResp; import cn.axzo.orgmanax.infra.dao.orguser.dao.OrgUserDao; import cn.axzo.orgmanax.infra.dao.orguser.entity.OrgUser; import cn.axzo.orgmanax.infra.dao.orguser.repository.OrgUserQueryRepository; +import cn.axzo.trade.datasecurity.core.util.DataSecurityHelper; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.BooleanUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import java.util.List; import java.util.Map; @@ -36,7 +40,22 @@ public class OrgUserQueryRepositoryImpl implements OrgUserQueryRepository { @Override public PageResp page(ListOrgUserReq req) { IPage page = PageConverter.toMybatis(req, OrgUser.class); - QueryWrapper wrapper = QueryWrapperHelper.fromBean(req, OrgUser.class); + LambdaQueryWrapper wrapper = QueryWrapperHelper.fromBean(req, OrgUser.class).lambda(); + + // 处理删除标记 + if (!BooleanUtil.isTrue(req.getIncludeDeleted())) { + wrapper.eq(OrgUser::getIsDelete, 0); + } + + //处理关键词查询 + if (ObjectUtil.isNotEmpty(req.getKeyword())) { + // 关键字加密(手机号与身份证需要精确匹配) + String encryptStr = DataSecurityHelper.encrypt(req.getKeyword()); + wrapper.and(w -> w.like(OrgUser::getRealName, req.getKeyword()) + .or().eq(OrgUser::getPhone, encryptStr) + .or().eq(OrgUser::getIdNumber, encryptStr)); + } + IPage results = orgUserDao.page(page, wrapper) .convert(e -> BeanUtil.toBean(e, OrgUserResp.class)); PageResp resp = PageConverter.toResp(results);