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 获取订单消息失败");
|
|
}
|
|
}
|
|
|
|
|
|
|
}
|