| @@ -0,0 +1,33 @@ | |||||
| /* | |||||
| Navicat Premium Data Transfer | |||||
| Source Server : photo | |||||
| Source Server Type : MySQL | |||||
| Source Server Version : 80026 (8.0.26) | |||||
| Source Host : 182.92.151.30:3306 | |||||
| Source Schema : mallink_suimang_test | |||||
| Target Server Type : MySQL | |||||
| Target Server Version : 80026 (8.0.26) | |||||
| File Encoding : 65001 | |||||
| Date: 13/07/2023 18:41:44 | |||||
| */ | |||||
| SET NAMES utf8mb4; | |||||
| SET FOREIGN_KEY_CHECKS = 0; | |||||
| -- ---------------------------- | |||||
| -- Table structure for wx_c_author | |||||
| -- ---------------------------- | |||||
| DROP TABLE IF EXISTS `wx_c_author`; | |||||
| CREATE TABLE `wx_c_author` ( | |||||
| `id` int NOT NULL COMMENT '用户id', | |||||
| `user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '用户名', | |||||
| `type` int NULL DEFAULT NULL COMMENT '权限类型数字人0声纹1', | |||||
| `resource_id` int NULL DEFAULT NULL COMMENT '对应资源id(数字人id or 声纹id)', | |||||
| `expire_time` datetime NULL DEFAULT NULL COMMENT '资源权限到期时间', | |||||
| PRIMARY KEY (`id`) USING BTREE | |||||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; | |||||
| SET FOREIGN_KEY_CHECKS = 1; | |||||
| @@ -0,0 +1,35 @@ | |||||
| /* | |||||
| Navicat Premium Data Transfer | |||||
| Source Server : photo | |||||
| Source Server Type : MySQL | |||||
| Source Server Version : 80026 (8.0.26) | |||||
| Source Host : 182.92.151.30:3306 | |||||
| Source Schema : mallink_suimang_test | |||||
| Target Server Type : MySQL | |||||
| Target Server Version : 80026 (8.0.26) | |||||
| File Encoding : 65001 | |||||
| Date: 13/07/2023 18:41:55 | |||||
| */ | |||||
| SET NAMES utf8mb4; | |||||
| SET FOREIGN_KEY_CHECKS = 0; | |||||
| -- ---------------------------- | |||||
| -- Table structure for wx_c_avatar | |||||
| -- ---------------------------- | |||||
| DROP TABLE IF EXISTS `wx_c_avatar`; | |||||
| CREATE TABLE `wx_c_avatar` ( | |||||
| `id` int NOT NULL COMMENT '数字人id', | |||||
| `class` int NULL DEFAULT NULL COMMENT '共享0定制1', | |||||
| `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '数字人名称', | |||||
| `image` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '数字人图像', | |||||
| `demo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '数字人视频样例', | |||||
| `model` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '数字人视频模板文件', | |||||
| `preinfo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '数字人预处理文件', | |||||
| PRIMARY KEY (`id`) USING BTREE | |||||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; | |||||
| SET FOREIGN_KEY_CHECKS = 1; | |||||
| @@ -0,0 +1,32 @@ | |||||
| /* | |||||
| Navicat Premium Data Transfer | |||||
| Source Server : photo | |||||
| Source Server Type : MySQL | |||||
| Source Server Version : 80026 (8.0.26) | |||||
| Source Host : 182.92.151.30:3306 | |||||
| Source Schema : mallink_suimang_test | |||||
| Target Server Type : MySQL | |||||
| Target Server Version : 80026 (8.0.26) | |||||
| File Encoding : 65001 | |||||
| Date: 18/07/2023 12:14:57 | |||||
| */ | |||||
| SET NAMES utf8mb4; | |||||
| SET FOREIGN_KEY_CHECKS = 0; | |||||
| -- ---------------------------- | |||||
| -- Table structure for wx_c_user_live_basic_info | |||||
| -- ---------------------------- | |||||
| DROP TABLE IF EXISTS `wx_c_user_live_basic_info`; | |||||
| CREATE TABLE `wx_c_user_live_basic_info` ( | |||||
| `id` bigint NOT NULL, | |||||
| `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, | |||||
| `version` int NULL DEFAULT NULL, | |||||
| `expire_time` datetime NULL DEFAULT NULL, | |||||
| PRIMARY KEY (`id`) USING BTREE | |||||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; | |||||
| SET FOREIGN_KEY_CHECKS = 1; | |||||
| @@ -0,0 +1,34 @@ | |||||
| /* | |||||
| Navicat Premium Data Transfer | |||||
| Source Server : photo | |||||
| Source Server Type : MySQL | |||||
| Source Server Version : 80026 (8.0.26) | |||||
| Source Host : 182.92.151.30:3306 | |||||
| Source Schema : mallink_suimang_test | |||||
| Target Server Type : MySQL | |||||
| Target Server Version : 80026 (8.0.26) | |||||
| File Encoding : 65001 | |||||
| Date: 19/07/2023 10:37:00 | |||||
| */ | |||||
| SET NAMES utf8mb4; | |||||
| SET FOREIGN_KEY_CHECKS = 0; | |||||
| -- ---------------------------- | |||||
| -- Table structure for wx_c_voice | |||||
| -- ---------------------------- | |||||
| DROP TABLE IF EXISTS `wx_c_voice`; | |||||
| CREATE TABLE `wx_c_voice` ( | |||||
| `id` int NOT NULL COMMENT '声纹id', | |||||
| `localel_id` int NULL DEFAULT NULL COMMENT '地区id', | |||||
| `voice_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '声纹名称', | |||||
| `voice_display_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '声纹显示名称', | |||||
| `gender` int NULL DEFAULT NULL COMMENT '男1女0', | |||||
| `class` int NULL DEFAULT NULL COMMENT '共享0定制1', | |||||
| PRIMARY KEY (`id`) USING BTREE | |||||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; | |||||
| SET FOREIGN_KEY_CHECKS = 1; | |||||
| @@ -0,0 +1,31 @@ | |||||
| /* | |||||
| Navicat Premium Data Transfer | |||||
| Source Server : photo | |||||
| Source Server Type : MySQL | |||||
| Source Server Version : 80026 (8.0.26) | |||||
| Source Host : 182.92.151.30:3306 | |||||
| Source Schema : mallink_suimang_test | |||||
| Target Server Type : MySQL | |||||
| Target Server Version : 80026 (8.0.26) | |||||
| File Encoding : 65001 | |||||
| Date: 19/07/2023 10:37:08 | |||||
| */ | |||||
| SET NAMES utf8mb4; | |||||
| SET FOREIGN_KEY_CHECKS = 0; | |||||
| -- ---------------------------- | |||||
| -- Table structure for wx_c_voice_local | |||||
| -- ---------------------------- | |||||
| DROP TABLE IF EXISTS `wx_c_voice_local`; | |||||
| CREATE TABLE `wx_c_voice_local` ( | |||||
| `id` int NOT NULL COMMENT '地区id', | |||||
| `local_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '地区名称', | |||||
| `local_display_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '地区名称显示', | |||||
| PRIMARY KEY (`id`) USING BTREE | |||||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; | |||||
| SET FOREIGN_KEY_CHECKS = 1; | |||||
| @@ -0,0 +1,33 @@ | |||||
| /* | |||||
| Navicat Premium Data Transfer | |||||
| Source Server : photo | |||||
| Source Server Type : MySQL | |||||
| Source Server Version : 80026 (8.0.26) | |||||
| Source Host : 182.92.151.30:3306 | |||||
| Source Schema : mallink_suimang_test | |||||
| Target Server Type : MySQL | |||||
| Target Server Version : 80026 (8.0.26) | |||||
| File Encoding : 65001 | |||||
| Date: 19/07/2023 10:37:19 | |||||
| */ | |||||
| SET NAMES utf8mb4; | |||||
| SET FOREIGN_KEY_CHECKS = 0; | |||||
| -- ---------------------------- | |||||
| -- Table structure for wx_c_voice_style | |||||
| -- ---------------------------- | |||||
| DROP TABLE IF EXISTS `wx_c_voice_style`; | |||||
| CREATE TABLE `wx_c_voice_style` ( | |||||
| `id` int NOT NULL COMMENT '风格', | |||||
| `voice_id` int NULL DEFAULT NULL COMMENT '声纹id', | |||||
| `style_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '风格名称', | |||||
| `style_display_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '风格显示名称', | |||||
| `style_demo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '样例视频', | |||||
| PRIMARY KEY (`id`) USING BTREE | |||||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; | |||||
| SET FOREIGN_KEY_CHECKS = 1; | |||||
| @@ -0,0 +1,3 @@ | |||||
| ALTER TABLE `mallink_suimang_test`.`photo_speak_video` | |||||
| ADD COLUMN `subtitle_enabled` smallint(1) COMMENT '字幕开关' AFTER `person_photo_url`, | |||||
| ADD COLUMN `subtitle_params` json COMMENT '字幕参数' AFTER `subtitle_enabled`; | |||||
| @@ -168,5 +168,7 @@ | |||||
| </configuration> | </configuration> | ||||
| </plugin> | </plugin> | ||||
| </plugins> | </plugins> | ||||
| </build> | </build> | ||||
| </project> | </project> | ||||
| @@ -35,8 +35,7 @@ import java.io.OutputStream; | |||||
| import java.net.URL; | import java.net.URL; | ||||
| import java.net.URLEncoder; | import java.net.URLEncoder; | ||||
| import java.nio.charset.StandardCharsets; | import java.nio.charset.StandardCharsets; | ||||
| import java.util.Date; | |||||
| import java.util.List; | |||||
| import java.util.*; | |||||
| @RestController | @RestController | ||||
| @@ -178,27 +177,22 @@ public class PhotoSpeakVideoController extends BaseController { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"视频已生成完成"); | return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"视频已生成完成"); | ||||
| } | } | ||||
| PhotoSpeakVideo videoUpd = new PhotoSpeakVideo(); | |||||
| videoUpd.setId(record.getId()); | |||||
| // PhotoSpeakVideo videoUpd = new PhotoSpeakVideo(); | |||||
| // videoUpd.setId(record.getId()); | |||||
| if (mouldVideo.getPersonPhotoId() == null) { | if (mouldVideo.getPersonPhotoId() == null) { | ||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"未查询到人物照片"); | return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"未查询到人物照片"); | ||||
| } | } | ||||
| if(StringUtils.isBlank(mouldVideo.getPersonPhotoUrl())){ | if(StringUtils.isBlank(mouldVideo.getPersonPhotoUrl())){ | ||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"未查询到人物照片地址"); | return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"未查询到人物照片地址"); | ||||
| } | } | ||||
| videoUpd.setPersonPhotoId(mouldVideo.getPersonPhotoId()); | |||||
| videoUpd.setPersonPhotoUrl(mouldVideo.getPersonPhotoUrl()); | |||||
| Integer voiceFrom = mouldVideo.getVoiceFrom(); | Integer voiceFrom = mouldVideo.getVoiceFrom(); | ||||
| videoUpd.setVoiceFrom(voiceFrom); | |||||
| if(EnumVoiceFrom.FROM_MOULD.getCode().equals(voiceFrom)){ | if(EnumVoiceFrom.FROM_MOULD.getCode().equals(voiceFrom)){ | ||||
| String voiceMouldSmId = null; | String voiceMouldSmId = null; | ||||
| try{ | try{ | ||||
| JSONObject personMouldObject = JSONObject.parseObject(mouldVideo.getVoiceMouldSm()); | JSONObject personMouldObject = JSONObject.parseObject(mouldVideo.getVoiceMouldSm()); | ||||
| voiceMouldSmId = personMouldObject.getString("mouldSmId"); | voiceMouldSmId = personMouldObject.getString("mouldSmId"); | ||||
| videoUpd.setVoiceMouldSm(voiceMouldSmId); | |||||
| videoUpd.setPaperwork(mouldVideo.getPaperwork()); | |||||
| videoUpd.setVoiceMouldSm(mouldVideo.getVoiceMouldSm()); | |||||
| }catch(Exception e){ | }catch(Exception e){ | ||||
| logger.info(e.getMessage()); | logger.info(e.getMessage()); | ||||
| } | } | ||||
| @@ -220,7 +214,7 @@ public class PhotoSpeakVideoController extends BaseController { | |||||
| if(StringUtils.isBlank(voiceMaterialUrl)){ | if(StringUtils.isBlank(voiceMaterialUrl)){ | ||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"未找到上传声音文件"); | return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"未找到上传声音文件"); | ||||
| } | } | ||||
| videoUpd.setVoiceMaterialUrl(voiceMaterialUrl); | |||||
| mouldVideo.setVoiceMaterialUrl(voiceMaterialUrl); | |||||
| // videoUpd.setVideoTime(String.valueOf(voiceMaterial.getTime())); | // videoUpd.setVideoTime(String.valueOf(voiceMaterial.getTime())); | ||||
| } else if (EnumVoiceFrom.MUSIC.getCode().equals(voiceFrom)) { | } else if (EnumVoiceFrom.MUSIC.getCode().equals(voiceFrom)) { | ||||
| Long musicId = mouldVideo.getMusicId(); | Long musicId = mouldVideo.getMusicId(); | ||||
| @@ -234,7 +228,7 @@ public class PhotoSpeakVideoController extends BaseController { | |||||
| if(musicInfo.getTime() == null){ | if(musicInfo.getTime() == null){ | ||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"音乐时长为空"); | return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"音乐时长为空"); | ||||
| } | } | ||||
| videoUpd.setVoiceMaterialUrl(musicInfo.getUrl()); | |||||
| mouldVideo.setVoiceMaterialUrl(musicInfo.getUrl()); | |||||
| // videoUpd.setVideoTime(String.valueOf(musicInfo.getTime())); | // videoUpd.setVideoTime(String.valueOf(musicInfo.getTime())); | ||||
| } else { | } else { | ||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"声音数据异常"); | return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"声音数据异常"); | ||||
| @@ -244,9 +238,10 @@ public class PhotoSpeakVideoController extends BaseController { | |||||
| mouldVideoUpd.setVideoStatus(EnumVideoStatus.ing.getCode()); | mouldVideoUpd.setVideoStatus(EnumVideoStatus.ing.getCode()); | ||||
| mouldVideoUpd.setVideoMsg(""); | mouldVideoUpd.setVideoMsg(""); | ||||
| mouldVideoUpd.setCreateVideoDate(new Date()); | mouldVideoUpd.setCreateVideoDate(new Date()); | ||||
| photoSpeakVideoService.saveOrUpdate(mouldVideoUpd); | photoSpeakVideoService.saveOrUpdate(mouldVideoUpd); | ||||
| photoSpeakVideoService.createVideo(videoUpd); | |||||
| photoSpeakVideoService.createVideo(mouldVideo); | |||||
| return new ResultData(); | return new ResultData(); | ||||
| } | } | ||||
| @@ -1,11 +1,18 @@ | |||||
| package com.iformall.controller; | package com.iformall.controller; | ||||
| import com.alibaba.fastjson.JSONArray; | |||||
| import com.alibaba.fastjson.JSONObject; | import com.alibaba.fastjson.JSONObject; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | |||||
| import com.google.gson.JsonObject; | |||||
| import com.iformall.annotation.AuthIgnore; | |||||
| import com.iformall.common.ErrorCode; | import com.iformall.common.ErrorCode; | ||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.po.WxCVoiceTable; | |||||
| import com.iformall.domain.po.sm.PhotoSpeakVideo; | import com.iformall.domain.po.sm.PhotoSpeakVideo; | ||||
| import com.iformall.domain.po.sm.PreviewParam; | import com.iformall.domain.po.sm.PreviewParam; | ||||
| import com.iformall.enums.EnumVideoStatus; | import com.iformall.enums.EnumVideoStatus; | ||||
| import com.iformall.service.WxCVoiceService; | |||||
| import com.iformall.service.sm.PhotoSpeakVideoService; | import com.iformall.service.sm.PhotoSpeakVideoService; | ||||
| import com.iformall.service.sm.PersonPhotoService; | import com.iformall.service.sm.PersonPhotoService; | ||||
| import com.iformall.service.sm.VoiceInfoService; | import com.iformall.service.sm.VoiceInfoService; | ||||
| @@ -21,7 +28,11 @@ import org.springframework.util.ObjectUtils; | |||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| import org.springframework.web.multipart.MultipartFile; | import org.springframework.web.multipart.MultipartFile; | ||||
| import java.io.*; | |||||
| import java.net.HttpURLConnection; | |||||
| import java.net.URL; | |||||
| import java.util.Date; | import java.util.Date; | ||||
| import java.util.Map; | |||||
| /** | /** | ||||
| * 对外开放的 API 接口 | * 对外开放的 API 接口 | ||||
| @@ -38,6 +49,8 @@ public class SDKController extends BaseController { | |||||
| private VoiceInfoService voiceInfoService; | private VoiceInfoService voiceInfoService; | ||||
| @Autowired | @Autowired | ||||
| private PhotoSpeakVideoService photoSpeakVideoService; | private PhotoSpeakVideoService photoSpeakVideoService; | ||||
| @Autowired | |||||
| private WxCVoiceService wxCVoiceService; | |||||
| @ApiOperation("图片质量审核接口") | @ApiOperation("图片质量审核接口") | ||||
| @PostMapping("checkPhoto") | @PostMapping("checkPhoto") | ||||
| @@ -103,4 +116,89 @@ public class SDKController extends BaseController { | |||||
| photoSpeakVideoService.createVideo(mouldVideo); | photoSpeakVideoService.createVideo(mouldVideo); | ||||
| return new ResultData(); | return new ResultData(); | ||||
| } | } | ||||
| /** | |||||
| * 生成音频文件 | |||||
| */ | |||||
| @AuthIgnore | |||||
| @PostMapping("/audiotts") | |||||
| @ApiOperation(value = "视频模板列表", notes = "{\"username\",\"string\",\"voicename\",\"string\",\"stylename\",\"string\",\"speed\",\"int\",\"text\",\"string\"}") | |||||
| public String audioList(@RequestBody Map<String, String> params) { | |||||
| String username = params.get("username"); | |||||
| String voiceName = params.get("voicename"); | |||||
| String styleName = params.get("stylename"); | |||||
| Integer speed = Integer.valueOf(params.get("speed")); | |||||
| String text = params.get("text"); | |||||
| try { | |||||
| // 构建请求参数JSON对象 | |||||
| JSONObject jsonParams = new JSONObject(); | |||||
| jsonParams.put("username", username); | |||||
| jsonParams.put("voicename", voiceName); | |||||
| jsonParams.put("stylename", styleName); | |||||
| jsonParams.put("speed", speed); | |||||
| jsonParams.put("text", text); | |||||
| //请求url | |||||
| String requestUrl = ""; | |||||
| // 创建URL对象 | |||||
| URL url = new URL(requestUrl); | |||||
| HttpURLConnection connection = (HttpURLConnection) url.openConnection(); | |||||
| // 设置请求方法 | |||||
| connection.setRequestMethod("POST"); | |||||
| // 设置请求头 | |||||
| connection.setRequestProperty("Content-Type", "application/json"); | |||||
| connection.setRequestProperty("Accept", "application/json"); | |||||
| // 允许输出请求内容 | |||||
| connection.setDoOutput(true); | |||||
| // 将参数写入请求体 | |||||
| OutputStream outputStream = connection.getOutputStream(); | |||||
| outputStream.write(jsonParams.toString().getBytes()); | |||||
| outputStream.flush(); | |||||
| outputStream.close(); | |||||
| // 发送请求并获取响应 | |||||
| int responseCode = connection.getResponseCode(); | |||||
| // 读取响应内容 | |||||
| BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); | |||||
| StringBuilder response = new StringBuilder(); | |||||
| String line; | |||||
| while ((line = reader.readLine()) != null) { | |||||
| response.append(line); | |||||
| } | |||||
| reader.close(); | |||||
| // 处理响应结果 | |||||
| if (responseCode == HttpURLConnection.HTTP_OK) { | |||||
| // 解析响应内容 | |||||
| JSONObject jsonResponse = new JSONObject(Boolean.parseBoolean(response.toString())); | |||||
| // 获取ttsurl生成的音频文件链接 | |||||
| String ttsUrl = jsonResponse.getString("ttsurl"); | |||||
| System.out.println("音频文件链接: " + ttsUrl); | |||||
| return ttsUrl; | |||||
| } else { | |||||
| System.out.println("请求失败,错误代码: " + responseCode); | |||||
| } | |||||
| // 断开连接 | |||||
| connection.disconnect(); | |||||
| } catch (Exception e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| return null; | |||||
| } | |||||
| } | } | ||||
| @@ -0,0 +1,416 @@ | |||||
| package com.iformall.controller; | |||||
| import com.alibaba.fastjson.JSON; | |||||
| import com.alibaba.fastjson.JSONObject; | |||||
| import com.google.code.kaptcha.Producer; | |||||
| import com.iformall.annotation.AuthIgnore; | |||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.domain.po.WxCUserBasicInfo; | |||||
| import com.iformall.domain.po.WxCVideoTable; | |||||
| import com.iformall.domain.po.sm.PhotoSpeakVideo; | |||||
| import com.iformall.domain.po.sm.PreviewParam; | |||||
| import com.iformall.domain.po.sm.VoiceInfo; | |||||
| import com.iformall.domain.vo.WxCLiveLoginVo; | |||||
| import com.iformall.enums.EnumVideoStatus; | |||||
| import com.iformall.exception.MallinkException; | |||||
| import com.iformall.service.*; | |||||
| import com.iformall.service.sm.VoiceInfoService; | |||||
| import com.iformall.sm.AiPreviewParam; | |||||
| import com.iformall.utils.Constant; | |||||
| import com.iformall.utils.PasswordHelper; | |||||
| import com.iformall.utils.RedisCacheUtils; | |||||
| import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiImplicitParam; | |||||
| import io.swagger.annotations.ApiOperation; | |||||
| import lombok.SneakyThrows; | |||||
| import org.apache.commons.io.IOUtils; | |||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.beans.factory.annotation.Qualifier; | |||||
| import org.springframework.data.redis.core.RedisTemplate; | |||||
| import org.springframework.web.bind.annotation.*; | |||||
| import springfox.documentation.spring.web.json.Json; | |||||
| import javax.imageio.ImageIO; | |||||
| import javax.servlet.ServletOutputStream; | |||||
| import javax.servlet.http.HttpServletRequest; | |||||
| import javax.servlet.http.HttpServletResponse; | |||||
| import java.awt.image.BufferedImage; | |||||
| import java.io.File; | |||||
| import java.io.IOException; | |||||
| import java.io.InputStream; | |||||
| import java.io.OutputStream; | |||||
| import java.net.URL; | |||||
| import java.net.URLEncoder; | |||||
| import java.nio.charset.StandardCharsets; | |||||
| import java.util.*; | |||||
| @RestController | |||||
| @RequestMapping("/api/live") | |||||
| @Api(description = "直播相关接口") | |||||
| public class UserLiveController extends BaseController { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| private Producer producer; | |||||
| @Autowired | |||||
| @Qualifier("objectCommonRedisTemplate") | |||||
| RedisTemplate<String, Object> redisTemplate; | |||||
| @Autowired | |||||
| private WxCUserBasicInfoService wxCUserBasicInfoService; | |||||
| @Autowired | |||||
| private WxCLiveUserBasicInfoService wxCLiveUserBasicInfoService; | |||||
| @Autowired | |||||
| private WxCVideoService wxCVideoService; | |||||
| @Autowired | |||||
| private WxCVoiceService wxCVoiceService; | |||||
| @Autowired | |||||
| private WxCUserAuthorityService wxCUserAuthorityService; | |||||
| @Autowired | |||||
| private VoiceInfoService voiceInfoService; | |||||
| @AuthIgnore | |||||
| @PostMapping("/login") | |||||
| @ApiOperation(value = "用户登录", notes = "{\"username\":\"string\",\"password\":\"string\",\"code\":\"string\",\"status\":\"int\"}") | |||||
| public Map<String,Object> login(@RequestBody Map<String, String> map, HttpServletResponse response) { | |||||
| Map<String,Object> wxCLiveLoginVos = new HashMap<>(); | |||||
| String ipAddr = getIpAddr(); | |||||
| logger.debug("[" + ipAddr + "] WxUserGrantController::login"); | |||||
| String phone = map.get("username"); | |||||
| String password = map.get("password"); | |||||
| if (StringUtils.isBlank(phone) || StringUtils.isBlank(password)) { | |||||
| HashMap<Object, Object> status = new HashMap<>(); | |||||
| status.put("code",ErrorCode.SYS_PARAMETER_ERROR.getCode()); | |||||
| status.put("message","手机号或密码为空"); | |||||
| wxCLiveLoginVos.put("status",status); | |||||
| return wxCLiveLoginVos; | |||||
| // return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "手机号或密码为空"); | |||||
| } | |||||
| WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), phone); | |||||
| if (basicInfo == null) { | |||||
| HashMap<Object, Object> status = new HashMap<>(); | |||||
| status.put("code",ErrorCode.USER_IS_EMPTY); | |||||
| status.put("message","用户不存在"); | |||||
| wxCLiveLoginVos.put("status",status); | |||||
| return wxCLiveLoginVos; | |||||
| // return new ResultData(ErrorCode.USER_IS_EMPTY); | |||||
| } | |||||
| String encryptPassword = new PasswordHelper().encryptPassword(password); | |||||
| if (!encryptPassword.equals(basicInfo.getPassword())) { | |||||
| HashMap<Object, Object> status = new HashMap<>(); | |||||
| status.put("code",ErrorCode.USER_PASSWD_ERR.getCode()); | |||||
| status.put("message","手机号或密码错误"); | |||||
| wxCLiveLoginVos.put("status",status); | |||||
| return wxCLiveLoginVos; | |||||
| // return new ResultData(ErrorCode.USER_PASSWD_ERR.getCode(), "手机号或密码错误"); | |||||
| } | |||||
| int statu = Integer.parseInt(map.get("status")); | |||||
| if (statu == 0) { | |||||
| WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(basicInfo.getId()); | |||||
| if (basicLiveInfo.getCode() != null && !map.get("code").equals(basicLiveInfo.getCode())) { | |||||
| HashMap<Object, Object> status = new HashMap<>(); | |||||
| status.put("code",ErrorCode.USER_ALREADY_LOGIN.getCode()); | |||||
| status.put("message","用户已在其他设备登录"); | |||||
| wxCLiveLoginVos.put("status",status); | |||||
| return wxCLiveLoginVos; | |||||
| // return new ResultData(ErrorCode.USER_ALREADY_LOGIN.getCode(), "用户已在其他设备登录"); | |||||
| } | |||||
| if (basicLiveInfo.getCode() == null) { | |||||
| wxCLiveUserBasicInfoService.updateCode(basicInfo.getId(), map.get("code")); | |||||
| } | |||||
| } | |||||
| if (statu == -1) { | |||||
| wxCLiveUserBasicInfoService.updateCode(basicInfo.getId(), null); | |||||
| basicInfo.setStatus(-2); | |||||
| HashMap<Object, Object> status = new HashMap<>(); | |||||
| status.put("code",ErrorCode.USER_CANCEL_MCODE.getCode()); | |||||
| status.put("message","设备已注销"); | |||||
| wxCLiveLoginVos.put("status",status); | |||||
| return wxCLiveLoginVos; | |||||
| // return new ResultData(ErrorCode.USER_CANCEL_MCODE.getCode(), "设备已注销"); | |||||
| } | |||||
| wxCUserBasicInfoService.handleLoginUser(basicInfo); | |||||
| WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(basicInfo.getId()); | |||||
| WxCLiveLoginVo wxCLiveLoginVo = new WxCLiveLoginVo(); | |||||
| wxCLiveLoginVo.setCode(Integer.parseInt(map.get("code"))); | |||||
| //wxCLiveLoginVo.setVersion(basicLiveInfo.getVersion()); | |||||
| wxCLiveLoginVo.setUsername(map.get("username")); | |||||
| //wxCLiveLoginVo.setStatus(0); | |||||
| //wxCLiveLoginVo.setCurrent_time(new Date(System.currentTimeMillis() / 1000)); | |||||
| // wxCLiveLoginVo.setExpire_time(basicLiveInfo.getExpireTime().getTime() / 1000); | |||||
| //生成一个token | |||||
| String token = UUID.randomUUID().toString().replace("-",""); | |||||
| //将token和用户信息绑定放到redis redis--key:user:info:token value:用户信息 | |||||
| redisTemplate.opsForValue().set("user:login"+token,JSON.toJSONString(wxCLiveLoginVo)); | |||||
| //返回给前端 | |||||
| wxCLiveLoginVo.setToken(token); | |||||
| Map<String, Object> info = new HashMap(); | |||||
| Map<String, Object> data = new HashMap(); | |||||
| Map<Object, Object> status = new HashMap<>(); | |||||
| status.put("code",1000); | |||||
| status.put("message","success"); | |||||
| data.put("status",0); | |||||
| data.put("version",basicLiveInfo.getVersion()); | |||||
| data.put("current_time",new Date(System.currentTimeMillis() / 1000)); | |||||
| data.put("expire_time",basicLiveInfo.getExpireTime().getTime() / 1000); | |||||
| info.put("log_id", basicInfo.getId()); | |||||
| info.put("server_type","user login"); | |||||
| info.put("username", basicInfo.getPhone()); | |||||
| wxCLiveLoginVos.put("data",data); | |||||
| wxCLiveLoginVos.put("info",info); | |||||
| wxCLiveLoginVo.setData(data); | |||||
| wxCLiveLoginVo.setInfo(info); | |||||
| wxCLiveLoginVos.put("status",status); | |||||
| wxCLiveLoginVos.put("token",token); | |||||
| System.out.println("wxCLiveLoginVo.getToken() = " + wxCLiveLoginVo.getToken()); | |||||
| return wxCLiveLoginVos; | |||||
| // return new ResultData(1000,"success",wxCLiveLoginVo); | |||||
| } | |||||
| /** | |||||
| * 视频模板列表 | |||||
| */ | |||||
| @AuthIgnore | |||||
| @PostMapping("/avatarList") | |||||
| @ApiOperation(value = "视频模板列表", notes = "{\"username\",\"string\",\"code\",\"string\"}") | |||||
| public Map<String,Object> avatarList(@RequestBody Map<String, String> params) throws Exception { | |||||
| Map<String,Object> avatarVos = new HashMap<>(); | |||||
| String ipaddress = getIpAddr(); | |||||
| logger.debug("[" + ipaddress + "] WxUserGrantController::getAvatarList"); | |||||
| String phone = params.get("username"); | |||||
| WxCUserBasicInfo infoByPhone = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), phone); | |||||
| Long id = infoByPhone.getId(); | |||||
| System.out.println("id = " + id); | |||||
| //鉴权 | |||||
| WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(id); | |||||
| if (basicLiveInfo.getCode() != null && !params.get("code").equals(basicLiveInfo.getCode())) { | |||||
| HashMap<Object, Object> status = new HashMap<>(); | |||||
| status.put("code",ErrorCode.USER_ALREADY_LOGIN.getCode()); | |||||
| status.put("message","用户已在其他设备登录"); | |||||
| avatarVos.put("status",status); | |||||
| return avatarVos; | |||||
| } | |||||
| Map<Object, Object> status = new HashMap<>(); | |||||
| status.put("code",1000); | |||||
| status.put("msg","success"); | |||||
| // long id = getMemberId(); | |||||
| // System.out.println("id = " + id); | |||||
| // WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.getById(infoByPhone.getId()); | |||||
| avatarVos.put("status",status); | |||||
| return wxCVideoService.getById(infoByPhone.getId()); | |||||
| // return new ResultData(1000,"success",wxCVideoService.getById(infoByPhone.getId())); | |||||
| } | |||||
| /** | |||||
| * 音频模板列表 | |||||
| */ | |||||
| @AuthIgnore | |||||
| @PostMapping("/audioList") | |||||
| @ApiOperation(value = "音频模板列表", notes = "{\"username\",\"string\",\"code\",\"string\"}") | |||||
| public Map<String,Object> audioList(@RequestBody Map<String, String> params) { | |||||
| Map<String,Object> resultMap = new HashMap<>(); | |||||
| String ipaddress = getIpAddr(); | |||||
| logger.debug("[" + ipaddress + "] WxUserGrantController::getAudioList"); | |||||
| String phone = params.get("username"); | |||||
| WxCUserBasicInfo infoByPhone = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), phone); | |||||
| Long id = infoByPhone.getId(); | |||||
| System.out.println("id = " + id); | |||||
| WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(id); | |||||
| if (basicLiveInfo.getCode() != null && !params.get("code").equals(basicLiveInfo.getCode())) { | |||||
| HashMap<Object, Object> status = new HashMap<>(); | |||||
| status.put("code",ErrorCode.USER_ALREADY_LOGIN.getCode()); | |||||
| status.put("message","用户已在其他设备登录"); | |||||
| resultMap.put("status",status); | |||||
| return resultMap; | |||||
| } | |||||
| // long id = getMemberId(); | |||||
| return wxCVoiceService.getById(id); | |||||
| } | |||||
| /** | |||||
| * 资源权限查询 | |||||
| */ | |||||
| @AuthIgnore | |||||
| @ApiOperation(value = "资源权限查询", notes = "{\"username\",\"string\",\"code\",\"string\",\"type\",\"int\",\"resource_id\",\"long\"}") | |||||
| @PostMapping("/author") | |||||
| public Map<String,Object> getAuthor(@RequestBody Map<String, String> params) { | |||||
| Map<String,Object> resultMap = new HashMap<>(); | |||||
| String ipaddress = getIpAddr(); | |||||
| logger.debug("[" + ipaddress + "] WxUserGrantController::getAuthor"); | |||||
| String phone = params.get("username"); | |||||
| WxCUserBasicInfo infoByPhone = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), phone); | |||||
| Long id = infoByPhone.getId(); | |||||
| System.out.println("id = " + id); | |||||
| WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(id); | |||||
| if (basicLiveInfo.getCode() != null && !params.get("code").equals(basicLiveInfo.getCode())) { | |||||
| HashMap<Object, Object> status = new HashMap<>(); | |||||
| status.put("code",ErrorCode.USER_ALREADY_LOGIN.getCode()); | |||||
| status.put("message","用户已在其他设备登录"); | |||||
| resultMap.put("status",status); | |||||
| return resultMap; | |||||
| } | |||||
| //long id = getMemberId(); | |||||
| String username = params.get("username"); | |||||
| String code = params.get("code"); | |||||
| Integer type = Integer.parseInt(params.get("type")); | |||||
| Long resourceId = Long.valueOf(params.get("resource_id")); | |||||
| return wxCUserAuthorityService.getAuthor(id, code, type, resourceId); | |||||
| } | |||||
| @AuthIgnore | |||||
| @ApiOperation(value = "tts", notes = "{\"username\",\"string\",\"gen_txt\",\"string\",\"voice_id\",\"string\",\"voice_style\",\"string\",\"speed\",\"int\"}") | |||||
| @PostMapping("/audiotts") | |||||
| public Map<String,Object> voicePreview(@RequestBody Map<String, String> params) { | |||||
| logger.debug("[" + getIpAddr() + "] UserLiveController::voicePreview"); | |||||
| String phone = params.get("username"); | |||||
| WxCUserBasicInfo infoByPhone = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), phone); | |||||
| Long id = infoByPhone.getId(); | |||||
| AiPreviewParam param = new AiPreviewParam(); | |||||
| if (params.get("voice_id") == null) { | |||||
| Map<String,Object> status = new HashMap<>(); | |||||
| status.put("code",ErrorCode.SYS_SERVER_ERROR.getCode()); | |||||
| status.put("msg","音色ID不能为空"); | |||||
| return status; | |||||
| // return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), "音色ID不能为空"); | |||||
| } | |||||
| if (StringUtils.isBlank(params.get("gen_txt"))) { | |||||
| Map<String,Object> status = new HashMap<>(); | |||||
| status.put("code",ErrorCode.SYS_SERVER_ERROR.getCode()); | |||||
| status.put("msg","需要生成的文字不能为空"); | |||||
| return status; | |||||
| //return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), "需要生成的文字不能为空"); | |||||
| }if (Integer.parseInt(params.get("speed"))==-1){ | |||||
| param.setSpeed(0); | |||||
| } | |||||
| param.setSpeed(Integer.parseInt(params.get("speed"))); | |||||
| param.setVoice_id(params.get("voice_id")); | |||||
| param.setVoice_style(params.get("voice_style")); | |||||
| param.setGen_txt(params.get("gen_txt")); | |||||
| Map<String, Object> resultMap = wxCVoiceService.voicePreview(param); | |||||
| Map<String,Object> info = new HashMap<>(); | |||||
| info.put("log_id",id); | |||||
| info.put("server_type","audio tts"); | |||||
| resultMap.put("info",info); | |||||
| return resultMap; | |||||
| } | |||||
| @AuthIgnore | |||||
| @SneakyThrows | |||||
| @ApiOperation(value = "tts", notes = "{\"username\",\"string\",\"gen_txt\",\"string\",\"voice_id\",\"string\",\"voice_style\",\"string\",\"speed\",\"int\"}") | |||||
| @GetMapping("exportVideo") | |||||
| public void exportVideo(@RequestBody Map<String, String> params , HttpServletRequest request, HttpServletResponse response) { | |||||
| logger.debug("[" + getIpAddr() + "] UserLiveController::exportVideo"); | |||||
| response.reset(); | |||||
| File tmpFile = null; | |||||
| OutputStream outputStream = null; | |||||
| WxCUserBasicInfo infoByPhone = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), params.get("username")); | |||||
| Long id = infoByPhone.getId(); | |||||
| try { | |||||
| outputStream = response.getOutputStream(); | |||||
| } catch (IOException e) { | |||||
| throw new MallinkException(ErrorCode.SYS_SERVER_ERROR); | |||||
| } | |||||
| try{ | |||||
| if(id == null){ | |||||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| } | |||||
| WxCVideoTable videoTable = wxCVideoService.selectOne(id,Long.parseLong(params.get("resource_id"))); | |||||
| //获取响应的输出流 | |||||
| InputStream inputStream = new URL(videoTable.getDemo()).openStream(); | |||||
| response.setHeader("Content-Disposition", "attachment; filename=" | |||||
| + URLEncoder.encode(videoTable.getId()+".mp4", "UTF-8")); | |||||
| //解决编码问题 | |||||
| response.setCharacterEncoding("UTF-8"); | |||||
| response.setHeader("Content-Type","application/octet-stream"); | |||||
| byte[] cache = new byte[1024 * 300]; | |||||
| int flag; | |||||
| while ((flag = inputStream.read(cache))!=-1){ | |||||
| outputStream.write(cache, 0, flag); | |||||
| } | |||||
| // } | |||||
| }catch(MallinkException e){ | |||||
| ResultData resultData = new ResultData(e.getErrorCode(), e.getMessage()); | |||||
| //解决编码问题 | |||||
| response.setCharacterEncoding("UTF-8"); | |||||
| response.setHeader("Content-Type","application/json"); | |||||
| outputStream.write(JSONObject.toJSONString(resultData).getBytes(StandardCharsets.UTF_8)); | |||||
| }finally { | |||||
| if (tmpFile != null) { | |||||
| tmpFile.delete(); | |||||
| } | |||||
| outputStream.flush(); | |||||
| outputStream.close(); | |||||
| } | |||||
| } | |||||
| @AuthIgnore | |||||
| @ApiOperation("选择声音选择风格") | |||||
| @GetMapping("/chooseType") | |||||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||||
| public ResultData chooseType(Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] MouldPatchController::chooseType"); | |||||
| List<VoiceInfo> voiceInfos = wxCVoiceService.chooseType(id); | |||||
| System.out.println("voiceInfos = " + voiceInfos); | |||||
| return new ResultData(wxCVoiceService.chooseType(id)); | |||||
| } | |||||
| } | |||||
| @@ -1,7 +1,10 @@ | |||||
| package com.iformall.controller; | package com.iformall.controller; | ||||
| import com.iformall.annotation.AuthIgnore; | |||||
| import com.iformall.common.ErrorCode; | import com.iformall.common.ErrorCode; | ||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.po.WxCVideoTable; | |||||
| import com.iformall.service.WxCVideoService; | |||||
| import com.iformall.video.VideoFactory; | import com.iformall.video.VideoFactory; | ||||
| import com.iformall.video.entity.VideUploadResult; | import com.iformall.video.entity.VideUploadResult; | ||||
| import io.swagger.annotations.ApiImplicitParam; | import io.swagger.annotations.ApiImplicitParam; | ||||
| @@ -20,16 +23,19 @@ import java.util.Map; | |||||
| * @author gongbiao | * @author gongbiao | ||||
| */ | */ | ||||
| @RestController | @RestController | ||||
| @RequestMapping("api/video") | |||||
| @RequestMapping("/api/video") | |||||
| public class VideoController extends BaseController { | public class VideoController extends BaseController { | ||||
| private Logger logger = LoggerFactory.getLogger(this.getClass()); | private Logger logger = LoggerFactory.getLogger(this.getClass()); | ||||
| @Autowired | @Autowired | ||||
| VideoFactory videoFactory; | VideoFactory videoFactory; | ||||
| @Autowired | @Autowired | ||||
| String videoType; | String videoType; | ||||
| @Autowired | |||||
| private WxCVideoService wxCVideoService; | |||||
| /** | /** | ||||
| * 上传视频 | * 上传视频 | ||||
| * | * | ||||
| @@ -62,7 +68,7 @@ public class VideoController extends BaseController { | |||||
| return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); | return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); | ||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * 上传视频 | * 上传视频 | ||||
| * | * | ||||
| @@ -83,7 +89,7 @@ public class VideoController extends BaseController { | |||||
| return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); | return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); | ||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * 上传视频 | * 上传视频 | ||||
| * | * | ||||
| @@ -119,4 +125,6 @@ public class VideoController extends BaseController { | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -12,6 +12,7 @@ import com.iformall.domain.po.sm.VoiceMould; | |||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.language.LanguageDetect; | import com.iformall.language.LanguageDetect; | ||||
| import com.iformall.mapper.VoiceLanguageMapper; | import com.iformall.mapper.VoiceLanguageMapper; | ||||
| import com.iformall.service.WxCVoiceService; | |||||
| import com.iformall.service.sm.*; | import com.iformall.service.sm.*; | ||||
| import com.iformall.sm.AiPreviewParam; | import com.iformall.sm.AiPreviewParam; | ||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| @@ -27,6 +28,7 @@ import org.springframework.web.bind.annotation.*; | |||||
| import java.util.HashMap; | import java.util.HashMap; | ||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | |||||
| @RestController | @RestController | ||||
| @@ -50,6 +52,9 @@ public class VoiceMouldController extends BaseController { | |||||
| @Autowired | @Autowired | ||||
| private VoiceLanguageService voiceLanguageService; | private VoiceLanguageService voiceLanguageService; | ||||
| @Autowired | |||||
| private WxCVoiceService wxCVoiceService; | |||||
| @AuthIgnore | @AuthIgnore | ||||
| @ApiOperation("获取语种") | @ApiOperation("获取语种") | ||||
| @GetMapping("getLanguages") | @GetMapping("getLanguages") | ||||
| @@ -84,15 +89,15 @@ public class VoiceMouldController extends BaseController { | |||||
| public ResultData findById(Long id) { | public ResultData findById(Long id) { | ||||
| logger.debug("[" + getIpAddr() + "] MouldPatchController::findById"); | logger.debug("[" + getIpAddr() + "] MouldPatchController::findById"); | ||||
| VoiceMould voiceMould = voiceMouldService.getDetailById(id); | VoiceMould voiceMould = voiceMouldService.getDetailById(id); | ||||
| if(voiceMould != null | |||||
| && voiceMould.getParentId() == 0l && voiceMould.getCountSub() > 0){ | |||||
| if (voiceMould != null | |||||
| && voiceMould.getParentId() == 0l && voiceMould.getCountSub() > 0) { | |||||
| VoiceMould voiceQ = new VoiceMould(); | VoiceMould voiceQ = new VoiceMould(); | ||||
| voiceQ.setParentId(voiceMould.getId()); | voiceQ.setParentId(voiceMould.getId()); | ||||
| voiceQ.setVoiceType(EnumVoiceType.speak.getCode());//目前只查询说话风格 | voiceQ.setVoiceType(EnumVoiceType.speak.getCode());//目前只查询说话风格 | ||||
| voiceQ.setStatus(EnumaMouldPatchStatus.put_on.getCode()); | voiceQ.setStatus(EnumaMouldPatchStatus.put_on.getCode()); | ||||
| voiceQ.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); | voiceQ.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); | ||||
| List<VoiceMould> sublist = voiceMouldService.getClist(voiceQ); | List<VoiceMould> sublist = voiceMouldService.getClist(voiceQ); | ||||
| if(sublist != null && !sublist.isEmpty()){ | |||||
| if (sublist != null && !sublist.isEmpty()) { | |||||
| voiceMould.setSubVoiceMould(sublist); | voiceMould.setSubVoiceMould(sublist); | ||||
| } | } | ||||
| } | } | ||||
| @@ -110,20 +115,20 @@ public class VoiceMouldController extends BaseController { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | ||||
| } | } | ||||
| Integer sex = null; | Integer sex = null; | ||||
| if(record.getPersonMouldId() != null){ | |||||
| if (record.getPersonMouldId() != null) { | |||||
| PersonMould personMode = personMouldService.getDetailById(record.getPersonMouldId()); | PersonMould personMode = personMouldService.getDetailById(record.getPersonMouldId()); | ||||
| if(personMode == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"选择模板不存在"); | |||||
| if (personMode == null) { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "选择模板不存在"); | |||||
| } | } | ||||
| sex = personMode.getSex(); | sex = personMode.getSex(); | ||||
| } | } | ||||
| String detect = LanguageDetect.detect(record.getPaperwork()); | String detect = LanguageDetect.detect(record.getPaperwork()); | ||||
| if(StringUtils.isBlank(detect)){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"语种识别失败"); | |||||
| if (StringUtils.isBlank(detect)) { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "语种识别失败"); | |||||
| } | } | ||||
| EnumLanguages anEnum = EnumLanguages.getEnum(detect); | EnumLanguages anEnum = EnumLanguages.getEnum(detect); | ||||
| if(anEnum == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"暂不支持该语种"); | |||||
| if (anEnum == null) { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "暂不支持该语种"); | |||||
| } | } | ||||
| VoiceMould voiceMould = new VoiceMould(); | VoiceMould voiceMould = new VoiceMould(); | ||||
| @@ -163,4 +168,6 @@ public class VoiceMouldController extends BaseController { | |||||
| logger.debug("[" + getIpAddr() + "] MouldPatchController::voicePreview"); | logger.debug("[" + getIpAddr() + "] MouldPatchController::voicePreview"); | ||||
| return new ResultData(voiceInfoService.voicePreview(aiPreviewParam)); | return new ResultData(voiceInfoService.voicePreview(aiPreviewParam)); | ||||
| } | } | ||||
| } | } | ||||
| @@ -36,6 +36,7 @@ import javax.servlet.ServletOutputStream; | |||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||
| import java.awt.image.BufferedImage; | import java.awt.image.BufferedImage; | ||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.util.Date; | |||||
| import java.util.HashMap; | import java.util.HashMap; | ||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | import java.util.Map; | ||||
| @@ -98,6 +99,9 @@ public class WxUserGrantController extends BaseController { | |||||
| @Autowired | @Autowired | ||||
| private UserConsumptionPackageService userConsumptionPackageService; | private UserConsumptionPackageService userConsumptionPackageService; | ||||
| @Autowired | |||||
| private WxCUserAuthorityService wxCUserAuthorityService; | |||||
| @AuthIgnore | @AuthIgnore | ||||
| @ApiOperation("验证码") | @ApiOperation("验证码") | ||||
| @@ -128,6 +132,8 @@ public class WxUserGrantController extends BaseController { | |||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * 用户登录 | * 用户登录 | ||||
| * | * | ||||
| @@ -289,11 +295,17 @@ public class WxUserGrantController extends BaseController { | |||||
| return wxMsgValidationcodeService.sendvalidationcode(wxMsgValidationcode); | return wxMsgValidationcodeService.sendvalidationcode(wxMsgValidationcode); | ||||
| } | } | ||||
| /** | |||||
| * 需要效验用户及图片验证码 | |||||
| * @param phone | |||||
| * @return | |||||
| */ | |||||
| /** | |||||
| * 需要效验用户及图片验证码 | |||||
| * @param phone | |||||
| * @return | |||||
| */ | |||||
| @AuthIgnore | @AuthIgnore | ||||
| @ApiOperation("发送修改密码验证码") | @ApiOperation("发送修改密码验证码") | ||||
| @GetMapping("sendPhoneCode") | @GetMapping("sendPhoneCode") | ||||
| @@ -189,7 +189,7 @@ logging: | |||||
| path: ./logs/c | path: ./logs/c | ||||
| photo: | photo: | ||||
| url: http://111.198.0.15:22299 | |||||
| url: http://nas.pucao.cn:2002 | |||||
| hy_url: http://111.198.0.15:22288 | hy_url: http://111.198.0.15:22288 | ||||
| talk: http://111.198.0.15:22266 | talk: http://111.198.0.15:22266 | ||||
| callbackUrl: https://phototest.metavatar.cc/C | callbackUrl: https://phototest.metavatar.cc/C | ||||
| @@ -192,7 +192,7 @@ logging: | |||||
| path: ./logs/s | path: ./logs/s | ||||
| photo: | photo: | ||||
| url: http://111.198.0.15:22299 | |||||
| url: http://nas.pucao.cn:2002 | |||||
| hy_url: http://111.198.0.15:22288 | hy_url: http://111.198.0.15:22288 | ||||
| talk: http://111.198.0.15:22266 | talk: http://111.198.0.15:22266 | ||||
| callbackUrl: https://phototest.metavatar.cc/C | callbackUrl: https://phototest.metavatar.cc/C | ||||
| @@ -97,6 +97,8 @@ public enum ErrorCode{ | |||||
| USER_NAME_IS_FOUND(2008,"用户名已存在"), | USER_NAME_IS_FOUND(2008,"用户名已存在"), | ||||
| USER_PHONE_IS_FOUND(2009,"手机号已存在"), | USER_PHONE_IS_FOUND(2009,"手机号已存在"), | ||||
| MEMBER_IS_LOCKED(2010, "当前会员已被锁定"), | MEMBER_IS_LOCKED(2010, "当前会员已被锁定"), | ||||
| USER_ALREADY_LOGIN(2011,"用户已在其他端登入"), | |||||
| USER_CANCEL_MCODE(2012,"用户已在其他端登入"), | |||||
| USER_BIRTHDATE_AFTER(2109, "出生日期大于当前日期"), | USER_BIRTHDATE_AFTER(2109, "出生日期大于当前日期"), | ||||
| USER_APPINFO_NOT_EXIST(2110,"当前登录用户APP为空"), | USER_APPINFO_NOT_EXIST(2110,"当前登录用户APP为空"), | ||||
| USER_APPINFO_NOFUND_PAYACCOUNT(2111,"当前app找不到payAccount"), | USER_APPINFO_NOFUND_PAYACCOUNT(2111,"当前app找不到payAccount"), | ||||
| @@ -0,0 +1,28 @@ | |||||
| package com.iformall.domain.po; | |||||
| import com.baomidou.mybatisplus.annotation.TableField; | |||||
| import com.baomidou.mybatisplus.annotation.TableName; | |||||
| import lombok.Data; | |||||
| import lombok.ToString; | |||||
| @TableName(value = "wx_c_voice") | |||||
| @Data | |||||
| @ToString(callSuper = true) | |||||
| public class WxCUserAuthority { | |||||
| @TableField(exist = false) | |||||
| private String userName; | |||||
| @TableField(exist = false) //数字人 0 声纹 1 | |||||
| private int type; | |||||
| @TableField(exist = false) | |||||
| private String resourceId; | |||||
| //共享 0 定制 1 | |||||
| private int classType; | |||||
| @TableField(exist = false) | |||||
| private String currentTime; | |||||
| @TableField(exist = false) | |||||
| private String expireTime; | |||||
| } | |||||
| @@ -64,6 +64,10 @@ public class WxCUserBasicInfo extends TenantEntityWithoutFinalTenantId { | |||||
| @io.swagger.annotations.ApiModelProperty(value="密码",name="password") | @io.swagger.annotations.ApiModelProperty(value="密码",name="password") | ||||
| private String password; | private String password; | ||||
| @io.swagger.annotations.ApiModelProperty(value="用户名") | |||||
| @TableField(exist = false) | |||||
| private String username; | |||||
| @Excel(name="微信昵称",width = 20,orderNum = "5") | @Excel(name="微信昵称",width = 20,orderNum = "5") | ||||
| @io.swagger.annotations.ApiModelProperty(value="用户昵称",name="nickName") | @io.swagger.annotations.ApiModelProperty(value="用户昵称",name="nickName") | ||||
| private String nickName; | private String nickName; | ||||
| @@ -157,14 +161,18 @@ public class WxCUserBasicInfo extends TenantEntityWithoutFinalTenantId { | |||||
| @io.swagger.annotations.ApiModelProperty(value = "状态0正常1锁定", name = "status") | @io.swagger.annotations.ApiModelProperty(value = "状态0正常1锁定", name = "status") | ||||
| private Integer status; | private Integer status; | ||||
| @TableField(exist = false) | |||||
| @io.swagger.annotations.ApiModelProperty(value = "机器码", name = "code") | |||||
| private String code; | |||||
| /*用户登录用token**/ | /*用户登录用token**/ | ||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| @io.swagger.annotations.ApiModelProperty(value="用户登录用token",name="token") | @io.swagger.annotations.ApiModelProperty(value="用户登录用token",name="token") | ||||
| protected String token; | protected String token; | ||||
| /*用户过期时间**/ | /*用户过期时间**/ | ||||
| // @io.swagger.annotations.ApiModelProperty(value="用户过期时间",name="expireTime") | |||||
| // protected Date expireTime; | |||||
| @TableField(exist = false) | |||||
| @io.swagger.annotations.ApiModelProperty(value="用户过期时间",name="expireTime") | |||||
| protected Date expireTime; | |||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| @Excel(name="标签",width = 50,orderNum = "15") | @Excel(name="标签",width = 50,orderNum = "15") | ||||
| @@ -200,10 +208,10 @@ public class WxCUserBasicInfo extends TenantEntityWithoutFinalTenantId { | |||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| private Date creditEndTime; | private Date creditEndTime; | ||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| private Integer begin; | private Integer begin; | ||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| private Integer limit; | private Integer limit; | ||||
| @@ -218,6 +226,10 @@ public class WxCUserBasicInfo extends TenantEntityWithoutFinalTenantId { | |||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| @io.swagger.annotations.ApiModelProperty(value="套餐类型(1、基础版,2、专业版,3、加强版)",name="packageType") | @io.swagger.annotations.ApiModelProperty(value="套餐类型(1、基础版,2、专业版,3、加强版)",name="packageType") | ||||
| private Integer packageType; | private Integer packageType; | ||||
| @TableField(exist = false) | |||||
| @io.swagger.annotations.ApiModelProperty(value="套餐类型(1、基础版,2、专业版,3、加强版)",name="packageType") | |||||
| private Integer version; | |||||
| public void protectInfos() { | public void protectInfos() { | ||||
| if(StringUtils.isNotBlank(this.password)) { | if(StringUtils.isNotBlank(this.password)) { | ||||
| @@ -0,0 +1,54 @@ | |||||
| package com.iformall.domain.po; | |||||
| import cn.afterturn.easypoi.excel.annotation.Excel; | |||||
| import com.baomidou.mybatisplus.annotation.TableField; | |||||
| import com.baomidou.mybatisplus.annotation.TableName; | |||||
| import com.iformall.domain.po.base.TenantEntityWithoutFinalTenantId; | |||||
| import lombok.Data; | |||||
| import lombok.EqualsAndHashCode; | |||||
| import lombok.ToString; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Date; | |||||
| @TableName(value ="wx_c_author") | |||||
| @Data | |||||
| @ToString(callSuper = true) | |||||
| @EqualsAndHashCode(callSuper = true) | |||||
| public class WxCVideoTable extends TenantEntityWithoutFinalTenantId { | |||||
| @TableField(exist = false) | |||||
| private String userName; | |||||
| @TableField(exist = false) | |||||
| private String currentTime; | |||||
| @TableField(exist = false) | |||||
| private String expireTime; | |||||
| @io.swagger.annotations.ApiModelProperty(value="数字人id",name="id") | |||||
| private int id; | |||||
| @io.swagger.annotations.ApiModelProperty(value="套餐0共享 1定制",name="class") | |||||
| private int classType; | |||||
| @io.swagger.annotations.ApiModelProperty(value="数字人名称",name="name") | |||||
| private String name; | |||||
| @io.swagger.annotations.ApiModelProperty(value="数字人封面图片链接",name="image") | |||||
| private String image; | |||||
| @io.swagger.annotations.ApiModelProperty(value="数字人样例视频链接",name="demo") | |||||
| private String demo; | |||||
| @io.swagger.annotations.ApiModelProperty(value="数字人样例视频链接",name="model") | |||||
| private String model; | |||||
| @io.swagger.annotations.ApiModelProperty(value="数字人模板预处理信息文件链接",name="preinfo") | |||||
| private String preInfo; | |||||
| @io.swagger.annotations.ApiModelProperty(value="数字人模板预处理信息文件链接",name="model_path") | |||||
| private String modelPath; | |||||
| @io.swagger.annotations.ApiModelProperty(value="数字人模板预处理信息文件链接",name="preInfo_path") | |||||
| private String preInfoPath; | |||||
| } | |||||
| @@ -0,0 +1,58 @@ | |||||
| package com.iformall.domain.po; | |||||
| import com.baomidou.mybatisplus.annotation.TableField; | |||||
| import com.baomidou.mybatisplus.annotation.TableName; | |||||
| import lombok.Data; | |||||
| import lombok.ToString; | |||||
| import java.util.ArrayList; | |||||
| import java.util.List; | |||||
| @TableName(value = "voice_info") | |||||
| @Data | |||||
| @ToString(callSuper = true) | |||||
| public class WxCVoiceTable { | |||||
| @TableField(exist = false) | |||||
| private String userName; | |||||
| @TableField(exist = false) | |||||
| private String currentTime; | |||||
| @TableField(exist = false) | |||||
| private String expireTime; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "地区名称", name = "local_name") | |||||
| private String localelName; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "地区显示名称", name = "local_display_name") | |||||
| private String localDisPlayName; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "声纹ID", name = "id") | |||||
| private int voiceId; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "声纹名称(用于调微软接口)", name = "local_name") | |||||
| private String voiceName; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "声纹展示名称", name = "display_name") | |||||
| private String voiceDisplayName; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "性别(男1 女0)", name = "sex") | |||||
| private int gender; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "声纹类型 共享:0 定制:1", name = "class") | |||||
| private int voiceType; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "声纹列表", name = "mould_sm_id") | |||||
| private String MouldSmId; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "声纹列表", name = "style_list") | |||||
| private String styleList ; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "声纹风格名称(用于微软接口)", name = "style_name") | |||||
| private String styleName; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "声纹风格展示名称", name = "style_display_name") | |||||
| private String styleDisplayName; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "声纹风格样例文件链接", name = "style_demo") | |||||
| private String styleDemo; | |||||
| } | |||||
| @@ -41,12 +41,16 @@ public class PersonMould extends TenantEntity { | |||||
| @io.swagger.annotations.ApiModelProperty(value="EnumVideoType",name="videoType") | @io.swagger.annotations.ApiModelProperty(value="EnumVideoType",name="videoType") | ||||
| private Integer videoType; | private Integer videoType; | ||||
| @io.swagger.annotations.ApiModelProperty(value="封面图",name="coverImg") | @io.swagger.annotations.ApiModelProperty(value="封面图",name="coverImg") | ||||
| private String coverImg; | private String coverImg; | ||||
| @io.swagger.annotations.ApiModelProperty(value="多封面图",name="coverPicture") | @io.swagger.annotations.ApiModelProperty(value="多封面图",name="coverPicture") | ||||
| private String coverPicture; | private String coverPicture; | ||||
| @io.swagger.annotations.ApiModelProperty(value="详情多图",name="detailPicture") | @io.swagger.annotations.ApiModelProperty(value="详情多图",name="detailPicture") | ||||
| private String detailPicture; | private String detailPicture; | ||||
| @io.swagger.annotations.ApiModelProperty(value="名称",name="title") | @io.swagger.annotations.ApiModelProperty(value="名称",name="title") | ||||
| @Excel(name="名称",width = 20,orderNum = "1") | @Excel(name="名称",width = 20,orderNum = "1") | ||||
| private String title; | private String title; | ||||
| @@ -135,5 +139,5 @@ public class PersonMould extends TenantEntity { | |||||
| } | } | ||||
| return priceStr; | return priceStr; | ||||
| } | } | ||||
| } | } | ||||
| @@ -51,6 +51,12 @@ public class PhotoSpeakVideo extends TenantEntity { | |||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| private PersonPhoto personPhoto; | private PersonPhoto personPhoto; | ||||
| @io.swagger.annotations.ApiModelProperty(value="字幕开关",name="subtitleEnabled") | |||||
| private Integer subtitleEnabled; | |||||
| @io.swagger.annotations.ApiModelProperty(value="字幕参数",name="subtitleParams") | |||||
| private String subtitleParams; | |||||
| @io.swagger.annotations.ApiModelProperty(value="EnumVoiceFrom 声音来源",name="voiceFrom") | @io.swagger.annotations.ApiModelProperty(value="EnumVoiceFrom 声音来源",name="voiceFrom") | ||||
| private Integer voiceFrom; | private Integer voiceFrom; | ||||
| @@ -147,5 +153,5 @@ public class PhotoSpeakVideo extends TenantEntity { | |||||
| private Integer videoHyStatus; | private Integer videoHyStatus; | ||||
| private Integer isHy;//是否超分(1、是,0、否) | private Integer isHy;//是否超分(1、是,0、否) | ||||
| } | } | ||||
| @@ -8,4 +8,6 @@ public class PreviewParam { | |||||
| private String voiceId; | private String voiceId; | ||||
| private String voiceStyle; | private String voiceStyle; | ||||
| private String gender; | private String gender; | ||||
| } | |||||
| private int speed; | |||||
| } | |||||
| @@ -0,0 +1,29 @@ | |||||
| package com.iformall.domain.vo; | |||||
| import io.swagger.annotations.ApiModelProperty; | |||||
| import lombok.Data; | |||||
| import java.util.Date; | |||||
| import java.util.HashMap; | |||||
| import java.util.Map; | |||||
| @Data | |||||
| public class WxCLiveLoginVo { | |||||
| private String token; //令牌 | |||||
| private String username; //令牌 | |||||
| // private int status; //用户登录状态 2设备注销,1登陆失败,0登陆成功 | |||||
| // private int version; //用户购买的软件套餐 | |||||
| // private Date current_time;//服务器当前时间 | |||||
| // private long expire_time;//套餐过期时间 | |||||
| private int code; //机器码 | |||||
| @ApiModelProperty(value = "响应") | |||||
| private Map<String,Object> data = new HashMap<>(); | |||||
| // @ApiModelProperty(value = "响应") | |||||
| //private Map<String,Object> Status = new HashMap<>(); | |||||
| @ApiModelProperty(value = "信息") | |||||
| private Map<String,Object> info = new HashMap<>(); | |||||
| } | |||||
| @@ -0,0 +1,44 @@ | |||||
| package com.iformall.enums; | |||||
| public enum EnumClassType { | |||||
| SHARE(0, "共享"), | |||||
| CUSTOMIZATION(1, "定制"), | |||||
| ; | |||||
| public static EnumClassType getEnum(Integer code) { | |||||
| for (EnumClassType value : values()) { | |||||
| if (value.getCode().equals(code)) { | |||||
| return value; | |||||
| } | |||||
| } | |||||
| return null; | |||||
| } | |||||
| private EnumClassType(Integer code, String message) { | |||||
| this.code = code; | |||||
| this.message = message; | |||||
| } | |||||
| private Integer code; | |||||
| private String message; | |||||
| public String getMessage() { | |||||
| return message; | |||||
| } | |||||
| public void setMessage(String message) { | |||||
| this.message = message; | |||||
| } | |||||
| public Integer getCode() { | |||||
| return code; | |||||
| } | |||||
| public void setCode(Integer code) { | |||||
| this.code = code; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,11 @@ | |||||
| package com.iformall.mapper; | |||||
| import com.iformall.common.CommonMapper; | |||||
| import com.iformall.domain.po.WxCUserBasicInfo; | |||||
| public interface WxCLiveUserBasicInfoMapper extends CommonMapper<WxCUserBasicInfo, String> { | |||||
| WxCUserBasicInfo selectById(Long id); | |||||
| void updateCode(Long id, String code); | |||||
| } | |||||
| @@ -0,0 +1,15 @@ | |||||
| package com.iformall.mapper; | |||||
| import com.iformall.common.CommonMapper; | |||||
| import com.iformall.domain.po.WxCUserAuthority; | |||||
| import java.util.List; | |||||
| public interface WxCUserAuthorityMapper extends CommonMapper<WxCUserAuthority, String> { | |||||
| List<WxCUserAuthority> getAuthorAvatar(Long id, int i, Long resourceId); | |||||
| List<WxCUserAuthority> getAuthorVoice(Long id, int i, Long resourceId); | |||||
| } | |||||
| @@ -65,5 +65,9 @@ public interface WxCUserBasicInfoMapper extends CommonMapper<WxCUserBasicInfo, S | |||||
| List<Long> findIdByFilter(WxCUserBasicInfoDto wxCUserBasicInfoDto); | List<Long> findIdByFilter(WxCUserBasicInfoDto wxCUserBasicInfoDto); | ||||
| long getTotalCreditAmount(@Param("tenantId")String tenantId, @Param("finalTenantId")String finalTenantId); | long getTotalCreditAmount(@Param("tenantId")String tenantId, @Param("finalTenantId")String finalTenantId); | ||||
| //WxCUserBasicInfo selectById1(Long id); | |||||
| //void updateCode(Long id, String mcode); | |||||
| } | } | ||||
| @@ -0,0 +1,16 @@ | |||||
| package com.iformall.mapper; | |||||
| import com.iformall.common.CommonMapper; | |||||
| import com.iformall.domain.po.WxCUserTags; | |||||
| import com.iformall.domain.po.WxCVideoTable; | |||||
| import org.apache.ibatis.annotations.Param; | |||||
| import java.util.List; | |||||
| public interface WxCVideoMapper extends CommonMapper<WxCVideoTable, String> { | |||||
| List<WxCVideoTable> getById(Long id); | |||||
| WxCVideoTable selectOne(Long id, long resource_id); | |||||
| } | |||||
| @@ -0,0 +1,13 @@ | |||||
| package com.iformall.mapper; | |||||
| import com.iformall.common.CommonMapper; | |||||
| import com.iformall.domain.po.WxCVideoTable; | |||||
| import com.iformall.domain.po.WxCVoiceTable; | |||||
| import java.util.List; | |||||
| public interface WxCVoiceMapper extends CommonMapper<WxCVoiceTable, String> { | |||||
| List<WxCVoiceTable> getById(Long id); | |||||
| } | |||||
| @@ -0,0 +1,9 @@ | |||||
| package com.iformall.service; | |||||
| import com.iformall.domain.po.WxCUserBasicInfo; | |||||
| public interface WxCLiveUserBasicInfoService { | |||||
| WxCUserBasicInfo getById(Long id); | |||||
| void updateCode(Long id, String code); | |||||
| } | |||||
| @@ -0,0 +1,9 @@ | |||||
| package com.iformall.service; | |||||
| import com.iformall.common.ResultData; | |||||
| import java.util.Map; | |||||
| public interface WxCUserAuthorityService { | |||||
| Map<String,Object> getAuthor(Long id, String code, Integer type, Long resourceId); | |||||
| } | |||||
| @@ -200,5 +200,10 @@ public interface WxCUserBasicInfoService { | |||||
| void sendTicketEmail(WxCUserBasicInfo basicInfo, EnumMsgModel type); | void sendTicketEmail(WxCUserBasicInfo basicInfo, EnumMsgModel type); | ||||
| void updUserInfo(WxCUserBasicInfo cUser, Long memberId); | void updUserInfo(WxCUserBasicInfo cUser, Long memberId); | ||||
| // WxCUserBasicInfo getById1(Long id); | |||||
| // void updateCode(Long id, String mcode); | |||||
| } | } | ||||
| @@ -0,0 +1,14 @@ | |||||
| package com.iformall.service; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.domain.po.WxCVideoTable; | |||||
| import java.util.Map; | |||||
| public interface WxCVideoService { | |||||
| Map<String,Object> getById(Long id) throws Exception; | |||||
| WxCVideoTable selectOne(Long id, long resource_id); | |||||
| } | |||||
| @@ -0,0 +1,16 @@ | |||||
| package com.iformall.service; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.domain.po.sm.VoiceInfo; | |||||
| import com.iformall.sm.AiPreviewParam; | |||||
| import java.util.List; | |||||
| import java.util.Map; | |||||
| public interface WxCVoiceService { | |||||
| Map<String,Object> getById(Long id); | |||||
| List<VoiceInfo> chooseType(Long id); | |||||
| Map<String,Object> voicePreview(AiPreviewParam aiPreviewParam); | |||||
| } | |||||
| @@ -0,0 +1,27 @@ | |||||
| package com.iformall.service.impl; | |||||
| import com.iformall.domain.po.WxCUserBasicInfo; | |||||
| import com.iformall.mapper.WxCLiveUserBasicInfoMapper; | |||||
| import com.iformall.service.WxCLiveUserBasicInfoService; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Service; | |||||
| @Service | |||||
| public class WxCLiveUserBasicInfoServiceImpl implements WxCLiveUserBasicInfoService { | |||||
| @Autowired | |||||
| WxCLiveUserBasicInfoMapper wxCLiveUserBasicInfoMapper; | |||||
| @Override | |||||
| public WxCUserBasicInfo getById(Long id) { | |||||
| return wxCLiveUserBasicInfoMapper.selectById(id); | |||||
| } | |||||
| @Override | |||||
| public void updateCode(Long id, String code) { | |||||
| wxCLiveUserBasicInfoMapper.updateCode(id,code); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,85 @@ | |||||
| package com.iformall.service.impl; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.domain.po.WxCUserAuthority; | |||||
| import com.iformall.enums.EnumClassType; | |||||
| import com.iformall.mapper.WxCUserAuthorityMapper; | |||||
| import com.iformall.service.WxCUserAuthorityService; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Service; | |||||
| import java.util.*; | |||||
| @Service | |||||
| public class WxCUserAuthorityServiceImpl implements WxCUserAuthorityService { | |||||
| @Autowired | |||||
| private WxCUserAuthorityMapper wxCUserAuthorityMapper; | |||||
| @Override | |||||
| public Map<String,Object> getAuthor(Long id, String code, Integer type, Long resourceId) { | |||||
| List<WxCUserAuthority> resultList = new ArrayList<WxCUserAuthority>(); | |||||
| HashMap<String, Object> authorVos = new HashMap<>(); | |||||
| if (type==0){ | |||||
| //查询数字人相关权限 | |||||
| resultList = wxCUserAuthorityMapper.getAuthorAvatar(id,0,resourceId); | |||||
| } | |||||
| if (type==1){ | |||||
| //查询声纹相关权限 | |||||
| resultList = wxCUserAuthorityMapper.getAuthorVoice(id,1,resourceId); | |||||
| } | |||||
| if (resourceId==null||resourceId==-1){ | |||||
| //若资源id没有传入那就展示所有当前类型资源权限 | |||||
| HashMap<String, Object> info = new HashMap<>(); | |||||
| HashMap<String, Object> status = new HashMap<>(); | |||||
| List authorList = new ArrayList(); | |||||
| for (WxCUserAuthority wxCUserAuthority : resultList) { | |||||
| HashMap<String, Object> data = new HashMap<>(); | |||||
| data.put("username",wxCUserAuthority.getUserName()); | |||||
| data.put("type",wxCUserAuthority.getType()); | |||||
| data.put("resource_id",wxCUserAuthority.getResourceId()); | |||||
| data.put("class",wxCUserAuthority.getClassType()); | |||||
| data.put("current_time",new Date(System.currentTimeMillis())); | |||||
| data.put("expire_time",wxCUserAuthority.getExpireTime()); | |||||
| authorList.add(data); | |||||
| } | |||||
| authorVos.put("authorList",authorList); | |||||
| info.put("log_id",id); | |||||
| info.put("server_type","author"); | |||||
| authorVos.put("info",info); | |||||
| status.put("code",1000); | |||||
| status.put("msg","success"); | |||||
| authorVos.put("status",status); | |||||
| return authorVos; | |||||
| } | |||||
| HashMap<String, Object> data = new HashMap<>(); | |||||
| HashMap<String, Object> info = new HashMap<>(); | |||||
| HashMap<String, Object> status = new HashMap<>(); | |||||
| for (WxCUserAuthority wxCUserAuthority : resultList) { | |||||
| data.put("username",wxCUserAuthority.getUserName()); | |||||
| data.put("type",wxCUserAuthority.getType()); | |||||
| data.put("resource_id",wxCUserAuthority.getResourceId()); | |||||
| if (String.valueOf(wxCUserAuthority.getClassType())!=null){ | |||||
| data.put("class",wxCUserAuthority.getClassType()); | |||||
| } | |||||
| data.put("class", EnumClassType.SHARE.getCode()); | |||||
| data.put("current_time",new Date(System.currentTimeMillis())); | |||||
| data.put("expire_time",wxCUserAuthority.getExpireTime()); | |||||
| } | |||||
| authorVos.put("data",data); | |||||
| info.put("log_id",id); | |||||
| info.put("server_type","author"); | |||||
| authorVos.put("info",info); | |||||
| status.put("code",1000); | |||||
| status.put("msg","success"); | |||||
| authorVos.put("status",status); | |||||
| return authorVos; | |||||
| } | |||||
| } | |||||
| @@ -629,7 +629,8 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService,IExc | |||||
| @Override | @Override | ||||
| public PageInfo<WxCUserBasicInfo> listAsPage(WxCUserBasicInfo record, Integer pageIndex, Integer pageSize) { | public PageInfo<WxCUserBasicInfo> listAsPage(WxCUserBasicInfo record, Integer pageIndex, Integer pageSize) { | ||||
| return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserBasicInfoMapper.findList(record)); | |||||
| return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo( | |||||
| () -> wxCUserBasicInfoMapper.findList(record)); | |||||
| } | } | ||||
| @Override | @Override | ||||
| @@ -666,7 +667,8 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService,IExc | |||||
| WxCUserBasicInfo basicQ = new WxCUserBasicInfo(); | WxCUserBasicInfo basicQ = new WxCUserBasicInfo(); | ||||
| basicQ.setFinalTenantId(tenantEntity.getFinalTenantId()); | basicQ.setFinalTenantId(tenantEntity.getFinalTenantId()); | ||||
| basicQ.setPhone(phone); | basicQ.setPhone(phone); | ||||
| List<WxCUserBasicInfo> basicInfos = wxCUserBasicInfoMapper.selectList(new QueryWrapper(basicQ)); | |||||
| List<WxCUserBasicInfo> basicInfos = wxCUserBasicInfoMapper.selectList( | |||||
| new QueryWrapper(basicQ)); | |||||
| if (basicInfos != null && basicInfos.size() > 0) { | if (basicInfos != null && basicInfos.size() > 0) { | ||||
| WxCUserBasicInfo wxCUserBasicInfo = basicInfos.get(0); | WxCUserBasicInfo wxCUserBasicInfo = basicInfos.get(0); | ||||
| if (wxCUserBasicInfo.getPoins() != null) { | if (wxCUserBasicInfo.getPoins() != null) { | ||||
| @@ -953,6 +955,17 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService,IExc | |||||
| update(info); | update(info); | ||||
| } | } | ||||
| // @Override | |||||
| // public WxCUserBasicInfo getById1(Long id) { | |||||
| // return wxCUserBasicInfoMapper.selectById1(id); | |||||
| // } | |||||
| // @Override | |||||
| // public void updateCode(Long id, String mcode) { | |||||
| // | |||||
| // wxCUserBasicInfoMapper.updateCode(id,mcode); | |||||
| // } | |||||
| @Override | @Override | ||||
| public WxCUserBasicInfo getById(Long id,String finalTenantId) { | public WxCUserBasicInfo getById(Long id,String finalTenantId) { | ||||
| @@ -0,0 +1,165 @@ | |||||
| package com.iformall.service.impl; | |||||
| import cn.afterturn.easypoi.handler.inter.IExcelExportServer; | |||||
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.domain.po.WxCUserBasicInfo; | |||||
| import com.iformall.domain.po.WxCVideoTable; | |||||
| import com.iformall.domain.vo.WxCUserBasicInfoVo; | |||||
| import com.iformall.enums.EnumClassType; | |||||
| import com.iformall.mapper.WxCUserBasicInfoMapper; | |||||
| import com.iformall.mapper.WxCVideoMapper; | |||||
| import com.iformall.service.WxCUserTagsService; | |||||
| import com.iformall.service.WxCVideoService; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Service; | |||||
| import java.io.BufferedInputStream; | |||||
| import java.io.File; | |||||
| import java.io.FileInputStream; | |||||
| import java.math.BigInteger; | |||||
| import java.security.MessageDigest; | |||||
| import java.util.*; | |||||
| import java.util.stream.Collectors; | |||||
| @Service | |||||
| public class WxCVideoServiceImpl implements WxCVideoService,IExcelExportServer { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| WxCUserBasicInfoMapper wxCUserBasicInfoMapper; | |||||
| @Autowired | |||||
| WxCUserTagsService wxCUserTagsService; | |||||
| @Autowired | |||||
| WxCVideoMapper wxCVideoMapper; | |||||
| @Override | |||||
| public Map<String,Object> getById(Long id) throws Exception { | |||||
| System.out.println("id = " + id); | |||||
| List<WxCVideoTable> TemplateVideo = wxCVideoMapper.getById(id); | |||||
| System.out.println("TemplateVideo = " + TemplateVideo); | |||||
| Map<String,Object> avatarVos = new HashMap(); | |||||
| Map<String,Object> data = new HashMap(); | |||||
| //Map<String,Object> authorlist = new HashMap(); | |||||
| List authorlist = new ArrayList(); | |||||
| for (WxCVideoTable wxCVideoTable : TemplateVideo) { | |||||
| data.put("username",wxCVideoTable.getUserName()); | |||||
| data.put("current_time",new Date(System.currentTimeMillis())); | |||||
| Map<String,Object> avatar = new HashMap(); | |||||
| avatar.put("avatar_id",wxCVideoTable.getId()); | |||||
| avatar.put("avatar_name",wxCVideoTable.getName()); | |||||
| avatar.put("avatar_image",wxCVideoTable.getImage()); | |||||
| avatar.put("avatar_demo",wxCVideoTable.getDemo()); | |||||
| avatar.put("avatar_model",wxCVideoTable.getModel()); | |||||
| File modelFile = new File(wxCVideoTable.getModelPath()); | |||||
| avatar.put("avatar_demo_md5",getFileMD5(modelFile)); | |||||
| avatar.put("avatar_preinfo",wxCVideoTable.getPreInfo()); | |||||
| File preinfoFile = new File(wxCVideoTable.getPreInfoPath()); | |||||
| avatar.put("avatar_preinfo_md5",getFileMD5(preinfoFile)); | |||||
| avatar.put("expire_time",wxCVideoTable.getExpireTime()); | |||||
| avatar.put("class", wxCVideoTable.getClassType()); | |||||
| authorlist.add(avatar); | |||||
| data.put("authorlist",authorlist); | |||||
| } | |||||
| avatarVos.put("data",data); | |||||
| Map<String,Object> info = new HashMap(); | |||||
| Map<String,Object> status = new HashMap(); | |||||
| info.put("log_id",id); | |||||
| info.put("server_type","avatar list"); | |||||
| status.put("code",1000); | |||||
| status.put("msg","success"); | |||||
| avatarVos.put("info",info); | |||||
| avatarVos.put("status",status); | |||||
| return avatarVos; | |||||
| } | |||||
| @Override | |||||
| public WxCVideoTable selectOne(Long id, long resource_id) { | |||||
| return wxCVideoMapper.selectOne(id,resource_id); | |||||
| } | |||||
| @Override | |||||
| public List<Object> selectListForExcelExport(Object queryParams, int page) { | |||||
| WxCUserBasicInfo basicInfo = (WxCUserBasicInfo) queryParams; | |||||
| List<WxCUserBasicInfoVo> list = new ArrayList<WxCUserBasicInfoVo>(); | |||||
| basicInfo.setBegin((page-1)*20000); | |||||
| basicInfo.setLimit(20000); | |||||
| list = wxCUserBasicInfoMapper.findVoList(basicInfo); | |||||
| if (null == list || list.size() <= 0 ) { | |||||
| return null; | |||||
| } | |||||
| // List<Long> userIds = list.stream().map(cc -> cc.getId()).collect(Collectors.toList()); | |||||
| // if (null != userIds && userIds.size() > 0 ) { | |||||
| // WxCreditHistory chaddq = new WxCreditHistory(); | |||||
| // chaddq.setUserIdList(userIds); | |||||
| // chaddq.setTenantId(tenantInfo.getFinalTenantId()); | |||||
| // chaddq.setStartTime(basicInfo.getCreditStartTime()); | |||||
| // chaddq.setEndTime(basicInfo.getCreditEndTime()); | |||||
| // List<WxCreditHistory> chadds = creditHistoryMapper.findAddList(chaddq); | |||||
| // Map<Long, Integer> chaddMap = new HashMap<>(); | |||||
| // if(null != chadds){ | |||||
| // chaddMap = chadds.stream().collect(Collectors.toMap(WxCreditHistory::getCUserId, WxCreditHistory::getCreditNum)); | |||||
| // } | |||||
| // | |||||
| // WxCreditHistory chlesq = new WxCreditHistory(); | |||||
| // chlesq.setUserIdList(userIds); | |||||
| // chlesq.setTenantId(tenantInfo.getFinalTenantId()); | |||||
| // chlesq.setStartTime(basicInfo.getCreditStartTime()); | |||||
| // chlesq.setEndTime(basicInfo.getCreditEndTime()); | |||||
| // List<WxCreditHistory> chless = creditHistoryMapper.findLesList(chlesq); | |||||
| // Map<Long, Integer> chlesMap = new HashMap<>(); | |||||
| // if(null != chless){ | |||||
| // chlesMap = chless.stream().collect(Collectors.toMap(WxCreditHistory::getCUserId, WxCreditHistory::getCreditNum)); | |||||
| // } | |||||
| //处理会员标签 | |||||
| List<Long> tagIds = list.stream().map(cc -> cc.getTagId()).collect(Collectors.toList()); | |||||
| Map<Long, String> tagIdName = wxCUserTagsService.findIdTagNames(basicInfo.getFinalTenantId(),tagIds); | |||||
| list.stream().forEach(u->{ | |||||
| // u.setAddCredit(finalChaddMap.get(u.getId())); | |||||
| // u.setLesCredit(finalChlesMap.get(u.getId())); | |||||
| u.setTagNames(tagIdName.get(u.getTagId())); | |||||
| }); | |||||
| // | |||||
| // } | |||||
| if (null != list && list.size() > 0 ) { | |||||
| List<Object> retList = new ArrayList<Object>(); | |||||
| retList.addAll(list); | |||||
| return retList; | |||||
| } | |||||
| return null; | |||||
| } | |||||
| public static String getFileMD5(File file) throws Exception { | |||||
| MessageDigest md = MessageDigest.getInstance("MD5"); | |||||
| try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))) { | |||||
| byte[] buffer = new byte[1024]; | |||||
| int read = 0; | |||||
| while ((read = bis.read(buffer)) != -1) { | |||||
| md.update(buffer, 0, read); | |||||
| } | |||||
| } | |||||
| byte[] digest = md.digest(); | |||||
| String md5 = String.format("%032x", new BigInteger(1, digest)); | |||||
| return md5; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,191 @@ | |||||
| package com.iformall.service.impl; | |||||
| import com.alibaba.fastjson.JSON; | |||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
| import com.google.common.collect.Lists; | |||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.domain.po.WxCVideoTable; | |||||
| import com.iformall.domain.po.WxCVoiceTable; | |||||
| import com.iformall.domain.po.sm.VoiceInfo; | |||||
| import com.iformall.domain.vo.VoiceInfoVo; | |||||
| import com.iformall.enums.EnumClassType; | |||||
| import com.iformall.enums.EnumSpeakType; | |||||
| import com.iformall.mapper.VoiceMapper; | |||||
| import com.iformall.mapper.WxCVoiceMapper; | |||||
| import com.iformall.service.WxCVoiceService; | |||||
| import com.iformall.sm.AiPreviewParam; | |||||
| import com.iformall.sm.AiPreviewResult; | |||||
| import com.iformall.sm.AiVideoHelper; | |||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Service; | |||||
| import org.springframework.util.ObjectUtils; | |||||
| import java.util.*; | |||||
| @Service | |||||
| public class WxCVoiceServiceImpl implements WxCVoiceService { | |||||
| @Autowired | |||||
| WxCVoiceMapper wxCVoiceMapper; | |||||
| @Autowired | |||||
| VoiceMapper voiceMapper; | |||||
| private final static String str = "\uD83D\uDD57"; | |||||
| private final static String url = "https://suimang.oss-accelerate.aliyuncs.com/builtin/tts_all_sample/"; | |||||
| private final static String end = ".wav"; | |||||
| @Override | |||||
| public Map<String,Object> getById(Long id) { | |||||
| List<WxCVoiceTable> resultList = wxCVoiceMapper.getById(id); | |||||
| HashMap<String, Object> result = new HashMap<>(); | |||||
| HashMap<String, Object> data = new HashMap<>(); | |||||
| List audioList = new ArrayList(); | |||||
| for (WxCVoiceTable wxCVoiceTable : resultList) { | |||||
| HashMap<String, Object> audio = new HashMap<>(); | |||||
| HashMap<String, Object> voice = new HashMap<>(); | |||||
| data.put("username", wxCVoiceTable.getUserName()); | |||||
| data.put("current_time", new Date(System.currentTimeMillis())); | |||||
| audioList.add(audio); | |||||
| audio.put("LocaleName", wxCVoiceTable.getLocalelName()); | |||||
| audio.put("displayname", wxCVoiceTable.getLocalDisPlayName()); | |||||
| List voiceList = new ArrayList(); | |||||
| voiceList.add(voice); | |||||
| audio.put("voiceList", voiceList); | |||||
| voice.put("voiceid", wxCVoiceTable.getVoiceId()); | |||||
| voice.put("expire_time", wxCVoiceTable.getExpireTime()); | |||||
| voice.put("voicename", wxCVoiceTable.getVoiceName()); | |||||
| voice.put("voicetype", EnumClassType.SHARE.getCode()); | |||||
| voice.put("displayname", wxCVoiceTable.getVoiceDisplayName()); | |||||
| voice.put("gender", wxCVoiceTable.getGender()); | |||||
| List styleList = new ArrayList(); | |||||
| List<String> strings = JSON.parseArray(wxCVoiceTable.getStyleList(), String.class); | |||||
| for (String y : strings) { | |||||
| // List list = new ArrayList<>(); | |||||
| HashMap<String, Object> style = new HashMap<>(); | |||||
| style.put("stylename", y); | |||||
| style.put("displayname", EnumSpeakType.getEnum(y).getMessage()); | |||||
| style.put("styledemo", url + wxCVoiceTable.getMouldSmId() + "_" + y + end); | |||||
| //list.add(style); | |||||
| styleList.add(style); | |||||
| } | |||||
| // for (String s : Arrays.asList(wxCVoiceTable.getStyleList())) { | |||||
| //// VoiceInfoVo infoVo = new VoiceInfoVo(); | |||||
| //// infoVo.setName(EnumSpeakType.getEnum(s).getMessage()); | |||||
| //// infoVo.setEngName(s); | |||||
| //// infoVo.setUrl(url + wxCVoiceTable.getMouldSmId() + "_" + s + end); | |||||
| // style.put("stylename", s); | |||||
| // style.put("displayname", EnumSpeakType.getEnum(s).getMessage()); | |||||
| // style.put("styledemo", url + wxCVoiceTable.getMouldSmId() + "_" + s + end); | |||||
| // styleList.add(style); | |||||
| // } | |||||
| // styleList.add(style); | |||||
| voice.put("styleList", styleList); | |||||
| // style.put("stylename", wxCVoiceTable.getStyleName()); | |||||
| // style.put("displayname", wxCVoiceTable.getStyleDisplayName()); | |||||
| // style.put("styledemo", wxCVoiceTable.getStyleDemo()); | |||||
| } | |||||
| data.put("audioList", audioList); | |||||
| result.put("data",data); | |||||
| HashMap<String, Object> info = new HashMap<>(); | |||||
| HashMap<String, Object> status = new HashMap<>(); | |||||
| info.put("log_id",id); | |||||
| info.put("server_type","audio list"); | |||||
| result.put("info",info); | |||||
| status.put("code",1000); | |||||
| status.put("msg","success"); | |||||
| result.put("status",status); | |||||
| return result; | |||||
| } | |||||
| @Override | |||||
| public Map<String,Object> voicePreview(AiPreviewParam aiPreviewParam) { | |||||
| VoiceInfo voiceInfo = voiceMapper.selectOne(new LambdaQueryWrapper<VoiceInfo>().eq(VoiceInfo::getIsDel, 0).eq(VoiceInfo::getId, aiPreviewParam.getVoice_id())); | |||||
| if (ObjectUtils.isEmpty(voiceInfo)){ | |||||
| Map<String,Object> status = new HashMap<>(); | |||||
| status.put("code",ErrorCode.SYS_SERVER_ERROR.getCode()); | |||||
| status.put("msg","声音信息不存在"); | |||||
| return status; | |||||
| // return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), "声音信息不存在"); | |||||
| } | |||||
| AiPreviewParam param = new AiPreviewParam(); | |||||
| param.setGen_txt(aiPreviewParam.getGen_txt().replaceAll(str,"[*]")); | |||||
| param.setVoice_id(voiceInfo.getMouldSmId()); | |||||
| param.setVoice_style(StringUtils.isBlank(aiPreviewParam.getVoice_style()) ? EnumSpeakType.default_0.getMessage() : aiPreviewParam.getVoice_style()); | |||||
| param.setGender(voiceInfo.getSex() == 1 ? "male" : "female"); | |||||
| AiPreviewResult result = AiVideoHelper.voicePreview(param); | |||||
| // if (result.isSuccess()){ | |||||
| // Map<String,Object> status = new HashMap<>(); | |||||
| // status.put("data",new ResultData(result.getTime())); | |||||
| // | |||||
| // return status; | |||||
| // //return new ResultData(result.getTime()); | |||||
| // } | |||||
| Map<String,Object> resultMap = new HashMap<>(); | |||||
| Map<String,Object> data = new HashMap<>(); | |||||
| data.put("ttsurl",result.getUrl()); | |||||
| Map<String,Object> status = new HashMap<>(); | |||||
| status.put("code",1000); | |||||
| status.put("msg","success"); | |||||
| resultMap.put("data",data); | |||||
| resultMap.put("status",status); | |||||
| return resultMap; | |||||
| //return new ResultData(result.getCode(), result.getMsgInfo(result.getCode(),result.getMsg())); | |||||
| } | |||||
| //test | |||||
| @Override | |||||
| public List<VoiceInfo> chooseType(Long id) { | |||||
| List<VoiceInfo> voiceInfos = voiceMapper.selectList( | |||||
| new LambdaQueryWrapper<VoiceInfo>().eq(VoiceInfo::getLanguageId, id).orderByAsc(VoiceInfo::getAgeType).orderByAsc(VoiceInfo::getDisplayName)); | |||||
| voiceInfos.forEach(x -> { | |||||
| if (StringUtils.isNotEmpty(x.getStyleList())) { | |||||
| List<String> strings = JSON.parseArray(x.getStyleList(), String.class); | |||||
| List<VoiceInfoVo> list = new ArrayList<>(); | |||||
| strings.forEach(y->{ | |||||
| VoiceInfoVo infoVo = new VoiceInfoVo(); | |||||
| infoVo.setName(EnumSpeakType.getEnum(y).getMessage()); | |||||
| infoVo.setEngName(y); | |||||
| infoVo.setUrl(url + x.getMouldSmId() + "_" + y + end); | |||||
| list.add(infoVo); | |||||
| }); | |||||
| VoiceInfoVo infoVo = new VoiceInfoVo(); | |||||
| infoVo.setName(EnumSpeakType.getEnum(0).getMessage()); | |||||
| infoVo.setUrl(url + x.getMouldSmId() + "_" + "default" + end); | |||||
| infoVo.setEngName("default"); | |||||
| list.add(infoVo); | |||||
| x.setStyle(list); | |||||
| } else { | |||||
| List<VoiceInfoVo> list = Lists.newArrayList(); | |||||
| VoiceInfoVo infoVo = new VoiceInfoVo(); | |||||
| infoVo.setName(EnumSpeakType.getEnum(0).getMessage()); | |||||
| infoVo.setEngName("default"); | |||||
| infoVo.setUrl(url + x.getMouldSmId() + "_" + "default" + end); | |||||
| list.add(infoVo); | |||||
| x.setStyle(list); | |||||
| } | |||||
| }); | |||||
| return voiceInfos; | |||||
| } | |||||
| } | |||||
| @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; | |||||
| import com.alibaba.fastjson.JSONObject; | import com.alibaba.fastjson.JSONObject; | ||||
| import com.github.pagehelper.PageHelper; | import com.github.pagehelper.PageHelper; | ||||
| import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
| import com.google.gson.JsonObject; | |||||
| import com.iformall.common.ErrorCode; | import com.iformall.common.ErrorCode; | ||||
| import com.iformall.common.IdWorker; | import com.iformall.common.IdWorker; | ||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| @@ -32,10 +33,7 @@ import org.springframework.util.CollectionUtils; | |||||
| import org.springframework.util.ObjectUtils; | import org.springframework.util.ObjectUtils; | ||||
| import javax.transaction.xa.XAException; | import javax.transaction.xa.XAException; | ||||
| import java.util.ArrayList; | |||||
| import java.util.Date; | |||||
| import java.util.List; | |||||
| import java.util.Objects; | |||||
| import java.util.*; | |||||
| import java.util.concurrent.Future; | import java.util.concurrent.Future; | ||||
| import java.util.concurrent.atomic.AtomicInteger; | import java.util.concurrent.atomic.AtomicInteger; | ||||
| @@ -206,6 +204,18 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService { | |||||
| param.setTask_id(photoSpeakVideo.getId()); | param.setTask_id(photoSpeakVideo.getId()); | ||||
| param.setCallback_url(callbackUrl + "/callback/photo/speak"); | param.setCallback_url(callbackUrl + "/callback/photo/speak"); | ||||
| param.setImg(Base64Util.imageUrlToBase64(photoSpeakVideo.getPersonPhotoUrl())); | param.setImg(Base64Util.imageUrlToBase64(photoSpeakVideo.getPersonPhotoUrl())); | ||||
| Map<String,Object> subtitleMap = new HashMap<>(); | |||||
| subtitleMap.put("enabled",photoSpeakVideo.getSubtitleEnabled()); | |||||
| if(EnumYesOrNo.YES.getCode().equals(photoSpeakVideo.getSubtitleEnabled())){ | |||||
| Map titleParams = JSON.parseObject(photoSpeakVideo.getSubtitleParams(),Map.class); | |||||
| if(titleParams == null || titleParams.isEmpty()){ | |||||
| subtitleMap.put("enabled",EnumYesOrNo.NO.getCode()); | |||||
| }else{ | |||||
| subtitleMap.put("params",titleParams); | |||||
| } | |||||
| } | |||||
| param.setSubtitle(subtitleMap); | |||||
| String voiceMouldSm = photoSpeakVideo.getVoiceMouldSm(); | String voiceMouldSm = photoSpeakVideo.getVoiceMouldSm(); | ||||
| Integer sex = 1; | Integer sex = 1; | ||||
| Integer speakType = 0; | Integer speakType = 0; | ||||
| @@ -34,7 +34,8 @@ public class VoiceInfoServiceImpl implements VoiceInfoService { | |||||
| @Override | @Override | ||||
| public List<VoiceInfo> chooseType(Long id) { | public List<VoiceInfo> chooseType(Long id) { | ||||
| List<VoiceInfo> voiceInfos = voiceMapper.selectList(new LambdaQueryWrapper<VoiceInfo>().eq(VoiceInfo::getLanguageId, id).orderByAsc(VoiceInfo::getDisplayName)); | |||||
| List<VoiceInfo> voiceInfos = voiceMapper.selectList( | |||||
| new LambdaQueryWrapper<VoiceInfo>().eq(VoiceInfo::getLanguageId, id).orderByAsc(VoiceInfo::getAgeType).orderByAsc(VoiceInfo::getDisplayName)); | |||||
| voiceInfos.forEach(x -> { | voiceInfos.forEach(x -> { | ||||
| if (StringUtils.isNotEmpty(x.getStyleList())) { | if (StringUtils.isNotEmpty(x.getStyleList())) { | ||||
| List<String> strings = JSON.parseArray(x.getStyleList(), String.class); | List<String> strings = JSON.parseArray(x.getStyleList(), String.class); | ||||
| @@ -88,4 +89,5 @@ public class VoiceInfoServiceImpl implements VoiceInfoService { | |||||
| } | } | ||||
| return new ResultData(result.getCode(), result.getMsgInfo(result.getCode(),result.getMsg())); | return new ResultData(result.getCode(), result.getMsgInfo(result.getCode(),result.getMsg())); | ||||
| } | } | ||||
| } | } | ||||
| @@ -1,8 +1,13 @@ | |||||
| package com.iformall.sm; | package com.iformall.sm; | ||||
| import com.alibaba.fastjson.JSON; | |||||
| import com.alibaba.fastjson.JSONObject; | |||||
| import io.swagger.models.auth.In; | import io.swagger.models.auth.In; | ||||
| import lombok.Data; | import lombok.Data; | ||||
| import java.util.HashMap; | |||||
| import java.util.Map; | |||||
| @Data | @Data | ||||
| public class AiPhotoSpeakParam { | public class AiPhotoSpeakParam { | ||||
| @@ -26,6 +31,8 @@ public class AiPhotoSpeakParam { | |||||
| private Long task_id; | private Long task_id; | ||||
| private String callback_url; | private String callback_url; | ||||
| private Map<String,Object> subtitle; | |||||
| public String neglectImgString() { | public String neglectImgString() { | ||||
| StringBuffer str = new StringBuffer(); | StringBuffer str = new StringBuffer(); | ||||
| str.append("{"); | str.append("{"); | ||||
| @@ -34,9 +41,11 @@ public class AiPhotoSpeakParam { | |||||
| str.append("\"voice_style\":").append("\"").append(voice_style).append("\","); | str.append("\"voice_style\":").append("\"").append(voice_style).append("\","); | ||||
| str.append("\"gender\":").append("\"").append(gender).append("\","); | str.append("\"gender\":").append("\"").append(gender).append("\","); | ||||
| str.append("\"url\":").append("\"").append(url).append("\","); | str.append("\"url\":").append("\"").append(url).append("\","); | ||||
| str.append("\"img\":").append("\"").append(img); | |||||
| str.append("\"task_id\":").append("\"").append(task_id); | |||||
| str.append("\"callback_url\":").append("\"").append(callback_url).append("\"}"); | |||||
| str.append("\"img\":").append("\"").append("\","); | |||||
| str.append("\"task_id\":").append("\"").append(task_id).append("\","); | |||||
| str.append("\"callback_url\":").append("\"").append(callback_url).append("\","); | |||||
| str.append("\"subtitle\":").append(JSON.toJSONString(subtitle)) | |||||
| .append("\"}"); | |||||
| return str.toString(); | return str.toString(); | ||||
| } | } | ||||
| } | } | ||||
| @@ -8,5 +8,6 @@ public class AiPreviewParam { | |||||
| private String voice_id; | private String voice_id; | ||||
| private String voice_style; | private String voice_style; | ||||
| private String gender; | private String gender; | ||||
| private int speed; | |||||
| } | } | ||||
| @@ -116,9 +116,9 @@ public class AiVideoHelper { | |||||
| // } | // } | ||||
| } | } | ||||
| public static AiPhotoSpeakResult createPhotoSpeakVideo(AiPhotoSpeakParam videoParam) { | public static AiPhotoSpeakResult createPhotoSpeakVideo(AiPhotoSpeakParam videoParam) { | ||||
| log.info("生成视频start request:" + videoParam.neglectImgString()); | |||||
| String response = doPost(url + photo_speak_suffix, JSONObject.toJSONString(videoParam)); | String response = doPost(url + photo_speak_suffix, JSONObject.toJSONString(videoParam)); | ||||
| log.info("生成视频end response:" + response); | log.info("生成视频end response:" + response); | ||||
| log.info("生成视频的 IP:" + url + photo_speak_suffix); | |||||
| AiPhotoSpeakResult result = new AiPhotoSpeakResult(); | AiPhotoSpeakResult result = new AiPhotoSpeakResult(); | ||||
| if (StringUtils.isBlank(response)) { | if (StringUtils.isBlank(response)) { | ||||
| result.setSuccess(false); | result.setSuccess(false); | ||||
| @@ -8,6 +8,9 @@ | |||||
| <result column="user_id" jdbcType="BIGINT" property="userId"/> | <result column="user_id" jdbcType="BIGINT" property="userId"/> | ||||
| <result column="person_photo_id" jdbcType="BIGINT" property="personPhotoId"/> | <result column="person_photo_id" jdbcType="BIGINT" property="personPhotoId"/> | ||||
| <result column="person_photo_url" jdbcType="VARCHAR" property="personPhotoUrl"/> | <result column="person_photo_url" jdbcType="VARCHAR" property="personPhotoUrl"/> | ||||
| <result column="subtitle_enabled" jdbcType="INTEGER" property="subtitleEnabled"/> | |||||
| <result column="subtitle_params" jdbcType="VARCHAR" property="subtitleParams"/> | |||||
| <result column="voice_from" jdbcType="INTEGER" property="voiceFrom"/> | <result column="voice_from" jdbcType="INTEGER" property="voiceFrom"/> | ||||
| <result column="voice_mould_id" jdbcType="BIGINT" property="voiceMouldId"/> | <result column="voice_mould_id" jdbcType="BIGINT" property="voiceMouldId"/> | ||||
| <result column="voice_mould_sm" jdbcType="VARCHAR" property="voiceMouldSm"/> | <result column="voice_mould_sm" jdbcType="VARCHAR" property="voiceMouldSm"/> | ||||
| @@ -39,7 +42,7 @@ | |||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| `id`, `tenant_id`, `parent_tenant_id`, `user_id`, | `id`, `tenant_id`, `parent_tenant_id`, `user_id`, | ||||
| `person_photo_id`, `person_photo_url`, `voice_from`, `voice_mould_id`, `voice_mould_sm`, `paperwork`, `voice_material_id`, `voice_material_url`, | |||||
| `person_photo_id`, `person_photo_url`, `subtitle_enabled`, `subtitle_params`, `voice_from`, `voice_mould_id`, `voice_mould_sm`, `paperwork`, `voice_material_id`, `voice_material_url`, | |||||
| `title`, `cover_img`, `remark`, `video_id`, `video_path`, `video_play_url`, `video_time`, `video_size`, `video_status`, `video_msg`, `create_video_date`, `create_date`, `update_date`, | `title`, `cover_img`, `remark`, `video_id`, `video_path`, `video_play_url`, `video_time`, `video_size`, `video_status`, `video_msg`, `create_video_date`, `create_date`, `update_date`, | ||||
| `is_hy`,`video_hy_status`,`music_id`,`save_dir` | `is_hy`,`video_hy_status`,`music_id`,`save_dir` | ||||
| </sql> | </sql> | ||||
| @@ -0,0 +1,323 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||||
| <mapper namespace="com.iformall.mapper.WxCLiveUserBasicInfoMapper"> | |||||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxCUserBasicInfo"> | |||||
| <id column="id" jdbcType="BIGINT" property="id"/> | |||||
| <result column="phone" jdbcType="VARCHAR" property="phone"/> | |||||
| <result column="birthdate" jdbcType="TIMESTAMP" property="birthdate"/> | |||||
| <result column="education" jdbcType="VARCHAR" property="education"/> | |||||
| <result column="sex" jdbcType="INTEGER" property="sex"/> | |||||
| <result column="height" jdbcType="VARCHAR" property="height"/> | |||||
| <result column="weight" jdbcType="VARCHAR" property="weight"/> | |||||
| <result column="id_card" jdbcType="VARCHAR" property="idCard"/> | |||||
| <result column="email" jdbcType="VARCHAR" property="email"/> | |||||
| <result column="address" jdbcType="VARCHAR" property="address"/> | |||||
| <result column="poins" jdbcType="INTEGER" property="poins"/> | |||||
| <result column="tag_id" jdbcType="BIGINT" property="tagId"/> | |||||
| <result column="create_date" jdbcType="TIMESTAMP" property="createDate"/> | |||||
| <result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/> | |||||
| <result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/> | |||||
| <result column="parent_tenant_id" jdbcType="VARCHAR" property="parentTenantId"/> | |||||
| <result column="final_tenant_id" jdbcType="VARCHAR" property="finalTenantId"/> | |||||
| <result column="name" jdbcType="VARCHAR" property="name"/> | |||||
| <result column="level" jdbcType="VARCHAR" property="level"/> | |||||
| <result column="nick_name" jdbcType="VARCHAR" property="nickName"/> | |||||
| <result column="avatar_url" jdbcType="VARCHAR" property="avatarUrl"/> | |||||
| <result column="credit" jdbcType="INTEGER" property="credit"/> | |||||
| <result column="active_time" jdbcType="TIMESTAMP" property="activeTime"/> | |||||
| <result column="login_count" jdbcType="INTEGER" property="loginCount"/> | |||||
| <result column="act_record" jdbcType="INTEGER" property="actRecord"/> | |||||
| <result column="score_date" jdbcType="TIMESTAMP" property="scoreDate"/> | |||||
| <result column="code" jdbcType="VARCHAR" property="code"/> | |||||
| <result column="version" jdbcType="INTEGER" property="version"/> | |||||
| <result column="expire_time" jdbcType="VARCHAR" property="expireTime"/> | |||||
| </resultMap> | |||||
| <sql id="allColumns"> | |||||
| wcubi.`id`,wcubi.`phone`,wcubi.`birthdate`,wcubi.`education`,wcubi.`sex`,wcubi.`height`,wcubi.`weight`,wcubi.`id_card`,wcubi.`email`, | |||||
| wcubi.`address`,wcubi.`poins`,wcubi.`tag_id`,wcubi.`create_date`,wcubi.`update_date`, | |||||
| wcubi.`final_tenant_id`,wcubi.`tenant_id`,wcubi.`parent_tenant_id`,wcubi.`name`,wcubi.`nick_name`, | |||||
| wcubi.`avatar_url`,wcubi.`credit`,wcubi.`active_time`,wcubi.`login_count`,wcubi.`act_record`, | |||||
| wcubi.score_date,wcubi.status,wcubi1.code,wcubi1.version,wcubi1.expire_time | |||||
| </sql> | |||||
| <sql id="dynamicWhereConditions"> | |||||
| where 1=1 | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and wcubi.`tenant_id` like concat('%,', #{tenantId},',%') | |||||
| </if> | |||||
| <if test=" null != id "> | |||||
| and wcubi.`id` = #{id} | |||||
| </if> | |||||
| <if test=" null != phone "> | |||||
| and wcubi.`phone` like concat('%', #{phone},'%') | |||||
| </if> | |||||
| <if test=" null != birthdate "> | |||||
| and wcubi.`birthdate` = #{birthdate} | |||||
| </if> | |||||
| <if test=" null != education "> | |||||
| and wcubi.`education` like concat('%', #{education},'%') | |||||
| </if> | |||||
| <if test=" null != sex "> | |||||
| and wcubi.`sex` = #{sex} | |||||
| </if> | |||||
| <if test=" null != email "> | |||||
| and wcubi.`email` like concat('%', #{email},'%') | |||||
| </if> | |||||
| <if test=" null != address "> | |||||
| and wcubi.`address` like concat('%', #{address},'%') | |||||
| </if> | |||||
| <if test=" null != levelStartScore "> | |||||
| and wcubi.poins >= #{levelStartScore} | |||||
| </if> | |||||
| <if test=" null != levelEndScore"> | |||||
| and wcubi.poins < #{levelEndScore} | |||||
| </if> | |||||
| <if test=" null != tagId "> | |||||
| and wcubi.`tag_id` = #{tagId} | |||||
| </if> | |||||
| <if test=" null != createDate "> | |||||
| and wcubi.`create_date` = #{createDate} | |||||
| </if> | |||||
| <if test=" null != updateDate "> | |||||
| and wcubi.`update_date` = #{updateDate} | |||||
| </if> | |||||
| <if test=" null != actRecord "> | |||||
| and wcubi.`act_record` = #{actRecord} | |||||
| </if> | |||||
| <if test=" null != name "> | |||||
| and wcubi.`name` like concat('%', #{name},'%') | |||||
| </if> | |||||
| <if test=" null != startTime and null != endTime"> | |||||
| and wcubi.`create_date` between #{startTime} and #{endTime} | |||||
| </if> | |||||
| <if test=" null != activeStartTime and null != activeEndTime"> | |||||
| and wcubi.`active_time` between #{activeStartTime} and #{activeEndTime} | |||||
| </if> | |||||
| <if test=" null != status "> | |||||
| and wcubi.`status` = #{status} | |||||
| </if> | |||||
| <if test=" null != ids "> | |||||
| and wcubi.id in | |||||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||||
| #{idItem} | |||||
| </foreach> | |||||
| </if> | |||||
| <if test=" null != sortColumns">order by ${sortColumns}</if> | |||||
| </sql> | |||||
| <select id="selectById" parameterType="java.util.HashMap" resultMap="BaseResultMap"> | |||||
| select * | |||||
| from wx_c_user_live_basic_info wcubi1 | |||||
| where wcubi1.id =#{id} | |||||
| </select> | |||||
| <update id="updateCode"> | |||||
| update wx_c_user_live_basic_info set code = #{code} where id = #{id} | |||||
| </update> | |||||
| <sql id="allColumnsOfScoreList"> | |||||
| wcubi.id,wcubi.phone,wcubi.birthdate,wcubi.education,wcubi.sex,wcubi.`height`,wcubi.`weight`,wcubi.`id_card`,wcubi.email,wcubi.address,wcubi.poins,wcubi.tag_id, | |||||
| wcubi.create_date,wcubi.update_date,wcubi.name,wcubi.level,wcubi.nick_name,wcubi.score_date,wcubi.final_tenant_id | |||||
| </sql> | |||||
| <resultMap id="VoBaseResultMap" type="com.iformall.domain.vo.WxCUserBasicInfoVo"> | |||||
| <id column="id" jdbcType="BIGINT" property="id"/> | |||||
| <result column="phone" jdbcType="VARCHAR" property="phone"/> | |||||
| <result column="birthdate" jdbcType="TIMESTAMP" property="birthdate"/> | |||||
| <result column="education" jdbcType="VARCHAR" property="education"/> | |||||
| <result column="sex" jdbcType="INTEGER" property="sex"/> | |||||
| <result column="height" jdbcType="VARCHAR" property="height"/> | |||||
| <result column="weight" jdbcType="VARCHAR" property="weight"/> | |||||
| <result column="id_card" jdbcType="VARCHAR" property="idCard"/> | |||||
| <result column="email" jdbcType="VARCHAR" property="email"/> | |||||
| <result column="address" jdbcType="VARCHAR" property="address"/> | |||||
| <result column="poins" jdbcType="INTEGER" property="poins"/> | |||||
| <result column="tag_id" jdbcType="BIGINT" property="tagId"/> | |||||
| <result column="create_date" jdbcType="TIMESTAMP" property="createDate"/> | |||||
| <result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/> | |||||
| <result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/> | |||||
| <result column="parent_tenant_id" jdbcType="VARCHAR" property="parentTenantId"/> | |||||
| <result column="final_tenant_id" jdbcType="VARCHAR" property="finalTenantId"/> | |||||
| <result column="name" jdbcType="VARCHAR" property="name"/> | |||||
| <result column="level" jdbcType="VARCHAR" property="level"/> | |||||
| <result column="nick_name" jdbcType="VARCHAR" property="nickName"/> | |||||
| <result column="credit" jdbcType="INTEGER" property="credit"/> | |||||
| <result column="tags" jdbcType="VARCHAR" property="tags"/> | |||||
| <result column="active_time" jdbcType="TIMESTAMP" property="activeTime"/> | |||||
| </resultMap> | |||||
| <sql id="dynamicVoWhereConditions"> | |||||
| where 1=1 | |||||
| <if test=" null != id "> | |||||
| and wcubi.`id` = #{id} | |||||
| </if> | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and wcubi.`tenant_id` like concat('%,', #{tenantId},',%') | |||||
| </if> | |||||
| <if test=" null != phone and '' != phone"> | |||||
| and wcubi.`phone` like concat('%', #{phone},'%') | |||||
| </if> | |||||
| <if test=" null != birthdate "> | |||||
| and wcubi.`birthdate` = #{birthdate} | |||||
| </if> | |||||
| <if test=" null != education and '' != education"> | |||||
| and wcubi.`education` like concat('%', #{education},'%') | |||||
| </if> | |||||
| <if test=" null != sex "> | |||||
| and wcubi.`sex` = #{sex} | |||||
| </if> | |||||
| <if test=" null != email and '' != email"> | |||||
| and wcubi.`email` like concat('%', #{email},'%') | |||||
| </if> | |||||
| <if test=" null != address and '' != address"> | |||||
| and wcubi.`address` like concat('%', #{address},'%') | |||||
| </if> | |||||
| <if test=" null != poins "> | |||||
| and wcubi.`poins` = #{poins} | |||||
| </if> | |||||
| <if test=" null != tagId "> | |||||
| and wcubi.`tag_id` = #{tagId} | |||||
| </if> | |||||
| <if test=" null != createDate "> | |||||
| and wcubi.`create_date` = #{createDate} | |||||
| </if> | |||||
| <if test=" null != updateDate "> | |||||
| and wcubi.`update_date` = #{updateDate} | |||||
| </if> | |||||
| <if test=" null != actRecord "> | |||||
| and wcubi.`act_record` = #{actRecord} | |||||
| </if> | |||||
| <if test=" null != name and '' != name"> | |||||
| and wcubi.`name` like concat('%', #{name},'%') | |||||
| </if> | |||||
| <if test=" null != startTime and null!=endTime"> | |||||
| and wcubi.`create_date` between #{startTime} and #{endTime} | |||||
| </if> | |||||
| <if test=" null != activeStartTime and null!=activeEndTime"> | |||||
| and wcubi.`active_time` between #{activeStartTime} and #{activeEndTime} | |||||
| </if> | |||||
| <if test=" null != ids "> | |||||
| and wcubi.id in | |||||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||||
| #{idItem} | |||||
| </foreach> | |||||
| </if> | |||||
| order by wcubi.`active_time` DESC | |||||
| <!--<if test=" null != sortColumns">order by ${sortColumns}</if>--> | |||||
| </sql> | |||||
| <sql id="filterWhereConditions"> | |||||
| where 1=1 | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and wcubi.`tenant_id` like concat('%,', #{tenantId},',%') | |||||
| </if> | |||||
| <if test=" null != startTime "> | |||||
| and wcubi.create_date >= #{startTime} | |||||
| </if> | |||||
| <if test=" null != endTime"> | |||||
| and wcubi.create_date <= #{endTime} | |||||
| </if> | |||||
| <if test=" null != birthStartTime "> | |||||
| and wcubi.birthdate >= #{birthStartTime} | |||||
| </if> | |||||
| <if test=" null != birthEndTime"> | |||||
| and wcubi.birthdate < #{birthEndTime} | |||||
| </if> | |||||
| <if test=" null != loginStartTime "> | |||||
| and wcubi.active_time >= #{loginStartTime} | |||||
| </if> | |||||
| <if test=" null != loginEndTime"> | |||||
| and wcubi.active_time <= #{loginEndTime} | |||||
| </if> | |||||
| <if test=" null != phones"> | |||||
| and wcubi.phone in (${phones}) | |||||
| </if> | |||||
| <if test=" null != levelStartScore and (0 != levelStartScore and '' != levelStartScore)"> | |||||
| and wcubi.poins >= #{levelStartScore} | |||||
| <if test=" null != levelEndScore"> | |||||
| and wcubi.poins < #{levelEndScore} | |||||
| </if> | |||||
| </if> | |||||
| <if test=" null != levelStartScore and (0 == levelStartScore or '' == levelStartScore)"> | |||||
| and (wcubi.poins is null or | |||||
| (wcubi.poins >= #{levelStartScore} | |||||
| <if test=" null != levelEndScore"> | |||||
| and wcubi.poins < #{levelEndScore} | |||||
| </if> | |||||
| )) | |||||
| </if> | |||||
| <if test=" null != ids "> | |||||
| and wcubi.id in | |||||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||||
| #{idItem} | |||||
| </foreach> | |||||
| </if> | |||||
| <if test=" null != tagIds "> | |||||
| and wcubi.`tag_id` in | |||||
| <foreach collection="tagIds" index="index" item="tagIdItem" open="(" separator="," close=")"> | |||||
| #{tagIdItem} | |||||
| </foreach> | |||||
| </if> | |||||
| <if test=" null != sortColumns">order by ${sortColumns}</if> | |||||
| </sql> | |||||
| </mapper> | |||||
| @@ -0,0 +1,30 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||||
| <mapper namespace="com.iformall.mapper.WxCUserAuthorityMapper"> | |||||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxCUserAuthority"> | |||||
| <result column="user_name" jdbcType="VARCHAR" property="userName"/> | |||||
| <result column="type" jdbcType="INTEGER" property="type"/> | |||||
| <result column="resource_id" jdbcType="VARCHAR" property="resourceId"/> | |||||
| <result column="class" jdbcType="INTEGER" property="classType"/> | |||||
| <result column="expire_time" jdbcType="VARCHAR" property="expireTime"/> | |||||
| <result column="current_time" jdbcType="VARCHAR" property="currentTime"/> | |||||
| </resultMap> | |||||
| <select id="getAuthorAvatar" resultType="com.iformall.domain.po.WxCUserAuthority"> | |||||
| select wca.user_name,wca.type,wca.resource_id,wca.expire_time,wcav.class | |||||
| from wx_c_author wca | |||||
| join wx_c_avatar wcav on wca.resource_id = wcav.id and wca.type = 0 | |||||
| where wca.user_id=#{id} and wca.resource_id = #{resourceId} | |||||
| </select> | |||||
| <select id="getAuthorVoice" resultType="com.iformall.domain.po.WxCUserAuthority"> | |||||
| select wca.user_name,wca.type,wca.resource_id,wca.expire_time | |||||
| from wx_c_author wca | |||||
| join voice_info vi on wca.resource_id = vi.id | |||||
| join voice_language vl on vi.language_id =vl.id | |||||
| where wca.user_id=#{id} and wca.resource_id = #{resourceId} | |||||
| </select> | |||||
| </mapper> | |||||
| @@ -28,7 +28,9 @@ | |||||
| <result column="login_count" jdbcType="INTEGER" property="loginCount"/> | <result column="login_count" jdbcType="INTEGER" property="loginCount"/> | ||||
| <result column="act_record" jdbcType="INTEGER" property="actRecord"/> | <result column="act_record" jdbcType="INTEGER" property="actRecord"/> | ||||
| <result column="score_date" jdbcType="TIMESTAMP" property="scoreDate"/> | <result column="score_date" jdbcType="TIMESTAMP" property="scoreDate"/> | ||||
| <result column="status" jdbcType="INTEGER" property="status"/> | |||||
| <result column="code" jdbcType="VARCHAR" property="code"/> | |||||
| <result column="version" jdbcType="INTEGER" property="version"/> | |||||
| <result column="expire_time" jdbcType="VARCHAR" property="expireTime"/> | |||||
| </resultMap> | </resultMap> | ||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| @@ -38,6 +40,13 @@ | |||||
| wcubi.`avatar_url`,wcubi.`credit`,wcubi.`active_time`,wcubi.`login_count`,wcubi.`act_record`, | wcubi.`avatar_url`,wcubi.`credit`,wcubi.`active_time`,wcubi.`login_count`,wcubi.`act_record`, | ||||
| wcubi.score_date,wcubi.status | wcubi.score_date,wcubi.status | ||||
| </sql> | </sql> | ||||
| <sql id="allColumns1"> | |||||
| wcubi.`id`,wcubi.`phone`,wcubi.`birthdate`,wcubi.`education`,wcubi.`sex`,wcubi.`height`,wcubi.`weight`,wcubi.`id_card`,wcubi.`email`, | |||||
| wcubi.`address`,wcubi.`poins`,wcubi.`tag_id`,wcubi.`create_date`,wcubi.`update_date`, | |||||
| wcubi.`final_tenant_id`,wcubi.`tenant_id`,wcubi.`parent_tenant_id`,wcubi.`name`,wcubi.`nick_name`, | |||||
| wcubi.`avatar_url`,wcubi.`credit`,wcubi.`active_time`,wcubi.`login_count`,wcubi.`act_record`, | |||||
| wcubi.score_date,wcubi.status,wcubi1.code,wcubi1.version,wcubi1.expire_time | |||||
| </sql> | |||||
| <sql id="dynamicWhereConditions"> | <sql id="dynamicWhereConditions"> | ||||
| where 1=1 | where 1=1 | ||||
| @@ -130,6 +139,7 @@ | |||||
| where wcubi.id =#{id} | where wcubi.id =#{id} | ||||
| </select> | </select> | ||||
| <select id="findList" parameterType="com.iformall.domain.po.WxCUserBasicInfo" resultMap="BaseResultMap"> | <select id="findList" parameterType="com.iformall.domain.po.WxCUserBasicInfo" resultMap="BaseResultMap"> | ||||
| select | select | ||||
| <include refid="allColumns"/> | <include refid="allColumns"/> | ||||
| @@ -148,7 +158,7 @@ | |||||
| </foreach> | </foreach> | ||||
| </if> | </if> | ||||
| </select> | </select> | ||||
| <select id="findIdList" parameterType="com.iformall.domain.po.WxCUserBasicInfo" resultType="Long"> | <select id="findIdList" parameterType="com.iformall.domain.po.WxCUserBasicInfo" resultType="Long"> | ||||
| select id | select id | ||||
| from wx_c_user_basic_info wcubi | from wx_c_user_basic_info wcubi | ||||
| @@ -573,4 +583,5 @@ | |||||
| <update id="cuserOldToNew" statementType="CALLABLE" > | <update id="cuserOldToNew" statementType="CALLABLE" > | ||||
| {call cuser_old_to_new(#{oldCuserId},#{newCuserId},#{tableIndex},#{finalTableIndex})} | {call cuser_old_to_new(#{oldCuserId},#{newCuserId},#{tableIndex},#{finalTableIndex})} | ||||
| </update> | </update> | ||||
| </mapper> | </mapper> | ||||
| @@ -0,0 +1,44 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||||
| <mapper namespace="com.iformall.mapper.WxCVideoMapper"> | |||||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxCVideoTable"> | |||||
| <id column="id" jdbcType="INTEGER" property="id"/> | |||||
| <result column="user_name" jdbcType="VARCHAR" property="userName"/> | |||||
| <result column="name" jdbcType="VARCHAR" property="name"/> | |||||
| <result column="image" jdbcType="VARCHAR" property="image"/> | |||||
| <result column="demo" jdbcType="VARCHAR" property="demo"/> | |||||
| <result column="model" jdbcType="VARCHAR" property="model"/> | |||||
| <result column="model_path" jdbcType="VARCHAR" property="modelPath"/> | |||||
| <result column="class" jdbcType="VARCHAR" property="classType"/> | |||||
| <result column="preinfo" jdbcType="VARCHAR" property="preInfo"/> | |||||
| <result column="preinfo_path" jdbcType="VARCHAR" property="preInfoPath"/> | |||||
| <result column="expire_time" jdbcType="VARCHAR" property="expireTime"/> | |||||
| </resultMap> | |||||
| <!--<resultMap id="BaseResultMap" type="com.iformall.domain.po.WxCVideoTable"> | |||||
| <result column="user_name" jdbcType="VARCHAR" property="username"/> | |||||
| <result column="expire_time" jdbcType="VARCHAR" property="expireTime"/> | |||||
| </resultMap>--> | |||||
| <select id="getById" resultMap="BaseResultMap"> | |||||
| SELECT wca.user_name,expire_time,wcav.id,wcav.name,wcav.image,wcav.model,wcav.preinfo,wcav.demo | |||||
| ,wcav.class,wcav.model_path,wcav.preinfo_path | |||||
| from wx_c_author wca | |||||
| left join wx_c_avatar wcav on wcav.id =wca.resource_id | |||||
| where wca.resource_id | |||||
| in (select wca.resource_id from wx_c_author wca WHERE wca.user_id =#{id} AND wca.type = 0 ) | |||||
| </select> | |||||
| <select id="selectOne" resultType="com.iformall.domain.po.WxCVideoTable"> | |||||
| SELECT wca.user_name,expire_time,wcav.id,wcav.name,wcav.image,wcav.model,wcav.preinfo,wcav.demo | |||||
| ,wcav.class,wcav.model_path,wcav.preinfo_path | |||||
| from wx_c_author wca | |||||
| left join wx_c_avatar wcav on wcav.id =wca.resource_id | |||||
| where wca.resource_id =#{resource_id} and wca.user_id = #{id} | |||||
| </select> | |||||
| </mapper> | |||||
| @@ -0,0 +1,45 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||||
| <mapper namespace="com.iformall.mapper.WxCVoiceMapper"> | |||||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxCVoiceTable"> | |||||
| <result column="user_name" jdbcType="VARCHAR" property="userName"/> | |||||
| <result column="name" jdbcType="VARCHAR" property="localelName"/> | |||||
| <result column="chinese_name" jdbcType="VARCHAR" property="localDisPlayName"/> | |||||
| <result column="id" jdbcType="INTEGER" property="voiceId"/> | |||||
| <result column="class" jdbcType="INTEGER" property="voiceType"/> | |||||
| <result column="local_name" jdbcType="VARCHAR" property="voiceName"/> | |||||
| <result column="display_name" jdbcType="VARCHAR" property="voiceDisplayName"/> | |||||
| <result column="sex" jdbcType="INTEGER" property="gender"/> | |||||
| <result column="style_list" jdbcType="VARCHAR" property="styleList"/> | |||||
| <result column="mould_sm_id" jdbcType="VARCHAR" property="MouldSmId"/> | |||||
| <result column="style_name" jdbcType="VARCHAR" property="styleName"/> | |||||
| <result column="style_display_name" jdbcType="VARCHAR" property="styleDisplayName"/> | |||||
| <result column="style_demo" jdbcType="VARCHAR" property="styleDemo"/> | |||||
| </resultMap> | |||||
| <!-- <select id="getById" resultMap="BaseResultMap">--> | |||||
| <!--select wca.user_name,wca.resource_id,wca.expire_time,wcv.id, wcv.localel_id ,wcv.id ,wcv.voice_name,wcv.voice_display_name ,wcv.gender , wcv.class , wcvl.id,wcvl.local_name,wcvl.local_display_name,wcvs.id,wcvs.voice_id,wcvs.style_name,wcvs.style_display_name,wcvs.style_demo--> | |||||
| <!--from wx_c_author wca--> | |||||
| <!--INNER JOIN wx_c_voice wcv on wca.resource_id = wcv.id--> | |||||
| <!--and wca.type = 1--> | |||||
| <!--join wx_c_voice_local wcvl on wcv.localel_id = wcvl.id--> | |||||
| <!--join wx_c_voice_style wcvs on wcv.id=wcvs.voice_id where wca.user_id = #{id}--> | |||||
| <!-- </select> --> | |||||
| <select id="getById" resultMap="BaseResultMap"> | |||||
| select wca.user_name,wca.resource_id,wca.expire_time,vi.id,vi.language_id,vi.sex,vi.display_name,vi.local_name,vi.style_list, | |||||
| vl.name,vl.chinese_name | |||||
| FROM wx_c_author wca | |||||
| join voice_info vi on wca.resource_id = vi.id | |||||
| join voice_language vl on vi.language_id =vl.id | |||||
| WHERE wca.user_id=#{id} | |||||
| </select> | |||||
| </mapper> | |||||