移动端通知接口优化

This commit is contained in:
wanghao
2026-02-11 15:33:14 +08:00
parent 9dbdd911d9
commit 77d72d1d78
@@ -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列表,并填充范围信息