feiyu02
2024-08-15 196bb14112448857a885e32dc4149e308e00b01a
src/main/kotlin/cn/flightfeather/supervision/lightshare/web/NotificationController.kt
@@ -1,10 +1,12 @@
package cn.flightfeather.supervision.lightshare.web
import cn.flightfeather.supervision.domain.entity.NoticeConfig
import cn.flightfeather.supervision.lightshare.service.NotificationService
import cn.flightfeather.supervision.lightshare.vo.NoticeReadStateVo
import cn.flightfeather.supervision.lightshare.vo.NotificationVo
import io.swagger.annotations.Api
import io.swagger.annotations.ApiOperation
import io.swagger.annotations.ApiParam
import org.springframework.web.bind.annotation.*
import javax.servlet.http.HttpServletResponse
@@ -13,38 +15,67 @@
@RequestMapping("/notifications")
class NotificationController(val notificationService: NotificationService) {
    @ApiOperation(value = "按查询条件获取通知")
    @PostMapping("/history")
    fun getAllNotices(
        @ApiParam("用户id") @RequestParam(value = "userId") userId: String,
        @ApiParam("通知查询条件") @RequestBody noticeConfig: NoticeConfig,
        @ApiParam("页码") @RequestParam(value = "page") page: Int,
        @ApiParam("单页数据量") @RequestParam(value = "per_page") perPage: Int,
    ) = notificationService.getAllNotices(userId, noticeConfig, page, perPage)
    @ApiOperation(value = "获取用户未读通知")
    @GetMapping
    fun getNotificationUnRead(
            @RequestParam(value = "userId") userId: String,
            @RequestParam(value = "page") page: Int,
            @RequestParam(value = "per_page") perPage: Int,
            response: HttpServletResponse
        @ApiParam("用户id") @RequestParam(value = "userId") userId: String,
        @ApiParam("页码") @RequestParam(value = "page") page: Int,
        @ApiParam("单页数据量") @RequestParam(value = "per_page") perPage: Int,
        response: HttpServletResponse
    ) = notificationService.getNotificationUnRead(userId, page, perPage, response)
    @ApiOperation(value = "更新通知读取状态")
    @PostMapping("/{userId}/readState")
    fun updateReadState(
            @PathVariable("userId") userId: String,
            @RequestBody readStates: List<NoticeReadStateVo>
        @ApiParam("用户id") @PathVariable("userId") userId: String,
        @ApiParam("通知读取状态") @RequestBody readStates: List<NoticeReadStateVo>
    ) = notificationService.updateReadState(userId, readStates)
    @ApiOperation(value = "获取通知长文本内容")
    @GetMapping("/text")
    fun getNotificationText(
            @RequestParam(value = "id") notificationId: String
        @ApiParam("通知id") @RequestParam(value = "id") notificationId: String
    ) = notificationService.getNotificationText(notificationId)
    @ApiOperation(value = "获取总未读通知数量")
    @GetMapping("/{userId}/unread")
    fun getUnReadNoticeNum(
            @PathVariable("userId") userId: String
        @ApiParam("用户id") @PathVariable("userId") userId: String
    ) = notificationService.getUnReadNoticeNum(userId)
    @ApiOperation(value = "发布通知")
    @PostMapping("{userId}/release")
    @PostMapping("/{userId}/release")
    fun releaseNotice(
            @PathVariable("userId") userId: String,
            @RequestBody notice: NotificationVo
        @ApiParam("用户id") @PathVariable("userId") userId: String,
        @ApiParam("通知") @RequestBody notice: NotificationVo
    ) = notificationService.releaseNotice(userId, notice)
    @ApiOperation(value = "发布通知")
    @PostMapping("/{userId}/release2")
    fun releaseNotice2(
        @ApiParam("用户id") @PathVariable("userId") userId: String,
        @ApiParam("通知") @RequestBody notice: NotificationVo
    ) = notificationService.releaseNotice2(userId, notice)
    @ApiOperation(value = "推送一条微信订阅消息")
    @GetMapping("/wx/message/subscribe/send")
    fun pushMsgWx(
        @ApiParam("模板id") @RequestParam("templateId") templateId: Int
    ) = notificationService.pushMsgWx(templateId)
    @ApiOperation(value = "获取通知模板")
    @GetMapping("/template")
    fun getTemplate(
        @ApiParam("通知类型") @RequestParam("typeId") typeId: Int,
        @ApiParam("通知子类型") @RequestParam("subTypeId") subTypeId: Int,
    ) = notificationService.getTemplate(typeId, subTypeId)
}