diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiTTSController.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiTTSController.java index 55ae936..4eaa550 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiTTSController.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiTTSController.java @@ -8,6 +8,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; import org.jeecg.config.shiro.IgnoreAuth; +import org.jeecg.modules.applet.entity.TtsVo; import org.jeecg.modules.applet.service.AppletApiTTService; import org.jeecg.modules.demo.appletTtsTimbre.entity.AppletTtsTimbre; import org.springframework.beans.factory.annotation.Autowired; @@ -78,7 +79,7 @@ public class AppletApiTTSController { // return ResponseEntity.internalServerError().build(); // } // } - public Result textToVoice( + public Result textToVoice( @Parameter(description = "要转换的文本内容", required = true) String text, @Parameter(description = "语速,范围:[-2,6],默认为0-2代表0.6倍\n" + "-1代表0.8倍\n" + @@ -90,7 +91,7 @@ public class AppletApiTTSController { @Parameter(description = "音量大小,范围[-10,10],默认为0") Float volume, @Parameter(description = "返回音频格式,可取值:wav(默认),mp3,pcm") String codec) { - TextToVoiceResponse audioData = appletApiTTService.textToVoice(text, speed, voiceType, volume, codec); + TtsVo audioData = appletApiTTService.textToVoice(text, speed, voiceType, volume, codec); return Result.ok(audioData); } diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/entity/TtsVo.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/entity/TtsVo.java new file mode 100644 index 0000000..54f8709 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/entity/TtsVo.java @@ -0,0 +1,18 @@ +package org.jeecg.modules.applet.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class TtsVo { + + private String url; + + private double time; + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/AppletApiTTService.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/AppletApiTTService.java index dba4132..cd71587 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/AppletApiTTService.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/AppletApiTTService.java @@ -1,6 +1,7 @@ package org.jeecg.modules.applet.service; import com.tencentcloudapi.tts.v20190823.models.TextToVoiceResponse; +import org.jeecg.modules.applet.entity.TtsVo; import org.jeecg.modules.demo.appletTtsTimbre.entity.AppletTtsTimbre; import java.util.List; @@ -15,7 +16,7 @@ public interface AppletApiTTService { * @param codec 返回音频格式,可取值:wav(默认),mp3,pcm * @return 音频二进制数据 */ - TextToVoiceResponse textToVoice(String text, Float speed, Integer voiceType, Float volume, String codec); + TtsVo textToVoice(String text, Float speed, Integer voiceType, Float volume, String codec); List list(); diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiTTServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiTTServiceImpl.java index 25075ac..481e244 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiTTServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiTTServiceImpl.java @@ -9,8 +9,10 @@ import com.tencentcloudapi.tts.v20190823.TtsClient; import com.tencentcloudapi.tts.v20190823.models.TextToVoiceRequest; import com.tencentcloudapi.tts.v20190823.models.TextToVoiceResponse; import lombok.extern.log4j.Log4j2; +import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.system.util.AppletUserUtil; import org.jeecg.common.util.oss.OssBootUtil; +import org.jeecg.modules.applet.entity.TtsVo; import org.jeecg.modules.applet.service.AppletApiTTService; import org.jeecg.modules.common.IdUtils; import org.jeecg.modules.demo.appletTtsPlayLog.service.IAppletTtsPlayLogService; @@ -44,7 +46,7 @@ public class AppletApiTTServiceImpl implements AppletApiTTService { private IAppletTtsCacheService appletTtsCacheService; - public TextToVoiceResponse textToVoice(String text, Float speed, Integer voiceType, Float volume, String codec) { + public TtsVo textToVoice(String text, Float speed, Integer voiceType, Float volume, String codec) { long startTime = System.currentTimeMillis(); String userId = AppletUserUtil.getCurrentAppletUserId(); @@ -72,10 +74,10 @@ public class AppletApiTTServiceImpl implements AppletApiTTService { savePlayLog(userId, text, voiceType, volume != null ? volume.doubleValue() : null, speed != null ? speed.doubleValue() : null, elapsedTime, true, existingCache.getId()); - // 创建返回对象,将audioId放在Audio字段中返回给前端 - TextToVoiceResponse response = new TextToVoiceResponse(); - response.setAudio(existingCache.getAudioId()); //返回音频文件URL - return response; + return TtsVo.builder() + .url(existingCache.getAudioId()) + .time(existingCache.getDuration()) + .build(); } // 2. 缓存未命中,调用腾讯云TTS接口生成音频 @@ -141,48 +143,49 @@ public class AppletApiTTServiceImpl implements AppletApiTTService { // 使用ByteArrayInputStream上传到OSS ByteArrayInputStream inputStream = new ByteArrayInputStream(audioData); String audioUrl = OssBootUtil.upload(inputStream, "tts/" + fileName); - - if (audioUrl != null) { - // 4. 保存到缓存数据库 - AppletTtsCache cache = new AppletTtsCache(); - cache.setAudioId(audioUrl); - cache.setText(text); - cache.setVoiceType(voiceType); - cache.setVolume(volume != null ? volume.doubleValue() : null); - cache.setSpeed(speed != null ? speed.doubleValue() : null); - cache.setSuccess("Y"); - cache.setCreateTime(new java.util.Date()); - - // 计算音频时长(通过音频文件解析获得真实时长) - Double realDuration = AudioDurationUtil.calculateDuration(audioData); - if (realDuration != null) { - cache.setDuration(realDuration); - log.info("音频真实时长计算成功: {}秒", realDuration); - } else { - // 如果真实时长计算失败,使用文本长度估算作为备选方案 - if (text != null) { - double estimatedDuration = text.length() / 5.0; - cache.setDuration(estimatedDuration); - log.warn("音频真实时长计算失败,使用文本长度估算: {}秒", estimatedDuration); - } - } - - appletTtsCacheService.save(cache); - cacheId = cache.getId(); - - log.info("TTS音频生成成功并已缓存,audioUrl: {}, cacheId: {}", audioUrl, cacheId); - } else { + if (audioUrl == null) { log.error("音频上传到OSS失败"); + throw new JeecgBootException("音频上传到OSS失败"); + } + AppletTtsCache cache = new AppletTtsCache(); + // 4. 保存到缓存数据库 + cache.setAudioId(audioUrl); + cache.setText(text); + cache.setVoiceType(voiceType); + cache.setVolume(volume != null ? volume.doubleValue() : null); + cache.setSpeed(speed != null ? speed.doubleValue() : null); + cache.setSuccess("Y"); + cache.setState(1); + cache.setCreateTime(new java.util.Date()); + + // 计算音频时长(通过音频文件解析获得真实时长) + Double realDuration = AudioDurationUtil.calculateDuration(audioData); + if (realDuration != null) { + cache.setDuration(realDuration); + log.info("音频真实时长计算成功: {}秒", realDuration); + } else { + // 如果真实时长计算失败,使用文本长度估算作为备选方案 + if (text != null) { + double estimatedDuration = text.length() / 5.0; + cache.setDuration(estimatedDuration); + log.warn("音频真实时长计算失败,使用文本长度估算: {}秒", estimatedDuration); + } } + appletTtsCacheService.save(cache); + cacheId = cache.getId(); + + log.info("TTS音频生成成功并已缓存,audioUrl: {}, cacheId: {}", audioUrl, cacheId); + // 记录成功的TTS调用日志 savePlayLog(userId, text, voiceType, volume != null ? volume.doubleValue() : null, speed != null ? speed.doubleValue() : null, elapsedTime, true, cacheId); - // 返回音频URL给前端 - resp.setAudio(audioUrl); log.info("TTS调用成功,文本长度: {}, 耗时: {}秒", text != null ? text.length() : 0, elapsedTime); - return resp; + return TtsVo.builder() + .url(cache.getAudioId()) + .time(cache.getDuration()) + .build(); } else { // 记录失败的TTS调用日志 savePlayLog(userId, text, voiceType, volume != null ? volume.doubleValue() : null, diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiWaterServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiWaterServiceImpl.java index ab6387b..970403c 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiWaterServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiWaterServiceImpl.java @@ -77,6 +77,7 @@ public class AppletApiWaterServiceImpl implements AppletApiWaterService { // 获取必要的配置信息 String xcxSharePage = appletConfigService.getContentByCode("xcxSharePage"); + String backgroundImageUrl = appletConfigService.getContentByCode("qr_code_bg"); try { @@ -96,7 +97,7 @@ public class AppletApiWaterServiceImpl implements AppletApiWaterService { param.put("line_color", line_color); -// param.put("is_hyaline", true); + param.put("is_hyaline", true); // 获取微信小程序码 String accessToken = wxHttpUtils.getAccessToken(); @@ -109,8 +110,8 @@ public class AppletApiWaterServiceImpl implements AppletApiWaterService { ResponseEntity entity = rest.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]); byte[] qrCodeBytes = entity.getBody(); - return qrCodeBytes; -// return this.generateAndCombineImagesFromUrl2(qrCodeBytes, backgroundImageUrl); +// return qrCodeBytes; + return this.generateAndCombineImagesFromUrl2(qrCodeBytes, backgroundImageUrl); } catch (Exception e) { e.printStackTrace(); return null; @@ -121,6 +122,10 @@ public class AppletApiWaterServiceImpl implements AppletApiWaterService { public byte[] generateAndCombineImagesFromUrl2(byte[] qrCodeImageByte, String backgroundUrl) { File file = null; try { + + int qr_code_y = appletConfigService.getContentByCodeAsInt("qr_code_y"); + int qr_code_x = appletConfigService.getContentByCodeAsInt("qr_code_x"); + // 从字节数组加载小程序码图像 BufferedImage qrCodeImage = ImageIO.read(new ByteArrayInputStream(qrCodeImageByte)); @@ -138,7 +143,7 @@ public class AppletApiWaterServiceImpl implements AppletApiWaterService { int qrCodeY = (int) ((backgroundImage.getHeight() - wh) * 0.6); // 绘制小程序码图像 - g2d.drawImage(qrCodeImage, qrCodeX, qrCodeY, wh, wh, null); + g2d.drawImage(qrCodeImage, qrCodeX + qr_code_x, qrCodeY + qr_code_y, wh, wh, null); // 释放Graphics2D资源 g2d.dispose(); @@ -204,8 +209,8 @@ public class AppletApiWaterServiceImpl implements AppletApiWaterService { if (appletWithdrawal.getMoney() == null) { throw new JeecgBootException("提现金额不能为空"); } - if (appletWithdrawal.getMoney().compareTo(new BigDecimal(0.03)) <= 0) { - throw new JeecgBootException("提现金额不能为负数"); + if (appletWithdrawal.getMoney().compareTo(new BigDecimal("0.3")) < 0) { + throw new JeecgBootException("提现金额不能小于0.3元"); } if (appletWithdrawal.getName() == null) { @@ -237,7 +242,16 @@ public class AppletApiWaterServiceImpl implements AppletApiWaterService { //保存提现记录 appletWithdrawal.setWaterId(water.getId()); appletWithdrawal.setWithdrawStatus("0"); + appletWithdrawal.setStatus("0"); appletWithdrawal.setUserId(userId); + + // 根据提现金额设置提现方式:大于200元为线下(1),否则为微信(0) + if (appletWithdrawal.getMoney().compareTo(new BigDecimal("200")) > 0) { + appletWithdrawal.setMethod("1"); // 线下 + } else { + appletWithdrawal.setMethod("0"); // 微信 + } + appletWithdrawalService.save(appletWithdrawal); return appletWithdrawal; } diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/WxAppletService.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/WxAppletService.java index d46f94c..12e0783 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/WxAppletService.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/WxAppletService.java @@ -232,20 +232,43 @@ public class WxAppletService { TransferToUser.TransferToUserRequest request = new TransferToUser.TransferToUserRequest(); request.appid = appid; request.outBillNo = withdrawal.getId(); - request.transferSceneId = "1010";//商户转账场景ID 1010-二手回收 + request.transferSceneId = "1005";// request.openid = user.getOpenid(); - request.userName = withdrawal.getName(); + request.userName = client.encrypt(withdrawal.getName()); request.transferAmount = withdrawal.getMoney().multiply(new BigDecimal(100)).longValue();//单位为分 - request.transferRemark = "备注"; + request.transferRemark = "佣金报酬"; request.notifyUrl = transferNotify; // request.notifyUrl = "https://www.yurangongfang.com/massage-admin/massage/cash/cashoutNotify/"; - request.userRecvPerception = ""; + request.userRecvPerception = "劳务报酬"; request.transferSceneReportInfos = new ArrayList<>(); { TransferToUser.TransferSceneReportInfo item0 = new TransferToUser.TransferSceneReportInfo(); - item0.infoType = "回收商品名称"; - item0.infoContent = "衣服"; + item0.infoType = "岗位类型"; + item0.infoContent = "外卖员"; request.transferSceneReportInfos.add(item0); + + TransferToUser.TransferSceneReportInfo item1 = new TransferToUser.TransferSceneReportInfo(); + item1.infoType = "报酬说明"; + item1.infoContent = "高温补贴"; + request.transferSceneReportInfos.add(item1); + +// TransferToUser.TransferSceneReportInfo item0 = new TransferToUser.TransferSceneReportInfo(); +// item0.infoType = map.get("infoType1").toString(); +// item0.infoContent = map.get("infoContent1").toString(); +// request.transferSceneReportInfos.add(item0); +// TransferToUser.TransferSceneReportInfo item1 = new TransferToUser.TransferSceneReportInfo(); +// item1.infoType = map.get("infoType2").toString(); +// item1.infoContent = map.get("infoContent2").toString(); +// request.transferSceneReportInfos.add(item1); + +// map.put("transferRemark", "佣金报酬");//商户转账场景ID 1005-佣金报酬 +// map.put("userRecvPerception", "劳务报酬");//商户转账场景ID 1005-佣金报酬 + //变化的用户信息参数 + //转账场景报备信息,ransfer_scene_report_infos为数组类型参数,在现金营销的转账场景下需固定传两条明细,每条“转账场景报备信息明细”包含info_type、info_content两个参数。 +// map.put("infoType1","岗位类型"); +// map.put("infoContent1","外卖员"); +// map.put("infoType2","报酬说明"); +// map.put("infoContent2","高温补贴"); } //3、执行提现 @@ -253,6 +276,7 @@ public class WxAppletService { try { response = client.run(request); }catch (WXPayUtility.ApiException e){ + log.error("提现失败 {}", e.getMessage()); if (e.statusCode == 400){ throw new JeecgBootException("请输入您的真实姓名"); } diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/common/wxUtils/transfer/TransferToUser.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/common/wxUtils/transfer/TransferToUser.java index 7bf7bf0..849b4ca 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/common/wxUtils/transfer/TransferToUser.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/common/wxUtils/transfer/TransferToUser.java @@ -37,7 +37,7 @@ public class TransferToUser { // map.put("method", "POST");//请求类型 // map.put("path", "/v3/fund-app/mch-transfer/transfer-bills");//提现接口 - String uri = "https://api.mch.weixin.qq.com"; + String uri = "/v3/fund-app/mch-transfer/transfer-bills"; String host = "https://api.mch.weixin.qq.com"; String method = "POST"; String reqBody = WXPayUtility.toJson(request); diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletConfig/service/IAppletConfigService.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletConfig/service/IAppletConfigService.java index 8d5f68f..6b01f58 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletConfig/service/IAppletConfigService.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletConfig/service/IAppletConfigService.java @@ -13,4 +13,7 @@ public interface IAppletConfigService extends IService { String getContentByCode(String code); + + Integer getContentByCodeAsInt(String code); + } diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletConfig/service/impl/AppletConfigServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletConfig/service/impl/AppletConfigServiceImpl.java index 982b400..2b46fc0 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletConfig/service/impl/AppletConfigServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletConfig/service/impl/AppletConfigServiceImpl.java @@ -26,4 +26,12 @@ public class AppletConfigServiceImpl extends ServiceImpl> queryPageList(AppletTtsCache appletTtsCache, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @@ -82,8 +82,8 @@ public class AppletTtsCacheController extends JeecgController add(@RequestBody AppletTtsCache appletTtsCache) { @@ -98,8 +98,8 @@ public class AppletTtsCacheController extends JeecgController edit(@RequestBody AppletTtsCache appletTtsCache) { @@ -113,8 +113,8 @@ public class AppletTtsCacheController extends JeecgController delete(@RequestParam(name="id",required=true) String id) { @@ -128,8 +128,8 @@ public class AppletTtsCacheController extends JeecgController deleteBatch(@RequestParam(name="ids",required=true) String ids) { @@ -143,8 +143,8 @@ public class AppletTtsCacheController extends JeecgController queryById(@RequestParam(name="id",required=true) String id) { AppletTtsCache appletTtsCache = appletTtsCacheService.getById(id); @@ -163,7 +163,7 @@ public class AppletTtsCacheController extends JeecgController { diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletTtsCache/service/IAppletTtsCacheService.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletTtsCache/service/IAppletTtsCacheService.java index 90f75ae..5a3db45 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletTtsCache/service/IAppletTtsCacheService.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletTtsCache/service/IAppletTtsCacheService.java @@ -4,9 +4,9 @@ import org.jeecg.modules.demo.appletTtsCache.entity.AppletTtsCache; import com.baomidou.mybatisplus.extension.service.IService; /** - * @Description: 朗读音频 + * @Description: applet_tts_cache * @Author: jeecg-boot - * @Date: 2025-09-21 + * @Date: 2025-09-23 * @Version: V1.0 */ public interface IAppletTtsCacheService extends IService { diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletTtsCache/service/impl/AppletTtsCacheServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletTtsCache/service/impl/AppletTtsCacheServiceImpl.java index 7064f2a..10c0e74 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletTtsCache/service/impl/AppletTtsCacheServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletTtsCache/service/impl/AppletTtsCacheServiceImpl.java @@ -8,9 +8,9 @@ import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** - * @Description: 朗读音频 + * @Description: applet_tts_cache * @Author: jeecg-boot - * @Date: 2025-09-21 + * @Date: 2025-09-23 * @Version: V1.0 */ @Service diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletTtsCache/uniapp/AppletTtsCacheForm.vue b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletTtsCache/uniapp/AppletTtsCacheForm.vue index ae42abb..d454964 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletTtsCache/uniapp/AppletTtsCacheForm.vue +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletTtsCache/uniapp/AppletTtsCacheForm.vue @@ -3,34 +3,33 @@ 返回 - 朗读音频 + applet_tts_cache
- ID: - + 音频文件ID/URL: + - - 时长: - + 音频时长(秒): + - 文本: - + 朗读文本内容: + 音色ID: - + @@ -50,6 +49,18 @@ 是否成功: + + + + 页面: + + + + + + 状态: + +