订单详情接口调整

This commit is contained in:
2025-10-17 18:32:04 +08:00
parent 3fbb1383fd
commit 190e0e1605
7 changed files with 74 additions and 14 deletions

View File

@@ -0,0 +1,27 @@
package com.tashow.cloud.common.util.json.databind;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.time.LocalDateTime;
/**
* 基于字符串的 LocalDateTime 序列化器
*
* @author 老五
*/
public class StringLocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
public static final StringLocalDateTimeSerializer INSTANCE = new StringLocalDateTimeSerializer();
@Override
public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
// 将 LocalDateTime 对象,转换为 Long 时间戳
gen.writeString(LocalDateTimeUtil.format(value, DatePattern.NORM_DATETIME_FORMATTER) );
}
}

View File

@@ -5,6 +5,8 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; 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; import static com.tashow.cloud.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/** /**
@@ -70,7 +72,6 @@ public class AiDialogMessageRespVo {
* 创建时间 * 创建时间
*/ */
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime createTime;
private String createTime;
} }

View File

@@ -1,11 +1,11 @@
package com.tashow.cloud.ai.controller.app.dialog.vo; package com.tashow.cloud.ai.controller.app.dialog.vo;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.tashow.cloud.common.util.json.databind.StringLocalDateTimeSerializer;
import lombok.Data; 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; import java.time.LocalDateTime;
/** /**
* 翻译接口结果vo * 翻译接口结果vo
@@ -40,8 +40,7 @@ public class TranslateRespVo {
//文件时长 //文件时长
private Long contentDuration; private Long contentDuration;
//发送时间 //发送时间
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @JsonSerialize(using = StringLocalDateTimeSerializer.class)
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime createTime;
private String createTime;
} }

View File

@@ -1,10 +1,14 @@
package com.tashow.cloud.ai.dal.dataobject.dialog; package com.tashow.cloud.ai.dal.dataobject.dialog;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*; import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import static com.tashow.cloud.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/** /**
* ai-对话消息 DO * ai-对话消息 DO
* *
@@ -89,6 +93,8 @@ public class AiDialogMessageDO {
* 创建时间 * 创建时间
*/ */
@TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime createTime; private LocalDateTime createTime;
} }

View File

