From 9d5b3f2e45f6800bfa4f37663ee2aa570c91aba0 Mon Sep 17 00:00:00 2001 From: felixu Date: Sat, 16 Mar 2019 09:39:16 +0800 Subject: [PATCH] fix find 2 --- .../slife/base/service/impl/BaseService.java | 34 +++++++++++- .../com/slife/service/ISysUserService.java | 2 + .../com/slife/config/shiro/AuthRealm.java | 6 ++- .../slife/controller/SysUserController.java | 2 +- .../slife/service/impl/SysUserService.java | 52 +++++++++++++++++++ 5 files changed, 91 insertions(+), 5 deletions(-) diff --git a/slife-common/src/main/java/com/slife/base/service/impl/BaseService.java b/slife-common/src/main/java/com/slife/base/service/impl/BaseService.java index 72a9ff9..714b78b 100644 --- a/slife-common/src/main/java/com/slife/base/service/impl/BaseService.java +++ b/slife-common/src/main/java/com/slife/base/service/impl/BaseService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.enums.SqlLike; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.additional.query.impl.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.service.additional.query.impl.QueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.slife.base.entity.TreeEntity; import com.slife.base.service.IBaseService; @@ -54,7 +55,7 @@ public class BaseService, T> extends ServiceImpl i * @param v * @return */ - private boolean idLoadCnd(String cnd, String k, Object v) { + protected boolean idLoadCnd(String cnd, String k, Object v) { return k.startsWith(cnd) && null != v && v.toString().length() > 0; } @@ -80,6 +81,22 @@ public class BaseService, T> extends ServiceImpl i } } + private void loadSearchParam(Map params, QueryChainWrapper wrapper) { + if (!CollectionUtils.isEmpty(params)) { + params.forEach((searchKey, param) -> { + if (idLoadCnd(SearchParam.SEARCH_EQ, searchKey, param)) { + wrapper.eq(searchKey.split(SearchParam.SEARCH_EQ)[1], param); + } else if (idLoadCnd(SearchParam.SEARCH_LLIKE, searchKey, param)) { + wrapper.likeLeft(searchKey.split(SearchParam.SEARCH_LLIKE)[1], String.valueOf(param)); + } else if (idLoadCnd(SearchParam.SEARCH_RLIKE, searchKey, param)) { + wrapper.likeRight(searchKey.split(SearchParam.SEARCH_RLIKE)[1], String.valueOf(param)); + } else if (idLoadCnd(SearchParam.SEARCH_LIKE, searchKey, param)) { + wrapper.like(searchKey.split(SearchParam.SEARCH_LIKE)[1], String.valueOf(param)); + } + }); + } + } + /** * 加载 排序条件 */ @@ -95,6 +112,18 @@ public class BaseService, T> extends ServiceImpl i } } + private void loadSort(Map sorts, QueryChainWrapper wrapper) { + if (!CollectionUtils.isEmpty(sorts)) { + sorts.forEach((column, sort) -> { + if ("asc".equalsIgnoreCase(sort)) { + wrapper.orderByAsc(column); + } else { + wrapper.orderByDesc(column); + } + }); + } + } + /** * 分页 搜索 * @@ -104,7 +133,8 @@ public class BaseService, T> extends ServiceImpl i @Override public DataTable pageSearch(DataTable dt) { Page page = new Page<>(dt.getPageNumber(), dt.getPageSize()); - LambdaQueryChainWrapper wrapper = lambdaQuery(); +// LambdaQueryChainWrapper wrapper = lambdaQuery(); + QueryChainWrapper wrapper = query(); loadSearchParam(dt.getSearchParams(), wrapper); loadSort(dt.getSorts(), wrapper); page(page, wrapper); diff --git a/slife-sys-api/src/main/java/com/slife/service/ISysUserService.java b/slife-sys-api/src/main/java/com/slife/service/ISysUserService.java index 22f4b4f..aa42d2e 100644 --- a/slife-sys-api/src/main/java/com/slife/service/ISysUserService.java +++ b/slife-sys-api/src/main/java/com/slife/service/ISysUserService.java @@ -3,6 +3,7 @@ package com.slife.service; import com.slife.base.service.IBaseService; import com.slife.base.vo.DataTable; import com.slife.entity.SysUser; +import org.apache.poi.ss.formula.functions.T; import java.util.Map; @@ -76,4 +77,5 @@ public interface ISysUserService extends IBaseService { */ void updateSysUser(SysUser sysUser, Long[] ids) ; + DataTable pageSearch1(DataTable dt); } diff --git a/slife-sys/src/main/java/com/slife/config/shiro/AuthRealm.java b/slife-sys/src/main/java/com/slife/config/shiro/AuthRealm.java index f8569de..442362a 100644 --- a/slife-sys/src/main/java/com/slife/config/shiro/AuthRealm.java +++ b/slife-sys/src/main/java/com/slife/config/shiro/AuthRealm.java @@ -6,6 +6,8 @@ import com.slife.entity.SysRole; import com.slife.entity.SysUser; import com.slife.service.ISysRoleService; import com.slife.service.ISysUserService; +import com.slife.service.impl.SysRoleService; +import com.slife.service.impl.SysUserService; import com.slife.shiro.ShiroUser; import com.slife.util.ApplicationContextRegister; import com.slife.util.Encodes; @@ -43,7 +45,7 @@ public class AuthRealm extends AuthorizingRealm { @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { String loginName=((UsernamePasswordToken) token).getUsername(); - ISysUserService sysUserService = ApplicationContextRegister.getBean(ISysUserService.class); + ISysUserService sysUserService = ApplicationContextRegister.getBean(SysUserService.class); SysUser sysUser = sysUserService.getByLoginName(loginName); if (sysUser != null) { log.info("[AuthRealm#doGetAuthenticationInfo] --> {} login", sysUser.getName()); @@ -69,7 +71,7 @@ public class AuthRealm extends AuthorizingRealm { ShiroUser shiroUser = (ShiroUser) principals.getPrimaryPrincipal(); SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); - ISysRoleService sysRoleService = ApplicationContextRegister.getBean(ISysRoleService.class); + ISysRoleService sysRoleService = ApplicationContextRegister.getBean(SysRoleService.class); for (SysRole sysRole : sysRoleService.selectRoleByUserId(shiroUser.id)) { // 基于Role的权限信息 diff --git a/slife-sys/src/main/java/com/slife/controller/SysUserController.java b/slife-sys/src/main/java/com/slife/controller/SysUserController.java index a737372..d4ed859 100644 --- a/slife-sys/src/main/java/com/slife/controller/SysUserController.java +++ b/slife-sys/src/main/java/com/slife/controller/SysUserController.java @@ -126,7 +126,7 @@ public class SysUserController extends BaseController { @PostMapping(value = "/list") @ResponseBody public DataTable list(@RequestBody DataTable dt, ServletRequest request) { - return sysUserService.pageSearch(dt); + return sysUserService.pageSearch1(dt); } diff --git a/slife-sys/src/main/java/com/slife/service/impl/SysUserService.java b/slife-sys/src/main/java/com/slife/service/impl/SysUserService.java index 1fbf146..e52ea2a 100644 --- a/slife-sys/src/main/java/com/slife/service/impl/SysUserService.java +++ b/slife-sys/src/main/java/com/slife/service/impl/SysUserService.java @@ -1,16 +1,22 @@ package com.slife.service.impl; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.additional.query.impl.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.service.additional.query.impl.QueryChainWrapper; import com.slife.base.service.impl.BaseService; import com.slife.base.vo.DataTable; +import com.slife.constant.SearchParam; import com.slife.dao.SysUserDao; import com.slife.entity.SysUser; import com.slife.service.ISysRoleService; import com.slife.service.ISysUserService; import com.slife.util.PasswordUtils; +import org.apache.poi.ss.formula.functions.T; import org.assertj.core.util.Strings; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.util.Map; @@ -166,5 +172,51 @@ public class SysUserService extends BaseService implements } + private void loadSearchParam(Map params, QueryChainWrapper wrapper) { + if (!CollectionUtils.isEmpty(params)) { + params.forEach((searchKey, param) -> { + if (idLoadCnd(SearchParam.SEARCH_EQ, searchKey, param)) { + wrapper.eq(searchKey.split(SearchParam.SEARCH_EQ)[1], param); + } else if (idLoadCnd(SearchParam.SEARCH_LLIKE, searchKey, param)) { + wrapper.likeLeft(searchKey.split(SearchParam.SEARCH_LLIKE)[1], String.valueOf(param)); + } else if (idLoadCnd(SearchParam.SEARCH_RLIKE, searchKey, param)) { + wrapper.likeRight(searchKey.split(SearchParam.SEARCH_RLIKE)[1], String.valueOf(param)); + } else if (idLoadCnd(SearchParam.SEARCH_LIKE, searchKey, param)) { + wrapper.like(searchKey.split(SearchParam.SEARCH_LIKE)[1], String.valueOf(param)); + } + }); + } + } + private void loadSort(Map sorts, QueryChainWrapper wrapper) { + if (!CollectionUtils.isEmpty(sorts)) { + sorts.forEach((column, sort) -> { + if ("asc".equalsIgnoreCase(sort)) { + wrapper.orderByAsc(column); + } else { + wrapper.orderByDesc(column); + } + }); + } + } + + /** + * 分页 搜索 + * + * @param dt + * @return + */ + @Override + public DataTable pageSearch1(DataTable dt) { + Page page = new Page<>(dt.getPageNumber(), dt.getPageSize()); +// LambdaQueryChainWrapper wrapper = lambdaQuery(); +// LambdaQueryChainWrapper wrapper = lambdaQuery(); +// QueryChainWrapper wrapper = query(); +// loadSearchParam(dt.getSearchParams(), wrapper); +// loadSort(dt.getSorts(), wrapper); + page(page); + dt.setTotal((int) page.getTotal()); + dt.setRows(page.getRecords()); + return dt; + } }