From 22fc268fcb2d5910cdb452a4a3bebed63b0769ae Mon Sep 17 00:00:00 2001 From: liwq <122639653@qq.com> Date: Tue, 14 Oct 2025 15:19:49 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=20ai=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/aisample/vo/AiSamplePageReqVO.java | 9 +- .../aisample/vo/AiSampleTagPageReqVO.java | 4 +- .../app/dialog/DialogController.java | 9 +- .../app/dialog/vo/AiDialogMessageRespVo.java | 72 ++++++++++++++ .../controller/app/dialog/vo/DialogResp.java | 3 +- .../ai/controller/app/dialog/vo/Pets.java | 9 -- .../app/dialog/vo/TranslateReqVo.java | 4 +- .../app/dialog/vo/TranslateRespVo.java | 16 +++- .../dataobject/dialog/AiDialogMessageDO.java | 26 +++-- .../dal/mysql/aisample/AiSampleTagMapper.java | 21 ++-- .../service/dialog/AiDialogServiceImpl.java | 96 ++++++++++--------- .../src/main/resources/logback-spring.xml | 1 - .../controller/admin/file/FileController.java | 1 + .../admin/sms/vo/log/SmsLogPageReqVO.java | 9 +- 14 files changed, 188 insertions(+), 92 deletions(-) create mode 100644 tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/AiDialogMessageRespVo.java delete mode 100644 tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/Pets.java diff --git a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/admin/aisample/vo/AiSamplePageReqVO.java b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/admin/aisample/vo/AiSamplePageReqVO.java index d0459cc..15295e2 100644 --- a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/admin/aisample/vo/AiSamplePageReqVO.java +++ b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/admin/aisample/vo/AiSamplePageReqVO.java @@ -5,11 +5,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static com.tashow.cloud.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @Schema(description = "管理后台 - 样本库分页 Request VO") @Data @@ -17,8 +12,8 @@ import static com.tashow.cloud.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_ @ToString(callSuper = true) public class AiSamplePageReqVO extends PageParam { - @Schema(description = "标签id", example = "25839") - private Long tagId; + @Schema(description = "标签ids", example = "25839") + private String tagIds; @Schema(description = "样本名称", example = "张三") private String sampleName; diff --git a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/admin/aisample/vo/AiSampleTagPageReqVO.java b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/admin/aisample/vo/AiSampleTagPageReqVO.java index 153087b..b1adf18 100644 --- a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/admin/aisample/vo/AiSampleTagPageReqVO.java +++ b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/admin/aisample/vo/AiSampleTagPageReqVO.java @@ -12,7 +12,9 @@ import lombok.ToString; @ToString(callSuper = true) public class AiSampleTagPageReqVO extends PageParam { - @Schema(description = "分组id", example = "张三") + @Schema(description = "分组id") private Long groupId; + @Schema(description = "标签名称", example = "张三") + private String tagName; } \ No newline at end of file diff --git a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/DialogController.java b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/DialogController.java index 43f1d47..70ee840 100644 --- a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/DialogController.java +++ b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/DialogController.java @@ -4,13 +4,13 @@ package com.tashow.cloud.ai.controller.app.dialog; import com.tashow.cloud.ai.controller.app.dialog.vo.DialogResp; import com.tashow.cloud.ai.controller.app.dialog.vo.TranslateReqVo; import com.tashow.cloud.ai.controller.app.dialog.vo.TranslateRespVo; -import com.tashow.cloud.ai.service.dialog.AiDialogMessageService; import com.tashow.cloud.ai.service.dialog.AiDialogService; import com.tashow.cloud.common.pojo.CommonResult; import jakarta.annotation.Resource; import jakarta.annotation.security.PermitAll; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -32,17 +32,16 @@ public class DialogController { @Resource private AiDialogService aiDialogService; - @Resource - private AiDialogMessageService messageService; + /** * 获取对话消息列表 */ - @PostMapping("/getDialog") + @GetMapping("/getDialog") @PermitAll public CommonResult msList() { //获取当前登录用户 - Long userId = 1l; + Long userId = 1L; return success(aiDialogService.getDialog(userId)); } diff --git a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/AiDialogMessageRespVo.java b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/AiDialogMessageRespVo.java new file mode 100644 index 0000000..2789041 --- /dev/null +++ b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/AiDialogMessageRespVo.java @@ -0,0 +1,72 @@ +package com.tashow.cloud.ai.controller.app.dialog.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +import static com.tashow.cloud.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +/** + * ai-对话消息 DO + * + * @author 芋道源码 + */ +@Schema(description = "api - 对话 Response VO") +@Data +public class AiDialogMessageRespVo { + + private Long id; + /** + * 对话id + */ + private Long dialogId; + /** + * 内容 + */ + private String contentText; + /** + * 文件时长 + */ + private Long contentDuration; + + /** + * 文本类型(1text,2image,3file,4audio) + */ + private Integer contentType; + /** + * 对话中的顺序 + */ + private Integer messageOrder; + /** + * 消息状态 1正常 0删除 + */ + private Integer messageStatus; + /** + * 宠物id + */ + private Long petId; + /** + * 宠物名称 + */ + private String petName; + /** + * 宠物头像 + */ + private String petAvatar; + /** + * 宠物类型 + */ + private String petType; + /** + * 翻译结果 + */ + private String transResult; + /** + * 创建时间 + */ + @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private Date createTime; + +} \ No newline at end of file diff --git a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/DialogResp.java b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/DialogResp.java index a0f6efb..ff5c266 100644 --- a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/DialogResp.java +++ b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/DialogResp.java @@ -1,6 +1,5 @@ package com.tashow.cloud.ai.controller.app.dialog.vo; -import com.tashow.cloud.ai.dal.dataobject.dialog.AiDialogMessageDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -18,5 +17,5 @@ public class DialogResp { @Schema(description = "对话状态") private String dialogStatus; @Schema(description = "对话消息内容") - private List messages; + private List messages; } diff --git a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/Pets.java b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/Pets.java deleted file mode 100644 index 890d70d..0000000 --- a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/Pets.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.tashow.cloud.ai.controller.app.dialog.vo; - -public class Pets { - - private Long petId; - private String petName; - private String petAvatar; - private String petType; -} diff --git a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/TranslateReqVo.java b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/TranslateReqVo.java index 8305a55..977d6d6 100644 --- a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/TranslateReqVo.java +++ b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/TranslateReqVo.java @@ -11,12 +11,14 @@ public class TranslateReqVo { //对话id private Long dialogId; + //消息id + private Long msgId; /** 文件附件 */ private MultipartFile file; //文件时长 - private Integer filePlayTime; + private Long contentDuration; } diff --git a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/TranslateRespVo.java b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/TranslateRespVo.java index c5cd398..e25ff78 100644 --- a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/TranslateRespVo.java +++ b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/TranslateRespVo.java @@ -1,7 +1,11 @@ package com.tashow.cloud.ai.controller.app.dialog.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import static com.tashow.cloud.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; /** * 翻译接口结果vo @@ -10,7 +14,7 @@ import lombok.Data; public class TranslateRespVo { //消息id - private Long msgId; + private Long id; //对话id private Long dialogId; //消息顺序 @@ -19,8 +23,6 @@ public class TranslateRespVo { private Integer contentType; //消息内容 若消息类型是file 则为文件地址 private String contentText; - //文件时长 - private Integer filePlayTime; //宠物类型 private String petType; //宠物名称 @@ -30,10 +32,14 @@ public class TranslateRespVo { //宠物id private Long petId; //翻译状态 - private Integer translateStatus; + private Integer transStatus; //翻译结果 - private String translateResult; + private String transResult; + //文件时长 + private Long contentDuration; //发送时间 + @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private String createTime; } diff --git a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/dal/dataobject/dialog/AiDialogMessageDO.java b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/dal/dataobject/dialog/AiDialogMessageDO.java index 7a6225b..fe9508c 100644 --- a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/dal/dataobject/dialog/AiDialogMessageDO.java +++ b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/dal/dataobject/dialog/AiDialogMessageDO.java @@ -1,9 +1,6 @@ package com.tashow.cloud.ai.dal.dataobject.dialog; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; import lombok.*; import java.time.LocalDateTime; @@ -16,12 +13,11 @@ import java.time.LocalDateTime; @TableName("tz_ai_dialog_message") @KeySequence("tz_ai_dialog_message_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data -@EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @Builder @NoArgsConstructor @AllArgsConstructor -public class AiDialogMessageDO extends BaseDO { +public class AiDialogMessageDO { /** * 主键 @@ -36,6 +32,11 @@ public class AiDialogMessageDO extends BaseDO { * 内容 */ private String contentText; + /** + * 文件时长 + */ + private Long contentDuration; + /** * 文本类型(1text,2image,3file,4audio) */ @@ -60,13 +61,26 @@ public class AiDialogMessageDO extends BaseDO { * 宠物头像 */ private String petAvatar; + /** + * 宠物类型 + */ + private String petType; + /** + * 原始结果 + */ + private String sourceResult; /** * 翻译结果 */ private String transResult; + /** + * 翻译结果 + */ + private Integer transStatus; /** * 创建时间 */ + @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; } \ No newline at end of file diff --git a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/dal/mysql/aisample/AiSampleTagMapper.java b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/dal/mysql/aisample/AiSampleTagMapper.java index c87e02c..cd5777a 100644 --- a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/dal/mysql/aisample/AiSampleTagMapper.java +++ b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/dal/mysql/aisample/AiSampleTagMapper.java @@ -23,14 +23,19 @@ public interface AiSampleTagMapper extends BaseMapperX { .orderByDesc(AiSampleTagDO::getId)); } - @Select("") IPage getAiSampleTagPage(Page page, AiSampleTagPageReqVO pageReqVO); diff --git a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/service/dialog/AiDialogServiceImpl.java b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/service/dialog/AiDialogServiceImpl.java index c60b65d..1578bf8 100644 --- a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/service/dialog/AiDialogServiceImpl.java +++ b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/service/dialog/AiDialogServiceImpl.java @@ -2,10 +2,12 @@ package com.tashow.cloud.ai.service.dialog; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.tashow.cloud.ai.controller.app.dialog.vo.AiDialogMessageRespVo; import com.tashow.cloud.ai.controller.app.dialog.vo.DialogResp; import com.tashow.cloud.ai.controller.app.dialog.vo.TranslateReqVo; import com.tashow.cloud.ai.controller.app.dialog.vo.TranslateRespVo; @@ -21,8 +23,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; -import org.springframework.web.multipart.MultipartFile; +import java.time.LocalDateTime; import java.util.Comparator; import java.util.List; import java.util.Map; @@ -39,9 +41,9 @@ public class AiDialogServiceImpl extends ServiceImpl @Resource private AiDialogMessageMapper aiDialogMessageMapper; - @Value("translate-server") + @Value("${translate-server}") private String translateServer; - @Value("file-server") + @Value("${file-server}") private String fileServer; @Resource private FileApi fileApi; @@ -61,7 +63,7 @@ public class AiDialogServiceImpl extends ServiceImpl DialogResp resp = new DialogResp(); resp.setDialogId(aiDialogDO.getId()); resp.setTitle(aiDialogDO.getTitle()); - resp.setMessages(messageDOS); + resp.setMessages(BeanUtils.toBean(messageDOS, AiDialogMessageRespVo.class)); return resp; } @@ -69,19 +71,26 @@ public class AiDialogServiceImpl extends ServiceImpl @Override @SneakyThrows public TranslateRespVo translate(TranslateReqVo fileReqVo) { - //翻译结果 - TranslateRespVo result = translate(fileReqVo.getFile()); - //创建消息 持久化消息 - result.setDialogId( fileReqVo.getDialogId()); - result.setFilePlayTime( fileReqVo.getFilePlayTime()); + AiDialogMessageDO messageDO = aiDialogMessageMapper.selectById(fileReqVo.getMsgId()); + if (messageDO == null) { + messageDO = new AiDialogMessageDO(); + } + //上传文件获取文件地址 + String fileName = fileReqVo.getFile().getOriginalFilename(); String fileUrl = fileServer + fileApi.createFile(fileReqVo.getFile().getBytes()); - result.setContentText(fileUrl); - result.setContentType(2); + //翻译结果 + translate(messageDO,fileUrl, fileName); + //创建消息 持久化消息 + messageDO.setDialogId(fileReqVo.getDialogId()); + messageDO.setContentDuration(fileReqVo.getContentDuration()); + + messageDO.setContentText(fileUrl); + messageDO.setContentType(2); //宠物档案 todo - result.setPetId(1l); - result.setPetName("猫猫翻译"); - result.setPetAvatar("https://img1.baidu.com/it/u=1224902049,3440357835&fm=253&app=138&f=JPEG?w=801&h=800"); + messageDO.setPetId(1l); + messageDO.setPetName("猫猫翻译"); + messageDO.setPetAvatar("https://img1.baidu.com/it/u=1224902049,3440357835&fm=253&app=138&f=JPEG?w=801&h=800"); //获取当前最后的排序 AiDialogMessageDO aiDialogMessageDO = aiDialogMessageMapper.selectOne(new LambdaQueryWrapper() @@ -89,58 +98,59 @@ public class AiDialogServiceImpl extends ServiceImpl .orderByDesc(AiDialogMessageDO::getMessageOrder) .last("limit 1") ); - result.setMessageOrder(aiDialogMessageDO.getMessageOrder()+1); - - AiDialogMessageDO dialogMessageDO = BeanUtils.toBean(result, AiDialogMessageDO.class); - aiDialogMessageMapper.insert(dialogMessageDO); - return result; + messageDO.setMessageOrder(aiDialogMessageDO == null ? 1 : aiDialogMessageDO.getMessageOrder() + 1); + messageDO.setCreateTime(LocalDateTime.now()); + int i = messageDO.getId()==null? aiDialogMessageMapper.insert(messageDO):aiDialogMessageMapper.updateById(messageDO); + TranslateRespVo bean = BeanUtils.toBean(messageDO, TranslateRespVo.class); + bean.setId(messageDO.getId()); + return bean; } - private TranslateRespVo translate(MultipartFile file) { + private AiDialogMessageDO translate(AiDialogMessageDO messageDO,String file, String fileName) { //调用大模型接口 String result = ""; try { - result = HttpRequest.post(translateServer).form("audio_data", file).timeout(20000) //20秒超时时间 + result = HttpRequest.post(translateServer).form("audio_data", HttpUtil.downloadBytes(file), fileName).timeout(20000) //20秒超时时间 .execute().body(); } catch (Exception e) { log.error("调用大模型翻译出错", e); } -// -// { -// "species_labels": "cat", -// "is_species_sound": true, -// "confidence": 0.77200821734893, -// "intent_result": { -// "winner": "cat_舒服", -// "confidence": 69.55630087055536, -// "probabilities": { -// "cat_等待喂食": 0.0, -// "cat_舒服": 1.0 -// } -// } -// } + messageDO.setSourceResult(result); //数据解析 JSONObject translateResult = JSON.parseObject(result); + + if (translateResult.isEmpty() || !translateResult.containsKey("intent_result")|| !translateResult.getBoolean("is_species_sound")) { + messageDO.setTransStatus(0); + messageDO.setTransResult(""); + return messageDO; + } //标签 如 cat dog String speciesLabels = translateResult.getString("species_labels"); //解析翻译结果 JSONObject probabilities = translateResult.getJSONObject("intent_result") - .getJSONObject("probabilities"); + .getJSONObject("probabilities"); String resultKey = probabilities.entrySet().stream() .filter(entry -> entry.getValue() instanceof Number) .max(Comparator.comparingDouble(entry -> ((Number) entry.getValue()).doubleValue())) .map(Map.Entry::getKey) .orElse(null); - String sourceResult = probabilities.getString(resultKey); - String lastResult = sourceResult.split(StrUtil.UNDERLINE)[1]; //返回结果 - TranslateRespVo translateRespVo = new TranslateRespVo(); - translateRespVo.setPetType(speciesLabels); - translateRespVo.setTranslateStatus(1); - translateRespVo.setTranslateResult(lastResult); - return translateRespVo; + messageDO.setPetType(speciesLabels); + messageDO.setTransStatus(1); + messageDO.setTransResult(StrUtil.isBlank(resultKey) ? "" : resultKey.split(StrUtil.UNDERLINE)[1]); + return messageDO; + } + + + public static void main(String[] args) { + byte[] bytes = HttpUtil.downloadBytes("http://192.168.1.231:48080/admin-api/infra/file/29/get/c7351abf780f18600c104ec5662d843783ed8c309c01fb427046565217f51102.wav"); + +// File file = new File("http://192.168.1.231:48080/admin-api/infra/file/29/get/c7351abf780f18600c104ec5662d843783ed8c309c01fb427046565217f51102.wav"); + String result = HttpRequest.post("http://43.139.42.137:8000/analyze/audio").form("audio_data", bytes, "aaa").timeout(20000) //20秒超时时间 + .execute().body(); + System.out.println(result); } } \ No newline at end of file diff --git a/tashow-module/tashow-module-ai/src/main/resources/logback-spring.xml b/tashow-module/tashow-module-ai/src/main/resources/logback-spring.xml index 16f0c0f..df31ed4 100644 --- a/tashow-module/tashow-module-ai/src/main/resources/logback-spring.xml +++ b/tashow-module/tashow-module-ai/src/main/resources/logback-spring.xml @@ -72,5 +72,4 @@ - diff --git a/tashow-module/tashow-module-infra/src/main/java/com/tashow/cloud/infra/controller/admin/file/FileController.java b/tashow-module/tashow-module-infra/src/main/java/com/tashow/cloud/infra/controller/admin/file/FileController.java index 6b60201..19e9f02 100644 --- a/tashow-module/tashow-module-infra/src/main/java/com/tashow/cloud/infra/controller/admin/file/FileController.java +++ b/tashow-module/tashow-module-infra/src/main/java/com/tashow/cloud/infra/controller/admin/file/FileController.java @@ -88,6 +88,7 @@ public class FileController { response.setStatus(HttpStatus.NOT_FOUND.value()); return; } + response.setContentLength(content.length); writeAttachment(response, path, content); } diff --git a/tashow-module/tashow-module-system/src/main/java/com/tashow/cloud/system/controller/admin/sms/vo/log/SmsLogPageReqVO.java b/tashow-module/tashow-module-system/src/main/java/com/tashow/cloud/system/controller/admin/sms/vo/log/SmsLogPageReqVO.java index cc71677..8c10333 100644 --- a/tashow-module/tashow-module-system/src/main/java/com/tashow/cloud/system/controller/admin/sms/vo/log/SmsLogPageReqVO.java +++ b/tashow-module/tashow-module-system/src/main/java/com/tashow/cloud/system/controller/admin/sms/vo/log/SmsLogPageReqVO.java @@ -1,14 +1,15 @@ package com.tashow.cloud.system.controller.admin.sms.vo.log; -import static com.tashow.cloud.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - import com.tashow.cloud.common.pojo.PageParam; -import java.time.LocalDateTime; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.tashow.cloud.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + /** 管理后台 - 短信日志分页 Request VO */ @Data @EqualsAndHashCode(callSuper = true) @@ -27,8 +28,8 @@ public class SmsLogPageReqVO extends PageParam { /** 发送状态,参见 SmsSendStatusEnum 枚举类 */ private Integer sendStatus; - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) /** 发送时间 */ + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] sendTime; /** 接收状态,参见 SmsReceiveStatusEnum 枚举类 */