@@ -1,5 +1,6 @@
package com.tashow.cloud.ai.service.dialog; package com.tashow.cloud.ai.service.dialog;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
@@ -30,8 +31,8 @@ import javax.sound.sampled.AudioSystem;
import java.io.InputStream; import java.io.InputStream;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.time.LocalDateTime;
import java.util.Comparator; import java.util.Comparator;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -55,6 +56,17 @@ public class AiDialogServiceImpl extends ServiceImpl<AiDialogMapper, AiDialogDO>
private FileApi fileApi; private FileApi fileApi;
private Map<String, String> petAvatars = new HashMap<>() {{
put("cat", "https://petshy.tashowz.com/admin-api/infra/file/29/get/89f4982de19aadae3248ffde37132857df255b3276de484fdf12e603e5e29a7e.png");
put("dog", "https://petshy.tashowz.com/admin-api/infra/file/29/get/175ba9f58dc812786bfe0598ca9c4a7f422fe138c1889e08d8228aebc953c1b3.png");
}};
private Map<String, String> petName = new HashMap<>() {{
put("cat", "猫猫・三胖");
put("dog", "狗狗・旺财");
}};
@Override @Override
public DialogResp getDialog(Long userId) { public DialogResp getDialog(Long userId) {
AiDialogDO aiDialogDO = this.getOne(new LambdaQueryWrapper<AiDialogDO>().eq(AiDialogDO::getUserId, userId)); AiDialogDO aiDialogDO = this.getOne(new LambdaQueryWrapper<AiDialogDO>().eq(AiDialogDO::getUserId, userId));
@@ -108,7 +120,7 @@ public class AiDialogServiceImpl extends ServiceImpl<AiDialogMapper, AiDialogDO>
.last("limit 1") .last("limit 1")
); );
messageDO.setMessageOrder(aiDialogMessageDO == null ? 1 : aiDialogMessageDO.getMessageOrder() + 1); messageDO.setMessageOrder(aiDialogMessageDO == null ? 1 : aiDialogMessageDO.getMessageOrder() + 1);
messageDO.setCreateTime(LocalDateTime.now()); messageDO.setCreateTime(LocalDateTimeUtil.now());
} }
int i = messageDO.getId() == null ? aiDialogMessageMapper.insert(messageDO) : aiDialogMessageMapper.updateById(messageDO); int i = messageDO.getId() == null ? aiDialogMessageMapper.insert(messageDO) : aiDialogMessageMapper.updateById(messageDO);
TranslateRespVo bean = BeanUtils.toBean(messageDO, TranslateRespVo.class); TranslateRespVo bean = BeanUtils.toBean(messageDO, TranslateRespVo.class);
@@ -136,7 +148,11 @@ public class AiDialogServiceImpl extends ServiceImpl<AiDialogMapper, AiDialogDO>
//数据解析 //数据解析
JSONObject translateResult = JSON.parseObject(result); JSONObject translateResult = JSON.parseObject(result);
if (translateResult.isEmpty() || !translateResult.containsKey("intent_result") || !translateResult.getBoolean("is_species_sound")) { if (translateResult.isEmpty()
|| !translateResult.containsKey("intent_result")
|| !translateResult.getBoolean("is_species_sound")
|| translateResult.getInteger("confidence") < 0.7
) {
messageDO.setTransStatus(0); messageDO.setTransStatus(0);
messageDO.setTransResult(""); messageDO.setTransResult("");
return messageDO; return messageDO;
@@ -148,16 +164,24 @@ public class AiDialogServiceImpl extends ServiceImpl<AiDialogMapper, AiDialogDO>
.getJSONObject("probabilities"); .getJSONObject("probabilities");
String resultKey = probabilities.entrySet().stream() String resultKey = probabilities.entrySet().stream()
.filter(entry -> entry.getValue() instanceof Number) .filter(entry -> entry.getValue() instanceof Number && ((Number) entry.getValue()).doubleValue() > 0.7)
.max(Comparator.comparingDouble(entry -> ((Number) entry.getValue()).doubleValue())) .max(Comparator.comparingDouble(entry -> ((Number) entry.getValue()).doubleValue()))
.map(Map.Entry::getKey) .map(Map.Entry::getKey)
.orElse(null); .orElse(null);
//返回结果 //返回结果
if (StrUtil.isBlank(resultKey)) {
messageDO.setTransStatus(0);
messageDO.setTransResult("");
return messageDO;
}
//宠物档案 todo //宠物档案 todo
messageDO.setPetId(1l); messageDO.setPetId(1l);
messageDO.setPetName(speciesLabels); messageDO.setPetName(petName.get(speciesLabels));
messageDO.setPetAvatar("https://img1.baidu.com/it/u=1224902049,3440357835&fm=253&app=138&f=JPEG?w=801&h=800"); https:
//qcloud.dpfile.com/pc/qw4HqeQN5Af9tLaw0mx8pXQhxKUCvwHbCXmSRI-nKiW1NpX6wMdvSN80YpcTbMKw.jpg
messageDO.setPetAvatar(petAvatars.get(speciesLabels));
messageDO.setPetType(speciesLabels); messageDO.setPetType(speciesLabels);
messageDO.setTransStatus(1); messageDO.setTransStatus(1);
messageDO.setTransResult(StrUtil.isBlank(resultKey) ? "" : resultKey.split(StrUtil.UNDERLINE)[1]); messageDO.setTransResult(StrUtil.isBlank(resultKey) ? "" : resultKey.split(StrUtil.UNDERLINE)[1]);

View File

@@ -70,6 +70,7 @@ public class OAuth2AccessTokenDO extends TenantBaseDO {
/** /**
* 过期时间 * 过期时间
*/ */
private LocalDateTime expiresTime; private LocalDateTime expiresTime;
} }

View File

@@ -47,6 +47,8 @@ public class TradeOrderDetailRespVO {
private String orderTerminal; private String orderTerminal;
//用户信息 //用户信息
private String userInfo; private String userInfo;
//用户头像
private String userAvatar;
//取消时间 //取消时间
private String cancelTime; private String cancelTime;