移动端通知接口优化
This commit is contained in:
+25
-45
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.jeecg.common.exception.ExceptionAssertsUtil;
|
||||
import org.jeecg.common.system.vo.LoginUser;
|
||||
@@ -53,7 +54,7 @@ public class SysMessageNoticeServiceImpl extends ServiceImpl<SysMessageNoticeMap
|
||||
@Override
|
||||
public IPage<SysMessageNoticeVO> queryPageList(SysMessageNoticeQuery query, Page<SysMessageNotice> page) {
|
||||
LambdaQueryWrapper<SysMessageNotice> wrapper = new LambdaQueryWrapper<>();
|
||||
setQueryData(query, wrapper, NoticeConstants.QUERY_SOURCE_ADMIN);
|
||||
setQueryData(query, wrapper);
|
||||
Page<SysMessageNotice> resultPage = this.page(page, wrapper);
|
||||
if (CollUtil.isEmpty(resultPage.getRecords())) {
|
||||
return new Page<>();
|
||||
@@ -65,8 +66,16 @@ public class SysMessageNoticeServiceImpl extends ServiceImpl<SysMessageNoticeMap
|
||||
|
||||
@Override
|
||||
public List<SysMessageNotice> queryPageAppList(SysMessageNoticeQuery query, Page<SysMessageNotice> page) {
|
||||
LambdaQueryWrapper<SysMessageNotice> wrapper = new LambdaQueryWrapper<>();
|
||||
setQueryData(query, wrapper, NoticeConstants.QUERY_SOURCE_APP);
|
||||
LoginUser loginUser = GlobalUtils.getLoginUser();
|
||||
// 构建范围过滤条件:用户ID + 组织树
|
||||
List<String> scopes = new ArrayList<>();
|
||||
scopes.add(loginUser.getId());
|
||||
scopes.addAll(GlobalUtils.getOrgCodeTreeByCode(loginUser.getOrgCode()));
|
||||
MPJLambdaWrapper<SysMessageNotice> wrapper = new MPJLambdaWrapper<>();
|
||||
wrapper.selectAll(SysMessageNotice.class);
|
||||
wrapper.leftJoin(SysMessageNoticeScope.class, SysMessageNoticeScope::getNoticeId, SysMessageNotice::getId);
|
||||
wrapper.in(SysMessageNoticeScope::getScopeId, scopes);
|
||||
wrapper.distinct();
|
||||
return this.page(page, wrapper).getRecords();
|
||||
}
|
||||
|
||||
@@ -151,30 +160,22 @@ public class SysMessageNoticeServiceImpl extends ServiceImpl<SysMessageNoticeMap
|
||||
*
|
||||
* @param query 查询参数
|
||||
* @param wrapper 查询包装器
|
||||
* @param source 查询来源(0-后台管理,1-移动端)
|
||||
*/
|
||||
private void setQueryData(SysMessageNoticeQuery query, LambdaQueryWrapper<SysMessageNotice> wrapper, Integer source) {
|
||||
private void setQueryData(SysMessageNoticeQuery query, LambdaQueryWrapper<SysMessageNotice> wrapper) {
|
||||
// 设置权限过滤
|
||||
applyPermissionFilter(wrapper, source);
|
||||
if (NoticeConstants.QUERY_SOURCE_ADMIN.equals(source)) {
|
||||
// 设置查询条件
|
||||
applyQueryConditions(query, wrapper);
|
||||
}
|
||||
// 设置排序
|
||||
applyAdminPermissionFilter(wrapper);
|
||||
wrapper.orderByDesc(SysMessageNotice::getCreateTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* 应用权限过滤
|
||||
*
|
||||
* @param wrapper 查询包装器
|
||||
* @param source 查询来源
|
||||
*/
|
||||
private void applyPermissionFilter(LambdaQueryWrapper<SysMessageNotice> wrapper, Integer source) {
|
||||
if (NoticeConstants.QUERY_SOURCE_ADMIN.equals(source)) {
|
||||
applyAdminPermissionFilter(wrapper);
|
||||
} else if (NoticeConstants.QUERY_SOURCE_APP.equals(source)) {
|
||||
applyAppPermissionFilter(wrapper);
|
||||
if (query == null) {
|
||||
return;
|
||||
}
|
||||
if (StrUtil.isNotEmpty(query.getTitle())) {
|
||||
wrapper.like(SysMessageNotice::getTitle, query.getTitle());
|
||||
}
|
||||
if (StrUtil.isNotEmpty(query.getScopeType())) {
|
||||
wrapper.eq(SysMessageNotice::getScopeType, query.getScopeType());
|
||||
}
|
||||
if (ObjUtil.isNotEmpty(query.getStartDate()) && ObjUtil.isNotEmpty(query.getEndDate())) {
|
||||
wrapper.between(SysMessageNotice::getCreateTime, DateUtil.beginOfDay(query.getStartDate()), DateUtil.endOfDay(query.getEndDate()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -239,27 +240,6 @@ public class SysMessageNoticeServiceImpl extends ServiceImpl<SysMessageNoticeMap
|
||||
return planScopes.stream().map(SysMessageNoticeScope::getNoticeId).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 应用查询条件
|
||||
*
|
||||
* @param query 查询参数
|
||||
* @param wrapper 查询包装器
|
||||
*/
|
||||
private void applyQueryConditions(SysMessageNoticeQuery query, LambdaQueryWrapper<SysMessageNotice> wrapper) {
|
||||
if (query == null) {
|
||||
return;
|
||||
}
|
||||
if (StrUtil.isNotEmpty(query.getTitle())) {
|
||||
wrapper.like(SysMessageNotice::getTitle, query.getTitle());
|
||||
}
|
||||
if (StrUtil.isNotEmpty(query.getScopeType())) {
|
||||
wrapper.eq(SysMessageNotice::getScopeType, query.getScopeType());
|
||||
}
|
||||
if (ObjUtil.isNotEmpty(query.getStartDate()) && ObjUtil.isNotEmpty(query.getEndDate())) {
|
||||
wrapper.between(SysMessageNotice::getCreateTime, DateUtil.beginOfDay(query.getStartDate()), DateUtil.endOfDay(query.getEndDate()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置结果数据
|
||||
* 将消息通知列表转换为VO列表,并填充范围信息
|
||||
|
||||
Reference in New Issue
Block a user