From 94cd29e5c031add55649e25135d9460a1962122b Mon Sep 17 00:00:00 2001 From: jay <75509151@qq.com> Date: Tue, 6 Jun 2023 19:39:10 +0800 Subject: [PATCH] =?UTF-8?q?refactor=20=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cc/iotkit/common/api/PageRequest.java | 4 + .../cc/iotkit/data/system/ISysUserData.java | 10 +++ .../iotkit/data/service/SysUserDataImpl.java | 79 +++++++++++++++++++ .../service/impl/SysUserServiceImpl.java | 11 +-- 4 files changed, 99 insertions(+), 5 deletions(-) diff --git a/iot-common/iot-common-core/src/main/java/cc/iotkit/common/api/PageRequest.java b/iot-common/iot-common-core/src/main/java/cc/iotkit/common/api/PageRequest.java index d095127c..598aec15 100644 --- a/iot-common/iot-common-core/src/main/java/cc/iotkit/common/api/PageRequest.java +++ b/iot-common/iot-common-core/src/main/java/cc/iotkit/common/api/PageRequest.java @@ -94,4 +94,8 @@ public class PageRequest extends Request implements Serializable { public Integer getPageNum() { return pageNum == null ? DEFAULT_PAGE_NUM : pageNum; } + + public Integer getOffset() { + return (getPageNum() - 1) * getPageSize(); + } } diff --git a/iot-common/iot-common-dao/iot-data-service/src/main/java/cc/iotkit/data/system/ISysUserData.java b/iot-common/iot-common-dao/iot-data-service/src/main/java/cc/iotkit/data/system/ISysUserData.java index 319ccc72..515d97f7 100644 --- a/iot-common/iot-common-dao/iot-data-service/src/main/java/cc/iotkit/data/system/ISysUserData.java +++ b/iot-common/iot-common-dao/iot-data-service/src/main/java/cc/iotkit/data/system/ISysUserData.java @@ -41,4 +41,14 @@ public interface ISysUserData extends ICommonData { Paging selectAllocatedList(PageRequest to); + + String selectUserPostGroup(String userName); + + String selectUserRoleGroup(String userName); + + + + Paging selectUnallocatedList(PageRequest to); + + SysUser findByPhonenumber(String phonenumber); } diff --git a/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/SysUserDataImpl.java b/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/SysUserDataImpl.java index e7031622..e628734c 100644 --- a/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/SysUserDataImpl.java +++ b/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/SysUserDataImpl.java @@ -8,6 +8,8 @@ import cc.iotkit.common.utils.StreamUtils; import cc.iotkit.common.utils.StringUtils; import cc.iotkit.data.dao.IJPACommData; import cc.iotkit.data.dao.SysUserRepository; +import cc.iotkit.data.model.TbSysPost; +import cc.iotkit.data.model.TbSysRole; import cc.iotkit.data.model.TbSysUser; import cc.iotkit.data.system.ISysDeptData; import cc.iotkit.data.system.ISysUserData; @@ -16,6 +18,8 @@ import cc.iotkit.data.util.PredicateBuilder; import cc.iotkit.model.system.SysDept; import cc.iotkit.model.system.SysUser; import cn.hutool.core.util.ObjectUtil; +import com.querydsl.core.QueryResults; +import com.querydsl.core.Tuple; import com.querydsl.core.types.Predicate; import com.querydsl.core.types.Projections; import com.querydsl.jpa.impl.JPAQueryFactory; @@ -26,9 +30,14 @@ import org.springframework.stereotype.Service; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; import static cc.iotkit.data.model.QTbSysDept.tbSysDept; +import static cc.iotkit.data.model.QTbSysPost.tbSysPost; +import static cc.iotkit.data.model.QTbSysRole.tbSysRole; import static cc.iotkit.data.model.QTbSysUser.tbSysUser; +import static cc.iotkit.data.model.QTbSysUserPost.tbSysUserPost; +import static cc.iotkit.data.model.QTbSysUserRole.tbSysUserRole; /** @@ -155,6 +164,76 @@ public class SysUserDataImpl implements ISysUserData, IJPACommData selectAllocatedList(PageRequest to) { + SysUser data = to.getData(); + + PredicateBuilder builder = PredicateBuilder.instance() + .and(StringUtils.isNotBlank(data.getPhonenumber()), () -> tbSysUser.phonenumber.like(data.getPhonenumber())) + .and(StringUtils.isNotBlank(data.getUserName()), () -> tbSysUser.userName.like(data.getUserName())) + .and(StringUtils.isNotBlank(data.getStatus()), () -> tbSysUser.status.eq(data.getStatus())) + .and(Objects.nonNull(data.getDeptId()), () -> tbSysUser.deptId.eq(data.getDeptId())) + .and(tbSysUser.delFlag.eq(UserConstants.ROLE_NORMAL)); + QueryResults tbSysUserQueryResults = jpaQueryFactory.select(Projections.bean(TbSysUser.class, tbSysUser.id, tbSysUser.deptId, tbSysUser.userName, + tbSysUser.nickName, tbSysUser.email, tbSysUser.phonenumber, tbSysUser.createTime)).from(tbSysUser) + .leftJoin(tbSysDept).on(tbSysUser.deptId.eq(tbSysDept.id)) + .leftJoin(tbSysUserRole).on(tbSysUser.id.eq(tbSysUserRole.userId)) + .leftJoin(tbSysRole).on(tbSysUserRole.roleId.eq(tbSysRole.id)) + .where(builder.build()).offset(to.getOffset()).limit(to.getPageSize()).fetchResults(); + return new Paging<>(tbSysUserQueryResults.getTotal(), MapstructUtils.convert(tbSysUserQueryResults.getResults(), SysUser.class)); + + } + + @Override + public String selectUserPostGroup(String userName) { + List fetch = jpaQueryFactory.select(Projections.bean(TbSysPost.class, tbSysPost.id, tbSysPost.postName, tbSysPost.postCode)).from(tbSysPost) + .leftJoin(tbSysUserPost).on(tbSysPost.id.eq(tbSysUserPost.postId)) + .leftJoin(tbSysUser).on(tbSysUserPost.userId.eq(tbSysUser.id)) + .where(tbSysUser.userName.eq(userName)) + .orderBy(tbSysPost.postSort.asc()).fetch(); + return fetch.stream().map(TbSysPost::getPostName).collect(Collectors.joining(",")); + } + + @Override + public String selectUserRoleGroup(String userName) { + List fetch = jpaQueryFactory.select(tbSysRole).from(tbSysRole) + .leftJoin(tbSysUserRole).on(tbSysRole.id.eq(tbSysUserRole.roleId)) + .leftJoin(tbSysUser).on(tbSysUserRole.userId.eq(tbSysUser.id)) + .where(tbSysUser.userName.eq(userName)) + .orderBy(tbSysRole.roleSort.asc()).fetch(); + return fetch.stream().map(TbSysRole::getRoleName).collect(Collectors.joining(",")); + } + + + + @Override + public Paging selectUnallocatedList(PageRequest to) { + //TODO: 未分配用户列表 + SysUser data = to.getData(); + PredicateBuilder builder = PredicateBuilder.instance() + .and(StringUtils.isNotBlank(data.getPhonenumber()), () -> tbSysUser.phonenumber.like(data.getPhonenumber())) + .and(StringUtils.isNotBlank(data.getUserName()), () -> tbSysUser.userName.like(data.getUserName())) + .and(StringUtils.isNotBlank(data.getStatus()), () -> tbSysUser.status.eq(data.getStatus())) + .and(Objects.nonNull(data.getDeptId()), () -> tbSysUser.deptId.eq(data.getDeptId())) + .and(tbSysUser.delFlag.eq(UserConstants.ROLE_NORMAL)); + QueryResults sysUserQueryResults = jpaQueryFactory.select(Projections.bean(SysUser.class, tbSysUser.id, tbSysUser.deptId, tbSysUser.userName, + tbSysUser.nickName, tbSysUser.email, tbSysUser.phonenumber, tbSysUser.createTime)).from(tbSysUser) + .leftJoin(tbSysDept).on(tbSysUser.deptId.eq(tbSysDept.id)) + .leftJoin(tbSysUserRole).on(tbSysUser.id.eq(tbSysUserRole.userId)) + .leftJoin(tbSysRole).on(tbSysUserRole.roleId.eq(tbSysRole.id)) + .where(builder.build()).offset(to.getOffset()).limit(to.getPageSize()).fetchResults(); + return new Paging<>(sysUserQueryResults.getTotal(), sysUserQueryResults.getResults()); + } + + @Override + public SysUser findByPhonenumber(String phonenumber) { + TbSysUser user = jpaQueryFactory.select(tbSysUser).from(tbSysUser) + .where(PredicateBuilder.instance() + .and(tbSysUser.phonenumber.eq(phonenumber)) + .build()).fetchOne(); + return MapstructUtils.convert(user, SysUser.class); + } + @Override public Paging findAll(PageRequest pageRequest) { return PageBuilder.toPaging(userRepository.findAll(buildQueryCondition(pageRequest.getData()), PageBuilder.toPageable(pageRequest))); diff --git a/iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysUserServiceImpl.java b/iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysUserServiceImpl.java index bc276ff0..ed8c1d5d 100644 --- a/iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysUserServiceImpl.java +++ b/iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysUserServiceImpl.java @@ -79,17 +79,18 @@ public class SysUserServiceImpl implements ISysUserService, UserService { @Override public Paging selectUnallocatedList( PageRequest query) { - return null; + return sysUserData.selectUnallocatedList(query.to(SysUser.class)).to(SysUserVo.class); } @Override public SysUserVo selectUserByUserName(String userName) { - return null; + return MapstructUtils.convert(sysUserData.selectUserByUserName(userName),SysUserVo.class); } @Override public SysUserVo selectUserByPhonenumber(String phonenumber) { - return null; + return MapstructUtils.convert(sysUserData.findByPhonenumber(phonenumber),SysUserVo.class); + } @Override @@ -99,12 +100,12 @@ public class SysUserServiceImpl implements ISysUserService, UserService { @Override public String selectUserRoleGroup(String userName) { - return null; + return sysUserData.selectUserRoleGroup(userName); } @Override public String selectUserPostGroup(String userName) { - return null; + return sysUserData.selectUserPostGroup(userName); } @Override