From 982313135d1c239fe3b20e4c5664781f92d40aca Mon Sep 17 00:00:00 2001 From: xin <1099200748@qq.com> Date: Thu, 31 Jul 2025 17:17:39 +0800 Subject: [PATCH] Merge branch 'master' into xin --- oying-system/src/main/java/com/oying/modules/message/rest/MesMsgRecordController.java | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 172 insertions(+), 0 deletions(-) diff --git a/oying-system/src/main/java/com/oying/modules/message/rest/MesMsgRecordController.java b/oying-system/src/main/java/com/oying/modules/message/rest/MesMsgRecordController.java new file mode 100644 index 0000000..6d08391 --- /dev/null +++ b/oying-system/src/main/java/com/oying/modules/message/rest/MesMsgRecordController.java @@ -0,0 +1,172 @@ +package com.oying.modules.message.rest; + +import com.oying.annotation.Log; +import com.oying.modules.message.common.PlatFormEnum; +import com.oying.modules.message.domain.MesMsgRecord; +import com.oying.modules.message.domain.dto.MesShopMsgRespDTO; +import com.oying.modules.message.domain.myDto.MesMsgRecordQueryOrderDto; +import com.oying.modules.message.domain.myDto.MesMsgRecordQueryPollDto; +import com.oying.modules.message.domain.myDto.MesMsgRecordQuerySystemDto; +import com.oying.modules.message.service.MesMsgRecordService; +import com.oying.modules.message.domain.dto.MesMsgRecordQueryCriteria; +import com.oying.utils.R; +import lombok.RequiredArgsConstructor; +import java.util.List; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.*; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.oying.utils.PageResult; + +/** +* @author 李萌 +* @date 2025-07-25 +**/ +@Slf4j +@RestController +@RequiredArgsConstructor +@Api(tags = "消息") +@RequestMapping("/api/mesMsgRecord") +public class MesMsgRecordController { + + private final MesMsgRecordService mesMsgRecordService; + + @ApiOperation("导出数据") + @GetMapping(value = "/download") + @PreAuthorize("@el.check('mesMsgRecord:list')") + public void exportMesMsgRecord(HttpServletResponse response, MesMsgRecordQueryCriteria criteria) throws IOException { + mesMsgRecordService.download(mesMsgRecordService.queryAll(criteria), response); + } + + @GetMapping + @ApiOperation("查询消息") + @PreAuthorize("@el.check('mesMsgRecord:list')") + public ResponseEntity<PageResult<MesMsgRecord>> queryMesMsgRecord(MesMsgRecordQueryCriteria criteria){ + Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize()); + return new ResponseEntity<>(mesMsgRecordService.queryAll(criteria,page),HttpStatus.OK); + } + + @PostMapping + @Log("新增消息") + @ApiOperation("新增消息") + @PreAuthorize("@el.check('mesMsgRecord:add')") + public ResponseEntity<Object> createMesMsgRecord(@Validated @RequestBody MesMsgRecord resources){ + mesMsgRecordService.create(resources); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改消息") + @ApiOperation("修改消息") + @PreAuthorize("@el.check('mesMsgRecord:edit')") + public ResponseEntity<Object> updateMesMsgRecord(@Validated @RequestBody MesMsgRecord resources){ + mesMsgRecordService.update(resources); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @DeleteMapping + @Log("删除消息") + @ApiOperation("删除消息") + @PreAuthorize("@el.check('mesMsgRecord:del')") + public ResponseEntity<Object> deleteMesMsgRecord(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) { + mesMsgRecordService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + + /* 1. 轮询最新消息(通知栏) */ //todo 轮询啥? + //只查“未读”消息,不分种类,返回最新 N 条 1=买家 2=商户 3=骑手" + @GetMapping("/poll") + @ApiOperation("查询轮询消息 1(买家)、2(商户)、3(骑手)") + @PreAuthorize("@el.check('mesMsgRecord:list')") + public R<List<MesMsgRecordQueryPollDto>> queryMesMsgRecord(@RequestParam Long platform){ + //platform 只能为 1 2 3 + if (platform == null) { + return R.fail("平台类型不能为空"); + } + + if (PlatFormEnum.getByKey(platform.intValue()) == null) { + return R.fail("平台类型错误,只能为1(买家)、2(商户)、3(骑手)"); + } + + // 实现业务逻辑,调用服务层获取未读消息 + try { + List<MesMsgRecordQueryPollDto> mes=mesMsgRecordService.PollMes(platform); + return R.success(mes); + } catch (Exception e) { + log.error("查询轮询消息失败:",e); + return R.fail("查询轮询消息失败"); + } + + + + } + +// /* 2. 批量确认收到消息 */ +// @PutMapping("/ack/{msgId}") +// @ApiOperation("确认收到消息") +// public R<Void> ack(@PathVariable Long msgId) { +//// mesMsgRecordService.markRead(msgId, null); +// return R.success(); +// } + /* 2. 批量确认收到消息 主键*/ + @PutMapping("/ack") + @ApiOperation("批量确认收到消息") + public R<Void> batchAck(@ApiParam(value = "消息ID数组") @RequestBody List<Long> msgIds,@RequestParam Long platform) { + if (msgIds == null || msgIds.isEmpty()) { + return R.fail("消息ID列表不能为空"); + } + + try { + mesMsgRecordService.batchMarkRead(platform,msgIds); + return R.success(); + } catch (Exception e) { + log.error("批量确认消息失败,msgIds: {}", msgIds, e); + return R.fail("批量确认消息失败"); + } + } + + /* 3. 分页系统通知 */ + @GetMapping("/sysNotice") + @ApiOperation("分页查询系统通知") + public R<PageResult<MesMsgRecordQuerySystemDto>> sysNotice( + MesMsgRecordQueryCriteria criteria) { + Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize()); + try { + PageResult<MesMsgRecordQuerySystemDto> pageResult = mesMsgRecordService.queryAllSysNotice(criteria,page); + return R.success(pageResult); + } catch (Exception e) { + log.error("分页查询系统通知失败,criteria: {}", criteria, e); + return R.fail("分页查询系统通知失败"); + } + + } + + /* 4. 用店铺id 查询订单消息 */ + @GetMapping("/order") + @ApiOperation("用店铺id 查询订单消息") + public R<List<MesMsgRecordQueryOrderDto>> order(@PathVariable Long shopId ) { + try { + List<MesMsgRecordQueryOrderDto> res=mesMsgRecordService.queryorder(shopId); + return R.success(res); + } catch (Exception e) { + log.error("用店铺id 获取订单消息失败,shopId: {}", shopId, e); + return R.fail("用店铺id 获取订单消息失败"); + + } + + } + + + + + + +} -- Gitblit v1.9.3