From 6372a75c1cd06eb44dd78e1f9583415734ab5c3a Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Mon, 28 Jul 2025 09:13:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E5=90=8C=E6=AD=A5ap?= =?UTF-8?q?p=E8=A7=86=E9=A2=91=EF=BC=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CaseClinicalVideoController.java | 19 +++-- .../com/example/caseData/extend/app/Base.java | 32 ++++----- .../caseData/extend/app/Video/Video.java | 19 +++++ .../addClinicalVideoApp.java | 68 ++++++++++++++---- .../service/CaseClinicalVideoService.java | 72 ++++++++----------- 5 files changed, 127 insertions(+), 83 deletions(-) create mode 100644 src/main/java/com/example/caseData/extend/app/Video/Video.java diff --git a/src/main/java/com/example/caseData/controller/CaseClinicalVideoController.java b/src/main/java/com/example/caseData/controller/CaseClinicalVideoController.java index 960c2a2..446ebf5 100644 --- a/src/main/java/com/example/caseData/controller/CaseClinicalVideoController.java +++ b/src/main/java/com/example/caseData/controller/CaseClinicalVideoController.java @@ -405,17 +405,16 @@ public class CaseClinicalVideoController { */ @PostMapping("/app/clinical/video") public Response AddClinicalVideoApp( - @Validated() - @RequestBody addClinicalVideoApp request + HttpServletRequest request ) { -// try { -// boolean res = caseClinicalVideoService.AddClinicalVideoApp(request); -// if (!res){ -// return Response.error("操作失败"); -// } -// } catch (BusinessException e) { -// return Response.error(e.getMessage()); -// } + try { + boolean res = caseClinicalVideoService.AddClinicalVideoApp(request); + if (!res){ + return Response.error("操作失败"); + } + } catch (BusinessException e) { + return Response.error(e.getMessage()); + } return Response.success(); } diff --git a/src/main/java/com/example/caseData/extend/app/Base.java b/src/main/java/com/example/caseData/extend/app/Base.java index 3f66551..1b9c136 100644 --- a/src/main/java/com/example/caseData/extend/app/Base.java +++ b/src/main/java/com/example/caseData/extend/app/Base.java @@ -12,9 +12,12 @@ import org.apache.commons.io.IOUtils; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; +import java.io.BufferedReader; +import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.*; +import java.util.stream.Collectors; @Slf4j public class Base { @@ -125,39 +128,36 @@ public class Base { } /** - * 校验签名 - * @param request 请求对象 - * @param secretKey 密钥 - * @param mapper ObjectMapper 实例(用于 JSON 反序列化) + * 校验签名(使用已反序列化的 dto 对象) + * @param request HttpServletRequest(用于获取 appId 和 sign) + * @param secretKey 签名用的密钥 + * @param dto 请求对象(如 addClinicalVideoApp) + * @param mapper ObjectMapper 实例(用于序列化 dto) */ - public static void checkSign(HttpServletRequest request, String secretKey, ObjectMapper mapper) { + public void checkSign(HttpServletRequest request, String secretKey, Object dto, ObjectMapper mapper) { try { String appId = request.getHeader("appId"); String sign = request.getHeader("sign"); if (appId == null || appId.isEmpty()) { - throw new BusinessException("-1", "请求未授权"); + throw new BusinessException("-1", "请求未授权(缺少 appId)"); } if (sign == null || sign.isEmpty()) { throw new BusinessException("-1", "缺少签名"); } - // 读取请求体 - String body = IOUtils.toString(request.getInputStream(), StandardCharsets.UTF_8); - if (body == null || body.isEmpty()) { - throw new BusinessException("-1", "请求体为空"); - } - - // 使用 TypeReference 明确泛型类型,避免警告 - Map params = mapper.readValue(body, new TypeReference>() {}); + // 转换 dto 为 Map 用于签名生成 + @SuppressWarnings("unchecked") + Map params = mapper.convertValue(dto, Map.class); // 生成签名 - String serverSign = Base.genSignature(params, secretKey); + String serverSign = genSignature(params, secretKey); + System.out.println("客户端签名: " + sign); + System.out.println("服务端签名: " + serverSign); if (!sign.equals(serverSign)) { throw new BusinessException("-1", "签名错误"); } - } catch (BusinessException e) { throw e; } catch (Exception e) { diff --git a/src/main/java/com/example/caseData/extend/app/Video/Video.java b/src/main/java/com/example/caseData/extend/app/Video/Video.java new file mode 100644 index 0000000..13212a6 --- /dev/null +++ b/src/main/java/com/example/caseData/extend/app/Video/Video.java @@ -0,0 +1,19 @@ +package com.example.caseData.extend.app.Video; + +import com.example.caseData.exception.BusinessException; +import com.example.caseData.extend.app.Base; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.springframework.stereotype.Component; + +import java.nio.charset.StandardCharsets; +import java.util.Map; + +@Slf4j +@Component +public class Video extends Base { + +} diff --git a/src/main/java/com/example/caseData/request/CaseClinicalVideoRequest/addClinicalVideoApp.java b/src/main/java/com/example/caseData/request/CaseClinicalVideoRequest/addClinicalVideoApp.java index ad1e7a8..fbbb960 100644 --- a/src/main/java/com/example/caseData/request/CaseClinicalVideoRequest/addClinicalVideoApp.java +++ b/src/main/java/com/example/caseData/request/CaseClinicalVideoRequest/addClinicalVideoApp.java @@ -1,25 +1,67 @@ package com.example.caseData.request.CaseClinicalVideoRequest; +import com.example.caseData.request.clinicalRequest.getClinicalArticleSearchPage; import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.constraints.NotEmpty; import lombok.Data; +import org.springframework.util.StringUtils; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; @Data public class addClinicalVideoApp { - // 父级 次级评论此字段必须存在 - @JsonProperty("parent_id") - private String parentId; + // 动作(add:新增 update:修改 delete:删除) + @JsonProperty("action") + private String action; - // 根评论标识 次级评论此字段必须存在 - @JsonProperty("root_id") - private String rootId; + // 视频编号(保利) + @JsonProperty("videoNo") + private String videoNo; - // 评论内容 - @JsonProperty("content") - @NotEmpty(message = "请输入评论内容") - private String content; + // 是否外部链接(0:否 1:是) + @JsonProperty("isLink") + private String isLink; - // 评论图片 - @JsonProperty("comment_image") - private String commentImage; + // 外部链接地址 + @JsonProperty("isLinkUrl") + private String isLinkUrl; + + // 标题 + @JsonProperty("videoTitle") + @NotEmpty(message = "标题不能为空") + private String videoTitle; + + // 作者 + @JsonProperty("author") + private List author; + + // 标签 + @JsonProperty("label") + private List