From 620825100e463dd7de6cd360b40c1825b2805667 Mon Sep 17 00:00:00 2001 From: easonzhu Date: Mon, 24 Feb 2025 20:05:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=84=9A=E6=9C=AC=E5=8F=8A?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy.bat | 19 +- deploy_frontend.sh | 41 +++++ deploy_html.bat | 30 ++++ deploy_prod.bat | 41 +++++ pom.xml | 5 + shell/prod/deploy_advisor.sh | 56 ++++++ shell/{ => test}/advisor-server.service | 0 shell/{ => test}/clear_log.sh | 0 shell/{ => test}/kill.sh | 0 shell/{ => test}/start.sh | 0 .../advisor/service/AdvisorInfoService.java | 5 +- .../business/service/BusinessApiService.java | 62 ++++--- .../business/service/BusinessDataService.java | 2 +- .../business/service/OrderQueryService.java | 6 +- .../config/cache/HazelcastConfiguration.java | 6 + .../com/syzb/common/config/mybatis/Save.java | 2 +- .../com/syzb/common/constant/ClientType.java | 3 +- .../com/syzb/common/entity/ScheduleLog.java | 4 +- .../WebSocketAuthChannelInterceptor.java | 3 +- .../interceptor/WebSocketAuthHandler.java | 4 +- .../syzb/common/result/ResponseStatus.java | 20 --- .../java/com/syzb/common/util/IPUtil.java | 8 +- .../java/com/syzb/common/util/RsaUtil.java | 3 +- .../com/syzb/common/util/WebServerInfo.java | 4 +- .../syzb/common/util/logger/LoggerAgent.java | 2 +- .../controller/pc/PcCourseController.java | 52 ------ .../syzb/course/service/CoursePcService.java | 75 -------- .../java/com/syzb/crm/query/ProductQuery.java | 166 ------------------ .../com/syzb/crm/service/ProductService.java | 15 -- .../group/constant/GroupMessageChannel.java | 2 +- .../syzb/group/entity/GroupUserCollect.java | 3 +- .../group/mapper/GroupUserCollectMapper.java | 1 - .../syzb/group/query/info/SaveGroupQuery.java | 1 - .../com/syzb/group/schedule/GroupTask.java | 1 - .../admin/AdminGroupCollectService.java | 5 +- .../service/common/GroupCacheService.java | 2 +- .../service/common/GroupCommonService.java | 14 +- .../com/syzb/rbac/service/AuthService.java | 4 + src/main/java/com/syzb/startup/Main.java | 4 +- .../query/external/PushLiveImgAuditQuery.java | 2 +- .../admin/AdminVideoCustomerService.java | 8 +- .../admin/AdminVideoStatisticService.java | 4 - src/main/resources/application-dev.yaml | 10 ++ .../resources/application-prod-admin.yaml | 10 ++ .../resources/application-prod-customer.yaml | 9 + src/main/resources/application-test.yaml | 10 ++ src/main/resources/application.yaml | 7 +- .../{conf => dev}/advisorServer.yaml | 17 +- .../resources/{conf => dev}/application.yaml | 6 + src/main/resources/dev/business.yaml | 19 ++ .../{conf => dev}/tencentConfig.yaml | 24 +-- .../{logback-console.xml => logback-dev.xml} | 0 src/main/resources/logback-prod.xml | 2 +- src/main/resources/logback-spring.xml | 12 +- src/main/resources/logback-tst.xml | 116 ++++++++++++ src/main/resources/prod/admin.yaml | 1 + src/main/resources/prod/advisorServer.yaml | 49 ++++++ src/main/resources/prod/application.yaml | 62 +++++++ src/main/resources/prod/business.yaml | 19 ++ src/main/resources/prod/tencentConfig.yaml | 24 +++ 60 files changed, 631 insertions(+), 451 deletions(-) create mode 100644 deploy_frontend.sh create mode 100644 deploy_html.bat create mode 100644 deploy_prod.bat create mode 100644 shell/prod/deploy_advisor.sh rename shell/{ => test}/advisor-server.service (100%) rename shell/{ => test}/clear_log.sh (100%) rename shell/{ => test}/kill.sh (100%) rename shell/{ => test}/start.sh (100%) delete mode 100644 src/main/java/com/syzb/course/controller/pc/PcCourseController.java delete mode 100644 src/main/java/com/syzb/course/service/CoursePcService.java delete mode 100644 src/main/java/com/syzb/crm/query/ProductQuery.java delete mode 100644 src/main/java/com/syzb/crm/service/ProductService.java create mode 100644 src/main/resources/application-dev.yaml create mode 100644 src/main/resources/application-prod-admin.yaml create mode 100644 src/main/resources/application-prod-customer.yaml create mode 100644 src/main/resources/application-test.yaml rename src/main/resources/{conf => dev}/advisorServer.yaml (83%) rename src/main/resources/{conf => dev}/application.yaml (91%) create mode 100644 src/main/resources/dev/business.yaml rename src/main/resources/{conf => dev}/tencentConfig.yaml (52%) rename src/main/resources/{logback-console.xml => logback-dev.xml} (100%) create mode 100644 src/main/resources/logback-tst.xml create mode 100644 src/main/resources/prod/admin.yaml create mode 100644 src/main/resources/prod/advisorServer.yaml create mode 100644 src/main/resources/prod/application.yaml create mode 100644 src/main/resources/prod/business.yaml create mode 100644 src/main/resources/prod/tencentConfig.yaml diff --git a/deploy.bat b/deploy.bat index 52d0770..0edee92 100644 --- a/deploy.bat +++ b/deploy.bat @@ -1,6 +1,13 @@ @echo off -:: 1. 运行 Maven 打包 +:: 1. 设置动态参数 +set REMOTE_IP=8.138.144.54 +set REMOTE_PORT=22 +set REMOTE_PATH=/root +set REMOTE_USER=root +set START_SCRIPT=/root/start.sh + +:: 2. 运行 Maven 打包 echo Running mvn clean package... :: call mvn clean package -P thin-jar call mvn clean package @@ -11,9 +18,9 @@ IF %ERRORLEVEL% NEQ 0 ( exit /b %ERRORLEVEL% ) -:: 2. 将 JAR 包传输到 Linux 服务器 +:: 3. 将 JAR 包传输到 Linux 服务器 echo Copying JAR file to Linux server... -call scp target\AdvisorServer-2.6.7.jar root@8.138.144.54:/root +call scp -P %REMOTE_PORT% target\AdvisorServer-2.6.7.jar %REMOTE_USER%@%REMOTE_IP%:%REMOTE_PATH% :: 检查 SCP 命令是否成功 IF %ERRORLEVEL% NEQ 0 ( @@ -21,9 +28,9 @@ IF %ERRORLEVEL% NEQ 0 ( exit /b %ERRORLEVEL% ) -:: 3. 通过 SSH 运行 start.sh 脚本 +:: 4. 通过 SSH 运行 start.sh 脚本 echo Running start.sh script on Linux server... -call ssh root@8.138.144.54 "bash /root/start.sh" +call ssh -p %REMOTE_PORT% %REMOTE_USER%@%REMOTE_IP% "bash %START_SCRIPT%" :: 检查 SSH 命令是否成功 IF %ERRORLEVEL% NEQ 0 ( @@ -31,4 +38,4 @@ IF %ERRORLEVEL% NEQ 0 ( exit /b %ERRORLEVEL% ) -echo Deployment successful! +echo Deployment successful! \ No newline at end of file diff --git a/deploy_frontend.sh b/deploy_frontend.sh new file mode 100644 index 0000000..eb19b19 --- /dev/null +++ b/deploy_frontend.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +# 当前服务器上的文件路径 +HTML_ZIP_FILE="/tmp/h5.zip /tmp/syAdmin.zip" + +# 目标服务器信息(格式:IP地址:端口) +SERVERS=( + "172.26.1.9:22" + "172.26.1.15:22" +) + +# 目标路径 +TARGET_DIR="/home/ubuntu" + +# 1. 循环拷贝文件到所有服务器 +for SERVER in "${SERVERS[@]}"; do + # 获取 IP 和端口 + IP=$(echo $SERVER | cut -d ':' -f 1) + PORT=$(echo $SERVER | cut -d ':' -f 2) + + # 拷贝 JAR 文件到目标服务器 + echo "Copying HTML_ZIP_FILE to $IP:$TARGET_DIR" + scp -P $PORT $HTML_ZIP_FILE ubuntu@$IP:$TARGET_DIR +done + +echo "Files copied to all servers." + +# 2. 所有文件拷贝完成后,执行服务器上的release_html.sh +for SERVER in "${SERVERS[@]}"; do + # 获取 IP 和端口 + IP=$(echo $SERVER | cut -d ':' -f 1) + PORT=$(echo $SERVER | cut -d ':' -f 2) + + # 执行 release_html.sh 脚本 + echo "Executing release_html.sh on $IP" + ssh -p $PORT ubuntu@$IP "sudo bash /home/ubuntu/release_html.sh" +done + +echo "All html released." + +echo "All tasks completed." \ No newline at end of file diff --git a/deploy_html.bat b/deploy_html.bat new file mode 100644 index 0000000..9f6e394 --- /dev/null +++ b/deploy_html.bat @@ -0,0 +1,30 @@ +@echo off + +:: 1. 设置动态参数 +set REMOTE_IP=119.29.151.152 +set REMOTE_PORT=22101 +set REMOTE_PATH=/tmp +set REMOTE_USER=ubuntu +set DEPLOY_SCRIPT=/home/ubuntu/deploy_html.sh + +:: 3. 将 ZIP 包传输到 Linux 服务器 +echo Copying ZIP file to Linux server... +call scp -P %REMOTE_PORT% h5.zip syAdmin.zip %REMOTE_USER%@%REMOTE_IP%:%REMOTE_PATH% + +:: 检查 SCP 命令是否成功 +IF %ERRORLEVEL% NEQ 0 ( + echo File transfer failed, exiting... + exit /b %ERRORLEVEL% +) + +:: 4. 通过 SSH 运行 deploy.sh 脚本 +echo Running deploy_html.sh script on Linux server... +call ssh -p %REMOTE_PORT% %REMOTE_USER%@%REMOTE_IP% "bash %DEPLOY_SCRIPT%" + +:: 检查 SSH 命令是否成功 +IF %ERRORLEVEL% NEQ 0 ( + echo Failed to start the application, exiting... + exit /b %ERRORLEVEL% +) + +echo Deployment successful! \ No newline at end of file diff --git a/deploy_prod.bat b/deploy_prod.bat new file mode 100644 index 0000000..c2e33d9 --- /dev/null +++ b/deploy_prod.bat @@ -0,0 +1,41 @@ +@echo off + +:: 1. 设置动态参数 +set REMOTE_IP=119.29.151.152 +set REMOTE_PORT=22101 +set REMOTE_PATH=/tmp +set REMOTE_USER=ubuntu +set DEPLOY_SCRIPT=/home/ubuntu/deploy_advisor.sh + +:: 2. 运行 Maven 打包 +echo Running mvn clean package... +:: call mvn clean package -P thin-jar +call mvn clean package + +:: 检查是否打包成功 +IF %ERRORLEVEL% NEQ 0 ( + echo Maven build failed, exiting... + exit /b %ERRORLEVEL% +) + +:: 3. 将 JAR 包传输到 Linux 服务器 +echo Copying JAR file to Linux server... +call scp -P %REMOTE_PORT% target\AdvisorServer-2.6.7.jar %REMOTE_USER%@%REMOTE_IP%:%REMOTE_PATH% + +:: 检查 SCP 命令是否成功 +IF %ERRORLEVEL% NEQ 0 ( + echo File transfer failed, exiting... + exit /b %ERRORLEVEL% +) + +:: 4. 通过 SSH 运行 deploy.sh 脚本 +echo Running deploy_advisor.sh script on Linux server... +call ssh -p %REMOTE_PORT% %REMOTE_USER%@%REMOTE_IP% "bash %DEPLOY_SCRIPT%" + +:: 检查 SSH 命令是否成功 +IF %ERRORLEVEL% NEQ 0 ( + echo Failed to start the application, exiting... + exit /b %ERRORLEVEL% +) + +echo Deployment successful! \ No newline at end of file diff --git a/pom.xml b/pom.xml index 81d83a5..de2d804 100644 --- a/pom.xml +++ b/pom.xml @@ -64,6 +64,11 @@ hazelcast-sql 5.3.8 + + com.hazelcast + hazelcast-spring + 5.3.8 + com.alibaba fastjson diff --git a/shell/prod/deploy_advisor.sh b/shell/prod/deploy_advisor.sh new file mode 100644 index 0000000..606137f --- /dev/null +++ b/shell/prod/deploy_advisor.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +# 当前服务器上的文件路径 +JAR_FILE="/tmp/AdvisorServer-2.6.7.jar" + +# 目标服务器信息(格式:IP地址:端口) +SERVERS=( + "172.26.1.3:22" + "172.26.1.7:22" + "172.26.1.9:22" + "172.26.1.15:22" +) + +# 目标路径 +TARGET_DIR="/home/ubuntu" + +# 1. 循环拷贝文件到所有服务器 +for SERVER in "${SERVERS[@]}"; do + # 获取 IP 和端口 + IP=$(echo $SERVER | cut -d ':' -f 1) + PORT=$(echo $SERVER | cut -d ':' -f 2) + + # 拷贝 JAR 文件到目标服务器 + echo "Copying $JAR_FILE to $IP:$TARGET_DIR" + scp -P $PORT $JAR_FILE ubuntu@$IP:$TARGET_DIR +done + +echo "Files copied to all servers." + +# 2. 所有文件拷贝完成后,停止服务 +for SERVER in "${SERVERS[@]}"; do + # 获取 IP 和端口 + IP=$(echo $SERVER | cut -d ':' -f 1) + PORT=$(echo $SERVER | cut -d ':' -f 2) + + # 执行 start.sh 脚本 + echo "Stopping $START_SCRIPT on $IP" + ssh -p $PORT ubuntu@$IP "sudo systemctl stop advisor-server" +done + +echo "All services stopped." + +# 3. 所有文件拷贝完成后,启动服务 +for SERVER in "${SERVERS[@]}"; do + # 获取 IP 和端口 + IP=$(echo $SERVER | cut -d ':' -f 1) + PORT=$(echo $SERVER | cut -d ':' -f 2) + + # 执行 start.sh 脚本 + echo "Starting $START_SCRIPT on $IP" + ssh -p $PORT ubuntu@$IP "sudo systemctl start advisor-server" +done + +echo "All services started." + +echo "All tasks completed." \ No newline at end of file diff --git a/shell/advisor-server.service b/shell/test/advisor-server.service similarity index 100% rename from shell/advisor-server.service rename to shell/test/advisor-server.service diff --git a/shell/clear_log.sh b/shell/test/clear_log.sh similarity index 100% rename from shell/clear_log.sh rename to shell/test/clear_log.sh diff --git a/shell/kill.sh b/shell/test/kill.sh similarity index 100% rename from shell/kill.sh rename to shell/test/kill.sh diff --git a/shell/start.sh b/shell/test/start.sh similarity index 100% rename from shell/start.sh rename to shell/test/start.sh diff --git a/src/main/java/com/syzb/advisor/service/AdvisorInfoService.java b/src/main/java/com/syzb/advisor/service/AdvisorInfoService.java index fbab81b..927d149 100644 --- a/src/main/java/com/syzb/advisor/service/AdvisorInfoService.java +++ b/src/main/java/com/syzb/advisor/service/AdvisorInfoService.java @@ -92,6 +92,9 @@ public class AdvisorInfoService { @Resource private AdvertService advertService; + @Resource + private UserService userService; + @Value("${advisor.roleId}") private Integer advisorRoleId; @@ -100,8 +103,6 @@ public class AdvisorInfoService { AdvisorInfoStatus.EVENT_SUBMIT.value, AdvisorInfoStatus.EVENT_PASS.value ); - @Autowired - private UserService userService; public Map getAdvisorMap() { return cacheService.get(ADVISOR_INFO, AdvisorInfoKey.ADVISOR_MAP, () -> { diff --git a/src/main/java/com/syzb/business/service/BusinessApiService.java b/src/main/java/com/syzb/business/service/BusinessApiService.java index a89d986..95725d5 100644 --- a/src/main/java/com/syzb/business/service/BusinessApiService.java +++ b/src/main/java/com/syzb/business/service/BusinessApiService.java @@ -9,8 +9,10 @@ import com.syzb.business.vo.*; import com.syzb.common.handler.BizException; import com.syzb.common.result.ResponseStatus; import com.syzb.common.util.logger.LoggerUtil; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import javax.annotation.PostConstruct; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -24,28 +26,33 @@ import java.util.Map; // business信息Service @Service public class BusinessApiService { - - private String host = "https://webdzapi.ceniu.sztg.com"; - private String loginUrl = "/common/loginByUserName"; + @Value("${business.api.host}") + private String host; - private String getUserUrl = "/common/getUserByToken"; + @Value("${business.api.url.loginUrl}") + private String loginUrl; - private String getModuleListUrl = "/user/getUserModuleList"; + @Value("${business.api.url.getUserUrl}") + private String getUserUrl; - private String getOrderListUrl = "/order/getAllBatchOrderListByPage"; + @Value("${business.api.url.getModuleListUrl}") + private String getModuleListUrl; - private String getModuleUserListUrl = "/order/getUserModuleListByPage"; + @Value("${business.api.url.getOrderListUrl}") + private String getOrderListUrl; - private String authorizationDeptId = "16"; + @Value("${business.api.url.getModuleUserListUrl}") + private String getModuleUserListUrl; - private String authorizationKey = "56e670eea5ff3a1aebbc02820e908ceb56e670eea5ff3a1aebbc02820e908ceb"; + @Value("${business.api.authorizationDeptId}") + private String authorizationDeptId; -// private String authorizationDeptId = "33"; -// -// private String authorizationKey = "90804bd6089d950e8804c6d7cad7558a90804bd6089d950e8804c6d7cad7558a"; + @Value("${business.api.authorizationKey}") + private String authorizationKey; - private static final int timeout = 10000; + @Value("${business.api.timeout}") + private int timeout = 10000; private static final int SUCCESS_CODE = 200; @@ -134,20 +141,6 @@ public class BusinessApiService { return vo.getData(); } - public static void main(String[] args) { - BusinessApiService service = new BusinessApiService(); -// BusinessLoginVO loginVO = service.loginByUserName("sz545138", "Abc@123"); -// String token = loginVO.getToken(); -// String token = "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1NDUxMzgiLCJpYXQiOjE3Mzk5NTcxMjYsImV4cCI6MTczOTk2MDcyNn0.02FnOeW7RnIeI7sqwTTw0H9NPj03iFRAkr9PPXwpaDMgRTK2v7krDqAYa6dSIkuGx8wnKWPp-kcA4Ajr_MLjdw"; -// BusinessUserVO userVO = service.getUser(token); -// System.out.println(JSONUtil.toJsonStr(userVO)); -// service.getModuleList(userVO.getUserId().toString()); -// List orderList = service.getOrderList(LocalDate.now().withDayOfYear(1).atStartOfDay(), LocalDateTime.now()); -// System.out.println(JSONUtil.toJsonStr(orderList)); - List moduleUserList = service.getModuleUserList(1000, LocalDate.now().withDayOfYear(1).atStartOfDay(), LocalDateTime.now()); - System.out.println(JSONUtil.toJsonStr(moduleUserList)); - } - private T post(String url, Map params, Class type) { T vo; try { @@ -213,4 +206,19 @@ public class BusinessApiService { return header; } +// @PostConstruct +// public void test() { +// BusinessLoginVO loginVO = login("sz545138", "Abc@123"); +// String token = loginVO.getToken(); +//// String token = "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1NDUxMzgiLCJpYXQiOjE3Mzk5NTcxMjYsImV4cCI6MTczOTk2MDcyNn0.02FnOeW7RnIeI7sqwTTw0H9NPj03iFRAkr9PPXwpaDMgRTK2v7krDqAYa6dSIkuGx8wnKWPp-kcA4Ajr_MLjdw"; +// BusinessUserVO userVO = getUser(token); +// System.out.println(JSONUtil.toJsonStr(userVO)); +// List moduleList = getModuleList(userVO.getUserId().toString()); +// System.out.println(JSONUtil.toJsonStr(moduleList)); +// List orderList = getOrderList(LocalDate.now().withDayOfYear(1).atStartOfDay(), LocalDateTime.now()); +// System.out.println(JSONUtil.toJsonStr(orderList)); +// List moduleUserList = getModuleUserList(1000, LocalDate.now().withDayOfYear(1).atStartOfDay(), LocalDateTime.now()); +// System.out.println(JSONUtil.toJsonStr(moduleUserList)); +// } + } \ No newline at end of file diff --git a/src/main/java/com/syzb/business/service/BusinessDataService.java b/src/main/java/com/syzb/business/service/BusinessDataService.java index 3b79f3e..036a489 100644 --- a/src/main/java/com/syzb/business/service/BusinessDataService.java +++ b/src/main/java/com/syzb/business/service/BusinessDataService.java @@ -30,7 +30,7 @@ import java.util.stream.Collectors; @Service public class BusinessDataService { - private LocalDateTime INIT_SYNC_TIME = LocalDateTime.of(2025, 1, 1, 0, 0, 0); + private final LocalDateTime INIT_SYNC_TIME = LocalDateTime.of(2025, 1, 1, 0, 0, 0); @Resource private BusinessApiService businessApiService; diff --git a/src/main/java/com/syzb/business/service/OrderQueryService.java b/src/main/java/com/syzb/business/service/OrderQueryService.java index 66d719f..0a9c61a 100644 --- a/src/main/java/com/syzb/business/service/OrderQueryService.java +++ b/src/main/java/com/syzb/business/service/OrderQueryService.java @@ -88,7 +88,7 @@ public class OrderQueryService { .select("distinct user_id") .eq(saleUserId != null && saleUserId != 0, "sale_user_id", saleUserId); List orders = appOrderMapper.selectList(wrapper); - return orders.stream().map(order -> order.getUserId().toString()).collect(Collectors.toSet()); + return orders.stream().map(order -> order.getUserId()).collect(Collectors.toSet()); } /** @@ -110,7 +110,7 @@ public class OrderQueryService { .eq("pay_status", IsOrNot.IS.value) .groupBy("user_name"); List orders = appOrderMapper.selectList(wrapper); - return orders.stream().collect(Collectors.toMap(order -> order.getUserId().toString(), order -> { + return orders.stream().collect(Collectors.toMap(order -> order.getUserId(), order -> { OrderStatCollect orderStatCollect = new OrderStatCollect(); orderStatCollect.setOrderAmount(order.getOriginalPrice()); orderStatCollect.setPayAmount(order.getReceivedAmount()); @@ -251,7 +251,7 @@ public class OrderQueryService { .isNotNull(IsOrNot.IS.value.equals(payStatus), AppOrder::getReceivedAmount); List orderList = appOrderMapper.selectList(wrapper); return orderList.stream() - .collect(Collectors.groupingBy(order -> order.getUserId().toString(), + .collect(Collectors.groupingBy(order -> order.getUserId(), Collectors.mapping(AppOrder::getProductName, Collectors.toList()))); } diff --git a/src/main/java/com/syzb/common/config/cache/HazelcastConfiguration.java b/src/main/java/com/syzb/common/config/cache/HazelcastConfiguration.java index 126d834..a3e0d04 100644 --- a/src/main/java/com/syzb/common/config/cache/HazelcastConfiguration.java +++ b/src/main/java/com/syzb/common/config/cache/HazelcastConfiguration.java @@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import javax.annotation.PreDestroy; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -105,4 +106,9 @@ public class HazelcastConfiguration { instance.getMap(CacheKey.GROUP_ONLINE_USER).addIndex(groupIndexConfig); } + @PreDestroy + public void destroy() { + hazelcastInstance().shutdown(); + } + } diff --git a/src/main/java/com/syzb/common/config/mybatis/Save.java b/src/main/java/com/syzb/common/config/mybatis/Save.java index 1531125..4169bdd 100644 --- a/src/main/java/com/syzb/common/config/mybatis/Save.java +++ b/src/main/java/com/syzb/common/config/mybatis/Save.java @@ -17,7 +17,7 @@ import java.util.stream.Collectors; public class Save extends AbstractMethod { - public static String saveSql = ""; + public static final String saveSql = ""; public static final String methodName = "save"; diff --git a/src/main/java/com/syzb/common/constant/ClientType.java b/src/main/java/com/syzb/common/constant/ClientType.java index 1dd50f8..5668f3f 100644 --- a/src/main/java/com/syzb/common/constant/ClientType.java +++ b/src/main/java/com/syzb/common/constant/ClientType.java @@ -9,7 +9,7 @@ public enum ClientType { private final int value; - private ClientType(int value) { + ClientType(int value) { this.value = value; } @@ -17,7 +17,6 @@ public enum ClientType { return this.value; } - @Override public String toString() { return this.name() + ":" + this.value; } diff --git a/src/main/java/com/syzb/common/entity/ScheduleLog.java b/src/main/java/com/syzb/common/entity/ScheduleLog.java index addc73f..a4a2e47 100644 --- a/src/main/java/com/syzb/common/entity/ScheduleLog.java +++ b/src/main/java/com/syzb/common/entity/ScheduleLog.java @@ -88,7 +88,7 @@ public class ScheduleLog implements Serializable { return log; } - public static ScheduleLog success(int id, String ext) { + public static ScheduleLog success(Integer id, String ext) { ScheduleLog log = new ScheduleLog(); log.setId(id); log.setEndTime(LocalDateTime.now()); @@ -99,7 +99,7 @@ public class ScheduleLog implements Serializable { return log; } - public static ScheduleLog error(int id, String error) { + public static ScheduleLog error(Integer id, String error) { ScheduleLog log = new ScheduleLog(); log.setId(id); log.setEndTime(LocalDateTime.now()); diff --git a/src/main/java/com/syzb/common/interceptor/WebSocketAuthChannelInterceptor.java b/src/main/java/com/syzb/common/interceptor/WebSocketAuthChannelInterceptor.java index 8c0a067..5364a78 100644 --- a/src/main/java/com/syzb/common/interceptor/WebSocketAuthChannelInterceptor.java +++ b/src/main/java/com/syzb/common/interceptor/WebSocketAuthChannelInterceptor.java @@ -11,6 +11,7 @@ import org.springframework.messaging.support.ChannelInterceptor; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import javax.validation.constraints.NotNull; /** *

@@ -45,7 +46,7 @@ public class WebSocketAuthChannelInterceptor implements ChannelInterceptor { } @Override - public void postSend(Message message, MessageChannel channel, boolean sent) { + public void postSend(@NotNull Message message, @NotNull MessageChannel channel, boolean sent) { StompHeaderAccessor header = StompHeaderAccessor.wrap(message); if (!isValidHeader(header)) { return; diff --git a/src/main/java/com/syzb/common/interceptor/WebSocketAuthHandler.java b/src/main/java/com/syzb/common/interceptor/WebSocketAuthHandler.java index 85482b8..731f3c5 100644 --- a/src/main/java/com/syzb/common/interceptor/WebSocketAuthHandler.java +++ b/src/main/java/com/syzb/common/interceptor/WebSocketAuthHandler.java @@ -22,7 +22,7 @@ public class WebSocketAuthHandler { @Resource private AuthFilter authFilter; - private Set VALID_PRODUCT_TYPES = ImmutableSet.of(ProductType.VIDEO_SINGLE.value, ProductType.GROUP.value); + private final Set VALID_PRODUCT_TYPES = ImmutableSet.of(ProductType.VIDEO_SINGLE.value, ProductType.GROUP.value); public Message handleConnect(Message message, StompHeaderAccessor header) { Map attributes = header.getSessionAttributes(); @@ -43,7 +43,7 @@ public class WebSocketAuthHandler { } Integer productId = getInteger(header, "productId"); if (productId == null) { - throw new BizException(ResponseStatus.PARM_ERROR, "产品ID错误" + productId); + throw new BizException(ResponseStatus.PARM_ERROR, "产品ID错误"); } attributes.put("userId", userId); attributes.put("sessionId", sessionId); diff --git a/src/main/java/com/syzb/common/result/ResponseStatus.java b/src/main/java/com/syzb/common/result/ResponseStatus.java index aac4d14..96c7640 100644 --- a/src/main/java/com/syzb/common/result/ResponseStatus.java +++ b/src/main/java/com/syzb/common/result/ResponseStatus.java @@ -94,48 +94,31 @@ public enum ResponseStatus { BUILT_IN_CAN_NOT_MODIFY(4018, "内置角色不可修改或删除"), VIEW_COLUMN_UPDATE_ERROR(4019, "该栏目已被观点、观点包使用,不得隐藏"), COURSE_COLUMN_UPDATE_ERROR(4020, "该栏目已被课程、课程包使用,不得隐藏"), - TRANSACTION_NOT_COMPLETED(4034, "该标的已有持仓,请清仓后再调入"), - TAG_IS_USING_ERROR(4035, "该标签已被使用,无法下架/删除"), - STRATEGY_NAME_EXIST_ERROR(4036, "定价策略名称重复"), - PACKAGE_SUB_PRODUCT_EXIST_ERROR(4037, "加入套餐的产品,不允许下架,请先下架套餐产品"), - VIEW_NOT_SOLD_OUT(4038, "观点在观点包中需先下架观点包"), - BE_USED_NOT_MODIFY(4039, "被引用角色不可删除"), - SIM_ACCOUNT_NOT_REGISTERED_ERROR(4040, "未注册模拟交易帐号,禁止下单或撤单"), ILLEGAL_OPERATION(4041, "非法操作"), TY_NOT_OPEN_ERROR(4042, "全局提拥支付未开启,不允许提交"), TY_DEPT_NOT_OPEN_ERROR(4043, "营业部提拥支付未开启,不允许提交"), - COURSE_IS_IN_PACKAGE(4017, "课程已在其他课程包中"), COURSE_NOT_SOLD_OUT(4038, "课程在课程包中需先下架课程包"), COURSE_PACKAGE_NAME_EXIST(6010, "课程包名称已存在"), - AUDIT_LEFT_PRODUCT_ERROR(4055, "不能审核自己或者自己团队创建的产品"), - DATA_DELETED_ERROR(4056, "数据已删除,禁止操作"), - REMOVE_BLACK_USER_ERROR(4057, "非禁言用户,无须解除禁言"), - COMMENT_BLACK_USER_ERROR(4058, "禁言用户,禁止发言"), - DECRYPT_ERROR(4059, "AES解密失败"), - SECRET_ACQUIRE_FAIL(4060, "获取加密推送地址失败"), MESSAGE_PERMISSION_ERROR(4061, "消息权限错误"), /*********************内部系统***********************/ SYS_BUSY(5000, "系统忙,请稍后重试"), - MICRO_APP_BUSY(5001, "服务忙,请稍后重试"), - HYSTRIX_FALLBACK(5002, "接口调用失败,被熔断,请稍后重试"), - UNSUPPORTED_ENCODING(5003, "不支持的编码异常"), DB_SAVE_ERROR(5004, "数据库保存异常"), MESSAGE_SEND_ERROR(5005, "短信发送失败,请稍后重试"), @@ -151,11 +134,8 @@ public enum ResponseStatus { STAFF_NO_EXIST(6009, "登录账号或者UP号已存在"), VIEW_PACKAGE_NAME_EXIST(6010, "观点包名称已存在"), DEPT_EXIST(6011, "用户部门已存在"), - COUNTER_ERROR(6011, "柜台接口异常"), - TENCENT_ERROR(6012, "腾讯云任务流接口异常"), - NOT_PRODUCT_AUTH(6013, "无产品权限"), TOKEN_DATA_ERROR(6014, "token错误,请重新登录"), ; diff --git a/src/main/java/com/syzb/common/util/IPUtil.java b/src/main/java/com/syzb/common/util/IPUtil.java index 6a6e903..60eefee 100644 --- a/src/main/java/com/syzb/common/util/IPUtil.java +++ b/src/main/java/com/syzb/common/util/IPUtil.java @@ -15,16 +15,16 @@ public class IPUtil { */ public static String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("X-Real-IP"); } - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } if ("0:0:0:0:0:0:0:1".equals(ip)) { diff --git a/src/main/java/com/syzb/common/util/RsaUtil.java b/src/main/java/com/syzb/common/util/RsaUtil.java index 68c91d7..75b575f 100644 --- a/src/main/java/com/syzb/common/util/RsaUtil.java +++ b/src/main/java/com/syzb/common/util/RsaUtil.java @@ -6,6 +6,7 @@ import org.apache.commons.lang3.exception.ExceptionUtils; import javax.crypto.Cipher; import java.io.ByteArrayOutputStream; +import java.nio.charset.StandardCharsets; import java.security.KeyFactory; import java.security.PrivateKey; import java.security.PublicKey; @@ -106,7 +107,7 @@ public class RsaUtil { offSet = i * MAX_DECRYPT_BLOCK; } out.close(); - return out.toString("UTF-8"); + return out.toString(StandardCharsets.UTF_8); } catch (Exception exception) { LoggerUtil.info("RsaUtil.priKeyDecryption异常:" + ExceptionUtils.getStackTrace(exception)); return null; diff --git a/src/main/java/com/syzb/common/util/WebServerInfo.java b/src/main/java/com/syzb/common/util/WebServerInfo.java index 2c8ec4a..1c1a808 100644 --- a/src/main/java/com/syzb/common/util/WebServerInfo.java +++ b/src/main/java/com/syzb/common/util/WebServerInfo.java @@ -1,5 +1,7 @@ package com.syzb.common.util; +import cn.hutool.core.exceptions.ExceptionUtil; +import com.syzb.common.util.logger.LoggerUtil; import org.springframework.boot.web.context.WebServerApplicationContext; import org.springframework.stereotype.Component; @@ -19,7 +21,7 @@ public class WebServerInfo { InetAddress inetAddress = InetAddress.getLocalHost(); return inetAddress.getHostAddress(); } catch (UnknownHostException e) { - e.printStackTrace(); + LoggerUtil.error(ExceptionUtil.stacktraceToString(e)); } return "0.0.0.0"; } diff --git a/src/main/java/com/syzb/common/util/logger/LoggerAgent.java b/src/main/java/com/syzb/common/util/logger/LoggerAgent.java index acc61bd..c3aea02 100644 --- a/src/main/java/com/syzb/common/util/logger/LoggerAgent.java +++ b/src/main/java/com/syzb/common/util/logger/LoggerAgent.java @@ -9,7 +9,7 @@ import java.util.stream.Collectors; public class LoggerAgent { - private Logger logger; + private final Logger logger; private LoggerAgent(String name) { logger = LoggerFactory.getLogger(name); diff --git a/src/main/java/com/syzb/course/controller/pc/PcCourseController.java b/src/main/java/com/syzb/course/controller/pc/PcCourseController.java deleted file mode 100644 index 9f0ab2d..0000000 --- a/src/main/java/com/syzb/course/controller/pc/PcCourseController.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.syzb.course.controller.pc; - -import com.syzb.common.query.OnlyIdQuery; -import com.syzb.common.result.CommonResult; -import com.syzb.common.vo.FrontUserVO; -import com.syzb.course.service.CoursePcService; -import com.syzb.course.vo.CourseContentVO; -import com.syzb.course.vo.CourseVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestAttribute; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import java.util.List; - -@Api(tags = "课程pc接口") -@RestController -public class PcCourseController { - - @Resource - private CoursePcService coursePcService; - - @ApiOperation("pc查询课程详情") - @PostMapping("/pc/course/info/get") - public CommonResult get(@Validated @RequestBody @ApiParam(required = true) OnlyIdQuery query, - @RequestAttribute(value = "frontUser", required = false) FrontUserVO frontUserVO) { - CourseVO vo = coursePcService.getForPc(query, frontUserVO); - return CommonResult.success(vo); - } - - @ApiOperation("pc查询课程内容列表") - @PostMapping("/pc/course/content/list") - public CommonResult> listContent(@Validated @RequestBody @ApiParam(required = true) OnlyIdQuery query, - @RequestAttribute(value = "frontUser", required = false) FrontUserVO frontUserVO) { - List list = coursePcService.listContentForPc(query, frontUserVO); - return CommonResult.success(list); - } - - @ApiOperation("pc更多系列课查询列表") - @PostMapping("/pc/course/info/list") - public CommonResult> list(@Validated @RequestBody @ApiParam(required = true) OnlyIdQuery query, - @RequestAttribute(value = "frontUser", required = false) FrontUserVO frontUserVO) { - List list = coursePcService.listForPc(query, frontUserVO); - return CommonResult.success(list); - } - -} \ No newline at end of file diff --git a/src/main/java/com/syzb/course/service/CoursePcService.java b/src/main/java/com/syzb/course/service/CoursePcService.java deleted file mode 100644 index 5ba54dc..0000000 --- a/src/main/java/com/syzb/course/service/CoursePcService.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.syzb.course.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.hazelcast.map.IMap; -import com.syzb.common.config.cache.CacheKey; -import com.syzb.common.constant.IsDisplay; -import com.syzb.common.query.OnlyIdQuery; -import com.syzb.common.service.CacheService; -import com.syzb.common.vo.FrontUserVO; -import com.syzb.course.constant.CourseStatus; -import com.syzb.course.entity.Course; -import com.syzb.course.mapper.CourseMapper; -import com.syzb.course.vo.CourseContentVO; -import com.syzb.course.vo.CourseVO; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.List; -import java.util.stream.Collectors; - -// 课程PC端Service -@Service -public class CoursePcService { - - @Resource - private CourseMapper courseMapper; - - @Resource - private CourseService courseService; - - @Resource - private CacheService cacheService; - - @Resource - private IMap courseCache; - - @Value("${pc.courseRecommendSize}") - private Integer courseRecommendSize; - - @Value("${pc.url.liveUrl}") - private String liveUrl; - - public CourseVO getForPc(OnlyIdQuery query, FrontUserVO frontUserVO) { - return courseService.getForApp(query, null); - } - - public List listContentForPc(OnlyIdQuery query, FrontUserVO frontUserVO) { - List list = courseService.listContentForApp(query, null); - return list.stream().filter(courseContentVO -> courseContentVO.getVideo() != null) - .peek(content -> content.setPcUrl(String.format(liveUrl, content.getContentId(), content.getCourseId()))) - .collect(Collectors.toList()); - } - - public List listForPc(OnlyIdQuery query, FrontUserVO frontUserVO) { - Integer excludeId = query.getId(); - List ids = cacheService.get(courseCache, CacheKey.CourseKey.PC_COURSE_LIST + query.getId(), () -> { - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() - .select(Course::getId) - .eq(Course::getStatus, CourseStatus.AUDITED.value) - .eq(Course::getIsDisplay, IsDisplay.YES.value) - .orderByDesc(Course::getIsRecommend, Course::getAuditTime) - .last("limit " + (courseRecommendSize + 1)); - List list = courseMapper.selectList(wrapper); - List idList = list.stream().map(Course::getId).collect(Collectors.toList()); - idList.remove(excludeId); - if (idList.size() > courseRecommendSize) { - idList.remove(idList.size() - 1); - } - return idList; - }); - return ids.stream().map(id -> getForPc(new OnlyIdQuery(id), null)).collect(Collectors.toList()); - } -} diff --git a/src/main/java/com/syzb/crm/query/ProductQuery.java b/src/main/java/com/syzb/crm/query/ProductQuery.java deleted file mode 100644 index 334117b..0000000 --- a/src/main/java/com/syzb/crm/query/ProductQuery.java +++ /dev/null @@ -1,166 +0,0 @@ -package com.syzb.crm.query; - -import io.swagger.annotations.ApiModelProperty; - -import java.math.BigDecimal; -import java.util.List; - -public class ProductQuery { - - @ApiModelProperty(value = "订单产品id", name = "authorityId") - private Integer authorityId; - - @ApiModelProperty(value = "产品id", name = "productId") - private Integer productId; - - @ApiModelProperty(value = "产品类型:1观点包 2单篇观点 3视频 5交易圈 6图文直播间 7组合 8锦囊", name = "productType") - private Integer productType; - - @ApiModelProperty(value = "产品名称", name = "productName") - private String productName; - - @ApiModelProperty(value = "价格策略id,为null代表免费但需要签约的产品", name = "strategyId") - private Integer strategyId; - - @ApiModelProperty(value = "风险等级:1低风险 2中低风险 3中风险 4中高风险 5高风险", name = "riskLevel") - private Integer riskLevel; - - @ApiModelProperty(value = "投顾id", name = "advisorId") - private Integer advisorId; - - @ApiModelProperty(value = "投顾名称", name = "tgName") - private String tgName; - - @ApiModelProperty(value = "投顾营业部id", name = "orgId") - private String orgId; - - @ApiModelProperty(value = "子产品权限号,只有套餐产品需要传", name = "authIds") - private List authIds; - - @ApiModelProperty(value = "是否走适当性:0否 1是", name = "iAppropriateness") - private Integer iAppropriateness = 1; - - @ApiModelProperty("柜台整体提拥费率编码") - private String supportCode; - - @ApiModelProperty("柜台整体提拥费率") - private BigDecimal supportRate; - - @ApiModelProperty("签约门槛(元)") - private BigDecimal signThreshold; - - public ProductQuery() { - } - - public Integer getProductId() { - return productId; - } - - public void setProductId(Integer productId) { - this.productId = productId; - } - - public Integer getProductType() { - return productType; - } - - public void setProductType(Integer productType) { - this.productType = productType; - } - - public String getProductName() { - return productName; - } - - public void setProductName(String productName) { - this.productName = productName; - } - - public Integer getStrategyId() { - return strategyId; - } - - public void setStrategyId(Integer strategyId) { - this.strategyId = strategyId; - } - - public Integer getRiskLevel() { - return riskLevel; - } - - public void setRiskLevel(Integer riskLevel) { - this.riskLevel = riskLevel; - } - - public Integer getAdvisorId() { - return advisorId; - } - - public void setAdvisorId(Integer advisorId) { - this.advisorId = advisorId; - } - - public String getTgName() { - return tgName; - } - - public void setTgName(String tgName) { - this.tgName = tgName; - } - - public String getOrgId() { - return orgId; - } - - public void setOrgId(String orgId) { - this.orgId = orgId; - } - - public List getAuthIds() { - return authIds; - } - - public void setAuthIds(List authIds) { - this.authIds = authIds; - } - - public Integer getiAppropriateness() { - return iAppropriateness; - } - - public void setiAppropriateness(Integer iAppropriateness) { - this.iAppropriateness = iAppropriateness; - } - - public String getSupportCode() { - return supportCode; - } - - public void setSupportCode(String supportCode) { - this.supportCode = supportCode; - } - - public BigDecimal getSupportRate() { - return supportRate; - } - - public void setSupportRate(BigDecimal supportRate) { - this.supportRate = supportRate; - } - - public BigDecimal getSignThreshold() { - return signThreshold; - } - - public void setSignThreshold(BigDecimal signThreshold) { - this.signThreshold = signThreshold; - } - - public Integer getAuthorityId() { - return authorityId; - } - - public void setAuthorityId(Integer authorityId) { - this.authorityId = authorityId; - } -} diff --git a/src/main/java/com/syzb/crm/service/ProductService.java b/src/main/java/com/syzb/crm/service/ProductService.java deleted file mode 100644 index 4ebaeb1..0000000 --- a/src/main/java/com/syzb/crm/service/ProductService.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.syzb.crm.service; - -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service -public class ProductService { - - public List getLiveCouponStatByMin() { - // 优惠券 - return null; - } - -} \ No newline at end of file diff --git a/src/main/java/com/syzb/group/constant/GroupMessageChannel.java b/src/main/java/com/syzb/group/constant/GroupMessageChannel.java index 4ec3981..c337afb 100644 --- a/src/main/java/com/syzb/group/constant/GroupMessageChannel.java +++ b/src/main/java/com/syzb/group/constant/GroupMessageChannel.java @@ -4,7 +4,7 @@ package com.syzb.group.constant; public enum GroupMessageChannel { APP(1, "APP"), ADMIN(2, "ADMIN"), - ALL(3, "ALL"); + ALL(3, "ALL"), ; public final Integer value; diff --git a/src/main/java/com/syzb/group/entity/GroupUserCollect.java b/src/main/java/com/syzb/group/entity/GroupUserCollect.java index ddd47f4..8cb4385 100644 --- a/src/main/java/com/syzb/group/entity/GroupUserCollect.java +++ b/src/main/java/com/syzb/group/entity/GroupUserCollect.java @@ -1,8 +1,7 @@ package com.syzb.group.entity; -import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; + import java.io.Serializable; import java.time.LocalDate; import java.time.LocalDateTime; diff --git a/src/main/java/com/syzb/group/mapper/GroupUserCollectMapper.java b/src/main/java/com/syzb/group/mapper/GroupUserCollectMapper.java index 2c5e883..d7d29fb 100644 --- a/src/main/java/com/syzb/group/mapper/GroupUserCollectMapper.java +++ b/src/main/java/com/syzb/group/mapper/GroupUserCollectMapper.java @@ -2,7 +2,6 @@ package com.syzb.group.mapper; import com.syzb.common.mapper.EasyBaseMapper; import com.syzb.group.entity.GroupUserCollect; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** *

diff --git a/src/main/java/com/syzb/group/query/info/SaveGroupQuery.java b/src/main/java/com/syzb/group/query/info/SaveGroupQuery.java index 7c5813b..14ca1fa 100644 --- a/src/main/java/com/syzb/group/query/info/SaveGroupQuery.java +++ b/src/main/java/com/syzb/group/query/info/SaveGroupQuery.java @@ -5,7 +5,6 @@ import cn.hutool.core.util.StrUtil; import com.syzb.common.vo.BackendUserVO; import com.syzb.group.constant.GroupInfoStatus; import com.syzb.group.entity.GroupInfo; -import com.syzb.video.constant.VideoLimitType; import io.swagger.annotations.ApiModelProperty; import javax.validation.constraints.NotBlank; diff --git a/src/main/java/com/syzb/group/schedule/GroupTask.java b/src/main/java/com/syzb/group/schedule/GroupTask.java index c595bd0..36d2b3d 100644 --- a/src/main/java/com/syzb/group/schedule/GroupTask.java +++ b/src/main/java/com/syzb/group/schedule/GroupTask.java @@ -2,7 +2,6 @@ package com.syzb.group.schedule; import com.syzb.common.config.cache.CacheKey; import com.syzb.common.service.CacheService; -import com.syzb.group.mapper.GroupMessageMapper; import com.syzb.group.service.admin.AdminGroupCollectService; import com.syzb.group.service.admin.AdminGroupMessageService; import com.syzb.group.service.common.GroupCommonService; diff --git a/src/main/java/com/syzb/group/service/admin/AdminGroupCollectService.java b/src/main/java/com/syzb/group/service/admin/AdminGroupCollectService.java index f48cc5a..6ee916b 100644 --- a/src/main/java/com/syzb/group/service/admin/AdminGroupCollectService.java +++ b/src/main/java/com/syzb/group/service/admin/AdminGroupCollectService.java @@ -8,7 +8,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.hazelcast.map.IMap; import com.syzb.business.entity.ModuleUser; import com.syzb.business.mapper.ModuleUserMapper; -import com.syzb.common.config.cache.CacheKey; import com.syzb.common.constant.IsOrNot; import com.syzb.common.constant.ProductType; import com.syzb.common.query.OnlyIdQuery; @@ -34,7 +33,6 @@ import com.syzb.rbac.entity.WxUser; import com.syzb.rbac.mapper.WxUserMapper; import org.springframework.stereotype.Service; -import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.time.LocalDate; import java.time.LocalDateTime; @@ -325,8 +323,7 @@ public class AdminGroupCollectService { if (CollUtil.isEmpty(groups)) { return Collections.emptyList(); } - List groupIds = groups.stream().map(GroupInfo::getId).collect(Collectors.toList()); - return groupIds; + return groups.stream().map(GroupInfo::getId).collect(Collectors.toList()); } } diff --git a/src/main/java/com/syzb/group/service/common/GroupCacheService.java b/src/main/java/com/syzb/group/service/common/GroupCacheService.java index 38cf221..9c20fd6 100644 --- a/src/main/java/com/syzb/group/service/common/GroupCacheService.java +++ b/src/main/java/com/syzb/group/service/common/GroupCacheService.java @@ -71,7 +71,7 @@ public class GroupCacheService { LambdaQueryWrapper wrapper = buildWrapper(groupId, userId, type); List dateIdList = groupMessageMapper.selectDateIdList(wrapper); TreeMap map = new TreeMap<>(); - dateIdList.stream().forEach(vo -> map.put(vo.getDate(), vo.getId())); + dateIdList.forEach(vo -> map.put(vo.getDate(), vo.getId())); return map; }); } diff --git a/src/main/java/com/syzb/group/service/common/GroupCommonService.java b/src/main/java/com/syzb/group/service/common/GroupCommonService.java index 69da758..df1edba 100644 --- a/src/main/java/com/syzb/group/service/common/GroupCommonService.java +++ b/src/main/java/com/syzb/group/service/common/GroupCommonService.java @@ -4,23 +4,17 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.hazelcast.core.HazelcastInstance; import com.hazelcast.map.IMap; import com.syzb.business.entity.ModuleUser; import com.syzb.business.mapper.ModuleUserMapper; -import com.syzb.common.config.cache.CacheKey; import com.syzb.common.constant.IsOrNot; import com.syzb.common.entity.OnlineUser; import com.syzb.common.util.logger.LoggerUtil; -import com.syzb.common.vo.IdCountVO; -import com.syzb.group.constant.GroupInteractiveType; -import com.syzb.group.constant.GroupMessageUserType; -import com.syzb.group.entity.*; -import com.syzb.group.mapper.*; -import com.syzb.group.vo.message.GroupMessageReadVO; -import com.syzb.group.vo.message.GroupMessageVO; +import com.syzb.group.entity.GroupInfo; +import com.syzb.group.entity.GroupUserFlow; +import com.syzb.group.mapper.GroupInfoMapper; +import com.syzb.group.mapper.GroupUserFlowMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/syzb/rbac/service/AuthService.java b/src/main/java/com/syzb/rbac/service/AuthService.java index 4ad8954..e287b3c 100644 --- a/src/main/java/com/syzb/rbac/service/AuthService.java +++ b/src/main/java/com/syzb/rbac/service/AuthService.java @@ -349,6 +349,10 @@ public class AuthService { } } + public static void main(String[] args) { + System.out.println(CodecUtil.md5("ad123456")); + } + private AuthVO getDeptAuthVO(Integer loginId, String deptId, boolean isLogin) { // 校验用户 UserLogin userLogin = userLoginMapper.selectById(loginId); diff --git a/src/main/java/com/syzb/startup/Main.java b/src/main/java/com/syzb/startup/Main.java index 9dd26c3..e5d845f 100644 --- a/src/main/java/com/syzb/startup/Main.java +++ b/src/main/java/com/syzb/startup/Main.java @@ -17,7 +17,9 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; public class Main { public static void main(String[] args) { - SpringApplication.run(Main.class, args); + SpringApplication app = new SpringApplication(Main.class); + app.setRegisterShutdownHook(true); + app.run(args); } } diff --git a/src/main/java/com/syzb/video/query/external/PushLiveImgAuditQuery.java b/src/main/java/com/syzb/video/query/external/PushLiveImgAuditQuery.java index 48a21ca..f5a25e3 100644 --- a/src/main/java/com/syzb/video/query/external/PushLiveImgAuditQuery.java +++ b/src/main/java/com/syzb/video/query/external/PushLiveImgAuditQuery.java @@ -268,7 +268,7 @@ public class PushLiveImgAuditQuery { Details = details; } - class OcrTextDetail { + static class OcrTextDetail { /** * 返回 OCR 识别出的文本内容(OCR 文本识别上限在5000字节内) 。 */ diff --git a/src/main/java/com/syzb/video/service/admin/AdminVideoCustomerService.java b/src/main/java/com/syzb/video/service/admin/AdminVideoCustomerService.java index 1518516..a61a023 100644 --- a/src/main/java/com/syzb/video/service/admin/AdminVideoCustomerService.java +++ b/src/main/java/com/syzb/video/service/admin/AdminVideoCustomerService.java @@ -135,12 +135,10 @@ public class AdminVideoCustomerService { return Pager.emptyPager(); } String existSubSQL = "select 1 from app_order o where o.user_id = video_live_customer.user_id"; - if (authSet != null) { - if (authSet.isEmpty()) { - return Pager.emptyPager(); - } - existSubSQL += " and o.sale_user_id in (" + CollUtil.join(authSet, ",") + ")"; + if (CollUtil.isEmpty(authSet)) { + return Pager.emptyPager(); } + existSubSQL += " and o.sale_user_id in (" + CollUtil.join(authSet, ",") + ")"; LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() .like(StrUtil.isNotBlank(query.getNickName()), VideoLiveCustomer::getUserName, query.getNickName()) .eq(StrUtil.isNotBlank(query.getComId()), VideoLiveCustomer::getComId, query.getComId()) diff --git a/src/main/java/com/syzb/video/service/admin/AdminVideoStatisticService.java b/src/main/java/com/syzb/video/service/admin/AdminVideoStatisticService.java index aa374aa..fa8f8fa 100644 --- a/src/main/java/com/syzb/video/service/admin/AdminVideoStatisticService.java +++ b/src/main/java/com/syzb/video/service/admin/AdminVideoStatisticService.java @@ -20,7 +20,6 @@ import com.syzb.common.result.Pager; import com.syzb.common.result.ResponseStatus; import com.syzb.common.service.CacheService; import com.syzb.common.vo.BackendUserVO; -import com.syzb.crm.service.ProductService; import com.syzb.rbac.entity.Dept; import com.syzb.rbac.entity.UserDept; import com.syzb.rbac.service.AuthService; @@ -67,9 +66,6 @@ public class AdminVideoStatisticService { @Resource private UserService userService; - @Resource - private ProductService productService; - @Resource private VideoCacheService videoCacheService; diff --git a/src/main/resources/application-dev.yaml b/src/main/resources/application-dev.yaml new file mode 100644 index 0000000..b3e1e91 --- /dev/null +++ b/src/main/resources/application-dev.yaml @@ -0,0 +1,10 @@ +spring: + config: + activate: + on-profile: dev + # 引入开发环境配置文件 + import: + - optional:classpath:/dev/advisorServer.yaml + - optional:classpath:/dev/application.yaml + - optional:classpath:/dev/tencentConfig.yaml + - optional:classpath:/dev/business.yaml \ No newline at end of file diff --git a/src/main/resources/application-prod-admin.yaml b/src/main/resources/application-prod-admin.yaml new file mode 100644 index 0000000..975fe0c --- /dev/null +++ b/src/main/resources/application-prod-admin.yaml @@ -0,0 +1,10 @@ +spring: + config: + activate: + on-profile: prod-admin + import: + - optional:classpath:/prod/advisorServer.yaml + - optional:classpath:/prod/application.yaml + - optional:classpath:/prod/tencentConfig.yaml + - optional:classpath:/prod/business.yaml + - optional:classpath:/prod/admin.yaml \ No newline at end of file diff --git a/src/main/resources/application-prod-customer.yaml b/src/main/resources/application-prod-customer.yaml new file mode 100644 index 0000000..8c6b412 --- /dev/null +++ b/src/main/resources/application-prod-customer.yaml @@ -0,0 +1,9 @@ +spring: + config: + activate: + on-profile: prod-customer + import: + - optional:classpath:/prod/advisorServer.yaml + - optional:classpath:/prod/application.yaml + - optional:classpath:/prod/tencentConfig.yaml + - optional:classpath:/prod/business.yaml \ No newline at end of file diff --git a/src/main/resources/application-test.yaml b/src/main/resources/application-test.yaml new file mode 100644 index 0000000..3c14cac --- /dev/null +++ b/src/main/resources/application-test.yaml @@ -0,0 +1,10 @@ +spring: + config: + activate: + on-profile: test + # 引入开发环境配置文件 + import: + - optional:classpath:/dev/advisorServer.yaml + - optional:classpath:/dev/application.yaml + - optional:classpath:/dev/tencentConfig.yaml + - optional:classpath:/dev/business.yaml \ No newline at end of file diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 57f4d54..ac80f5e 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -1,8 +1,3 @@ spring: - config: - import: - - optional:classpath:/conf/application.yaml - - optional:classpath:/conf/advisorServer.yaml - - optional:classpath:/conf/tencentConfig.yaml profiles: - active: dev \ No newline at end of file + active: dev # 默认使用开发环境配置 \ No newline at end of file diff --git a/src/main/resources/conf/advisorServer.yaml b/src/main/resources/dev/advisorServer.yaml similarity index 83% rename from src/main/resources/conf/advisorServer.yaml rename to src/main/resources/dev/advisorServer.yaml index 1eb14e5..1fbf749 100644 --- a/src/main/resources/conf/advisorServer.yaml +++ b/src/main/resources/dev/advisorServer.yaml @@ -10,9 +10,6 @@ file: domain: prefix: http://47.96.178.171:8080/ resizePrefix: http://47.96.178.171:8080/resize/ -hazelcast: - members: 127.0.0.1:5709 #缓存集群的ip端口号 - serverPort: 5709 #自己作为缓存服务器监听的端口号 scheduledEnable: true cron: collectLivingVideo: "20 0/5 * * * ?" #每分钟统计已开始但未结束的视频直播数据 @@ -45,20 +42,8 @@ video: finishReadRatio: 0.9 #计算视频完播率(完成人数/总人数)大于等于该值即未完成观看 websocket: brokerHost: ws://47.96.178.171:8080/tgim -aes: - key: ew0ov3n1xurvhlhl - iv: gbb9qknndntteqc1 resizeUrl: main: http://47.96.178.171:8080/s/ original: http://47.96.178.171:8080/h5 urlMain: /videoPlay?id= - shortVideoUrl: /shotVideoPlay?id= -pc: - courseRecommendSize: 5 - url: - liveUrl: http://47.96.178.171:8080/syzbpc/videoDetail?id=%d&courseId=%d -app: - url: - liveUrl: https://47.96.178.171:8080/h5/videoPlay?id=%d - advisorListUrl: https://47.96.178.171:8080/h5/videoList?advisorId=%d - deptListUrl: https://47.96.178.171:8080/h5/videoList?deptId=%s \ No newline at end of file + shortVideoUrl: /shotVideoPlay?id= \ No newline at end of file diff --git a/src/main/resources/conf/application.yaml b/src/main/resources/dev/application.yaml similarity index 91% rename from src/main/resources/conf/application.yaml rename to src/main/resources/dev/application.yaml index c00baf8..5eb3325 100644 --- a/src/main/resources/conf/application.yaml +++ b/src/main/resources/dev/application.yaml @@ -1,3 +1,6 @@ +hazelcast: + members: 127.0.0.1:5709 #缓存集群的ip端口号 + serverPort: 5709 #自己作为缓存服务器监听的端口号 fastdfs: connect_timeout_in_seconds: 10 network_timeout_in_seconds: 30 @@ -44,10 +47,13 @@ spring: mvc: pathmatch: matching-strategy: ant_path_matcher #Springfox 使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.6.X使用的是PathPatternMatcher。 + lifecycle: + timeout-per-shutdown-phase: "10s" springfox: documentation: enabled: true #是否开启swagger server: + shutdown: graceful tomcat: max-connections: 16384 accept-count: 1024 diff --git a/src/main/resources/dev/business.yaml b/src/main/resources/dev/business.yaml new file mode 100644 index 0000000..a64d614 --- /dev/null +++ b/src/main/resources/dev/business.yaml @@ -0,0 +1,19 @@ +business: + api: + host: https://webdzapi.ceniu.sztg.com + authorizationDeptId: 16 +# authorizationDeptId: 33 + authorizationKey: 56e670eea5ff3a1aebbc02820e908ceb56e670eea5ff3a1aebbc02820e908ceb +# authorizationKey: 90804bd6089d950e8804c6d7cad7558a90804bd6089d950e8804c6d7cad7558a + timeout: 10000 + url: + loginUrl: /common/loginByUserName + getUserUrl: /common/getUserByToken + getModuleListUrl: /user/getUserModuleList + getOrderListUrl: /order/getAllBatchOrderListByPage + getModuleUserListUrl: /order/getUserModuleListByPage + ssoCheckToken: /sso/checkToken + checkLabelRole: /thirdapi/user/checkLabelRole + receiveCouponUrl: /user/coupon/receiveCoupon + backend: + tokenKey: 281ffabc \ No newline at end of file diff --git a/src/main/resources/conf/tencentConfig.yaml b/src/main/resources/dev/tencentConfig.yaml similarity index 52% rename from src/main/resources/conf/tencentConfig.yaml rename to src/main/resources/dev/tencentConfig.yaml index b01eadc..cc72262 100644 --- a/src/main/resources/conf/tencentConfig.yaml +++ b/src/main/resources/dev/tencentConfig.yaml @@ -1,24 +1,24 @@ -tencent: #腾讯云配置 +tencent: #腾讯云配置 测试环境 vodEndpoint: vod.tencentcloudapi.com #点播请求域名 liveEndpoint: live.tencentcloudapi.com #直播请求域名 region: ap-guangzhou #地域参数 - secretId: AKID7ADA6wqiZJ9weJ50sfUDADJMWi8WsFc0 #用于标识 API 调用者身份,可以简单类比为用户名 - secretKey: NuRzRzbJA895BENSbnffVRUi2IYkyETl #用于验证 API 调用者的身份,可以简单类比为密码 - appId: 1500031629 #当前账号AppId + secretId: AKIDdBbry19D9uRp23rStAIKQPEtMelgS6ax #用于标识 API 调用者身份,可以简单类比为用户名 + secretKey: HNKG4vjMzSo02unbCdu20lLn5QFysfIj #用于验证 API 调用者的身份,可以简单类比为密码 + appId: 1500036562 #当前账号AppId appName: live #推流路径 - pushHost: pushtest.product.com #推流域名 - pushUrl: rtmp://pushtest.product.com #推流地址 - pushKey: fe2c8058428ef795eafed81cd1846818 #鉴权Key - liveHost: livevideo.product.com #播流域名 - liveUrl: webrtc://livevideo.product.com #播流地址 + pushHost: pushtest.sztg.com #推流域名 + pushUrl: rtmp://pushtest.sztg.com #推流地址 + pushKey: 163b37d858df8a6136f613ebcb067b37 #鉴权Key + liveHost: livetest.sztg.com #播流域名 + liveUrl: webrtc://livetest.sztg.com #播流地址 liveKey: "video_dev" #鉴权Key liveFormat: m3u8 #直播格式 - key: oQHVxPW1xfDSQl3YhlY8 #防盗链Key + key: 2wKfFwRB2FNzPJrhMKms #防盗链Key expireHours: 12 #有效时间,单位小时 callbackKey: video_dev #直播推流、断流、录制回调key,验证回调来源 taskStream: "普通转码" #自动转码任务流(转自适应码流) audioVideoType: Transcode #原始流 rawAdaptiveDefinition: 100020 #允许输出的未加密的 转自适应码流模板 ID - playKey: 27sYN83sbR8nUMxtv8ba #播放密钥 - templateId: 1524021 + playKey: ill7YChtUgS2FhcNdNQR #播放密钥 + templateId: 1563635 downloadDefinition: 100030 #下载转码视频清晰度 \ No newline at end of file diff --git a/src/main/resources/logback-console.xml b/src/main/resources/logback-dev.xml similarity index 100% rename from src/main/resources/logback-console.xml rename to src/main/resources/logback-dev.xml diff --git a/src/main/resources/logback-prod.xml b/src/main/resources/logback-prod.xml index b1b5e5c..01c053e 100644 --- a/src/main/resources/logback-prod.xml +++ b/src/main/resources/logback-prod.xml @@ -2,7 +2,7 @@ - + diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index 5f258ea..0bdd549 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -5,10 +5,18 @@ - + - + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/logback-tst.xml b/src/main/resources/logback-tst.xml new file mode 100644 index 0000000..b1b5e5c --- /dev/null +++ b/src/main/resources/logback-tst.xml @@ -0,0 +1,116 @@ + + + + + + + + + + ${LOG_PATH}/advisor_server-%d{yyyyMMdd}.log + 30 + 1GB + + + %d{yyyy-MM-dd HH:mm:ss.SSS}|%-4.5level|%X{requestId}|%msg%n + + + + + + + ${LOG_PATH}/advisor_server-video-%d{yyyyMMdd}.log + 30 + 1GB + + + %d{yyyy-MM-dd HH:mm:ss.SSS}|%-4.5level|%X{requestId}|%msg%n + + + + + + ${LOG_PATH}/advisor_server-data-%d{yyyyMMdd}.log + 30 + 1GB + + + %d{yyyy-MM-dd HH:mm:ss.SSS}|%-4.5level|%X{requestId}|%msg%n + + + + + + ${LOG_PATH}/advisor_server-error-%d{yyyyMMdd}.log + 30 + 1GB + + + %d{yyyy-MM-dd HH:mm:ss.SSS}|%-4.5level|%X{requestId}|%msg%n + + + + + + ${LOG_PATH}/advisor_server-websocket-%d{yyyyMMdd}.log + 30 + 1GB + + + %d{yyyy-MM-dd HH:mm:ss.SSS}|%-4.5level|%X{requestId}|%msg%n + + + + + + ${LOG_PATH}/advisor_server-auth-%d{yyyyMMdd}.log + 30 + 1GB + + + %d{yyyy-MM-dd HH:mm:ss.SSS}|%-4.5level|%X{requestId}|%msg%n + + + + + + ${LOG_PATH}/advisor_server-api-%d{yyyyMMdd}.log + 30 + 1GB + + + %d{yyyy-MM-dd HH:mm:ss.SSS}|%-4.5level|%X{requestId}|%msg%n + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/prod/admin.yaml b/src/main/resources/prod/admin.yaml new file mode 100644 index 0000000..2eccfc7 --- /dev/null +++ b/src/main/resources/prod/admin.yaml @@ -0,0 +1 @@ +scheduledEnable: true \ No newline at end of file diff --git a/src/main/resources/prod/advisorServer.yaml b/src/main/resources/prod/advisorServer.yaml new file mode 100644 index 0000000..dc63dbc --- /dev/null +++ b/src/main/resources/prod/advisorServer.yaml @@ -0,0 +1,49 @@ +jwt: + key: backendUser + secret: hello12345 +rsa: + pubKey: "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDZAOgJVSyQuU452OaQG3XwONd0dsyfPvtAMZugDi9knoR9fhJrUU3IZHNzz617tFP+nqiZrZaDR04d35g9YZaMMu3LnsDNpTT4n3eHWoEf2CJ6PHItbrE8TXfG7oDBEDfttLQS2q3KyJWNAQtotuQriusOcp0AgXi3XyeQL1FwGQIDAQAB" + priKey: "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANkA6AlVLJC5TjnY5pAbdfA413R2zJ8++0Axm6AOL2SehH1+EmtRTchkc3PPrXu0U/6eqJmtloNHTh3fmD1hlowy7cuewM2lNPifd4dagR/YIno8ci1usTxNd8bugMEQN+20tBLarcrIlY0BC2i25CuK6w5ynQCBeLdfJ5AvUXAZAgMBAAECgYEAusC18Lo1hUOEl/Ib0q9fW2J/wcIvrWjVb9SBm0g57z0gxqNGFMe+yhPw7B0xrwFtO/atILysiMRH7RuteD3RAbdZQl4r3Hz2jA/YjIgfu/KcdENvCYD5X5AhbflOSyvn4mzGvzyPmS6H6Hlr7UI3/dknq4OiTDXD9M06gNK53gECQQDwk/Ui7rtfo1TcCkyrTlirGy1kHDcl9EgPfcQSVlZJICTVmvT1d9MmLcVtFezadmWP/9QxdJtPbfWXMvby4ftBAkEA5uoTvl1girN9q8IIZ1PpcE17TASexzKcFIpweMVkXQEbTxq7ijqRAQ9MONjj2gtzaXB6c6P9sIOP/Pt74JP22QJAbd6Ec2GnvPOwy5UAkrODFxGgVznzjafUSQ7cvqsjWN4PNGZCPOBuU99PbJQ4yUSM+YiSdcuVKl9Da7vgv+eogQJBAKirbNaNoJpP98kBR2AqhAabIifp7Az3I9lBMlyVWvUwfMEwdrLGiuqqQPP5QZ4g5SGsnlVgAUvxHbkd/WOS0SkCQCK30/4rdyWTNvR38O8KYSx76Dxj7OKYO4xZGoQL9Pgv05Ua4LfyZHdNaPmspLNEqxfgKObzJWiTwic2+JDsG/w=" +des: + key: hello123 +file: + domain: + prefix: https://do.tgsys.sztg.com/ + resizePrefix: https://do.tgsys.sztg.com/resize/ +scheduledEnable: true +cron: + collectLivingVideo: "20 0/5 * * * ?" #每分钟统计已开始但未结束的视频直播数据 + saveVideoCount: "20 1/5 * * * ?" #从cache刷新视频播放量到DB 每分钟的第10s执行 + saveVideoUserDataToDB: "20 2/5 * * * ?" + saveCustomerDataToDB: "20 3/5 * * * ?" #收集用户信息 + refreshTranscodeStatus: "20 4/5 * * * ?" #从腾讯云拉取录播上传视频信息更新到DB + updateLiveStatus: "0 1 * * * ?" #更新视频录播状态 + stopLivingVideo: "0 1-5 0 * * ?" #结束前一天直播中/暂停中的视频直播 + collectLastWeek: "0 30 3 * * ?" #统计一周内的数据 + saveWatchSeconds: "0 0/5 * * * ?" #保存短视频观看时长 + collectRecentEndVideo: "0 1/5 * * * ?" #每5分钟统计已结束48小时以内的视频直播数据 + saveGroupMessageRead: "0 2/5 * * * ?" #每5分钟统计已结束48小时以内的视频直播数据 + saveGroupUser: "0 3/5 * * * ?" + collectGroupData: "0 4/5 * * * ?" + syncOrder: "40 0/5 * * * ?" + syncModuleUser: "40 1/5 * * * ?" +user: + admin: + roles: 1,3,4,5 #管理员角色id,用逗号隔开 + defaultPwd: syzb.hello.dev +dept: + head: + id: "1" #总部营业部ID +advisor: + roleId: 2 +sale: + roleId: 17 +video: + finishReadRatio: 0.9 #计算视频完播率(完成人数/总人数)大于等于该值即未完成观看 +websocket: + brokerHost: wss://do.tgsys.sztg.com/tgim +resizeUrl: + main: https://do.tgsys.sztg.com/s/ + original: https://do.tgsys.sztg.com/h5 + urlMain: /videoPlay?id= + shortVideoUrl: /shotVideoPlay?id= \ No newline at end of file diff --git a/src/main/resources/prod/application.yaml b/src/main/resources/prod/application.yaml new file mode 100644 index 0000000..aac44e9 --- /dev/null +++ b/src/main/resources/prod/application.yaml @@ -0,0 +1,62 @@ +hazelcast: + members: 172.26.1.3,172.26.1.7,172.26.1.9,172.26.1.15 #缓存集群的ip端口号 + serverPort: 5709 #自己作为缓存服务器监听的端口号 +fastdfs: + connect_timeout_in_seconds: 10 + network_timeout_in_seconds: 30 + charset: UTF-8 + tracker_servers: 172.26.1.9:22122,172.26.1.15:22122 + connection_pool: + enabled: true + max_count_per_entry: 500 + max_idle_time: 3600 + max_wait_time_in_ms: 1000 +mybatis-plus: + configuration: + call-setters-on-nulls: true #如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段 + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #这个配置会将执行的sql打印出来,在开发或测试的时候可以用 + map-underscore-to-camel-case: true #是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射 +spring: + main: + allow-circular-references: true + application: + name: DemoVideoDev-advisor-server + servlet: + multipart: + maxFileSize: 10MB + maxRequestSize: 20MB + datasource: #初始化连接池的连接数量 + dynamic: + primary: master + strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源 + hikari: + min-idle: 5 #最小空闲连接数量 + max-pool-size: 25 #连接池最大连接数,默认是10 + idle-timeout: 100000 #空闲连接存活最大时间,默认600000(10分钟) + is_auto-commit: true #此属性控制从池返回的连接的默认自动提交行为,默认值:true + max-lifetime: 600000 #此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟 + connection-timeout: 15000 #数据库连接超时时间,默认30秒,即30000 + connection-test-query: SELECT 1 FROM DUAL + validation-timeout: 30000 + datasource: + master: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://172.26.1.2:3306/advisor_video?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8 + username: tgdba + password: szTGdb@20250210 + mvc: + pathmatch: + matching-strategy: ant_path_matcher #Springfox 使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.6.X使用的是PathPatternMatcher。 + lifecycle: + timeout-per-shutdown-phase: "10s" +springfox: + documentation: + enabled: false #是否开启swagger +server: + shutdown: graceful + tomcat: + max-connections: 16384 + accept-count: 1024 + threads: + max: 1024 + min-spare: 128 \ No newline at end of file diff --git a/src/main/resources/prod/business.yaml b/src/main/resources/prod/business.yaml new file mode 100644 index 0000000..a64d614 --- /dev/null +++ b/src/main/resources/prod/business.yaml @@ -0,0 +1,19 @@ +business: + api: + host: https://webdzapi.ceniu.sztg.com + authorizationDeptId: 16 +# authorizationDeptId: 33 + authorizationKey: 56e670eea5ff3a1aebbc02820e908ceb56e670eea5ff3a1aebbc02820e908ceb +# authorizationKey: 90804bd6089d950e8804c6d7cad7558a90804bd6089d950e8804c6d7cad7558a + timeout: 10000 + url: + loginUrl: /common/loginByUserName + getUserUrl: /common/getUserByToken + getModuleListUrl: /user/getUserModuleList + getOrderListUrl: /order/getAllBatchOrderListByPage + getModuleUserListUrl: /order/getUserModuleListByPage + ssoCheckToken: /sso/checkToken + checkLabelRole: /thirdapi/user/checkLabelRole + receiveCouponUrl: /user/coupon/receiveCoupon + backend: + tokenKey: 281ffabc \ No newline at end of file diff --git a/src/main/resources/prod/tencentConfig.yaml b/src/main/resources/prod/tencentConfig.yaml new file mode 100644 index 0000000..ea21fee --- /dev/null +++ b/src/main/resources/prod/tencentConfig.yaml @@ -0,0 +1,24 @@ +tencent: #腾讯云配置 + vodEndpoint: vod.tencentcloudapi.com #点播请求域名 + liveEndpoint: live.tencentcloudapi.com #直播请求域名 + region: ap-guangzhou #地域参数 + secretId: AKIDdBbry19D9uRp23rStAIKQPEtMelgS6ax #用于标识 API 调用者身份,可以简单类比为用户名 + secretKey: HNKG4vjMzSo02unbCdu20lLn5QFysfIj #用于验证 API 调用者的身份,可以简单类比为密码 + appId: 1332258372 #当前账号AppId + appName: live #推流路径 + pushHost: push.tgsys.sztg.com #推流域名 + pushUrl: rtmp://push.tgsys.sztg.com #推流地址 + pushKey: 163b37d858df8a6136f613ebcb067b37 #鉴权Key + liveHost: live.tgsys.sztg.com #播流域名 + liveUrl: webrtc://live.tgsys.sztg.com #播流地址 + liveKey: "video_pro" #鉴权Key + liveFormat: m3u8 #直播格式 + key: nJTCJ3mdAMtkKwBxj53a #防盗链Key + expireHours: 48 #有效时间,单位小时 + callbackKey: video_pro #直播推流、断流、录制回调key,验证回调来源 + taskStream: "自适应码流" #自动转码任务流(转自适应码流) + audioVideoType: Transcode #原始流 + rawAdaptiveDefinition: 10 #允许输出的未加密的 转自适应码流模板 ID + playKey: bsMetagPJRID1W7lXQz4 #播放密钥 + templateId: 1563626 + downloadDefinition: 100030 #下载转码视频清晰度 \ No newline at end of file