This commit is contained in:
caozehui
2026-05-12 08:42:07 +08:00
parent c4b56a727c
commit db15799440
2 changed files with 28 additions and 18 deletions

View File

@@ -2,6 +2,7 @@ package com.njcn.msgpush.module.push.controller.admin.message;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.msgpush.framework.common.exception.enums.GlobalErrorCodeConstants;
import com.njcn.msgpush.framework.common.pojo.CommonResult; import com.njcn.msgpush.framework.common.pojo.CommonResult;
import com.njcn.msgpush.framework.idempotent.core.annotation.Idempotent; import com.njcn.msgpush.framework.idempotent.core.annotation.Idempotent;
import com.njcn.msgpush.module.push.controller.admin.message.vo.MessageRecordReqVO; import com.njcn.msgpush.module.push.controller.admin.message.vo.MessageRecordReqVO;
@@ -19,7 +20,12 @@ import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
@@ -41,43 +47,47 @@ public class MessageRecordController {
@Operation(summary = "短信推送") @Operation(summary = "短信推送")
@Idempotent(timeout = 2) @Idempotent(timeout = 2)
public CommonResult<List<MessageSendResultVO>> sendSms(@Valid @RequestBody List<MessageRecordReqVO> reqVOList, public CommonResult<List<MessageSendResultVO>> sendSms(@Valid @RequestBody List<MessageRecordReqVO> reqVOList,
@RequestHeader(value = "X-Credential-Token", required = false) String credentialToken) { @RequestHeader(value = "X-Credential-Token", required = true) String credentialToken) {
CredentialServiceImpl.CredentialInfo credentialInfo = credentialService.verifyCredential(credentialToken); return doSend(reqVOList, credentialToken, ChannelTypeEnum.SMS);
String systemName = credentialInfo.getSystemName();
return success(messageRecordService.send(reqVOList, ChannelTypeEnum.SMS, systemName));
} }
@PermitAll @PermitAll
@PostMapping("/send/email") @PostMapping("/send/email")
@Operation(summary = "推送") @Operation(summary = "推送")
@Idempotent(timeout = 2) @Idempotent(timeout = 2)
public CommonResult<List<MessageSendResultVO>> sendEmail(@Valid @RequestBody List<MessageRecordReqVO> reqVOList, public CommonResult<List<MessageSendResultVO>> sendEmail(@Valid @RequestBody List<MessageRecordReqVO> reqVOList,
@RequestHeader(value = "X-Credential-Token", required = false) String credentialToken) { @RequestHeader(value = "X-Credential-Token", required = true) String credentialToken) {
CredentialServiceImpl.CredentialInfo credentialInfo = credentialService.verifyCredential(credentialToken); return doSend(reqVOList, credentialToken, ChannelTypeEnum.EMAIL);
String systemName = credentialInfo.getSystemName();
return success(messageRecordService.send(reqVOList, ChannelTypeEnum.EMAIL, systemName));
} }
@PermitAll @PermitAll
@PostMapping("/send/app") @PostMapping("/send/app")
@Operation(summary = "app推送") @Operation(summary = "APP 推送")
@Idempotent(timeout = 2) @Idempotent(timeout = 2)
public CommonResult<List<MessageSendResultVO>> sendApp(@Valid @RequestBody List<MessageRecordReqVO> reqVOList, public CommonResult<List<MessageSendResultVO>> sendApp(@Valid @RequestBody List<MessageRecordReqVO> reqVOList,
@RequestHeader(value = "X-Credential-Token", required = false) String credentialToken) { @RequestHeader(value = "X-Credential-Token", required = true) String credentialToken) {
return doSend(reqVOList, credentialToken, ChannelTypeEnum.APP);
}
private CommonResult<List<MessageSendResultVO>> doSend(List<MessageRecordReqVO> reqVOList,
String credentialToken,
ChannelTypeEnum channelTypeEnum) {
CredentialServiceImpl.CredentialInfo credentialInfo = credentialService.verifyCredential(credentialToken); CredentialServiceImpl.CredentialInfo credentialInfo = credentialService.verifyCredential(credentialToken);
String systemName = credentialInfo.getSystemName(); if (credentialInfo == null) {
return success(messageRecordService.send(reqVOList, ChannelTypeEnum.APP, systemName)); return CommonResult.error(GlobalErrorCodeConstants.UNAUTHORIZED.getCode(), "凭证无效或已过期");
}
return success(messageRecordService.send(reqVOList, channelTypeEnum, credentialInfo.getSystemName()));
} }
@PostMapping("/page") @PostMapping("/page")
@Operation(summary = "分页查询渠道服务商列表") @Operation(summary = "分页查询消息记录")
@PreAuthorize("@ss.hasPermission('push:message:page')") @PreAuthorize("@ss.hasPermission('push:message:page')")
public CommonResult<Page<MessageRecordDO>> pageChannelProviderConfig(@Validated @RequestBody MessageRecordReqVO reqVO) { public CommonResult<Page<MessageRecordDO>> pageChannelProviderConfig(@Validated @RequestBody MessageRecordReqVO reqVO) {
return success(messageRecordService.getPage(reqVO)); return success(messageRecordService.getPage(reqVO));
} }
@PostMapping("/add") @PostMapping("/add")
@Operation(summary = "添加消息记录") @Operation(summary = "新增消息记录")
@PreAuthorize("@ss.hasPermission('push:message:add')") @PreAuthorize("@ss.hasPermission('push:message:add')")
public CommonResult<Boolean> add(@Validated @RequestBody MessageRecordReqVO reqVO) { public CommonResult<Boolean> add(@Validated @RequestBody MessageRecordReqVO reqVO) {
return success(messageRecordService.add(reqVO)); return success(messageRecordService.add(reqVO));

View File

@@ -91,7 +91,7 @@ public class CredentialAuthenticationFilter extends ApiRequestFilter implements
// 2. 如果没有凭证,继续过滤链 // 2. 如果没有凭证,继续过滤链
if (StrUtil.isEmpty(credentialToken)) { if (StrUtil.isEmpty(credentialToken)) {
filterChain.doFilter(request, response); ServletUtils.writeJSON(response, CommonResult.error(GlobalErrorCodeConstants.UNAUTHORIZED.getCode(), "缺少凭证"));
return; return;
} }
@@ -112,4 +112,4 @@ public class CredentialAuthenticationFilter extends ApiRequestFilter implements
public int getOrder() { public int getOrder() {
return 1000; return 1000;
} }
} }