package com.xiaopeng.account.controller; import com.xiaopeng.account.model.query.XpOperationsUserNotificationPageQuery; import com.xiaopeng.account.service.IXpOperationsUserNotificationService; import com.xiaopeng.api.model.account.XpOperationsUserNotification; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.common.security.service.TokenService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; /** *

* 运维人员消息通知表 前端控制器 *

* * @author mitao * @since 2026-02-03 */ @Slf4j @RestController public class XpOperationsUserNotificationController { @Autowired private IXpOperationsUserNotificationService notificationService; @Autowired private TokenService tokenService; /** * 根据当前登录用户获取通知分页列表(运维APP接口) */ @PostMapping("/api/v1/notification/list") @ApiOperation(value = "获取通知分页列表", tags = {"运维APP-消息通知"}) public R> getNotificationList( @RequestBody XpOperationsUserNotificationPageQuery query) { log.info("查询通知分页列表, pageNum={}, pageSize={}", query.getPageNum(), query.getPageSize()); // 从Token中获取当前登录用户ID Long currentUserId = tokenService.getLoginOperationUser().getId(); query.setOperationsUserId(currentUserId); // 查询分页列表 PageInfo pageInfo = notificationService.selectNotificationPageByUserId(query); log.info("查询通知分页列表成功, userId={}, total={}", currentUserId, pageInfo.getTotal()); return R.ok(pageInfo); } @GetMapping("/api/v1/notification/unreadCount") @ApiOperation(value = "获取未读通知数量", tags = {"运维APP-消息通知"}) public R getUnreadNotificationCount() { // 从Token中获取当前登录用户ID Long currentUserId = tokenService.getLoginOperationUser().getId(); Long count = notificationService.lambdaQuery().eq(XpOperationsUserNotification::getOperationsUserId, currentUserId) .eq(XpOperationsUserNotification::getReadStatus, 0).count(); return R.ok(count); } @GetMapping("/api/v1/notification/read") @ApiOperation(value = "操作已读", tags = "运维APP-消息通知") public R readNotification(@RequestParam Long notificationId){ notificationService.lambdaUpdate().set(XpOperationsUserNotification::getReadStatus, 1).eq(XpOperationsUserNotification::getId, notificationId).update(); return R.ok(); } @PostMapping(value = "/logan/inner/v1/notification/addBatch") @ApiOperation(value = "批量添加通知", tags = {"内部接口"}) public R addNotificationBatch(@RequestBody List notifications) { notificationService.addNotificationBatch(notifications); return R.ok(); } }