From 64387b8a8e0159f05dfc84e3a78fca1a6ff0d066 Mon Sep 17 00:00:00 2001 From: lecjy <5655726966@qq.com> Date: Wed, 27 Sep 2023 13:34:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E7=AB=AF=E5=9F=BA=E7=A1=80=E8=AE=BE?= =?UTF-8?q?=E6=96=BD=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .circleci/config.yml | 7 +- .github/workflows/compile.yml | 3 +- .gitignore | 1 - contact-center/.dockerignore | 8 - contact-center/.gitignore | 23 -- contact-center/Dockerfile | 30 -- contact-center/README.md | 7 - contact-center/admin/build.sh | 40 --- contact-center/admin/db-setup.sql.sh | 30 -- contact-center/admin/deploy.sh | 50 --- contact-center/admin/dev.sh | 15 - contact-center/admin/gen-eclipse.sh | 13 - contact-center/admin/gen-idea.sh | 13 - contact-center/admin/install-plugins.sh | 47 --- contact-center/admin/package.sh | 19 -- contact-center/admin/root.sh | 13 - contact-center/admin/run.sh | 52 --- contact-center/admin/test.sh | 14 - contact-center/assets/docker-entrypoint.sh | 22 -- contact-center/assets/install-maven.sh | 23 -- contact-center/assets/mysql.setup.db.sh | 86 ----- contact-center/assets/mysql.upgrade.db.sh | 81 ----- contact-center/assets/sources.list | 54 ---- contact-center/assets/utils.sh | 27 -- contact-center/config/base/Dockerfile | 25 -- .../config/base/assets/install-corretto-8.sh | 27 -- contact-center/config/base/build.sh | 33 -- contact-center/ukefu.README.md | 127 -------- .../cskefu}/.gitignore | 3 +- containerization/docker-compose.yml | 302 ++++++++++++++++++ containerization/dockerfiles/mysql-8.1-nacos | 7 + containerization/dockerfiles/nacos_mysql.sql | 208 ++++++++++++ .../openjdk-21-debian-stretch-slim | 15 + containerization/mysql/.gitignore | 3 + .../nacos}/.gitignore | 3 +- containerization/openresty/certs/.gitignore | 2 + .../openresty/conf.d/default.conf | 171 ++++++++++ containerization/openresty/logs/.gitignore | 2 + containerization/openresty/nginx.conf | 38 +++ .../openresty}/templates/ssl.conf | 13 +- .../rabbitmq}/.gitignore | 3 +- containerization/rabbitmq/hosts | 0 .../redis}/.gitignore | 2 +- sample.env => containerization/sample.env | 46 +-- containerization/scripts/build.sh | 12 + cskefu-backend/README.md | 37 +-- .../cskefu-assistant-base/pom.xml | 6 +- .../cskefu-assistant-mvc/pom.xml | 12 +- .../cskefu/mvc/GlobalResponseBodyHandler.java | 15 +- .../cskefu-assistant-module/pom.xml | 4 +- .../cskefu-auth/cskefu-auth-domain/pom.xml | 6 +- .../cskefu-auth/cskefu-auth-service/pom.xml | 29 +- .../com/cskefu/CskefuAuthApplication.java | 3 +- .../src/main/resources/application.properties | 12 +- cskefu-backend/cskefu-auth/pom.xml | 4 +- .../cskefu-channel-wechat-domain/pom.xml | 6 +- .../cskefu-channel-wechat-service/pom.xml | 28 +- .../CskefuWechatChannelApplication.java | 4 +- .../cskefu/wechat/WechatCallbackChatbot.java | 2 +- .../src/main/resources/application.properties | 10 +- cskefu-backend/cskefu-channel/pom.xml | 4 +- .../cskefu-gateway/cskefu-web-gateway/pom.xml | 22 +- .../cskefu/CskefuWebGatewayApplication.java | 16 +- .../src/main/resources/application.properties | 7 +- cskefu-backend/cskefu-gateway/pom.xml | 4 +- .../cskefu-manager-domain/pom.xml | 6 +- .../cskefu-manager-service/pom.xml | 27 +- .../com/cskefu/CskefuManagerApplication.java | 3 +- .../src/main/resources/application.properties | 8 +- cskefu-backend/cskefu-manager/pom.xml | 4 +- .../cskefu-plugin-domain/pom.xml | 6 +- .../cskefu-plugin-service/pom.xml | 27 +- .../com/cskefu/CskefuPluginApplication.java | 3 +- .../src/main/resources/application.properties | 10 +- cskefu-backend/cskefu-plugin/pom.xml | 4 +- .../cskefu-websocket-domain/pom.xml | 6 +- .../cskefu-websocket-service/pom.xml | 45 +-- .../java/com/cskefu/WebsocketApplication.java | 37 +-- .../cskefu/annotations/WebSocketMapping.java | 12 + .../com/cskefu/handler/MessageHandler.java | 21 ++ .../WebSocketMappingHandlerMapping.java | 33 ++ .../com/cskefu/handler/WelcomeHandler.java | 30 ++ .../websocket/SocketIOConfiguration.java | 100 ------ .../src/main/resources/application.properties | 20 +- cskefu-backend/cskefu-websocket/pom.xml | 4 +- cskefu-backend/git.properties | 16 + cskefu-backend/logback-spring.xml | 174 ++++++++++ cskefu-backend/pom.xml | 94 +++++- cskefu-backend/v9.mysql.init.sql | 2 + cskefu-backend/v9.mysql.sql | 4 - database/redis/.gitignore | 2 - database/redis/admin/start.sh | 18 -- database/redis/admin/stop.sh | 18 -- database/redis/data/.gitignore | 3 - docker-compose.yml | 93 ------ docker-nginx.yml | 14 - nginx/certs/.gitignore | 2 - nginx/conf.d/default.conf | 21 -- nginx/logs/.gitignore | 2 - public/plugins/README.md | 44 --- public/plugins/scripts/install-all.sh | 31 -- public/plugins/scripts/uninstall-all.sh | 31 -- scripts/clean.container.sh | 31 -- {contact-center/admin => scripts}/compile.sh | 5 +- .../admin/push.sh => scripts/deploy.sh | 14 +- scripts/dev.sh | 13 - scripts/flush.sh | 23 -- scripts/plugins.install.all.sh | 21 -- scripts/plugins.uninstall.all.sh | 20 -- scripts/start.sh | 14 - .../admin => scripts}/uninstall.sh | 2 +- 111 files changed, 1475 insertions(+), 1594 deletions(-) delete mode 100644 contact-center/.dockerignore delete mode 100644 contact-center/.gitignore delete mode 100644 contact-center/Dockerfile delete mode 100644 contact-center/README.md delete mode 100755 contact-center/admin/build.sh delete mode 100644 contact-center/admin/db-setup.sql.sh delete mode 100755 contact-center/admin/deploy.sh delete mode 100644 contact-center/admin/dev.sh delete mode 100644 contact-center/admin/gen-eclipse.sh delete mode 100755 contact-center/admin/gen-idea.sh delete mode 100755 contact-center/admin/install-plugins.sh delete mode 100755 contact-center/admin/package.sh delete mode 100755 contact-center/admin/root.sh delete mode 100755 contact-center/admin/run.sh delete mode 100755 contact-center/admin/test.sh delete mode 100755 contact-center/assets/docker-entrypoint.sh delete mode 100755 contact-center/assets/install-maven.sh delete mode 100755 contact-center/assets/mysql.setup.db.sh delete mode 100755 contact-center/assets/mysql.upgrade.db.sh delete mode 100644 contact-center/assets/sources.list delete mode 100755 contact-center/assets/utils.sh delete mode 100644 contact-center/config/base/Dockerfile delete mode 100755 contact-center/config/base/assets/install-corretto-8.sh delete mode 100755 contact-center/config/base/build.sh delete mode 100644 contact-center/ukefu.README.md rename {database/mysql => containerization/cskefu}/.gitignore (54%) create mode 100644 containerization/docker-compose.yml create mode 100644 containerization/dockerfiles/mysql-8.1-nacos create mode 100644 containerization/dockerfiles/nacos_mysql.sql create mode 100644 containerization/dockerfiles/openjdk-21-debian-stretch-slim create mode 100644 containerization/mysql/.gitignore rename {database/activemq/data => containerization/nacos}/.gitignore (54%) create mode 100644 containerization/openresty/certs/.gitignore create mode 100644 containerization/openresty/conf.d/default.conf create mode 100644 containerization/openresty/logs/.gitignore create mode 100644 containerization/openresty/nginx.conf rename {nginx => containerization/openresty}/templates/ssl.conf (70%) rename {database/activemq/logs => containerization/rabbitmq}/.gitignore (54%) create mode 100644 containerization/rabbitmq/hosts rename {database/activemq => containerization/redis}/.gitignore (70%) rename sample.env => containerization/sample.env (50%) create mode 100644 containerization/scripts/build.sh create mode 100644 cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/annotations/WebSocketMapping.java create mode 100644 cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/handler/MessageHandler.java create mode 100644 cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/handler/WebSocketMappingHandlerMapping.java create mode 100644 cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/handler/WelcomeHandler.java delete mode 100644 cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/websocket/SocketIOConfiguration.java create mode 100644 cskefu-backend/git.properties create mode 100644 cskefu-backend/logback-spring.xml create mode 100644 cskefu-backend/v9.mysql.init.sql delete mode 100644 cskefu-backend/v9.mysql.sql delete mode 100644 database/redis/.gitignore delete mode 100755 database/redis/admin/start.sh delete mode 100755 database/redis/admin/stop.sh delete mode 100644 database/redis/data/.gitignore delete mode 100644 docker-compose.yml delete mode 100644 docker-nginx.yml delete mode 100644 nginx/certs/.gitignore delete mode 100644 nginx/conf.d/default.conf delete mode 100644 nginx/logs/.gitignore delete mode 100644 public/plugins/README.md delete mode 100755 public/plugins/scripts/install-all.sh delete mode 100755 public/plugins/scripts/uninstall-all.sh delete mode 100755 scripts/clean.container.sh rename {contact-center/admin => scripts}/compile.sh (78%) mode change 100755 => 100644 rename contact-center/admin/push.sh => scripts/deploy.sh (54%) mode change 100755 => 100644 delete mode 100755 scripts/dev.sh delete mode 100755 scripts/flush.sh delete mode 100755 scripts/plugins.install.all.sh delete mode 100755 scripts/plugins.uninstall.all.sh delete mode 100755 scripts/start.sh rename {contact-center/admin => scripts}/uninstall.sh (86%) mode change 100755 => 100644 diff --git a/.circleci/config.yml b/.circleci/config.yml index c61ec553..d5f1bd2e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -12,7 +12,7 @@ jobs: # Be sure to update the Docker image tag below to openjdk version of your application. # A list of available CircleCI Docker Convenience Images are available here: https://circleci.com/developer/images/image/cimg/openjdk docker: - - image: cimg/openjdk:17.0.7 + - image: cimg/openjdk:21 # Add steps to the job # See: https://circleci.com/docs/configuration-reference/#steps steps: @@ -25,10 +25,7 @@ jobs: echo "$DOCKERHUB_USERPASS" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin - run: name: Build Contact Center Docker Image - command: cd $CIRCLE_WORKING_DIRECTORY/contact-center && ./admin/build.sh - - run: - name: Push Contact Center Docker Image to DockerHub - command: cd $CIRCLE_WORKING_DIRECTORY/contact-center && ./admin/push.sh + command: cd $CIRCLE_WORKING_DIRECTORY/cskefu-backend && ../scripts/deploy.sh # Invoke jobs via workflows # See: https://circleci.com/docs/configuration-reference/#workflows diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index 550fe06c..953caed5 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -15,5 +15,4 @@ jobs: if [ ! -d .git ]; then git init; git config user.email "you@dummy.com"; git config user.name "dummy"; git add --all && git commit -q -m "Only fix mvn goals for github workflow"; fi if [ -f ~/.cskefu.rc ]; then source ~/.cskefu.rc; else echo "Not found ~/.cskefu.rc; find info with https://github.com/cskefu/cskefu/issues/688"; exit 1; fi java -version && mvn -version - $GITHUB_WORKSPACE/public/plugins/scripts/install-all.sh - cd $GITHUB_WORKSPACE/contact-center && ./admin/compile.sh + cd $GITHUB_WORKSPACE/cskefu-backend && ../public/scripts/compile.sh diff --git a/.gitignore b/.gitignore index 9ac73be6..ee136ba0 100644 --- a/.gitignore +++ b/.gitignore @@ -21,7 +21,6 @@ build.gradle .vscode/ nohup.out docker-compose.dev.yml -docker-compose.custom.yml private/ smart-doc/ target/ \ No newline at end of file diff --git a/contact-center/.dockerignore b/contact-center/.dockerignore deleted file mode 100644 index 58f6b874..00000000 --- a/contact-center/.dockerignore +++ /dev/null @@ -1,8 +0,0 @@ -app/target -!app/target/*.war.original -!app/target/*.war -!app/target/*.jar.original -!app/target/*.jar -logs/ -tmp/ -data/ diff --git a/contact-center/.gitignore b/contact-center/.gitignore deleted file mode 100644 index d924d4ab..00000000 --- a/contact-center/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -*.swp -*.swo -*.sublime-* -*.pyc -jmeter.log -__pycache__ -tmp/ -node_modules/ -sftp-config.json -.DS_Store -*.iml -*.ipr -*.iws -*.idea -~$*.xls* -~$*.ppt* -~$*.doc* -admin/localrc -app/target/ -app/.classpath -app/.project -app/.settings/ -logPath_IS_UNDEFINED/ diff --git a/contact-center/Dockerfile b/contact-center/Dockerfile deleted file mode 100644 index 0758f624..00000000 --- a/contact-center/Dockerfile +++ /dev/null @@ -1,30 +0,0 @@ -FROM chatopera/java:17 -MAINTAINER Hai Liang Wang - -ARG DEBIAN_FRONTEND=noninteractive -ARG VCS_REF -ARG APPLICATION_CUSTOMER_ENTITY -ARG APPLICATION_BUILD_DATESTR - -ENV APPLICATION_CUSTOMER_ENTITY=$APPLICATION_CUSTOMER_ENTITY -ENV APPLICATION_BUILD_DATESTR=$APPLICATION_BUILD_DATESTR - -LABEL org.label-schema.vcs-ref=$VCS_REF \ - org.label-schema.vcs-url="https://www.cskefu.com" - -# create dirs -RUN /bin/bash -c "mkdir -p /{data,logs}" - -# build WAR -RUN mkdir -p /opt/cskefu -COPY ./app/target/contact-center.war /opt/cskefu/contact-center.war -COPY ./assets/mysql.setup.db.sh /opt/cskefu -COPY ./assets/mysql.upgrade.db.sh /opt/cskefu -COPY ./assets/utils.sh /opt/cskefu -COPY ./assets/docker-entrypoint.sh /opt/cskefu -RUN chmod +x /opt/cskefu/*.sh -RUN touch /root/.cskefu.pep - -WORKDIR /opt/cskefu -EXPOSE 8030-8050 -CMD ["./docker-entrypoint.sh"] diff --git a/contact-center/README.md b/contact-center/README.md deleted file mode 100644 index f2ad3e9b..00000000 --- a/contact-center/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Chatopera Contact Center - -前三代呼叫中心均是以电话为主要的服务渠道。在 2000 年,伴随着互联网以及移动通信的发展与普及,将电子邮件、互联网、手机短信等渠道接入呼叫中心,成为第四代呼叫中心的标志。第四代呼叫中心也称为多媒体呼叫中心或联络中心(Contact Center)。它相对传统呼叫中心来说接入渠道丰富,同时引入了多渠道接入与多渠道统一排队等概念。 - -## 文档 - - diff --git a/contact-center/admin/build.sh b/contact-center/admin/build.sh deleted file mode 100755 index cd9b7804..00000000 --- a/contact-center/admin/build.sh +++ /dev/null @@ -1,40 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -appHome=$baseDir/.. -registryPrefix= -imagename=cskefu/contact-center - -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -# build -cd $appHome -TIMESTAMP=`date "+%Y%m%d.%H%M%S"` -PACKAGE_VERSION=`git rev-parse --short HEAD` -APPLICATION_CUSTOMER_ENTITY=${APPLICATION_CUSTOMER_ENTITY:-"OpenSource Community"} - -$baseDir/package.sh - -if [ ! $? -eq 0 ]; then - exit 1 -fi - -set -x -docker build --build-arg VCS_REF=$PACKAGE_VERSION \ - --build-arg APPLICATION_BUILD_DATESTR=$TIMESTAMP \ - --build-arg APPLICATION_CUSTOMER_ENTITY="$APPLICATION_CUSTOMER_ENTITY" \ - --no-cache \ - --force-rm=true --tag $registryPrefix$imagename:$PACKAGE_VERSION . - -if [ $? -eq 0 ]; then - docker tag $registryPrefix$imagename:$PACKAGE_VERSION $registryPrefix$imagename:develop -else - echo "Build contact-center failure." - exit 1 -fi \ No newline at end of file diff --git a/contact-center/admin/db-setup.sql.sh b/contact-center/admin/db-setup.sql.sh deleted file mode 100644 index f7a9e511..00000000 --- a/contact-center/admin/db-setup.sql.sh +++ /dev/null @@ -1,30 +0,0 @@ -#! /bin/bash -########################################### -# Create standalone SQL file to setup db -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -cwdDir=$PWD -export PYTHONUNBUFFERED=1 -export PATH=/opt/miniconda3/envs/venv-py3/bin:$PATH -export TS=$(date +%Y%m%d%H%M%S) -export DATE=`date "+%Y%m%d"` -export DATE_WITH_TIME=`date "+%Y%m%d-%H%M%S"` #add %3N as we want millisecond too - -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return - -cd $baseDir/.. - -if [ ! -e tmp ]; then - mkdir tmp -fi - -cat config/sql/001.mysql-create-db.sql > tmp/db-setup.sql -echo "" >> tmp/db-setup.sql -cat config/sql/002.mysql-create-schemas.sql >> tmp/db-setup.sql - -echo "Setup Script created in" `pwd`/tmp/db-setup.sql \ No newline at end of file diff --git a/contact-center/admin/deploy.sh b/contact-center/admin/deploy.sh deleted file mode 100755 index ad3d0efa..00000000 --- a/contact-center/admin/deploy.sh +++ /dev/null @@ -1,50 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -REPO_ID_SNP=chatopera-snapshots -REPO_URL_SNP=https://nexus.chatopera.com/repository/maven-snapshots/ -REPO_ID_REL=chatopera-releases -REPO_URL_REL=https://nexus.chatopera.com/repository/maven-releases/ - -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $baseDir/../app -mvn clean jar:jar -PACKAGE_VERSION=$(grep --max-count=1 '' pom.xml | awk -F '>' '{ print $2 }' | awk -F '<' '{ print $1 }') -if [[ $PACKAGE_VERSION == *SNAPSHOT ]]; then - echo "Deploy as snapshot package ..." - mvn deploy:deploy-file \ - -Dmaven.test.skip=true \ - -Dfile=./target/contact-center.jar \ - -DgroupId=com.cskefu.cc \ - -DartifactId=cc-core \ - -Dversion=$PACKAGE_VERSION \ - -Dpackaging=jar \ - -DgeneratePom=true \ - -DrepositoryId=$REPO_ID_SNP \ - -Durl=$REPO_URL_SNP - if [ ! $? -eq 0 ]; then - exit 1 - fi -else - echo "Deploy as release package ..." - mvn deploy:deploy-file \ - -Dmaven.test.skip=true \ - -Dfile=./target/contact-center.jar \ - -DgroupId=com.cskefu.cc \ - -DartifactId=cc-core \ - -Dversion=$PACKAGE_VERSION \ - -Dpackaging=jar \ - -DgeneratePom=true \ - -DrepositoryId=$REPO_ID_REL \ - -Durl=$REPO_URL_REL - if [ ! $? -eq 0 ]; then - exit 1 - fi -fi diff --git a/contact-center/admin/dev.sh b/contact-center/admin/dev.sh deleted file mode 100644 index 39ae4e57..00000000 --- a/contact-center/admin/dev.sh +++ /dev/null @@ -1,15 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $baseDir/../app -source .env -mvn spring-boot:run -#java -jar target/contact-center.war \ No newline at end of file diff --git a/contact-center/admin/gen-eclipse.sh b/contact-center/admin/gen-eclipse.sh deleted file mode 100644 index 819fcd07..00000000 --- a/contact-center/admin/gen-eclipse.sh +++ /dev/null @@ -1,13 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $baseDir/../app -mvn eclipse:eclipse diff --git a/contact-center/admin/gen-idea.sh b/contact-center/admin/gen-idea.sh deleted file mode 100755 index 865f884c..00000000 --- a/contact-center/admin/gen-idea.sh +++ /dev/null @@ -1,13 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $baseDir/../app -mvn idea:idea diff --git a/contact-center/admin/install-plugins.sh b/contact-center/admin/install-plugins.sh deleted file mode 100755 index 16f867d0..00000000 --- a/contact-center/admin/install-plugins.sh +++ /dev/null @@ -1,47 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -SCRIPT_PATH=$0 -ts=`date +"%Y-%m-%d_%H-%M-%S"` -buildDir=/tmp/cc-build-$ts -# functions -function print_usage(){ - echo "Install contact-center plugin: $SCRIPT_PATH contact-center_jar_path plugin_path output_path" -} - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -if [ "$#" -ne 4 ]; then - CONTACT_CENTER=$1 - CC_PLUGIN=$2 - OUTPUT_PATH=$3 - if [ ! -f $1 ]; then - echo "contact center jar file not exist." - print_usage - exit 1 - fi - - if [ ! -f $2 ]; then - echo "cc plugin jar file not exist." - print_usage - exit 2 - fi - - # create jar - rm -rf $buildDir - mkdir $buildDir - unzip $CONTACT_CENTER -d $buildDir - cp $CC_PLUGIN $buildDir/BOOT-INF/lib - cd $buildDir - jar -cvfM0 $3 . - echo "Created new jar file as" $OUTPUT_PATH "successfully." - echo "Build done, delete buildDir" $buildDir "in 3 seconds ..." - sleep 3 - rm -rf $buildDir -else - print_usage -fi diff --git a/contact-center/admin/package.sh b/contact-center/admin/package.sh deleted file mode 100755 index 4cf5cfbe..00000000 --- a/contact-center/admin/package.sh +++ /dev/null @@ -1,19 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $baseDir/../app -mvn -DskipTests clean package -# take too long time with dev002 for uploading artifact, skip this operation -# $baseDir/deploy.app.sh - -if [ ! $? -eq 0 ]; then - exit 1 -fi diff --git a/contact-center/admin/root.sh b/contact-center/admin/root.sh deleted file mode 100755 index ef281848..00000000 --- a/contact-center/admin/root.sh +++ /dev/null @@ -1,13 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $baseDir/../root -mvn deploy diff --git a/contact-center/admin/run.sh b/contact-center/admin/run.sh deleted file mode 100755 index 81065721..00000000 --- a/contact-center/admin/run.sh +++ /dev/null @@ -1,52 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -appHome=$baseDir/.. -registryPrefix= -imagename=cskefu/contact-center -PACKAGE_VERSION= - -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $appHome/ - -if [ -d ../private ]; then - registryPrefix=dockerhub.qingcloud.com/ -fi - -TIMESTAMP=`date "+%Y%m%d.%H%M%S"` -PACKAGE_VERSION=`git rev-parse --short HEAD` - -cd $baseDir -docker run -it --rm \ - -p 9035:8035 \ - -p 9036:8036 \ - -v $PWD/data:/data \ - -v $PWD/logs:/logs \ - -e "JAVA_OPTS=-Xmx12288m -Xms2048m -XX:PermSize=256m -XX:MaxPermSize=1024m -Djava.net.preferIPv4Stack=true" \ - -e SERVER_PORT=8035 \ - -e SERVER_LOG_PATH=/logs \ - -e SERVER_LOG_LEVEL=INFO \ - -e WEB_UPLOAD_PATH=/data \ - -e SPRING_FREEMARKER_CACHE=true \ - -e SPRING_DATA_ELASTICSEARCH_PROPERTIES_PATH_DATA=/data \ - -e SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.jdbc.Driver \ - -e "SPRING_DATASOURCE_URL=jdbc:mysql://mysql:8037/contactcenter?useUnicode=true&characterEncoding=UTF-8" \ - -e SPRING_DATASOURCE_USERNAME=root \ - -e SPRING_DATASOURCE_PASSWORD=123456 \ - -e MANAGEMENT_SECURITY_ENABLED=false \ - -e SPRING_REDIS_DATABASE=2 \ - -e SPRING_REDIS_HOST=redis \ - -e SPRING_REDIS_PORT=8041 \ - -e CSKEFU_CALLOUT_WATCH_INTERVAL=60000 \ - -e SPRING_DATA_ELASTICSEARCH_CLUSTER_NAME=elasticsearch \ - -e SPRING_DATA_ELASTICSEARCH_CLUSTER_NODES=elasticsearch:8040 \ - -e SPRING_DATA_ELASTICSEARCH_LOCAL=false \ - -e SPRING_DATA_ELASTICSEARCH_REPOSITORIES_ENABLED=true \ - $registryPrefix$imagename:$PACKAGE_VERSION diff --git a/contact-center/admin/test.sh b/contact-center/admin/test.sh deleted file mode 100755 index d94fa298..00000000 --- a/contact-center/admin/test.sh +++ /dev/null @@ -1,14 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $baseDir/../app -set -x -mvn -Dtest=com.cskefu.cc.proto.ProtoTest#testProto test diff --git a/contact-center/assets/docker-entrypoint.sh b/contact-center/assets/docker-entrypoint.sh deleted file mode 100755 index 0a12d0df..00000000 --- a/contact-center/assets/docker-entrypoint.sh +++ /dev/null @@ -1,22 +0,0 @@ -#! /bin/bash -########################################### -# Contact Center Start -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) - -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $baseDir -./mysql.setup.db.sh -./mysql.upgrade.db.sh - -if [ $? -eq 0 ]; then - java -jar contact-center.war -else - echo "Fail to resolve mysql database instance." - exit 1 -fi diff --git a/contact-center/assets/install-maven.sh b/contact-center/assets/install-maven.sh deleted file mode 100755 index c38bbfe9..00000000 --- a/contact-center/assets/install-maven.sh +++ /dev/null @@ -1,23 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -export JAVA_HOME=/usr/lib/jvm/java-1.8.0-amazon-corretto -export PATH=$PATH:$JAVA_HOME/bin -baseDir=$(cd `dirname "$0"`;pwd) -MVNNAME=maven.tgz - -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd /opt && wget -O $MVNNAME https://downloads.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz -tar xzf $MVNNAME -mv apache-maven-* maven -rm $MVNNAME - -export MAVEN_HOME=/opt/maven -export PATH=$PATH:$MAVEN_HOME/bin -rm -rf $0 \ No newline at end of file diff --git a/contact-center/assets/mysql.setup.db.sh b/contact-center/assets/mysql.setup.db.sh deleted file mode 100755 index f5c61819..00000000 --- a/contact-center/assets/mysql.setup.db.sh +++ /dev/null @@ -1,86 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -source $baseDir/utils.sh -MYSQL_WRITEMODE_IP=`parse_host ${SPRING_DATASOURCE_URL}` -MYSQL_WRITEMODE_PORT=`parse_port ${SPRING_DATASOURCE_URL}` -CONTACT_CENTER_DB=`parse_dbname ${SPRING_DATASOURCE_URL}` -CONTACT_CENTER_WAR=/opt/cskefu/contact-center.war -MYSQL_SETUP_CREATE_DB=001.mysql-create-db.sql -MYSQL_SETUP_CREATE_SCHEMAS=002.mysql-create-schemas.sql - -# functions -function import_db(){ - if [ ! -f $1 ]; then exit 1; fi - println "run MySQL DB initialize script ..." - mysql -u ${SPRING_DATASOURCE_USERNAME} \ - -h ${MYSQL_WRITEMODE_IP} \ - -P ${MYSQL_WRITEMODE_PORT} -p${SPRING_DATASOURCE_PASSWORD} \ - < $1 - - # verify status - if [ ! $? -eq 0 ]; then - exit 1 - fi -} - -function init_db(){ - println "extract SQL script ..." - if [ -f $CONTACT_CENTER_WAR ]; then - cd /tmp - if [ -d ROOT ]; then - rm -rf ROOT - fi - - unzip -q $CONTACT_CENTER_WAR -d ROOT - if [ -f /tmp/ROOT/$MYSQL_SETUP_CREATE_SCHEMAS ]; then - println "start to import database ..." - cat /tmp/ROOT/$MYSQL_SETUP_CREATE_DB > /tmp/ROOT/db_setup.sql - echo "" >> /tmp/ROOT/db_setup.sql - cat /tmp/ROOT/$MYSQL_SETUP_CREATE_SCHEMAS >> /tmp/ROOT/db_setup.sql - - import_db /tmp/ROOT/db_setup.sql - # verify status - if [ ! $? -eq 0 ]; then - rm /tmp/ROOT/db_setup.sql - exit 1 - fi - rm -rf /tmp/ROOT - else - println "SQL script not exist." - exit 1 - fi - else - println "War file not exist." - fi -} - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -println "[setup] connecting to $MYSQL_WRITEMODE_IP:$MYSQL_WRITEMODE_PORT/$CONTACT_CENTER_DB with $SPRING_DATASOURCE_USERNAME/****" - -## wait for database connection ... -while ! mysqladmin --user=${SPRING_DATASOURCE_USERNAME} --password=${SPRING_DATASOURCE_PASSWORD} --host=${MYSQL_WRITEMODE_IP} --port=${MYSQL_WRITEMODE_PORT} ping --silent &> /dev/null ; do - echo "Waiting for database connection..." - sleep 2 -done - -# check if database exist, if not, create it. -mysqlshow -h ${MYSQL_WRITEMODE_IP} \ - -P ${MYSQL_WRITEMODE_PORT} \ - --user=${SPRING_DATASOURCE_USERNAME} \ - --password=${SPRING_DATASOURCE_PASSWORD} \ - ${CONTACT_CENTER_DB} > /dev/null 2>&1 && exit 0; - -# not exist -init_db - -# verify status -if [ ! $? -eq 0 ]; then - println "DB status check failed." - exit 1 -fi diff --git a/contact-center/assets/mysql.upgrade.db.sh b/contact-center/assets/mysql.upgrade.db.sh deleted file mode 100755 index 64875450..00000000 --- a/contact-center/assets/mysql.upgrade.db.sh +++ /dev/null @@ -1,81 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -source $baseDir/utils.sh -MYSQL_WRITEMODE_IP=`parse_host ${SPRING_DATASOURCE_URL}` -MYSQL_WRITEMODE_PORT=`parse_port ${SPRING_DATASOURCE_URL}` -CONTACT_CENTER_DB=`parse_dbname ${SPRING_DATASOURCE_URL}` -CONTACT_CENTER_WAR=/opt/cskefu/contact-center.war -APP_WAR_EXTRACTED=/tmp/ROOT -UPGRADE_DB_SCRIPT_DIR=$APP_WAR_EXTRACTED/upgrade - -# functions -function upgrade_db(){ - if [ ! -f $1 ]; then exit 1; fi - println "[upgrade] run MySQL DB upgrade script" $1 "..." - mysql -u ${SPRING_DATASOURCE_USERNAME} \ - -h ${MYSQL_WRITEMODE_IP} \ - -P ${MYSQL_WRITEMODE_PORT} -p${SPRING_DATASOURCE_PASSWORD} \ - < $1 - - # verify status - if [ ! $? -eq 0 ]; then - exit 1 - fi -} - -function extract_war(){ - println "extract SQL script ..." - if [ -f $CONTACT_CENTER_WAR ]; then - cd /tmp - if [ -d $APP_WAR_EXTRACTED ]; then - rm -rf $APP_WAR_EXTRACTED - fi - - unzip -q $CONTACT_CENTER_WAR -d ROOT - else - println "War file not exist." - fi -} - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -println "[upgrade] connecting to $MYSQL_WRITEMODE_IP:$MYSQL_WRITEMODE_PORT/$CONTACT_CENTER_DB with $SPRING_DATASOURCE_USERNAME/****" -## check upgrade footprint -if [ -f /opt/cskefu/upgrade.his ]; then - echo "[upgrade] upgrade has been done with previous start." - exit 0 -fi - -## wait for database connection ... -while ! mysqladmin --user=${SPRING_DATASOURCE_USERNAME} --password=${SPRING_DATASOURCE_PASSWORD} --host=${MYSQL_WRITEMODE_IP} --port=${MYSQL_WRITEMODE_PORT} ping --silent &> /dev/null ; do - echo "Waiting for database connection..." - sleep 2 -done - -## check root dir -if [ ! -d $APP_WAR_EXTRACTED ]; then - extract_war -fi - -## run scripts -if [ -d $UPGRADE_DB_SCRIPT_DIR ]; then - cd $UPGRADE_DB_SCRIPT_DIR - for x in `find . -name "*.sql"|sort`; do - echo "[run] " $x " ..." - upgrade_db $x - if [ ! $? -eq 0 ]; then - echo "Failed result with" $x - exit 1 - fi - done -fi - -## touch upgrade footprint -if [ ! -f /opt/cskefu/upgrade.his ]; then - touch /opt/cskefu/upgrade.his -fi diff --git a/contact-center/assets/sources.list b/contact-center/assets/sources.list deleted file mode 100644 index 27e50f5b..00000000 --- a/contact-center/assets/sources.list +++ /dev/null @@ -1,54 +0,0 @@ -# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to -# newer versions of the distribution. -deb http://archive.ubuntu.com/ubuntu/ bionic main restricted -# deb-src http://archive.ubuntu.com/ubuntu/ bionic main restricted - -## Major bug fix updates produced after the final release of the -## distribution. -deb http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted -# deb-src http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted - -## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu -## team. Also, please note that software in universe WILL NOT receive any -## review or updates from the Ubuntu security team. -deb http://archive.ubuntu.com/ubuntu/ bionic universe -# deb-src http://archive.ubuntu.com/ubuntu/ bionic universe -deb http://archive.ubuntu.com/ubuntu/ bionic-updates universe -# deb-src http://archive.ubuntu.com/ubuntu/ bionic-updates universe - -## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu -## team, and may not be under a free licence. Please satisfy yourself as to -## your rights to use the software. Also, please note that software in -## multiverse WILL NOT receive any review or updates from the Ubuntu -## security team. -deb http://archive.ubuntu.com/ubuntu/ bionic multiverse -# deb-src http://archive.ubuntu.com/ubuntu/ bionic multiverse -deb http://archive.ubuntu.com/ubuntu/ bionic-updates multiverse -# deb-src http://archive.ubuntu.com/ubuntu/ bionic-updates multiverse - -## N.B. software from this repository may not have been tested as -## extensively as that contained in the main release, although it includes -## newer versions of some applications which may provide useful features. -## Also, please note that software in backports WILL NOT receive any review -## or updates from the Ubuntu security team. -deb http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse -# deb-src http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse - -## Uncomment the following two lines to add software from Canonical's -## 'partner' repository. -## This software is not part of Ubuntu, but is offered by Canonical and the -## respective vendors as a service to Ubuntu users. -# deb http://archive.canonical.com/ubuntu bionic partner -# deb-src http://archive.canonical.com/ubuntu bionic partner - -deb http://security.ubuntu.com/ubuntu/ bionic-security main restricted -# deb-src http://security.ubuntu.com/ubuntu/ bionic-security main restricted -deb http://security.ubuntu.com/ubuntu/ bionic-security universe -# deb-src http://security.ubuntu.com/ubuntu/ bionic-security universe -deb http://security.ubuntu.com/ubuntu/ bionic-security multiverse -# deb-src http://security.ubuntu.com/ubuntu/ bionic-security multiverse -deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse -deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse -deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse -deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse -deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse diff --git a/contact-center/assets/utils.sh b/contact-center/assets/utils.sh deleted file mode 100755 index 09686e8e..00000000 --- a/contact-center/assets/utils.sh +++ /dev/null @@ -1,27 +0,0 @@ -println() { - # timestamp=`date +%Y%m%d%H%M%S` - timestamp=$(date "+%Y-%m-%d %H:%M:%S") - echo $timestamp $@ -} - -# Following regex is based on https://tools.ietf.org/html/rfc3986#appendix-B with -# additional sub-expressions to split authority into userinfo, host and port -# -readonly JDBC_URI_REGEX='^jdbc:mysql:(//((([^:/?#]+)@)?([^:/?#]+)(:([0-9]+))?))?(/([^?#]*))(\?([^#]*))?(#(.*))?' -# ↑↑ ↑ ↑↑↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ -# |2 scheme | ||6 userinfo 7 host | 9 port | 11 rpath | 13 query | 15 fragment -# 1 scheme: | |5 userinfo@ 8 :… 10 path 12 ?… 14 #… -# | 4 authority -# 3 //… - -parse_host () { - [[ "$@" =~ $JDBC_URI_REGEX ]] && echo "${BASH_REMATCH[5]}" -} - -parse_port () { - [[ "$@" =~ $JDBC_URI_REGEX ]] && echo "${BASH_REMATCH[7]}" -} - -parse_dbname () { - [[ "$@" =~ $JDBC_URI_REGEX ]] && echo "${BASH_REMATCH[9]}" -} \ No newline at end of file diff --git a/contact-center/config/base/Dockerfile b/contact-center/config/base/Dockerfile deleted file mode 100644 index 3949d1a0..00000000 --- a/contact-center/config/base/Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -FROM ubuntu:18.04 -MAINTAINER Hai Liang Wang - -ARG DEBIAN_FRONTEND=noninteractive - -# COPY $PWD/assets/aliyun.sources.list /etc/apt/sources.list -# install amazon jdk corretto -COPY $PWD/assets/install-corretto-8.sh /opt -RUN chmod +x /opt/install-corretto-8.sh && /opt/install-corretto-8.sh - -# install other lib and configure timezone -RUN apt-get update && \ - apt-get install --no-install-recommends -y tzdata iputils-ping mysql-client-5.7 zip unzip vim-tiny libfontconfig1 libfreetype6 && \ - ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ - DEBIAN_FRONTEND=noninteractive dpkg-reconfigure --frontend noninteractive tzdata && \ - rm -rf /var/lib/apt/lists/* - -# Set the locale -ENV LANG C.UTF-8 -ENV LANGUAGE en_US:en -ENV LC_ALL C.UTF-8 - -# set ENVs -ENV JAVA_HOME=/usr/lib/jvm/java-1.8.0-amazon-corretto -ENV PATH=$PATH:$JAVA_HOME/bin diff --git a/contact-center/config/base/assets/install-corretto-8.sh b/contact-center/config/base/assets/install-corretto-8.sh deleted file mode 100755 index 6bd90655..00000000 --- a/contact-center/config/base/assets/install-corretto-8.sh +++ /dev/null @@ -1,27 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -JDKNAME=java-1.8.0-amazon-corretto-jdk.deb -## fast download with internal addr -## replace JDKURL when builing outside chatopera machines, java-1.8.0-amazon-corretto-jdk_8.212.04-2_amd64.deb can be download from Amazon Official Site. -## https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/downloads-list.html -JDKURL=http://192.168.2.217:30080/vendors/java/java-1.8.0-amazon-corretto-jdk_8.212.04-2_amd64.deb - -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -apt-get update && apt-get install -y --no-install-recommends publicsuffix ca-certificates wget java-common -cd /tmp -wget --no-check-certificate -O $JDKNAME $JDKURL -dpkg --install $JDKNAME -rm -rf $JDKNAME -java -version - -export JAVA_HOME=/usr/lib/jvm/java-1.8.0-amazon-corretto -export PATH=$PATH:$JAVA_HOME/bin -rm -rf $0 \ No newline at end of file diff --git a/contact-center/config/base/build.sh b/contact-center/config/base/build.sh deleted file mode 100755 index 41573c65..00000000 --- a/contact-center/config/base/build.sh +++ /dev/null @@ -1,33 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -appHome=$baseDir -# registryName= -imagename=chatopera/java-1.8.0-amazon-corretto-jdk -PACKAGE_VERSION=1.0.0 -TIMESTAMP=`date "+%Y%m%d.%H%M%S"` - -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -# build -cd $appHome - -docker build --build-arg \ - --no-cache \ - --force-rm=true --tag $imagename:$PACKAGE_VERSION . - -set -x -if [ $? -eq 0 ]; then - docker tag $imagename:$PACKAGE_VERSION $imagename:develop - docker push $imagename:$PACKAGE_VERSION - docker push $imagename:develop -else - echo "Build contact-center failure." - exit 1 -fi \ No newline at end of file diff --git a/contact-center/ukefu.README.md b/contact-center/ukefu.README.md deleted file mode 100644 index ebb6574f..00000000 --- a/contact-center/ukefu.README.md +++ /dev/null @@ -1,127 +0,0 @@ -#优客服 -优客服官方技术支持QQ群(555834343,目前项目已发布v3.8.0版本,加入QQ群可以了解最新进度和技术问题咨询。): - -[![输入图片说明](http://git.oschina.net/uploads/images/2017/0123/001823_7efad50c_1200081.png "在这里输入图片标题")](http://shang.qq.com/wpa/qunwpa?idkey=637134af30a27220211c843d801ada14700aca69ee8f4acf13f795fe38ea7b94) - -优客服,是一个多渠道融合的客户支持服务平台,包含WebIM,微信,电话,邮件,短信等接入渠道、智能机器人 - -#访问地址 -DEMO访问地址:[优客服(UCKeFu-WebIM)](http://uk.ukewo.cn/) , 访问账号:admin,密码:123456 - -#优客服组件结构 -![输入图片说明](http://git.oschina.net/uploads/images/2017/0315/075025_c1add38b_1200081.png "在这里输入图片标题") - - - **1. WebIM在线客服** -优客服提供WebIM功能,在线坐席能够通过工作台操作界面,接收来自WebIM的咨询请求,优客服通过整合多个渠道来源,让坐席在同一个工作界面上处理来自PC端、移动端、微信端,微博等渠道的服务请求。 - **2. 社交媒体** -接入微信和微博渠道,将社交媒体渠道的的咨询请求接入进入 优客服 坐席工作平台,让客服统一响应和受理 - **3. 邮件、短信** -多种邮件处理方式,能够将邮箱的消息转为坐席的待处理任务,可以将待处理任务或邮件转为工单 - - -项目组成: - - **1. 前端:LayUI + Freemarker** - - **1. 后端:Spring Boot** - - **1. 数据库:MySQL+Elasticsearch** - -项目运行方式: - -### 1. 将代码拉取下来 - -### 1. 编译pom.xml文件,下载好jar包 -本项目有四个依赖包,jave 和Mondrian,aliyun-java-sdk-core、aliyun-java-sdk-dysmsapi通过以下指令加入到本地Mavenue仓库: - - -1、mvn install:install-file -Dfile=src/main/resources/WEB-INF/lib/jave-1.0.2.jar -DgroupId=lt.jave -DartifactId=jave -Dversion=1.0.2 -Dpackaging=jar - -2、mvn install:install-file -Dfile=src/main/resources/WEB-INF/lib/mondrian-3.7.0.jar -DgroupId=mondrian -DartifactId=mondrian -Dversion=3.7.0 -Dpackaging=jar - -3、执行添加 阿里云jar -mvn install:install-file -Dfile=src/main/resources/WEB-INF/lib/aliyun-java-sdk-core-3.3.1.jar -DgroupId=com.aliyun -DartifactId=aliyun-java-sdk-core -Dversion=3.3.1 -Dpackaging=jar - -4、阿里大鱼jar -mvn install:install-file -Dfile=src/main/resources/WEB-INF/lib/aliyun-java-sdk-dysmsapi-1.0.0.jar -DgroupId=com.aliyun -DartifactId=aliyun-java-sdk-dysmsapi -Dversion=1.0.0 -Dpackaging=jar - **确保两个依赖都安装成功** - -### 1. 将项目按照maven格式配置好 -### 1. 将ukefu.sql脚本在mysql数据库里运行,创建数据库和表 - - -### 1. 配置项目中的application.properties文件中的数据库连接 - -### 2. 将生成的WAR文件部署到 Tomcat 即可。 - - -运行一下查看效果吧! - - - **优客服将会分版本实现全部的功能,V1.0中将包含以下部分功能:** - **1、后台管理** -系统后台管理功能,包括系统用户管理,客服坐席管理,系统角色管理、组织机构管理,WebIM接入管理,接入设置 - **2、WebIM在线客服** -访客管理、访客邀请、WebIM网站端多风格切换,访客用户唯一身份识别与跟踪,老用户识别,IP与地理位置识别转换,访客轨迹,访客停留记录,访客实时对话,通信消息,表情包,客户消息多媒体类型消息处理;坐席与用户统一路由排队(ACD),实时提示坐席当前客户正在输入的内容,坐席状态切换、坐席绩效管理 - **3、联系人管理** -公共联系人,私有联系人,联系人贡献与分配 - **4、联络记录** -坐席与客户之间的通信记录,包含WebIM对话,微信对话(V2.0功能)等 - **5、常用语(FAQ)维护** -公共常用语维护(话术),坐席私有常用语维护 - - -优客服全渠道客服系统产品介绍 -优客服,是一个全渠道融合的客户支持服务平台,聚合8大客服渠道,帮助各种行业各种规模的企业建立完整客服体系。 -通过将邮件、短信、电话语音、WebIM在线客服、微信、微博、H5页面、APP接口8个渠道来源的客户服务请求与对话汇聚在一个管理平台,用统一的方式来响应和支撑客户服务。 -1、渠道融合,建立统一客服模式 - -• 语音 -接入企业的呼叫中心,让客服在一个管理界面接听呼入的电话并可以方便快捷的呼出,通过工单记录和后续跟进客户 -• WebIM在线客服 -让您的客服在一个节目和各个渠道来源的用户对话,实时沟通,并能够为对话记录质检和创建业务请求方便后续跟进和处理 -• 社交媒体 -集成微信和微博渠道,将社交网络的服务请求集中到优客服,客服坐席统一响应和受理 -• 邮件短信 -将发至客服邮箱的邮件转为服务请求,通过任务受理和追踪,并能够通过发送邮件或短信快速回复客户客户 -2、业务支撑,提供快速服务请求 - -• 简单易用的界面与交互 -为客户和坐席人员提供友好的操作界面,方便通过标准方式进行高效沟通 -• 跨部门协同解决客户问题 -连接您的所有职能人员,从销售客服到技术支持 -• 问题流转与变更全纪录 -客户的所有交谈记录和问题工单处理事件都会完整记录,方便任何客服接手问题处理,有效解决客户问题 -3、数据分析,深入了解客服业务状况 - -• 全渠道数据概况一目了然 -了解所有渠道的客户服务状况、来源比例,了解响应时间与服务时间,按不同维度统计 -• 优化客服坐席资源分配 -按照不同的维度统计更细致的客户坐席服务变化趋势,查看每一天的坐席绩效 -• 客群分类,建立客户全景式图 -集成企业内部客户数据,分析客户价值,创建客户标签 - - **微信接入渠道演示微信公众号** -![输入图片说明](https://gitee.com/uploads/images/2018/0330/155011_a68bba9e_1200081.jpeg "qrcode_for_gh_b21c83fa3ff9_258.jpg") - -优客服部分产品组件截图 - -![输入图片说明](http://git.oschina.net/uploads/images/2017/0314/203140_36044898_1200081.png "在这里输入图片标题") -![输入图片说明](http://git.oschina.net/uploads/images/2017/0314/203147_5a832431_1200081.png "在这里输入图片标题") -![输入图片说明](http://git.oschina.net/uploads/images/2017/0314/203155_24ca7ba3_1200081.png "在这里输入图片标题") -![输入图片说明](http://git.oschina.net/uploads/images/2017/0314/203208_1c20aabe_1200081.png "在这里输入图片标题") -![输入图片说明](http://git.oschina.net/uploads/images/2017/0314/203218_78ff4169_1200081.png "在这里输入图片标题") -![输入图片说明](http://git.oschina.net/uploads/images/2017/0314/203225_01f116e7_1200081.png "在这里输入图片标题") -![输入图片说明](http://git.oschina.net/uploads/images/2017/0314/203236_7d782c9e_1200081.png "在这里输入图片标题") -![输入图片说明](http://git.oschina.net/uploads/images/2017/0314/203349_829a3ac2_1200081.png "在这里输入图片标题") -![输入图片说明](http://git.oschina.net/uploads/images/2017/0314/203359_533aa230_1200081.png "在这里输入图片标题") -![输入图片说明](http://git.oschina.net/uploads/images/2017/0314/203408_e27accb5_1200081.png "在这里输入图片标题") -![输入图片说明](http://git.oschina.net/uploads/images/2017/0314/203416_47aac57f_1200081.png "在这里输入图片标题") -![输入图片说明](http://git.oschina.net/uploads/images/2017/0314/203426_a4df219a_1200081.png "在这里输入图片标题") -![输入图片说明](http://git.oschina.net/uploads/images/2017/0314/203433_1172bbb7_1200081.png "在这里输入图片标题") -![输入图片说明](http://git.oschina.net/uploads/images/2017/0314/203445_4ba5491a_1200081.png "在这里输入图片标题") -![输入图片说明](http://git.oschina.net/uploads/images/2017/0314/203452_99b88f79_1200081.png "在这里输入图片标题") -![输入图片说明](http://git.oschina.net/uploads/images/2017/0314/203459_26a875f5_1200081.png "在这里输入图片标题") -![输入图片说明](http://git.oschina.net/uploads/images/2017/0314/203505_5e9309a1_1200081.png "在这里输入图片标题") -![输入图片说明](http://git.oschina.net/uploads/images/2017/0314/203512_fd235387_1200081.png "在这里输入图片标题") \ No newline at end of file diff --git a/database/mysql/.gitignore b/containerization/cskefu/.gitignore similarity index 54% rename from database/mysql/.gitignore rename to containerization/cskefu/.gitignore index d6b7ef32..debe21d8 100644 --- a/database/mysql/.gitignore +++ b/containerization/cskefu/.gitignore @@ -1,2 +1,3 @@ -* +data +logs !.gitignore diff --git a/containerization/docker-compose.yml b/containerization/docker-compose.yml new file mode 100644 index 00000000..255c63be --- /dev/null +++ b/containerization/docker-compose.yml @@ -0,0 +1,302 @@ +version: "3" +services: + cskefu-web-gateway: + image: cskefu/cskefu-web-gateway + # container_name: cskefu-web-gateway + restart: always + # ports: + # - "${CSKEFU_WEB_GATEWAY_PORT:-8080}:8080" + expose: + - 8080 + volumes: + - ./cskefu/logs:/cskefu/logs + deploy: + replicas: 3 + environment: + - "JAVA_OPTS=-Xmx${CSKEFU_JAVA_XMX:-512m} -Xms${CSKEFU_JAVA_XMS:-512m} -XX:PermSize=128m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true --add-opens java.base/jdk.internal.misc=ALL-UNNAMED -Dio.netty.tryReflectionSetAccessible=true --illegal-access=warn" + - LOGGING_LEVEL_ROOT=${LOGGING_LEVEL_ROOT:-INFO} + - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/cskefu?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8 + - SPRING_DATASOURCE_USERNAME=root + - SPRING_DATASOURCE_PASSWORD=${DB_PASSWD:-123456} + # - SPRING_DATASOURCE_HIKARI_MAXIMUM_POOL_SIZE=100 + - SPRING_DATA_REDIS_HOST=redis + - SPRING_DATA_REDIS_PORT=6379 + - SPRING_RABBITMQ_ADDRESSES=rabbitmq + - SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR=nacos:8848 + - CACHE_SETUP_STRATEGY=${CACHE_SETUP_STRATEGY:-create_by_force} + - BOT_THRESHOLD_FAQ_BEST_REPLY=${BOT_THRESHOLD_FAQ_BEST_REPLY:-0.9} + - BOT_THRESHOLD_FAQ_SUGG_REPLY=${BOT_THRESHOLD_FAQ_SUGG_REPLY:-0.1} + - TONGJI_BAIDU_SITEKEY=${TONGJI_BAIDU_SITEKEY:-placeholder} + - EXTRAS_LOGIN_BANNER=${NOTICE_LOGIN_BANNER:-off} + - EXTRAS_LOGIN_CHATBOX=${EXTRAS_LOGIN_CHATBOX:-off} + - EXTRAS_AUTH_SUPER_ADMIN_PASS=${EXTRAS_AUTH_SUPER_ADMIN_PASS:-} + - EXTRAS_LOG_REQUEST=${EXTRAS_LOG_REQUEST:-off} + depends_on: + - cskefu-auth-service + - cskefu-manager-service + + cskefu-manager-service: + image: cskefu/cskefu-manager-service + # container_name: cskefu-manager-service + restart: always + # ports: + # - "${CSKEFU_MANAGER_SERVICE_PORT:-8081}:8081" + expose: + - 8081 + volumes: + - ./cskefu/logs:/cskefu/logs + environment: + - "JAVA_OPTS=-Xmx${CSKEFU_JAVA_XMX:-512m} -Xms${CSKEFU_JAVA_XMS:-512m} -XX:PermSize=128m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true --add-opens java.base/jdk.internal.misc=ALL-UNNAMED -Dio.netty.tryReflectionSetAccessible=true --illegal-access=warn" + - LOGGING_LEVEL_ROOT=${LOGGING_LEVEL_ROOT:-INFO} + - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/cskefu?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8 + - SPRING_DATASOURCE_USERNAME=root + - SPRING_DATASOURCE_PASSWORD=${DB_PASSWD:-123456} + # - SPRING_DATASOURCE_HIKARI_MAXIMUM_POOL_SIZE=100 + - SPRING_DATA_REDIS_HOST=redis + - SPRING_DATA_REDIS_PORT=6379 + - SPRING_RABBITMQ_ADDRESSES=rabbitmq + - SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR=nacos:8848 + - CACHE_SETUP_STRATEGY=${CACHE_SETUP_STRATEGY:-create_by_force} + - BOT_THRESHOLD_FAQ_BEST_REPLY=${BOT_THRESHOLD_FAQ_BEST_REPLY:-0.9} + - BOT_THRESHOLD_FAQ_SUGG_REPLY=${BOT_THRESHOLD_FAQ_SUGG_REPLY:-0.1} + - TONGJI_BAIDU_SITEKEY=${TONGJI_BAIDU_SITEKEY:-placeholder} + - EXTRAS_LOGIN_BANNER=${NOTICE_LOGIN_BANNER:-off} + - EXTRAS_LOGIN_CHATBOX=${EXTRAS_LOGIN_CHATBOX:-off} + - EXTRAS_AUTH_SUPER_ADMIN_PASS=${EXTRAS_AUTH_SUPER_ADMIN_PASS:-} + - EXTRAS_LOG_REQUEST=${EXTRAS_LOG_REQUEST:-off} + depends_on: + - mysql + - redis + - nacos + - rabbitmq + + cskefu-auth-service: + image: cskefu/cskefu-auth-service + # container_name: cskefu-auth-service + restart: always + # ports: + # - "${CSKEFU_AUTH_SERVICE_PORT:-8082}:8082" + expose: + - 8082 + volumes: + - ./cskefu/logs:/cskefu/logs + environment: + - "JAVA_OPTS=-Xmx${CSKEFU_JAVA_XMX:-512m} -Xms${CSKEFU_JAVA_XMS:-512m} -XX:PermSize=128m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true --add-opens java.base/jdk.internal.misc=ALL-UNNAMED -Dio.netty.tryReflectionSetAccessible=true --illegal-access=warn" + - LOGGING_LEVEL_ROOT=${LOGGING_LEVEL_ROOT:-INFO} + - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/cskefu?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8 + - SPRING_DATASOURCE_USERNAME=root + - SPRING_DATASOURCE_PASSWORD=${DB_PASSWD:-123456} + # - SPRING_DATASOURCE_HIKARI_MAXIMUM_POOL_SIZE=100 + - SPRING_DATA_REDIS_HOST=redis + - SPRING_DATA_REDIS_PORT=6379 + - SPRING_RABBITMQ_ADDRESSES=rabbitmq + - SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR=nacos:8848 + - CACHE_SETUP_STRATEGY=${CACHE_SETUP_STRATEGY:-create_by_force} + - BOT_THRESHOLD_FAQ_BEST_REPLY=${BOT_THRESHOLD_FAQ_BEST_REPLY:-0.9} + - BOT_THRESHOLD_FAQ_SUGG_REPLY=${BOT_THRESHOLD_FAQ_SUGG_REPLY:-0.1} + - TONGJI_BAIDU_SITEKEY=${TONGJI_BAIDU_SITEKEY:-placeholder} + - EXTRAS_LOGIN_BANNER=${NOTICE_LOGIN_BANNER:-off} + - EXTRAS_LOGIN_CHATBOX=${EXTRAS_LOGIN_CHATBOX:-off} + - EXTRAS_AUTH_SUPER_ADMIN_PASS=${EXTRAS_AUTH_SUPER_ADMIN_PASS:-} + - EXTRAS_LOG_REQUEST=${EXTRAS_LOG_REQUEST:-off} + depends_on: + - mysql + - redis + - nacos + - rabbitmq + + cskefu-plugin-service: + image: cskefu/cskefu-plugin-service + # container_name: cskefu-plugin-service + restart: always + # ports: + # - "${CSKEFU_PLUGIN_SERVICE_PORT:-8083}:8083" + expose: + - 8083 + volumes: + - ./cskefu/logs:/cskefu/logs + environment: + - "JAVA_OPTS=-Xmx${CSKEFU_JAVA_XMX:-512m} -Xms${CSKEFU_JAVA_XMS:-512m} -XX:PermSize=128m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true --add-opens java.base/jdk.internal.misc=ALL-UNNAMED -Dio.netty.tryReflectionSetAccessible=true --illegal-access=warn" + - LOGGING_LEVEL_ROOT=${LOGGING_LEVEL_ROOT:-INFO} + - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/cskefu?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8 + - SPRING_DATASOURCE_USERNAME=root + - SPRING_DATASOURCE_PASSWORD=${DB_PASSWD:-123456} + # - SPRING_DATASOURCE_HIKARI_MAXIMUM_POOL_SIZE=100 + - SPRING_DATA_REDIS_HOST=redis + - SPRING_DATA_REDIS_PORT=6379 + - SPRING_RABBITMQ_ADDRESSES=rabbitmq + - SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR=nacos:8848 + - CACHE_SETUP_STRATEGY=${CACHE_SETUP_STRATEGY:-create_by_force} + - BOT_THRESHOLD_FAQ_BEST_REPLY=${BOT_THRESHOLD_FAQ_BEST_REPLY:-0.9} + - BOT_THRESHOLD_FAQ_SUGG_REPLY=${BOT_THRESHOLD_FAQ_SUGG_REPLY:-0.1} + - TONGJI_BAIDU_SITEKEY=${TONGJI_BAIDU_SITEKEY:-placeholder} + - EXTRAS_LOGIN_BANNER=${NOTICE_LOGIN_BANNER:-off} + - EXTRAS_LOGIN_CHATBOX=${EXTRAS_LOGIN_CHATBOX:-off} + - EXTRAS_AUTH_SUPER_ADMIN_PASS=${EXTRAS_AUTH_SUPER_ADMIN_PASS:-} + - EXTRAS_LOG_REQUEST=${EXTRAS_LOG_REQUEST:-off} + depends_on: + - mysql + - redis + - nacos + - rabbitmq + + cskefu-channel-wechat-service: + image: cskefu/cskefu-channel-wechat-service + # container_name: cskefu-channel-wechat-service + restart: always + # ports: + # - "${CSKEFU_CHANNEL_WECHAT_SERVICE_PORT:-8084}:8084" + expose: + - 8084 + volumes: + - ./cskefu/logs:/cskefu/logs + environment: + - "JAVA_OPTS=-Xmx${CSKEFU_JAVA_XMX:-512m} -Xms${CSKEFU_JAVA_XMS:-512m} -XX:PermSize=128m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true --add-opens java.base/jdk.internal.misc=ALL-UNNAMED -Dio.netty.tryReflectionSetAccessible=true --illegal-access=warn" + - LOGGING_LEVEL_ROOT=${LOGGING_LEVEL_ROOT:-INFO} + - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/cskefu?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8 + - SPRING_DATASOURCE_USERNAME=root + - SPRING_DATASOURCE_PASSWORD=${DB_PASSWD:-123456} + # - SPRING_DATASOURCE_HIKARI_MAXIMUM_POOL_SIZE=100 + - SPRING_DATA_REDIS_HOST=redis + - SPRING_DATA_REDIS_PORT=6379 + - SPRING_RABBITMQ_ADDRESSES=rabbitmq + - SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR=nacos:8848 + - CACHE_SETUP_STRATEGY=${CACHE_SETUP_STRATEGY:-create_by_force} + - BOT_THRESHOLD_FAQ_BEST_REPLY=${BOT_THRESHOLD_FAQ_BEST_REPLY:-0.9} + - BOT_THRESHOLD_FAQ_SUGG_REPLY=${BOT_THRESHOLD_FAQ_SUGG_REPLY:-0.1} + - TONGJI_BAIDU_SITEKEY=${TONGJI_BAIDU_SITEKEY:-placeholder} + - EXTRAS_LOGIN_BANNER=${NOTICE_LOGIN_BANNER:-off} + - EXTRAS_LOGIN_CHATBOX=${EXTRAS_LOGIN_CHATBOX:-off} + - EXTRAS_AUTH_SUPER_ADMIN_PASS=${EXTRAS_AUTH_SUPER_ADMIN_PASS:-} + - EXTRAS_LOG_REQUEST=${EXTRAS_LOG_REQUEST:-off} + depends_on: + - cskefu-auth-service + + cskefu-websocket-service: + image: cskefu/cskefu-websocket-service + # container_name: cskefu-websocket-service + restart: always + # ports: + # - "${CSKEFU_WEBSOCKET_SERVICE_PORT:-10000}:10000" + expose: + - ${CSKEFU_WEBSOCKET_SERVICE_PORT:-10000} + volumes: + - ./cskefu/logs:/cskefu/logs + deploy: + replicas: 3 + environment: + - "JAVA_OPTS=-Xmx${CSKEFU_JAVA_XMX:-512m} -Xms${CSKEFU_JAVA_XMS:-512m} -XX:PermSize=128m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true --add-opens java.base/jdk.internal.misc=ALL-UNNAMED -Dio.netty.tryReflectionSetAccessible=true --illegal-access=warn" + - LOGGING_LEVEL_ROOT=${LOGGING_LEVEL_ROOT:-INFO} + - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/cskefu?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8 + - SPRING_DATASOURCE_USERNAME=root + - SPRING_DATASOURCE_PASSWORD=${DB_PASSWD:-123456} + # - SPRING_DATASOURCE_HIKARI_MAXIMUM_POOL_SIZE=100 + - SPRING_DATA_REDIS_HOST=redis + - SPRING_DATA_REDIS_PORT=6379 + - SPRING_RABBITMQ_ADDRESSES=rabbitmq + - SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR=nacos:8848 + - CACHE_SETUP_STRATEGY=${CACHE_SETUP_STRATEGY:-create_by_force} + - BOT_THRESHOLD_FAQ_BEST_REPLY=${BOT_THRESHOLD_FAQ_BEST_REPLY:-0.9} + - BOT_THRESHOLD_FAQ_SUGG_REPLY=${BOT_THRESHOLD_FAQ_SUGG_REPLY:-0.1} + - TONGJI_BAIDU_SITEKEY=${TONGJI_BAIDU_SITEKEY:-placeholder} + - EXTRAS_LOGIN_BANNER=${NOTICE_LOGIN_BANNER:-off} + - EXTRAS_LOGIN_CHATBOX=${EXTRAS_LOGIN_CHATBOX:-off} + - EXTRAS_AUTH_SUPER_ADMIN_PASS=${EXTRAS_AUTH_SUPER_ADMIN_PASS:-} + - EXTRAS_LOG_REQUEST=${EXTRAS_LOG_REQUEST:-off} + depends_on: + - mysql + - redis + - nacos + - rabbitmq + + mysql: + image: cskefu/mysql-8.1:nacos + container_name: mysql + restart: always + environment: + - MYSQL_PASSWORD=${MYSQL_PASSWORD:-123456} + - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD:-123456} + ports: + - "${MYSQL_PORT:-3306}:3306" + expose: + - 3306 + volumes: + - ./mysql/data:/var/lib/mysql + command: --max_allowed_packet=32505856 + + # https://hub.docker.com/r/nacos/nacos-server + nacos: + image: nacos/nacos-server:v2.2.3-slim + container_name: nacos + environment: + MODE: standalone + SPRING_DATASOURCE_PLATFORM: mysql + MYSQL_SERVICE_HOST: mysql + MYSQL_SERVICE_PORT: 3306 + MYSQL_SERVICE_DB_NAME: nacos_config + MYSQL_SERVICE_USER: ${MYSQL_USER:-root} + MYSQL_SERVICE_PASSWORD: ${MYSQL_PASSWORD:-123456} + MYSQL_SERVICE_DB_PARAM: "characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&serverTimezone=UTC" + JVM_XMS: 256m + JVM_XMX: 512m + JVM_XMN: 256m + volumes: + - ./nacos/logs:/home/nacos/logs + ports: + - "${NACOS_PORT:-8848}:8848" + - "${NACOS_CLIENT_GRPC_PORT:-9848}:9848" + - "${NACOS_SERVER_GRPC_PORT:-9849}:9849" + expose: + - 8848 + - 9848 + - 9849 + restart: always + depends_on: + - mysql + + redis: + image: redis:7.2.1-alpine3.18 + container_name: redis + restart: always + volumes: + - ./redis/data:/cskefu/redis + ports: + - "${REDIS_PORT:-6379}:6379" + expose: + - 6379 + + rabbitmq: + image: rabbitmq:3.12-management + container_name: rabbitmq + restart: always + hostname: rabbitmq + ports: + - "${RABBITMQ_CLIENT_PORT:-5672}:5672" + - "${RABBITMQ_HTTP_PORT:-15672}:15672" + expose: + - 5672 + - 15672 + volumes: + - ./rabbitmq/data:/var/lib/rabbitmq + - ./rabbitmq/hosts:/etc/hosts + environment: + - RABBITMQ_NODENAME=rabbitmq + - RABBITMQ_DEFAULT_VHOST='/' + - RABBITMQ_DEFAULT_USER=guest + - RABBITMQ_DEFAULT_PASS=guest + + openresty: + image: openresty/openresty:1.21.4.2-0-alpine-apk + container_name: openresty + restart: always + ports: + - "${NGINX_HTTP_PORT:-80}:80" + - "${NGINX_SSL_PORT:-443}:443" + volumes: + - ./openresty/logs:/usr/local/openresty/nginx/logs + - ./openresty/conf.d:/etc/nginx/conf.d + - ./openresty/certs:/certs + - ./openresty/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf + depends_on: + - cskefu-web-gateway + - cskefu-websocket-service \ No newline at end of file diff --git a/containerization/dockerfiles/mysql-8.1-nacos b/containerization/dockerfiles/mysql-8.1-nacos new file mode 100644 index 00000000..fa5e56d9 --- /dev/null +++ b/containerization/dockerfiles/mysql-8.1-nacos @@ -0,0 +1,7 @@ +FROM mysql:8.1 + +ADD nacos_mysql.sql /nacos/nacos_mysql.sql + +CMD ["mysqld"] + +CMD ["mysql -uroot -p$MYSQL_ROOT_PASSWORD nacos_config < /nacos/nacos_mysql.sql"] diff --git a/containerization/dockerfiles/nacos_mysql.sql b/containerization/dockerfiles/nacos_mysql.sql new file mode 100644 index 00000000..29223b08 --- /dev/null +++ b/containerization/dockerfiles/nacos_mysql.sql @@ -0,0 +1,208 @@ +create database if not exists nacos_config default charset utf8 collate utf8_unicode_ci; +use nacos_config; + +/******************************************/ +/* 数据库全名 = nacos_config */ +/* 表名称 = config_info */ +/******************************************/ +CREATE TABLE `config_info` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `data_id` varchar(255) NOT NULL COMMENT 'data_id', + `group_id` varchar(128) DEFAULT NULL, + `content` longtext NOT NULL COMMENT 'content', + `md5` varchar(32) DEFAULT NULL COMMENT 'md5', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `src_user` text COMMENT 'source user', + `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', + `app_name` varchar(128) DEFAULT NULL, + `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', + `c_desc` varchar(256) DEFAULT NULL, + `c_use` varchar(64) DEFAULT NULL, + `effect` varchar(64) DEFAULT NULL, + `type` varchar(64) DEFAULT NULL, + `c_schema` text, + `encrypted_data_key` text NOT NULL COMMENT '秘钥', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info'; + +/******************************************/ +/* 数据库全名 = nacos_config */ +/* 表名称 = config_info_aggr */ +/******************************************/ +CREATE TABLE `config_info_aggr` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `data_id` varchar(255) NOT NULL COMMENT 'data_id', + `group_id` varchar(128) NOT NULL COMMENT 'group_id', + `datum_id` varchar(255) NOT NULL COMMENT 'datum_id', + `content` longtext NOT NULL COMMENT '内容', + `gmt_modified` datetime NOT NULL COMMENT '修改时间', + `app_name` varchar(128) DEFAULT NULL, + `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段'; + + +/******************************************/ +/* 数据库全名 = nacos_config */ +/* 表名称 = config_info_beta */ +/******************************************/ +CREATE TABLE `config_info_beta` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `data_id` varchar(255) NOT NULL COMMENT 'data_id', + `group_id` varchar(128) NOT NULL COMMENT 'group_id', + `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', + `content` longtext NOT NULL COMMENT 'content', + `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps', + `md5` varchar(32) DEFAULT NULL COMMENT 'md5', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `src_user` text COMMENT 'source user', + `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', + `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', + `encrypted_data_key` text NOT NULL COMMENT '秘钥', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta'; + +/******************************************/ +/* 数据库全名 = nacos_config */ +/* 表名称 = config_info_tag */ +/******************************************/ +CREATE TABLE `config_info_tag` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `data_id` varchar(255) NOT NULL COMMENT 'data_id', + `group_id` varchar(128) NOT NULL COMMENT 'group_id', + `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id', + `tag_id` varchar(128) NOT NULL COMMENT 'tag_id', + `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', + `content` longtext NOT NULL COMMENT 'content', + `md5` varchar(32) DEFAULT NULL COMMENT 'md5', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `src_user` text COMMENT 'source user', + `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag'; + +/******************************************/ +/* 数据库全名 = nacos_config */ +/* 表名称 = config_tags_relation */ +/******************************************/ +CREATE TABLE `config_tags_relation` ( + `id` bigint(20) NOT NULL COMMENT 'id', + `tag_name` varchar(128) NOT NULL COMMENT 'tag_name', + `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type', + `data_id` varchar(255) NOT NULL COMMENT 'data_id', + `group_id` varchar(128) NOT NULL COMMENT 'group_id', + `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id', + `nid` bigint(20) NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`nid`), + UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`), + KEY `idx_tenant_id` (`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation'; + +/******************************************/ +/* 数据库全名 = nacos_config */ +/* 表名称 = group_capacity */ +/******************************************/ +CREATE TABLE `group_capacity` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群', + `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值', + `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量', + `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', + `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值', + `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', + `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_group_id` (`group_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表'; + +/******************************************/ +/* 数据库全名 = nacos_config */ +/* 表名称 = his_config_info */ +/******************************************/ +CREATE TABLE `his_config_info` ( + `id` bigint(20) unsigned NOT NULL, + `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `data_id` varchar(255) NOT NULL, + `group_id` varchar(128) NOT NULL, + `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', + `content` longtext NOT NULL, + `md5` varchar(32) DEFAULT NULL, + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `src_user` text, + `src_ip` varchar(50) DEFAULT NULL, + `op_type` char(10) DEFAULT NULL, + `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', + `encrypted_data_key` text NOT NULL COMMENT '秘钥', + PRIMARY KEY (`nid`), + KEY `idx_gmt_create` (`gmt_create`), + KEY `idx_gmt_modified` (`gmt_modified`), + KEY `idx_did` (`data_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造'; + + +/******************************************/ +/* 数据库全名 = nacos_config */ +/* 表名称 = tenant_capacity */ +/******************************************/ +CREATE TABLE `tenant_capacity` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID', + `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值', + `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量', + `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', + `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数', + `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', + `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_tenant_id` (`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表'; + + +CREATE TABLE `tenant_info` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `kp` varchar(128) NOT NULL COMMENT 'kp', + `tenant_id` varchar(128) default '' COMMENT 'tenant_id', + `tenant_name` varchar(128) default '' COMMENT 'tenant_name', + `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc', + `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source', + `gmt_create` bigint(20) NOT NULL COMMENT '创建时间', + `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`), + KEY `idx_tenant_id` (`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info'; + +CREATE TABLE `users` ( + `username` varchar(50) NOT NULL PRIMARY KEY, + `password` varchar(500) NOT NULL, + `enabled` boolean NOT NULL +); + +CREATE TABLE `roles` ( + `username` varchar(50) NOT NULL, + `role` varchar(50) NOT NULL, + UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE +); + +CREATE TABLE `permissions` ( + `role` varchar(50) NOT NULL, + `resource` varchar(255) NOT NULL, + `action` varchar(8) NOT NULL, + UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE +); + +INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE); + +INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN'); diff --git a/containerization/dockerfiles/openjdk-21-debian-stretch-slim b/containerization/dockerfiles/openjdk-21-debian-stretch-slim new file mode 100644 index 00000000..d4296ac6 --- /dev/null +++ b/containerization/dockerfiles/openjdk-21-debian-stretch-slim @@ -0,0 +1,15 @@ +FROM openjdk:21 as openjdk-21 +RUN jlink \ + --add-modules ALL-MODULE-PATH \ + --strip-debug \ + --no-man-pages \ + --no-header-files \ + --compress=2 \ + --output /java-21-openjdk + +FROM debian:stretch-slim + +COPY --from=openjdk-21 /java-21-openjdk /usr/local/java-21-openjdk + +ENV JAVA_HOME=/usr/local/java-21-openjdk +ENV PATH=$PATH:/usr/local/java-21-openjdk/bin \ No newline at end of file diff --git a/containerization/mysql/.gitignore b/containerization/mysql/.gitignore new file mode 100644 index 00000000..a2b7b22f --- /dev/null +++ b/containerization/mysql/.gitignore @@ -0,0 +1,3 @@ +data +.gitignore +!.gitignore diff --git a/database/activemq/data/.gitignore b/containerization/nacos/.gitignore similarity index 54% rename from database/activemq/data/.gitignore rename to containerization/nacos/.gitignore index d6b7ef32..debe21d8 100644 --- a/database/activemq/data/.gitignore +++ b/containerization/nacos/.gitignore @@ -1,2 +1,3 @@ -* +data +logs !.gitignore diff --git a/containerization/openresty/certs/.gitignore b/containerization/openresty/certs/.gitignore new file mode 100644 index 00000000..c1aefd20 --- /dev/null +++ b/containerization/openresty/certs/.gitignore @@ -0,0 +1,2 @@ +.gitignore +!.gitignore diff --git a/containerization/openresty/conf.d/default.conf b/containerization/openresty/conf.d/default.conf new file mode 100644 index 00000000..945dafdd --- /dev/null +++ b/containerization/openresty/conf.d/default.conf @@ -0,0 +1,171 @@ +http { + include /usr/local/openresty/nginx/conf/mime.types; + default_type application/octet-stream; + + log_format main '$server_name $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" $ssl_protocol $ssl_cipher $upstream_addr $request_time $upstream_response_time'; + # access_log logs/access.log main; + + # log_format nginxlog_json escape=json '{ "timestamp": "$time_iso8601", ' '"remote_addr": "$remote_addr", ' '"body_bytes_sent": $body_bytes_sent, ' '"request_time": $request_time, ' '"response_status": $status, ' '"request": "$request", ' '"request_method": "$request_method", ' '"host": "$host",' '"upstream_addr": "$upstream_addr",' '"http_x_forwarded_for": "$http_x_forwarded_for",' '"http_referrer": "$http_referer", ' '"http_user_agent": "$http_user_agent", ' '"http_version": "$server_protocol", ' '"nginx_access": true }'; + # access_log /dev/stdout nginxlog_json; + + # See Move default writable paths to a dedicated directory (#119) + # https://github.com/openresty/docker-openresty/issues/119 + client_body_temp_path /var/run/openresty/nginx-client-body; + proxy_temp_path /var/run/openresty/nginx-proxy; + fastcgi_temp_path /var/run/openresty/nginx-fastcgi; + uwsgi_temp_path /var/run/openresty/nginx-uwsgi; + scgi_temp_path /var/run/openresty/nginx-scgi; + + sendfile on; + #tcp_nopush on; + + #keepalive_timeout 0; + keepalive_timeout 65; + + #gzip on; + + init_by_lua_block { + instanceQueue = {} + cjson = require "cjson" + } + + upstream cskefu_web_gateway { + server 0.0.0.1; + balancer_by_lua_block { + local balancer = require "ngx.balancer" + local instance = table.remove(instanceQueue, 1) + local ok, err = balancer.set_current_peer(instance["ip"], instance["port"]) + if not ok then + ngx.log(ngx.ERR, "failed to set the current peer: ", err) + return ngx.exit(500) + end + } + } + + upstream cskefu_websocket_service { + server 0.0.0.1; + balancer_by_lua_block { + local balancer = require "ngx.balancer" + local instance = table.remove(instanceQueue, 1) + local ok, err = balancer.set_current_peer(instance["ip"], instance["port"]) + if not ok then + ngx.log(ngx.ERR, "failed to set the current peer: ", err) + return ngx.exit(500) + end + } + } + + server { + root /usr/share/nginx/html; + client_max_body_size 100M; + + location /api/ { + access_by_lua_block { + local cjson = require "cjson" + local queueLength = table.getn(instanceQueue) + local mapper = {} + if queueLength > 0 then + for i = 1, queueLength do + local id = instanceQueue[i]["ip"]..":"..instanceQueue[i]["port"] + mapper[id] = i + end + end + local result = ngx.location.capture("/nacos", {args='serviceName=cskefu-web-gateway'}) + local hosts = cjson.decode(result.body)['hosts'] + local hostsLength = table.getn(hosts) + local others = {} + instanceQueue = {} + for i = 1, hostsLength do + local id = hosts[i]["ip"]..":"..hosts[i]["port"] + if hosts[i]["healthy"] == true then + if mapper[id] then + instanceQueue[mapper[id]] = { + ["ip"] = hosts[i]["ip"], + ["port"] = hosts[i]["port"] + } + else + table.insert(others, { + ["ip"] = hosts[i]["ip"], + ["port"] = hosts[i]["port"] + }) + end + end + end + local othersLength = table.getn(others) + if othersLength > 0 then + for i = 1, othersLength do + table.insert(instanceQueue, { + ["ip"] = others[i]["ip"], + ["port"] = others[i]["port"] + }) + end + end + } + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + # proxy_pass http://cskefu-web-gateway:8080/; + proxy_pass http://cskefu_web_gateway/; + } + + location /ws/ { + access_by_lua_block { + local cjson = require "cjson" + local queueLength = table.getn(instanceQueue) + local mapper = {} + if queueLength > 0 then + for i = 1, queueLength do + local id = instanceQueue[i]["ip"]..":"..instanceQueue[i]["port"] + mapper[id] = i + end + end + local result = ngx.location.capture("/nacos", {args='serviceName=cskefu-websocket-service'}) + local hosts = cjson.decode(result.body)['hosts'] + local hostsLength = table.getn(hosts) + local others = {} + instanceQueue = {} + for i = 1, hostsLength do + local id = hosts[i]["ip"]..":"..hosts[i]["port"] + if hosts[i]["healthy"] == true then + if mapper[id] then + instanceQueue[mapper[id]] = { + ["ip"] = hosts[i]["ip"], + ["port"] = hosts[i]["port"] + } + else + table.insert(others, { + ["ip"] = hosts[i]["ip"], + ["port"] = hosts[i]["port"] + }) + end + end + end + local othersLength = table.getn(others) + if othersLength > 0 then + for i = 1, othersLength do + table.insert(instanceQueue, { + ["ip"] = others[i]["ip"], + ["port"] = others[i]["port"] + }) + end + end + } + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $host; + proxy_http_version 1.1; + # proxy_pass http://cskefu-websocket-service:10000/ws/; + proxy_pass http://cskefu_websocket_service; + } + + location = /nacos { + internal; + proxy_pass http://nacos:8848/nacos/v1/ns/instance/list; + } + } + + # Don't reveal OpenResty version to clients. + # server_tokens off; +} diff --git a/containerization/openresty/logs/.gitignore b/containerization/openresty/logs/.gitignore new file mode 100644 index 00000000..c1aefd20 --- /dev/null +++ b/containerization/openresty/logs/.gitignore @@ -0,0 +1,2 @@ +.gitignore +!.gitignore diff --git a/containerization/openresty/nginx.conf b/containerization/openresty/nginx.conf new file mode 100644 index 00000000..e88bda9e --- /dev/null +++ b/containerization/openresty/nginx.conf @@ -0,0 +1,38 @@ +# nginx.conf -- docker-openresty +# +# This file is installed to: +# `/usr/local/openresty/nginx/conf/nginx.conf` +# and is the file loaded by nginx at startup, +# unless the user specifies otherwise. +# +# It tracks the upstream OpenResty's `nginx.conf`, but removes the `server` +# section and adds this directive: +# `include /etc/nginx/conf.d/*.conf;` +# +# The `docker-openresty` file `nginx.vh.default.conf` is copied to +# `/etc/nginx/conf.d/default.conf`. It contains the `server section +# of the upstream `nginx.conf`. +# +# See https://github.com/openresty/docker-openresty/blob/master/README.md#nginx-config-files +# + +#user nobody; +#worker_processes 1; + +# Enables the use of JIT for regular expressions to speed-up their processing. +pcre_jit on; + + + +#error_log logs/error.log; +#error_log logs/error.log notice; +#error_log logs/error.log info; + +#pid logs/nginx.pid; + + +events { + worker_connections 1024; +} + +include /etc/nginx/conf.d/*.conf; diff --git a/nginx/templates/ssl.conf b/containerization/openresty/templates/ssl.conf similarity index 70% rename from nginx/templates/ssl.conf rename to containerization/openresty/templates/ssl.conf index a37a3e51..e5b9a0e8 100644 --- a/nginx/templates/ssl.conf +++ b/containerization/openresty/templates/ssl.conf @@ -14,21 +14,20 @@ server { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; - proxy_pass http://contact-center:8035; + proxy_pass http://cskefu-web-gateway:8080; } location /actuator { - return 403 "403: Target API is blocked."; - + return 403 "403: Target API is blocked."; } location /socket.io { proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header Host $host; - proxy_http_version 1.1; - proxy_pass http://contact-center:8036; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $host; + proxy_http_version 1.1; + proxy_pass http://cskefu-websocket-service:10000; } } diff --git a/database/activemq/logs/.gitignore b/containerization/rabbitmq/.gitignore similarity index 54% rename from database/activemq/logs/.gitignore rename to containerization/rabbitmq/.gitignore index d6b7ef32..debe21d8 100644 --- a/database/activemq/logs/.gitignore +++ b/containerization/rabbitmq/.gitignore @@ -1,2 +1,3 @@ -* +data +logs !.gitignore diff --git a/containerization/rabbitmq/hosts b/containerization/rabbitmq/hosts new file mode 100644 index 00000000..e69de29b diff --git a/database/activemq/.gitignore b/containerization/redis/.gitignore similarity index 70% rename from database/activemq/.gitignore rename to containerization/redis/.gitignore index d6b7ef32..af81f13e 100644 --- a/database/activemq/.gitignore +++ b/containerization/redis/.gitignore @@ -1,2 +1,2 @@ -* +data !.gitignore diff --git a/sample.env b/containerization/sample.env similarity index 50% rename from sample.env rename to containerization/sample.env index e41e7d5d..5c824ba8 100644 --- a/sample.env +++ b/containerization/sample.env @@ -4,26 +4,36 @@ # and edit .env with COMPOSE_FILE=docker-compose.custom.yml, docker-compose.custom.yml # is ignored with .gitignore COMPOSE_FILE=docker-compose.yml -# To setup with nginx service -#COMPOSE_FILE=docker-compose.yml:docker-nginx.yml -COMPOSE_PROJECT_NAME=cskefu +COMPOSE_PROJECT_NAME=cskefu-backend # OS Params -CC_IMAGE=cskefu/contact-center:develop -CC_JAVA_XMX=12288m -CC_JAVA_XMS=2048m +CSKEFU_JAVA_XMX=512m +CSKEFU_JAVA_XMS=512m -# Variables -MYSQL_PORT=8037 -REDIS_PORT=8041 -CC_WEB_PORT=8035 -CC_SOCKET_PORT=8036 -ACTIVEMQ_PORT1=8051 -ACTIVEMQ_PORT2=8052 -ACTIVEMQ_PORT3=8053 -DB_PASSWD=123456 -LOG_LEVEL=INFO -CACHE_SETUP_STRATEGY=create_by_force +LOGGING_LEVEL_ROOT=INFO + +#CSKEFU_WEB_GATEWAY_PORT:-8080 +#CSKEFU_MANAGER_SERVICE_PORT:-8081 +#CSKEFU_AUTH_SERVICE_PORT:-8082 +#CSKEFU_PLUGIN_SERVICE_PORT:-8083 +#CSKEFU_CHANNEL_WECHAT_SERVICE_PORT:-8084 +CSKEFU_WEBSOCKET_SERVICE_PORT:10000 + +NGINX_HTTP_PORT=80 +NGINX_SSL_PORT=443 + +RABBITMQ_CLIENT_PORT=5683 +RABBITMQ_HTTP_PORT=15683 + +REDIS_PORT=6379 + +NACOS_PORT=8848 +NACOS_CLIENT_GRPC_PORT=9848 +NACOS_SERVER_GRPC_PORT=9849 + +MYSQL_PORT=3306 +MYSQL_USER=root +MYSQL_PASSWORD=123456 ## chatbot ## https://docs.cskefu.com/docs/work-chatbot/ @@ -33,4 +43,4 @@ BOT_THRESHOLD_FAQ_SUGG_REPLY=0.6 TONGJI_BAIDU_SITEKEY=placeholder EXTRAS_LOGIN_BANNER="" EXTRAS_LOGIN_CHATBOX= -EXTRAS_AUTH_SUPER_ADMIN_PASS= \ No newline at end of file +EXTRAS_AUTH_SUPER_ADMIN_PASS= diff --git a/containerization/scripts/build.sh b/containerization/scripts/build.sh new file mode 100644 index 00000000..5d0d3b5b --- /dev/null +++ b/containerization/scripts/build.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +docker build -f openjdk-21-debian-stretch-slim -t openjdk-21:debian-stretch-slim . +docker build -f mysql-8.1-nacos -t mysql-8.1:nacos . + +docker tag openjdk-21:debian-stretch-slim cskefu/openjdk-21:debian-stretch-slim +docker tag mysql-8.1:nacos cskefu/mysql-8.1:nacos + +docker login + +docker push cskefu/openjdk-21:debian-stretch-slim +docker push cskefu/mysql-8.1:nacos \ No newline at end of file diff --git a/cskefu-backend/README.md b/cskefu-backend/README.md index b66d4d27..839e4e52 100644 --- a/cskefu-backend/README.md +++ b/cskefu-backend/README.md @@ -2,15 +2,15 @@ - Java21 - Spring Boot 3 -- Spring Cloud两种方案 - - Spring Cloud Alibaba,docker-compose方案 +- Spring Cloud两种方案,采纳的是方案一 + - 方案一:Spring Cloud,docker-compose方案 - 注册中心 Nacos - - 声明式服务调用 OpenFeign/Square 待定 + - 声明式服务调用 OpenFeign - 负载均衡 Ribbon/LoadBanlancer 待定 - 配置中心 Nacos - 服务容错 Sentinel - 链路追踪 Skywalking - - Spring Cloud Kubernetes,kubernetes方案 + - 方案二:Spring Cloud Kubernetes,kubernetes方案 - 注册中心 Kubernetes注册中心 - 声明式服务调用 OpenFeign/Square 待定 - 负载均衡 Kubernetes负载均衡/Ribbon/LoadBanlancer 待定 @@ -19,10 +19,10 @@ - 链路追踪 Skywalking - Spring Security + Oauth2.0 - MyBatis-Flex -- Netty SocketIO +- Webflux、 Tomcat - Jackson,不使用Fastjson -- Redisson -- Mysql 8.0 +- redisson +- mysql 8.0 - HikariCP,不使用Druid - Smart-doc,不使用Swagger - RabbitMQ @@ -34,10 +34,11 @@ ``` cskefu-web-gateway: 8080 cskefu-manager-service: 8081 -cskefu-websocket-service: 8082 -cskefu-auth-service: 8083 -cskefu-plugin-service: 8090 -cskefu-channel-wechat-service: 10000 +cskefu-auth-service: 8082 +cskefu-plugin-service: 8083 +cskefu-channel-wechat-service: 8084 +cskefu-websocket-service: 10000 + ``` # 模块及服务划分约定 @@ -94,8 +95,6 @@ contact-backend └─cskefu-websocket-service 客户端的WebSocket直接和这个服务连接 ``` -TODO 纯WebSocket服务怎么注册到注册中心? - # 依赖、包、和类的约定 **统一的、简单的、一致的风格更有利于代码的维护,在依赖、包、和类的划分及命名上遵守以下约定。如不能请及时在开发者群反馈。** @@ -112,24 +111,22 @@ TODO 纯WebSocket服务怎么注册到注册中心? 因此,所有pom中请加入以下内容 ```xml - com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT ``` 如果包中有java代码,其对应的pom请加入以下内容 ```xml - com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT pom import @@ -150,7 +147,7 @@ src │ ├─CskefuXXXApplication.java 启动类 │ └─sys │ ├─SysUserController.java - │ ├─SysUser.java 不需要和其他业务或其他业务公用的实体类,如果需要公用,请放到对应的-domain下 + │ ├─SysUser.java 不需要和其他业务公用的实体类,如果需要公用,请放到对应的-domain下 │ ├─SysUserService.java │ ├─SysUserServiceImpl.java │ ├─UserMapper.java @@ -176,12 +173,12 @@ src - 按照包和类的组织中描述的方式命名,实体类不区分VO、BO、DO、POJO、DTO等,也不要使用这些后缀; - 枚举类统一以Enum结尾; -- 除非必要,不需要定义异常类; - 工具类以Utils结尾,提供private无参构造函数,并在构造函数中抛出异常,参考JacksonUtils,阻止类被实例化; +- 除非必要,不需要定义异常类; # 数据库变更 -涉及到表结构的变更,或必要的初始化数据,请及时同步到contact-backend/v9.mysql.sql中。 +涉及到表结构的变更,或必要的初始化数据,请及时同步到contact-backend/v9.mysql.init.sql中。 # 其他 diff --git a/cskefu-backend/cskefu-assistant-module/cskefu-assistant-base/pom.xml b/cskefu-backend/cskefu-assistant-module/cskefu-assistant-base/pom.xml index 5fa0fbce..a65e0342 100644 --- a/cskefu-backend/cskefu-assistant-module/cskefu-assistant-base/pom.xml +++ b/cskefu-backend/cskefu-assistant-module/cskefu-assistant-base/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-assistant-base - 1.0.0 + 1.0.0-SNAPSHOT jar 4.0.0 cskefu-assistant-base @@ -11,7 +11,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT @@ -28,7 +28,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT pom import diff --git a/cskefu-backend/cskefu-assistant-module/cskefu-assistant-mvc/pom.xml b/cskefu-backend/cskefu-assistant-module/cskefu-assistant-mvc/pom.xml index 069d689a..bee48c96 100644 --- a/cskefu-backend/cskefu-assistant-module/cskefu-assistant-mvc/pom.xml +++ b/cskefu-backend/cskefu-assistant-module/cskefu-assistant-mvc/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-assistant-mvc - 1.0.0 + 1.0.0-SNAPSHOT jar 4.0.0 cskefu-assistant-mvc @@ -11,18 +11,12 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT com.cskefu cskefu-assistant-base - - - com.fasterxml.jackson.core - jackson-databind - - jakarta.servlet @@ -59,7 +53,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT pom import diff --git a/cskefu-backend/cskefu-assistant-module/cskefu-assistant-mvc/src/main/java/com/cskefu/mvc/GlobalResponseBodyHandler.java b/cskefu-backend/cskefu-assistant-module/cskefu-assistant-mvc/src/main/java/com/cskefu/mvc/GlobalResponseBodyHandler.java index ba991cda..d2103ba7 100644 --- a/cskefu-backend/cskefu-assistant-module/cskefu-assistant-mvc/src/main/java/com/cskefu/mvc/GlobalResponseBodyHandler.java +++ b/cskefu-backend/cskefu-assistant-module/cskefu-assistant-mvc/src/main/java/com/cskefu/mvc/GlobalResponseBodyHandler.java @@ -2,6 +2,9 @@ package com.cskefu.mvc; import com.cskefu.base.JacksonUtils; import com.cskefu.base.Result; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.ConstraintViolation; @@ -42,7 +45,11 @@ import java.util.stream.Collectors; @RestControllerAdvice @Slf4j public class GlobalResponseBodyHandler implements ResponseBodyAdvice { + private static ObjectMapper objectMapper = new ObjectMapper(); + static { + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + } @Override public boolean supports(MethodParameter returnType, Class converterType) { return true; @@ -53,6 +60,13 @@ public class GlobalResponseBodyHandler implements ResponseBodyAdvice { if (body instanceof Result) { return body; } + if (body instanceof String) { + try { + return this.objectMapper.writeValueAsString(Result.success(body)); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } return Result.success(body); } @@ -63,7 +77,6 @@ public class GlobalResponseBodyHandler implements ResponseBodyAdvice { @ExceptionHandler(BindException.class) public Result handlerBindException(BindException e) { - List collect = new ArrayList<>(); if (e.getBindingResult().getFieldError() != null) { List fieldErrors = e.getBindingResult().getFieldErrors(); diff --git a/cskefu-backend/cskefu-assistant-module/pom.xml b/cskefu-backend/cskefu-assistant-module/pom.xml index a45a6dcc..4ca10d49 100644 --- a/cskefu-backend/cskefu-assistant-module/pom.xml +++ b/cskefu-backend/cskefu-assistant-module/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-assistant-module - 1.0.0 + 1.0.0-SNAPSHOT pom 4.0.0 cskefu-assistant-module @@ -11,7 +11,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT cskefu-assistant-base diff --git a/cskefu-backend/cskefu-auth/cskefu-auth-domain/pom.xml b/cskefu-backend/cskefu-auth/cskefu-auth-domain/pom.xml index 790ace71..8f4034a7 100644 --- a/cskefu-backend/cskefu-auth/cskefu-auth-domain/pom.xml +++ b/cskefu-backend/cskefu-auth/cskefu-auth-domain/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-auth-domain - 1.0.0 + 1.0.0-SNAPSHOT jar 4.0.0 cskefu-auth-domain @@ -11,14 +11,14 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT pom import diff --git a/cskefu-backend/cskefu-auth/cskefu-auth-service/pom.xml b/cskefu-backend/cskefu-auth/cskefu-auth-service/pom.xml index df747427..3a5d00e8 100644 --- a/cskefu-backend/cskefu-auth/cskefu-auth-service/pom.xml +++ b/cskefu-backend/cskefu-auth/cskefu-auth-service/pom.xml @@ -2,9 +2,8 @@ - com.cskefu cskefu-auth-service - 1.0.0 + 1.0.0-SNAPSHOT jar 4.0.0 cskefu-auth-service @@ -12,7 +11,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT @@ -32,8 +31,13 @@ spring-boot-starter-validation - org.springframework.cloud - spring-cloud-kubernetes-discovery + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + mysql + mysql-connector-java + runtime com.mybatis-flex @@ -47,11 +51,6 @@ com.cskefu cskefu-assistant-mvc - - mysql - mysql-connector-java - runtime - io.jsonwebtoken jjwt-api @@ -70,7 +69,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT pom import @@ -86,6 +85,14 @@ org.springframework.boot spring-boot-maven-plugin + + org.apache.maven.plugins + maven-antrun-plugin + + + com.google.cloud.tools + jib-maven-plugin + diff --git a/cskefu-backend/cskefu-auth/cskefu-auth-service/src/main/java/com/cskefu/CskefuAuthApplication.java b/cskefu-backend/cskefu-auth/cskefu-auth-service/src/main/java/com/cskefu/CskefuAuthApplication.java index 072b5507..504b275d 100644 --- a/cskefu-backend/cskefu-auth/cskefu-auth-service/src/main/java/com/cskefu/CskefuAuthApplication.java +++ b/cskefu-backend/cskefu-auth/cskefu-auth-service/src/main/java/com/cskefu/CskefuAuthApplication.java @@ -4,6 +4,7 @@ import com.cskefu.security.JwtAuthenticationFilter; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.context.annotation.Bean; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; @@ -14,7 +15,7 @@ import org.springframework.security.provisioning.InMemoryUserDetailsManager; @Slf4j @SpringBootApplication -//@EnableDiscoveryClient +@EnableDiscoveryClient public class CskefuAuthApplication { public static void main(String[] args) { try { diff --git a/cskefu-backend/cskefu-auth/cskefu-auth-service/src/main/resources/application.properties b/cskefu-backend/cskefu-auth/cskefu-auth-service/src/main/resources/application.properties index 203c9fe6..ff4108bc 100644 --- a/cskefu-backend/cskefu-auth/cskefu-auth-service/src/main/resources/application.properties +++ b/cskefu-backend/cskefu-auth/cskefu-auth-service/src/main/resources/application.properties @@ -1,12 +1,18 @@ -server.port=8083 -spring.application.name=cskefu-auth-service debug=true +server.port=8082 +spring.application.name=cskefu-auth-service + spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -spring.datasource.url=jdbc:mysql://localhost:3307/cskefu?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8 +spring.datasource.url=jdbc:mysql://localhost:3306/cskefu?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=123456 + +spring.cloud.nacos.discovery.server-addr=localhost:8848 + spring.mvc.static-path-pattern=/smart-doc/** spring.web.resources.static-locations=classpath:/smart-doc + cskefu.private-key=MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8TSxdMp76dZS2L8DpvJOgHNJmeI8PM30CFSeVMCHV5dEjtixipsMsSQu0ariAtVfA5M/ma1wcqEpsDO9nVQRsmsJCKMIWOcR6yBQU9f0T7Hkmil4Ckf61C1R7wLrynOjCeUCneQ7R0+dg9K25CymclPnK4ym2GInmuUjdbyQQcX4QBuIbmuY10MG8nW9ovhFML85KoBk5yxV4zVwLGP4TFJVnBmiNO3XSKL2XsX7wFFO93O8jmAnzgpWj8khsZAYG4nijIz2BciS9uQFa/lUX6yD50ykjNklbhCBIMGaQ6rr1WjnwLHDZU9sLvcYMboKPJHWz1FttvxuKSLYbf7j/AgMBAAECggEAEH1rPSrwF47kdW/vibu+uDuat7Tz3w9RpM6lc/Mn6ctoA6PLqN5hvFpJPbhHoAqn1kSZ0EJNA4imIjNsluf8rMyAs1QbN+CnMpMC7zL7jrS1IO+ze+LwVnpyufbbm3nfCE85OKSC7IbAfhHvUYOHIvQI5Zn76FTamFHxh5klpCrY1h8gcVWdRxiK0Q8AQP7KD0QnkzgROhkRmdI01639VyTCTc6Rtv5puU6J6idJwTd3JAiJXZ2qcoAwhnkSHnVnP5ktFxl66eHGJKeol6bGcJIFQRGLVmh78x6MXoqkJ2M7DRntL38TLKT5KCYViGxUpO0gED/HQBhDALyNevJZQQKBgQDr+pZDtRIQ6mMZMswKTo2+zIFEUFES2sR/bunEW5snPR3krKdgzJoEg7WERkMviSlvW6K7a6VeJ9KKO/iE07lcRkN2NQZUkBDsrNRgoOwB17hHJqrMyZ1It+hZmPQTkeyJu/BCxDkIMwbQYXxIe8J/dVYjHJVXZgzPqEXKYqeViwKBgQDMRwr7ceW+9c/GzHd7p6849s3+MbT0kzyXDTdeJkQFSDPufYapTCan/MrdJmnIRz8pq2URZrO4kDDxxeWu2Vkekv9cxVFrQVFfvuq+4BFpQvYkRHk9PDzCmgFJD/wLG8gzNTH7UahaNb7m0tPB3D1g5Q6LzZCc1h3s2K6SLS7g3QKBgE41Bof6ArrIc39ubmEcF64caNsTI0t0ZZs2TxNcqNcgUj/vWKmkJYdJf2cPQkUG2Eynug8TZgMGf6iAp6Sd5tjGEKWkfSyZcoJ95QUBUDZsIA60qfak+xOWn9LR9lJmElazirUWAzDMeH2nUWFUYumLIbkRSA1nLOfFhRvGBnRxAoGBAJvDAAjCzGBTpt77QZA0SFOzPVc6J7TmICk9lp5fpzYv3AlaBbhJrKAjDbybccWZLfxkCGjAWwG8UNXKBFzStjWt+LGQc4jJAXd0aCKrUBtnR7BX1epvaBUqwRgo7BK8WGdThI0RssE2gh4XXAhSGysq/XB0inRMf/z9K/+iHECxAoGAFlcIZ4/xXhbObUPU05hZFoj+zN5obaOLefRJn4uqjD9/VSRnI2bBv7vXKoLX6BwFF/PWvg1hzGy3O9TQ4XYPOqNGcBFDOqwxmVVevzXgRInoiRNP3xZXcqswppEbqORGbRoPLQBqLnPx1GKwbo7Fp9O5ywARVZtf4STt3pRK8PY= cskefu.public-key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvE0sXTKe+nWUti/A6byToBzSZniPDzN9AhUnlTAh1eXRI7YsYqbDLEkLtGq4gLVXwOTP5mtcHKhKbAzvZ1UEbJrCQijCFjnEesgUFPX9E+x5JopeApH+tQtUe8C68pzownlAp3kO0dPnYPStuQspnJT5yuMpthiJ5rlI3W8kEHF+EAbiG5rmNdDBvJ1vaL4RTC/OSqAZOcsVeM1cCxj+ExSVZwZojTt10ii9l7F+8BRTvdzvI5gJ84KVo/JIbGQGBuJ4oyM9gXIkvbkBWv5VF+sg+dMpIzZJW4QgSDBmkOq69Vo58Cxw2VPbC73GDG6CjyR1s9Rbbb8biki2G3+4/wIDAQAB cskefu.token.duration=3600 + diff --git a/cskefu-backend/cskefu-auth/pom.xml b/cskefu-backend/cskefu-auth/pom.xml index 0cf641da..0a6c2ab7 100644 --- a/cskefu-backend/cskefu-auth/pom.xml +++ b/cskefu-backend/cskefu-auth/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-auth - 1.0.0 + 1.0.0-SNAPSHOT pom 4.0.0 cskefu-auth @@ -11,7 +11,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT cskefu-auth-domain diff --git a/cskefu-backend/cskefu-channel/cskefu-channel-wechat-domain/pom.xml b/cskefu-backend/cskefu-channel/cskefu-channel-wechat-domain/pom.xml index 9664ab77..c9c57724 100644 --- a/cskefu-backend/cskefu-channel/cskefu-channel-wechat-domain/pom.xml +++ b/cskefu-backend/cskefu-channel/cskefu-channel-wechat-domain/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-channel-wechat-domain - 1.0.0 + 1.0.0-SNAPSHOT jar 4.0.0 cskefu-channel-wechat-domain @@ -11,7 +11,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT @@ -20,7 +20,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT pom import diff --git a/cskefu-backend/cskefu-channel/cskefu-channel-wechat-service/pom.xml b/cskefu-backend/cskefu-channel/cskefu-channel-wechat-service/pom.xml index 721a94b4..5d80dd44 100644 --- a/cskefu-backend/cskefu-channel/cskefu-channel-wechat-service/pom.xml +++ b/cskefu-backend/cskefu-channel/cskefu-channel-wechat-service/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-channel-wechat-service - 1.0.0 + 1.0.0-SNAPSHOT jar 4.0.0 cskefu-channel-wechat-service @@ -11,13 +11,26 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT org.springframework.boot spring-boot-starter-web + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + org.springframework.boot + spring-boot-starter-validation + + + mysql + mysql-connector-java + runtime + com.mybatis-flex mybatis-flex-spring-boot-starter @@ -38,6 +51,7 @@ org.apache.httpcomponents httpclient + 4.5.14 @@ -46,7 +60,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT pom import @@ -62,6 +76,14 @@ org.springframework.boot spring-boot-maven-plugin + + org.apache.maven.plugins + maven-antrun-plugin + + + com.google.cloud.tools + jib-maven-plugin + diff --git a/cskefu-backend/cskefu-channel/cskefu-channel-wechat-service/src/main/java/com/cskefu/CskefuWechatChannelApplication.java b/cskefu-backend/cskefu-channel/cskefu-channel-wechat-service/src/main/java/com/cskefu/CskefuWechatChannelApplication.java index 71550814..afabf196 100644 --- a/cskefu-backend/cskefu-channel/cskefu-channel-wechat-service/src/main/java/com/cskefu/CskefuWechatChannelApplication.java +++ b/cskefu-backend/cskefu-channel/cskefu-channel-wechat-service/src/main/java/com/cskefu/CskefuWechatChannelApplication.java @@ -3,10 +3,10 @@ package com.cskefu; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; -@Slf4j @SpringBootApplication -//@EnableDiscoveryClient +@EnableDiscoveryClient public class CskefuWechatChannelApplication { public static void main(String[] args) { try { diff --git a/cskefu-backend/cskefu-channel/cskefu-channel-wechat-service/src/main/java/com/cskefu/wechat/WechatCallbackChatbot.java b/cskefu-backend/cskefu-channel/cskefu-channel-wechat-service/src/main/java/com/cskefu/wechat/WechatCallbackChatbot.java index 40e22bc3..6feac6fe 100644 --- a/cskefu-backend/cskefu-channel/cskefu-channel-wechat-service/src/main/java/com/cskefu/wechat/WechatCallbackChatbot.java +++ b/cskefu-backend/cskefu-channel/cskefu-channel-wechat-service/src/main/java/com/cskefu/wechat/WechatCallbackChatbot.java @@ -121,7 +121,7 @@ public class WechatCallbackChatbot { return "200"; } - public static void main(String[] args) throws Exception { + public static void test(String[] args) throws Exception { String replyMsg = "中文1407743423"; val nonce = ""; diff --git a/cskefu-backend/cskefu-channel/cskefu-channel-wechat-service/src/main/resources/application.properties b/cskefu-backend/cskefu-channel/cskefu-channel-wechat-service/src/main/resources/application.properties index 796b1cf8..1b447584 100644 --- a/cskefu-backend/cskefu-channel/cskefu-channel-wechat-service/src/main/resources/application.properties +++ b/cskefu-backend/cskefu-channel/cskefu-channel-wechat-service/src/main/resources/application.properties @@ -1,9 +1,13 @@ -server.port=8090 -spring.application.name=cskefu-channel-wechat-service debug=true +server.port=8084 +spring.application.name=cskefu-channel-wechat-service + spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -spring.datasource.url=jdbc:mysql://localhost:3307/cskefu?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8 +spring.datasource.url=jdbc:mysql://localhost:3306/cskefu?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=123456 + +spring.cloud.nacos.discovery.server-addr=localhost:8848 + spring.mvc.static-path-pattern=/smart-doc/** spring.web.resources.static-locations=classpath:/smart-doc \ No newline at end of file diff --git a/cskefu-backend/cskefu-channel/pom.xml b/cskefu-backend/cskefu-channel/pom.xml index 06301860..74c91947 100644 --- a/cskefu-backend/cskefu-channel/pom.xml +++ b/cskefu-backend/cskefu-channel/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-channel - 1.0.0 + 1.0.0-SNAPSHOT pom 4.0.0 cskefu-channel @@ -11,7 +11,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT cskefu-channel-wechat-service diff --git a/cskefu-backend/cskefu-gateway/cskefu-web-gateway/pom.xml b/cskefu-backend/cskefu-gateway/cskefu-web-gateway/pom.xml index 2eab39ba..87cb97ab 100644 --- a/cskefu-backend/cskefu-gateway/cskefu-web-gateway/pom.xml +++ b/cskefu-backend/cskefu-gateway/cskefu-web-gateway/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-web-gateway - 1.0.0 + 1.0.0-SNAPSHOT jar 4.0.0 cskefu-web-gateway @@ -11,7 +11,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT @@ -19,12 +19,12 @@ spring-boot-starter-web - com.mybatis-flex - mybatis-flex-spring-boot-starter + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery - org.mybatis.spring.boot - mybatis-spring-boot-starter + org.springframework.boot + spring-boot-starter-validation com.cskefu @@ -36,7 +36,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT pom import @@ -52,6 +52,14 @@ org.springframework.boot spring-boot-maven-plugin + + org.apache.maven.plugins + maven-antrun-plugin + + + com.google.cloud.tools + jib-maven-plugin + \ No newline at end of file diff --git a/cskefu-backend/cskefu-gateway/cskefu-web-gateway/src/main/java/com/cskefu/CskefuWebGatewayApplication.java b/cskefu-backend/cskefu-gateway/cskefu-web-gateway/src/main/java/com/cskefu/CskefuWebGatewayApplication.java index 4935d577..0b8a4a21 100644 --- a/cskefu-backend/cskefu-gateway/cskefu-web-gateway/src/main/java/com/cskefu/CskefuWebGatewayApplication.java +++ b/cskefu-backend/cskefu-gateway/cskefu-web-gateway/src/main/java/com/cskefu/CskefuWebGatewayApplication.java @@ -2,10 +2,16 @@ package com.cskefu; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.net.InetAddress; +import java.net.UnknownHostException; @SpringBootApplication - - +@EnableDiscoveryClient +@RestController public class CskefuWebGatewayApplication { public static void main(String[] args) { try { @@ -14,4 +20,10 @@ public class CskefuWebGatewayApplication { e.printStackTrace(); } } + + @GetMapping({"", "/"}) + public String index() throws UnknownHostException { + InetAddress localHost = InetAddress.getLocalHost(); + return localHost.getHostAddress(); + } } diff --git a/cskefu-backend/cskefu-gateway/cskefu-web-gateway/src/main/resources/application.properties b/cskefu-backend/cskefu-gateway/cskefu-web-gateway/src/main/resources/application.properties index 6c1f90f5..3a91d858 100644 --- a/cskefu-backend/cskefu-gateway/cskefu-web-gateway/src/main/resources/application.properties +++ b/cskefu-backend/cskefu-gateway/cskefu-web-gateway/src/main/resources/application.properties @@ -1,5 +1,10 @@ +debug=true server.port=8080 spring.application.name=cskefu-web-gateway -debug=true + +spring.datasource.password=123456 + +spring.cloud.nacos.discovery.server-addr=localhost:8848 + spring.mvc.static-path-pattern=/smart-doc/** spring.web.resources.static-locations=classpath:/smart-doc \ No newline at end of file diff --git a/cskefu-backend/cskefu-gateway/pom.xml b/cskefu-backend/cskefu-gateway/pom.xml index aabb3e19..1a47a5ac 100644 --- a/cskefu-backend/cskefu-gateway/pom.xml +++ b/cskefu-backend/cskefu-gateway/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-gateway - 1.0.0 + 1.0.0-SNAPSHOT pom 4.0.0 cskefu-gateway @@ -11,7 +11,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT cskefu-web-gateway diff --git a/cskefu-backend/cskefu-manager/cskefu-manager-domain/pom.xml b/cskefu-backend/cskefu-manager/cskefu-manager-domain/pom.xml index c69bdcd2..c268b1dd 100644 --- a/cskefu-backend/cskefu-manager/cskefu-manager-domain/pom.xml +++ b/cskefu-backend/cskefu-manager/cskefu-manager-domain/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-manager-domain - 1.0.0 + 1.0.0-SNAPSHOT jar 4.0.0 cskefu-manager-domain @@ -11,14 +11,14 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT pom import diff --git a/cskefu-backend/cskefu-manager/cskefu-manager-service/pom.xml b/cskefu-backend/cskefu-manager/cskefu-manager-service/pom.xml index b24b3919..4c9ca7a7 100644 --- a/cskefu-backend/cskefu-manager/cskefu-manager-service/pom.xml +++ b/cskefu-backend/cskefu-manager/cskefu-manager-service/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-manager-service - 1.0.0 + 1.0.0-SNAPSHOT jar 4.0.0 cskefu-manager-service @@ -11,7 +11,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT @@ -19,6 +19,19 @@ org.springframework.boot spring-boot-starter-web + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + org.springframework.boot + spring-boot-starter-validation + + + mysql + mysql-connector-java + runtime + com.mybatis-flex mybatis-flex-spring-boot-starter @@ -37,7 +50,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT pom import @@ -53,6 +66,14 @@ org.springframework.boot spring-boot-maven-plugin + + org.apache.maven.plugins + maven-antrun-plugin + + + com.google.cloud.tools + jib-maven-plugin + \ No newline at end of file diff --git a/cskefu-backend/cskefu-manager/cskefu-manager-service/src/main/java/com/cskefu/CskefuManagerApplication.java b/cskefu-backend/cskefu-manager/cskefu-manager-service/src/main/java/com/cskefu/CskefuManagerApplication.java index 4619ec34..0e846cfa 100644 --- a/cskefu-backend/cskefu-manager/cskefu-manager-service/src/main/java/com/cskefu/CskefuManagerApplication.java +++ b/cskefu-backend/cskefu-manager/cskefu-manager-service/src/main/java/com/cskefu/CskefuManagerApplication.java @@ -2,9 +2,10 @@ package com.cskefu; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication -//@EnableDiscoveryClient +@EnableDiscoveryClient public class CskefuManagerApplication { public static void main(String[] args) { try { diff --git a/cskefu-backend/cskefu-manager/cskefu-manager-service/src/main/resources/application.properties b/cskefu-backend/cskefu-manager/cskefu-manager-service/src/main/resources/application.properties index 3af4689c..f1754412 100644 --- a/cskefu-backend/cskefu-manager/cskefu-manager-service/src/main/resources/application.properties +++ b/cskefu-backend/cskefu-manager/cskefu-manager-service/src/main/resources/application.properties @@ -1,9 +1,13 @@ +debug=true server.port=8081 spring.application.name=cskefu-manager-service -debug=true + spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -spring.datasource.url=jdbc:mysql://localhost:3307/cskefu?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8 +spring.datasource.url=jdbc:mysql://localhost:3306/cskefu?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=123456 + +spring.cloud.nacos.discovery.server-addr=localhost:8848 + spring.mvc.static-path-pattern=/smart-doc/** spring.web.resources.static-locations=classpath:/smart-doc \ No newline at end of file diff --git a/cskefu-backend/cskefu-manager/pom.xml b/cskefu-backend/cskefu-manager/pom.xml index 35218b40..16e99f01 100644 --- a/cskefu-backend/cskefu-manager/pom.xml +++ b/cskefu-backend/cskefu-manager/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-manager - 1.0.0 + 1.0.0-SNAPSHOT pom 4.0.0 cskefu-manager @@ -11,7 +11,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT cskefu-manager-service diff --git a/cskefu-backend/cskefu-plugin/cskefu-plugin-domain/pom.xml b/cskefu-backend/cskefu-plugin/cskefu-plugin-domain/pom.xml index 50d8ee7a..0f15c6a2 100644 --- a/cskefu-backend/cskefu-plugin/cskefu-plugin-domain/pom.xml +++ b/cskefu-backend/cskefu-plugin/cskefu-plugin-domain/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-plugin-domain - 1.0.0 + 1.0.0-SNAPSHOT jar 4.0.0 cskefu-plugin-domain @@ -11,14 +11,14 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT pom import diff --git a/cskefu-backend/cskefu-plugin/cskefu-plugin-service/pom.xml b/cskefu-backend/cskefu-plugin/cskefu-plugin-service/pom.xml index 1072af04..1f1626d6 100644 --- a/cskefu-backend/cskefu-plugin/cskefu-plugin-service/pom.xml +++ b/cskefu-backend/cskefu-plugin/cskefu-plugin-service/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-plugin-service - 1.0.0 + 1.0.0-SNAPSHOT jar 4.0.0 cskefu-plugin-service @@ -11,7 +11,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT @@ -19,6 +19,19 @@ org.springframework.boot spring-boot-starter-web + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + org.springframework.boot + spring-boot-starter-validation + + + mysql + mysql-connector-java + runtime + com.mybatis-flex mybatis-flex-spring-boot-starter @@ -37,7 +50,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT pom import @@ -53,6 +66,14 @@ org.springframework.boot spring-boot-maven-plugin + + org.apache.maven.plugins + maven-antrun-plugin + + + com.google.cloud.tools + jib-maven-plugin + \ No newline at end of file diff --git a/cskefu-backend/cskefu-plugin/cskefu-plugin-service/src/main/java/com/cskefu/CskefuPluginApplication.java b/cskefu-backend/cskefu-plugin/cskefu-plugin-service/src/main/java/com/cskefu/CskefuPluginApplication.java index bd49d0ba..b82e570c 100644 --- a/cskefu-backend/cskefu-plugin/cskefu-plugin-service/src/main/java/com/cskefu/CskefuPluginApplication.java +++ b/cskefu-backend/cskefu-plugin/cskefu-plugin-service/src/main/java/com/cskefu/CskefuPluginApplication.java @@ -2,9 +2,10 @@ package com.cskefu; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication -//@EnableDiscoveryClient +@EnableDiscoveryClient public class CskefuPluginApplication { public static void main(String[] args) { try { diff --git a/cskefu-backend/cskefu-plugin/cskefu-plugin-service/src/main/resources/application.properties b/cskefu-backend/cskefu-plugin/cskefu-plugin-service/src/main/resources/application.properties index c539300e..21ceead4 100644 --- a/cskefu-backend/cskefu-plugin/cskefu-plugin-service/src/main/resources/application.properties +++ b/cskefu-backend/cskefu-plugin/cskefu-plugin-service/src/main/resources/application.properties @@ -1,9 +1,13 @@ -server.port=8090 -spring.application.name=cskefu-plugin-service debug=true +server.port=8083 +spring.application.name=cskefu-plugin-service + spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -spring.datasource.url=jdbc:mysql://localhost:3307/cskefu?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8 +spring.datasource.url=jdbc:mysql://localhost:3306/cskefu?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=123456 + +spring.cloud.nacos.discovery.server-addr=localhost:8848 + spring.mvc.static-path-pattern=/smart-doc/** spring.web.resources.static-locations=classpath:/smart-doc \ No newline at end of file diff --git a/cskefu-backend/cskefu-plugin/pom.xml b/cskefu-backend/cskefu-plugin/pom.xml index 1f37a597..28391295 100644 --- a/cskefu-backend/cskefu-plugin/pom.xml +++ b/cskefu-backend/cskefu-plugin/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-plugin - 1.0.0 + 1.0.0-SNAPSHOT pom 4.0.0 cskefu-plugin @@ -11,7 +11,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT cskefu-plugin-service diff --git a/cskefu-backend/cskefu-websocket/cskefu-websocket-domain/pom.xml b/cskefu-backend/cskefu-websocket/cskefu-websocket-domain/pom.xml index fb3644a6..c936e1fd 100644 --- a/cskefu-backend/cskefu-websocket/cskefu-websocket-domain/pom.xml +++ b/cskefu-backend/cskefu-websocket/cskefu-websocket-domain/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-websocket-domain - 1.0.0 + 1.0.0-SNAPSHOT jar 4.0.0 cskefu-websocket-domain @@ -11,14 +11,14 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT pom import diff --git a/cskefu-backend/cskefu-websocket/cskefu-websocket-service/pom.xml b/cskefu-backend/cskefu-websocket/cskefu-websocket-service/pom.xml index d7e5e871..23cfe5fe 100644 --- a/cskefu-backend/cskefu-websocket/cskefu-websocket-service/pom.xml +++ b/cskefu-backend/cskefu-websocket/cskefu-websocket-service/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-websocket-service - 1.0.0 + 1.0.0-SNAPSHOT jar 4.0.0 cskefu-websocket-service @@ -11,32 +11,24 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT - - org.springframework.boot - spring-boot-autoconfigure - - - com.mybatis-flex - mybatis-flex-spring-boot-starter - - - org.mybatis.spring.boot - mybatis-spring-boot-starter - org.projectlombok lombok - ch.qos.logback - logback-classic + org.springframework.boot + spring-boot-starter-webflux - com.corundumstudio.socketio - netty-socketio + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + org.springframework.boot + spring-boot-starter-amqp @@ -44,7 +36,14 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT + pom + import + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + 2022.0.0.0 pom import @@ -56,6 +55,14 @@ org.springframework.boot spring-boot-maven-plugin + + org.apache.maven.plugins + maven-antrun-plugin + + + com.google.cloud.tools + jib-maven-plugin + diff --git a/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/WebsocketApplication.java b/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/WebsocketApplication.java index 9d537b6c..01190c43 100644 --- a/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/WebsocketApplication.java +++ b/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/WebsocketApplication.java @@ -1,17 +1,16 @@ package com.cskefu; -import com.corundumstudio.socketio.SocketIOServer; +import com.cskefu.handler.WebSocketMappingHandlerMapping; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.DisposableBean; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.stereotype.Component; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.context.annotation.Bean; +import org.springframework.web.reactive.HandlerMapping; +import org.springframework.web.reactive.socket.server.support.WebSocketHandlerAdapter; -@Slf4j @SpringBootApplication -//@EnableDiscoveryClient +@EnableDiscoveryClient public class WebsocketApplication { public static void main(String[] args) { @@ -21,24 +20,14 @@ public class WebsocketApplication { e.printStackTrace(); } } -} -@Component -@Slf4j -class SocketIOServerRunner implements CommandLineRunner, DisposableBean { - - @Autowired - private SocketIOServer socketIOServer; - - @Override - public void run(String... args) throws Exception { - socketIOServer.start(); - log.warn("SocketIOServer启动成功"); + @Bean + public HandlerMapping webSocketMapping() { + return new WebSocketMappingHandlerMapping(); } - @Override - public void destroy() throws Exception { - socketIOServer.stop(); - log.warn("SocketIOServer关闭成功"); + @Bean + public WebSocketHandlerAdapter handlerAdapter() { + return new WebSocketHandlerAdapter(); } -} +} \ No newline at end of file diff --git a/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/annotations/WebSocketMapping.java b/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/annotations/WebSocketMapping.java new file mode 100644 index 00000000..f0d2050c --- /dev/null +++ b/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/annotations/WebSocketMapping.java @@ -0,0 +1,12 @@ +package com.cskefu.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface WebSocketMapping { + String value() default ""; +} \ No newline at end of file diff --git a/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/handler/MessageHandler.java b/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/handler/MessageHandler.java new file mode 100644 index 00000000..c72a27a3 --- /dev/null +++ b/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/handler/MessageHandler.java @@ -0,0 +1,21 @@ +package com.cskefu.handler; + +import com.cskefu.annotations.WebSocketMapping; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.socket.HandshakeInfo; +import org.springframework.web.reactive.socket.WebSocketHandler; +import org.springframework.web.reactive.socket.WebSocketSession; +import reactor.core.publisher.Mono; + +@Component +@Slf4j +@WebSocketMapping("/ws/message") +public class MessageHandler implements WebSocketHandler { + + @Override + public Mono handle(WebSocketSession session) { + HandshakeInfo handshakeInfo = session.getHandshakeInfo(); + return session.send(session.receive().map(msg -> session.textMessage("服务端:-> " + msg.getPayloadAsText()))); + } +} diff --git a/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/handler/WebSocketMappingHandlerMapping.java b/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/handler/WebSocketMappingHandlerMapping.java new file mode 100644 index 00000000..71f9277a --- /dev/null +++ b/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/handler/WebSocketMappingHandlerMapping.java @@ -0,0 +1,33 @@ +package com.cskefu.handler; + +import com.cskefu.annotations.WebSocketMapping; +import org.springframework.beans.BeansException; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.AnnotationUtils; +import org.springframework.web.reactive.handler.SimpleUrlHandlerMapping; +import org.springframework.web.reactive.socket.WebSocketHandler; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Objects; + +public class WebSocketMappingHandlerMapping extends SimpleUrlHandlerMapping { + + private Map handlerMap = new LinkedHashMap<>(); + + @Override + public void initApplicationContext() throws BeansException { + Map beanMap = obtainApplicationContext().getBeansWithAnnotation(WebSocketMapping.class); + beanMap.values().forEach(bean -> { + if (!(bean instanceof WebSocketHandler)) { + throw new RuntimeException(String.format("Controller [%s] doesn't implement WebSocketHandler interface.", bean.getClass().getName())); + } + WebSocketMapping annotation = AnnotationUtils.getAnnotation(bean.getClass(), WebSocketMapping.class); + //webSocketMapping 映射到管理中 + handlerMap.put(Objects.requireNonNull(annotation).value(), (WebSocketHandler) bean); + }); + super.setOrder(Ordered.HIGHEST_PRECEDENCE); + super.setUrlMap(handlerMap); + super.initApplicationContext(); + } +} \ No newline at end of file diff --git a/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/handler/WelcomeHandler.java b/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/handler/WelcomeHandler.java new file mode 100644 index 00000000..b9504eb6 --- /dev/null +++ b/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/handler/WelcomeHandler.java @@ -0,0 +1,30 @@ +package com.cskefu.handler; + +import com.cskefu.annotations.WebSocketMapping; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.socket.HandshakeInfo; +import org.springframework.web.reactive.socket.WebSocketHandler; +import org.springframework.web.reactive.socket.WebSocketSession; +import reactor.core.publisher.Mono; + +import java.net.InetAddress; +import java.net.UnknownHostException; + +@Component +@Slf4j +@WebSocketMapping("/ws/") +public class WelcomeHandler implements WebSocketHandler { + + @Override + public Mono handle(WebSocketSession session) { + try { + InetAddress localHost = InetAddress.getLocalHost(); + HandshakeInfo handshakeInfo = session.getHandshakeInfo(); + return session.send(session.receive().map(msg -> session.textMessage("cskefu-websocket-service: " + localHost.getHostAddress()))); + } catch (UnknownHostException e) { + e.printStackTrace(); + throw new RuntimeException("出错了!"); + } + } +} diff --git a/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/websocket/SocketIOConfiguration.java b/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/websocket/SocketIOConfiguration.java deleted file mode 100644 index cf8531f5..00000000 --- a/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/java/com/cskefu/websocket/SocketIOConfiguration.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.cskefu.websocket; - -import com.corundumstudio.socketio.AuthorizationListener; -import com.corundumstudio.socketio.HandshakeData; -import com.corundumstudio.socketio.SocketConfig; -import com.corundumstudio.socketio.SocketIOServer; -import com.corundumstudio.socketio.annotation.SpringAnnotationScanner; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import java.util.Arrays; -import java.util.Optional; - -@Configuration -@Slf4j -public class SocketIOConfiguration { - - @Value("${cskefu.socketio.port:8082}") - private Integer port; - - @Value("${cskefu.socketio.bossCount:1}") - private int bossCount; - - @Value("${cskefu.socketio.workCount:0}") - private int workCount; - - @Value("${cskefu.socketio.upgradeTimeout:1000}") - private int upgradeTimeout; - - @Value("${cskefu.socketio.pingTimeout:3000}") - private int pingTimeout; - - @Value("${cskefu.socketio.pingInterval:3000}") - private int pingInterval; - - @Value("#{'${cskefu.socketio.namespaces:}'.split(',')}") - private String[] namespaces; - - @Bean - public SocketIOServer socketIOServer() { - SocketConfig socketConfig = new SocketConfig(); - socketConfig.setTcpNoDelay(true); - socketConfig.setSoLinger(0); - socketConfig.setReuseAddress(true); - - com.corundumstudio.socketio.Configuration config = new com.corundumstudio.socketio.Configuration(); - config.setSocketConfig(socketConfig); - config.setPort(port); - config.setBossThreads(bossCount); - int threads = Runtime.getRuntime().availableProcessors(); - if (workCount < 1) { - config.setWorkerThreads(threads); - } else { - if (workCount < threads) { - log.warn("worker threads to low"); - } - config.setWorkerThreads(workCount); - } - config.setWorkerThreads(Runtime.getRuntime().availableProcessors()); - config.setAllowCustomRequests(false); - config.setUpgradeTimeout(upgradeTimeout); - config.setPingTimeout(pingTimeout); - config.setPingInterval(pingInterval); - - final SocketIOServer server = new SocketIOServer(config); - - Optional.ofNullable(namespaces).ifPresent(namespace -> Arrays.stream(namespace).forEach(server::addNamespace)); - - config.setAuthorizationListener(new AuthorizationListener() { - @Override - public boolean isAuthorized(HandshakeData data) { - return true; - } - }); - - server.addConnectListener(client -> { - log.info("SessionId: {}", client.getSessionId()); - log.info("RemoteAddress: {}", client.getRemoteAddress()); - log.info("Transport: {}", client.getTransport()); - }); - - server.addDisconnectListener(client -> { - log.info("断开连接:{} ", client.getSessionId()); - client.disconnect(); - }); - - server.addEventListener("text", Object.class, (client, data, ackSender) -> { - client.getHandshakeData(); - log.info("客户端:{} 发来消息 {}", client, data); - }); - return server; - } - - @Bean - public SpringAnnotationScanner springAnnotationScanner() { - return new SpringAnnotationScanner(socketIOServer()); - } -} diff --git a/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/resources/application.properties b/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/resources/application.properties index 4d504bdf..f1840272 100644 --- a/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/resources/application.properties +++ b/cskefu-backend/cskefu-websocket/cskefu-websocket-service/src/main/resources/application.properties @@ -1,9 +1,17 @@ -spring.application.name=cskefu-websocket-service debug=true +server.port=10000 +spring.application.name=cskefu-websocket-service + spring.mvc.static-path-pattern=/smart-doc/** spring.web.resources.static-locations=classpath:/smart-doc -spring.cloud.kubernetes.discovery.enabled=true -cskefu.socketio.port=8082 -cskefu.socketio.upgradeTimeout=1000 -cskefu.socketio.pingTimeout=3000 -cskefu.socketio.pingInterval=3000 + +spring.cloud.nacos.discovery.server-addr=localhost:8848 + +spring.rabbitmq.username=guest +spring.rabbitmq.password=guest +spring.rabbitmq.addresses=127.0.0.1 +spring.rabbitmq.port=5672 +spring.rabbitmq.publisher-confirm-type=correlated +spring.rabbitmq.publisher-returns=true +spring.rabbitmq.listener.simple.acknowledge-mode=manual +spring.rabbitmq.listener.simple.prefetch=1 \ No newline at end of file diff --git a/cskefu-backend/cskefu-websocket/pom.xml b/cskefu-backend/cskefu-websocket/pom.xml index 86789e04..c8924f88 100644 --- a/cskefu-backend/cskefu-websocket/pom.xml +++ b/cskefu-backend/cskefu-websocket/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cskefu-websocket - 1.0.0 + 1.0.0-SNAPSHOT pom 4.0.0 cskefu-websocket @@ -11,7 +11,7 @@ com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT cskefu-websocket-domain diff --git a/cskefu-backend/git.properties b/cskefu-backend/git.properties new file mode 100644 index 00000000..64386c28 --- /dev/null +++ b/cskefu-backend/git.properties @@ -0,0 +1,16 @@ +# git.properties +git.tags=PLACEHOLDER +git.branch=PLACEHOLDER +git.dirty=PLACEHOLDER +git.commit.id=PLACEHOLDER +git.commit.id.abbrev=PLACEHOLDER +git.commit.id.describe=PLACEHOLDER +git.commit.id.describe-short=PLACEHOLDER +git.commit.user.name=PLACEHOLDER +git.commit.user.email=PLACEHOLDER +git.commit.time=PLACEHOLDER +git.build.user.name=PLACEHOLDER +git.build.user.email=PLACEHOLDER +git.build.time=PLACEHOLDER +git.build.host=PLACEHOLDER +git.build.version=PLACEHOLDER \ No newline at end of file diff --git a/cskefu-backend/logback-spring.xml b/cskefu-backend/logback-spring.xml new file mode 100644 index 00000000..7db384a7 --- /dev/null +++ b/cskefu-backend/logback-spring.xml @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + debug + + + ${console_log_pattern} + + + + + ${log_path}/${app_name}-${hostname}-debug.log + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + ${charset} + + + ${log_path}/%d{yyyy-MM-dd}/${app_name}-${hostname}-debug.%i.log + + ${max_file_size} + + ${max_history} + + + debug + ACCEPT + DENY + + + + + ${log_path}/${app_name}-${hostname}-info.log + + ${file_log_pattern} + ${charset} + + + ${log_path}/%d{yyyy-MM-dd}/${app_name}-${hostname}-info.%i.log + + ${max_file_size} + + ${max_history} + + + info + ACCEPT + DENY + + + + + ${log_path}/${app_name}-${hostname}-warn.log + + ${file_log_pattern} + ${charset} + + + ${log_path}/%d{yyyy-MM-dd}/${app_name}-${hostname}-warn.%i.log + + ${max_file_size} + + ${max_history} + + + warn + ACCEPT + DENY + + + + + ${log_path}/${app_name}-${hostname}-error.log + + ${file_log_pattern} + ${charset} + + + ${log_path}/%d{yyyy-MM-dd}/${app_name}-${hostname}-error.%i.log + + ${max_file_size} + + ${max_history} + + + ERROR + ACCEPT + DENY + + + + + 0 + ${queueSize} + + + + 0 + ${queueSize} + + + + 0 + ${queueSize} + + + + 0 + ${queueSize} + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cskefu-backend/pom.xml b/cskefu-backend/pom.xml index 22821366..cf145898 100644 --- a/cskefu-backend/pom.xml +++ b/cskefu-backend/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> com.cskefu cskefu-backend - 1.0.0 + 1.0.0-SNAPSHOT pom 4.0.0 cskefu-backend @@ -34,11 +34,11 @@ -Dfile.encoding=UTF-8 UTF-8 - 21 - 21 - 21 + 17 + 17 + 17 - 1.0.0 + 1.0.0-SNAPSHOT 0.11.5 1.6.6 @@ -47,6 +47,7 @@ 1.18.30 3.1.3 2022.0.4 + 2022.0.0.0 6.0.0 3.0.2 2.0.3 @@ -56,6 +57,12 @@ 3.8.2 3.23.5 2.6.4 + 6.0.0 + 3.4.0 + 3.1.4 + + cskefu + yyyyMMddHHmmss @@ -86,6 +93,13 @@ pom import + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring.cloud.alibaba.version} + pom + import + org.projectlombok lombok @@ -177,11 +191,35 @@ + + + io.github.git-commit-id + git-commit-id-maven-plugin + ${git.commit.plugin.version} + + + get-the-git-infos + initialize + + revision + + + + + ../.git + false + yyyy-MM-dd HH:mm:ss + true + ${project.build.outputDirectory}/git.properties + + + org.springframework.boot spring-boot-maven-plugin + ${springboot.maven.plugin.version} @@ -207,9 +245,54 @@ + + com.google.cloud.tools + jib-maven-plugin + ${jib.maven.plugin.version} + + + build-image + deploy + + build + + + + + + ${docker.image.prefix}/openjdk-21:debian-stretch-slim + + + ${docker.image.prefix}/${project.artifactId}:latest + + v9-${git.commit.id.abbrev} + ${maven.build.timestamp}-${git.commit.id.abbrev} + + + true + + + + org.apache.maven.plugins + maven-antrun-plugin + + + package + + run + + + + + + + + + + diff --git a/cskefu-backend/v9.mysql.init.sql b/cskefu-backend/v9.mysql.init.sql new file mode 100644 index 00000000..b3061db9 --- /dev/null +++ b/cskefu-backend/v9.mysql.init.sql @@ -0,0 +1,2 @@ +create database if not exists cskefu default charset utf8mb4 collate utf8mb4_unicode_ci; +use cskefu; diff --git a/cskefu-backend/v9.mysql.sql b/cskefu-backend/v9.mysql.sql deleted file mode 100644 index 602a302e..00000000 --- a/cskefu-backend/v9.mysql.sql +++ /dev/null @@ -1,4 +0,0 @@ -create -database if not exists cskefu default charset utf8mb4 collate utf8mb4_unicode_ci; -use -cskefu; \ No newline at end of file diff --git a/database/redis/.gitignore b/database/redis/.gitignore deleted file mode 100644 index d6b7ef32..00000000 --- a/database/redis/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/database/redis/admin/start.sh b/database/redis/admin/start.sh deleted file mode 100755 index 7f8754b4..00000000 --- a/database/redis/admin/start.sh +++ /dev/null @@ -1,18 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $baseDir/../.. -if [ -f docker-compose.yml ]; then - docker-compose up redis -else - echo "Invalid docker compose." - exit 1 -fi \ No newline at end of file diff --git a/database/redis/admin/stop.sh b/database/redis/admin/stop.sh deleted file mode 100755 index e5b4d704..00000000 --- a/database/redis/admin/stop.sh +++ /dev/null @@ -1,18 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $baseDir/../.. -if [ -f docker-compose.yml ]; then - docker-compose down redis -else - echo "Invalid docker compose." - exit 1 -fi \ No newline at end of file diff --git a/database/redis/data/.gitignore b/database/redis/data/.gitignore deleted file mode 100644 index a5baada1..00000000 --- a/database/redis/data/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!.gitignore - diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index fd2cde82..00000000 --- a/docker-compose.yml +++ /dev/null @@ -1,93 +0,0 @@ -version: "3" -services: - contact-center: - image: ${CC_IMAGE:-cskefu/contact-center:develop} - restart: always - ports: - - "${CC_WEB_PORT:-8035}:8035" - - "${CC_SOCKET_PORT:-8036}:8036" - volumes: - - ./contact-center/data:/data - - ./contact-center/logs:/logs - environment: - - "JAVA_OPTS=-Xmx${CC_JAVA_XMX:-12288m} -Xms${CC_JAVA_XMS:-2048m} -XX:PermSize=256m -XX:MaxPermSize=1024m -Djava.net.preferIPv4Stack=true --add-opens java.base/jdk.internal.misc=ALL-UNNAMED -Dio.netty.tryReflectionSetAccessible=true --illegal-access=warn" - - SERVER_PORT=8035 - - SERVER_LOG_PATH=/logs - - SERVER_LOG_LEVEL=${LOG_LEVEL:-WARN} - - WEB_UPLOAD_PATH=/data - - UK_IM_SERVER_PORT=8036 - - UK_IM_SERVER_HOST=localhost - - UK_IM_SERVER_THREADS=10 - # 春松客服配置 HTTPs / HTTPs for CSKeFu - # In detail - # 1) https://chatopera.blog.csdn.net/article/details/105820829 - # 2) https://github.com/cskefu/cskefu/issues/414#issuecomment-1437767407 - # In short - # 1) Setup Load Balancing / Reverse Proxy - # 2) Modify CS_IM_SERVER_SSL_PORT - # set CS_IM_SERVER_SSL_PORT=443 - - CS_IM_SERVER_SSL_PORT=${CC_SOCKET_PORT:-8036} - - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/cosinee?useUnicode=true&characterEncoding=UTF-8 - - SPRING_DATASOURCE_USERNAME=root - - SPRING_DATASOURCE_PASSWORD=${DB_PASSWD:-123456} - - SPRING_DATA_REDIS_HOST=redis - - SPRING_DATA_REDIS_PORT=6379 - - SPRING_DATA_REDIS_PASSWORD=${DB_PASSWD:-123456} - - SPRING_ACTIVEMQ_BROKER_URL=tcp://activemq:61616 - - CSKEFU_MODULE_CALLOUT=false - - CSKEFU_MODULE_CONTACTS=true - - CSKEFU_MODULE_CHATBOT=true - - CACHE_SETUP_STRATEGY=${CACHE_SETUP_STRATEGY:-create_by_force} - - SKYPE_CHANNEL_CRM=${SKYPE_CHANNEL_CRM:-placeholder} - - BOT_THRESHOLD_FAQ_BEST_REPLY=${BOT_THRESHOLD_FAQ_BEST_REPLY:-0.9} - - BOT_THRESHOLD_FAQ_SUGG_REPLY=${BOT_THRESHOLD_FAQ_SUGG_REPLY:-0.1} - - CSKEFU_SETTINGS_WEBIM_VISITOR_SEPARATE=true - - TONGJI_BAIDU_SITEKEY=${TONGJI_BAIDU_SITEKEY:-placeholder} - - EXTRAS_LOGIN_BANNER=${NOTICE_LOGIN_BANNER:-off} - - EXTRAS_LOGIN_CHATBOX=${EXTRAS_LOGIN_CHATBOX:-off} - - EXTRAS_AUTH_SUPER_ADMIN_PASS=${EXTRAS_AUTH_SUPER_ADMIN_PASS:-} - - EXTRAS_LOG_REQUEST=${EXTRAS_LOG_REQUEST:-off} - depends_on: - - mysql - - redis - - activemq - - activemq: - image: cskefu/activemq:5.14.3 - restart: always - environment: - - ACTIVEMQ_ADMIN_LOGIN=admin - - ACTIVEMQ_ADMIN_PASSWORD=${DB_PASSWD:-123456} - - ACTIVEMQ_ENABLED_SCHEDULER=true - - ACTIVEMQ_MIN_MEMORY=1024 - - ACTIVEMQ_MAX_MEMORY=4096 - volumes: - - ./database/activemq/data:/data - - ./database/activemq/logs:/var/log/activemq - ports: - - "${ACTIVEMQ_PORT1:-8051}:8161" - - "${ACTIVEMQ_PORT2:-8052}:61616" - - "${ACTIVEMQ_PORT3:-8053}:61613" - - mysql: - image: cskefu/mysql:5.7 - restart: always - environment: - - MYSQL_ROOT_PASSWORD=${DB_PASSWD:-123456} - - MYSQL_USER=admin - - MYSQL_PASSWORD=${DB_PASSWD:-123456} - ports: - - "${MYSQL_PORT:-8037}:3306" - volumes: - - ./database/mysql/data:/var/lib/mysql - command: --max_allowed_packet=32505856 - - redis: - image: cskefu/redis:5.0.5 - environment: - - REDIS_PASSWORD=${DB_PASSWD:-123456} - restart: always - volumes: - - ./database/redis/data:/data - ports: - - "${REDIS_PORT:-8041}:6379" \ No newline at end of file diff --git a/docker-nginx.yml b/docker-nginx.yml deleted file mode 100644 index 48ed291b..00000000 --- a/docker-nginx.yml +++ /dev/null @@ -1,14 +0,0 @@ -version: "3" -services: - nginx: - image: nginx - restart: always - ports: - - 80:80 - - 443:443 - volumes: - - ./nginx/logs:/var/log/nginx - - ./nginx/conf.d:/etc/nginx/conf.d - - ./nginx/certs:/certs - depends_on: - - contact-center \ No newline at end of file diff --git a/nginx/certs/.gitignore b/nginx/certs/.gitignore deleted file mode 100644 index d6b7ef32..00000000 --- a/nginx/certs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/nginx/conf.d/default.conf b/nginx/conf.d/default.conf deleted file mode 100644 index ba2db4e9..00000000 --- a/nginx/conf.d/default.conf +++ /dev/null @@ -1,21 +0,0 @@ -server { - root /usr/share/nginx/html; - client_max_body_size 100M; - - location / { - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_pass http://contact-center:8035; - } - - location /socket.io { proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "Upgrade"; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header Host $host; - proxy_http_version 1.1; - proxy_pass http://contact-center:8036; - } -} - diff --git a/nginx/logs/.gitignore b/nginx/logs/.gitignore deleted file mode 100644 index d6b7ef32..00000000 --- a/nginx/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/public/plugins/README.md b/public/plugins/README.md deleted file mode 100644 index 28a955b6..00000000 --- a/public/plugins/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# 春松客服插件 - -本文件夹包含春松客服的开源的插件,每个插件授权参考各子目录。 - -## 规范 - -目前,春松客服插件安装是在命令行终端内完成:使用 Bash Shell 命令,链接插件源码到春松客服源码,然后编译打包 WAR 后得到插件功能。 - -> 提示:Windows 上使用 Git Bash 获得 Bash Shell, [https://git-scm.com/downloads](https://git-scm.com/downloads)。 - -不同的插件均遵循以下的规范。 - -### 插件安装 - -执行命令: - -``` -cd plugins/PLUGIN -./scripts/install.sh -``` - -其中,`PLUGIN` 是插件的名字。 - -### 卸载插件 - -执行命令: - -``` -cd plugins/PLUGIN -./scripts/uninstall.sh -``` - -## 应用打包 - -安装插件后,插件开发过程同[春松客服开发环境搭建](https://docs.cskefu.com/docs/osc/engineering)。 - -如果需要部署到系统测试、生产环境等,首先打包为 WAR 应用,方式如下: - -``` -cd contact-center -./admin/package.sh -``` - -春松客服的发布形式为 Docker 镜像,如果在更改源码后,也可以使用春松客服的 Docker 镜像构建脚本发布,参考[构建脚本](https://github.com/cskefu/cskefu/blob/osc/contact-center/admin/build.sh)。 diff --git a/public/plugins/scripts/install-all.sh b/public/plugins/scripts/install-all.sh deleted file mode 100755 index 172cf959..00000000 --- a/public/plugins/scripts/install-all.sh +++ /dev/null @@ -1,31 +0,0 @@ -#! /bin/bash -########################################### -# Install All public plugins -# Copyright (2019-2022) 北京华夏春松科技有限公司 -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -# functions - -function install_plugin(){ - echo "Install plugin" $1 "..." - cd $baseDir/../$1 - if [ -f ./scripts/install.sh ]; then - ./scripts/install.sh - else - echo "[WARN] not exist command" $baseDir/../$1/scripts/install.sh - fi - cd $baseDir/.. -} - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $baseDir/.. -echo "Inspect plugins -->" `pwd` -for x in `ls .`; do - if [ $x != "scripts" ] && [ $x != "tmp" ] && [ -d ./$x ]; then - install_plugin $x - echo -e "\n" - fi -done diff --git a/public/plugins/scripts/uninstall-all.sh b/public/plugins/scripts/uninstall-all.sh deleted file mode 100755 index 51168c40..00000000 --- a/public/plugins/scripts/uninstall-all.sh +++ /dev/null @@ -1,31 +0,0 @@ -#! /bin/bash -########################################### -# Uninstall all public plugins -# Copyright (2019-2022) 北京华夏春松科技有限公司 -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -# functions - -function uninstall_plugin(){ - echo "Uninstall plugin" $1 "..." - cd $baseDir/../$1 - if [ -f ./scripts/uninstall.sh ]; then - ./scripts/uninstall.sh - else - echo "[WARN] not exist command" $baseDir/../$1/scripts/uninstall.sh - fi - cd $baseDir/.. -} - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $baseDir/.. -echo "Inspect plugins -->" `pwd` -for x in `ls .`; do - if [ $x != "scripts" ] && [ -d ./$x ]; then - uninstall_plugin $x - echo -e "\n" - fi -done diff --git a/scripts/clean.container.sh b/scripts/clean.container.sh deleted file mode 100755 index 4118f842..00000000 --- a/scripts/clean.container.sh +++ /dev/null @@ -1,31 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $baseDir/.. - -CONTAINER=$1 - -if [[ -z $CONTAINER ]]; then - echo "No container specified" - exit 1 -fi - -set -x -if [[ "$(docker ps -aq -f name=^/${CONTAINER}$ 2> /dev/null)" == "" ]]; then - CONTAINER="$(docker-compose ps $CONTAINER 2> /dev/null | awk '{if (NR==3) print $1 fi}')" - if [[ -z $CONTAINER ]]; then - echo "Container \"$1\" does not exist, exiting." - exit 1 - fi -fi - -log=$(docker inspect -f '{{.LogPath}}' $CONTAINER 2> /dev/null) -truncate -s 0 $log \ No newline at end of file diff --git a/contact-center/admin/compile.sh b/scripts/compile.sh old mode 100755 new mode 100644 similarity index 78% rename from contact-center/admin/compile.sh rename to scripts/compile.sh index d4b2c19d..8eb33ed8 --- a/contact-center/admin/compile.sh +++ b/scripts/compile.sh @@ -9,8 +9,9 @@ baseDir=$(cd `dirname "$0"`;pwd) # main [ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $baseDir/../app -mvn -DskipTests clean compile +cd $baseDir/../../cskefu-backend + +mvn -DskipTests clean install -N && mvn -DskipTests clean compile # take too long time with dev002 for uploading artifact, skip this operation # $baseDir/deploy.app.sh diff --git a/contact-center/admin/push.sh b/scripts/deploy.sh old mode 100755 new mode 100644 similarity index 54% rename from contact-center/admin/push.sh rename to scripts/deploy.sh index 121b8de8..0905db18 --- a/contact-center/admin/push.sh +++ b/scripts/deploy.sh @@ -5,17 +5,17 @@ # constants baseDir=$(cd `dirname "$0"`;pwd) -appHome=$baseDir/.. -registryPrefix= -imagename=cskefu/contact-center - -# functions +appHome=$baseDir/../../ # main [ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return # build cd $appHome +TIMESTAMP=`date "+%Y%m%d.%H%M%S"` PACKAGE_VERSION=`git rev-parse --short HEAD` +APPLICATION_CUSTOMER_ENTITY=${APPLICATION_CUSTOMER_ENTITY:-"OpenSource Community"} -docker push $registryPrefix$imagename:$PACKAGE_VERSION -docker push $registryPrefix$imagename:develop \ No newline at end of file +set -ex + +cd $baseDir/../../cskefu-backend +mvn -DskipTests clean deploy -N && mvn -DskipTests clean deploy diff --git a/scripts/dev.sh b/scripts/dev.sh deleted file mode 100755 index f02249b7..00000000 --- a/scripts/dev.sh +++ /dev/null @@ -1,13 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $baseDir/.. -docker-compose up mysql redis activemq diff --git a/scripts/flush.sh b/scripts/flush.sh deleted file mode 100755 index d1c95c72..00000000 --- a/scripts/flush.sh +++ /dev/null @@ -1,23 +0,0 @@ -#! /bin/bash -########################################### -# 全新导入新版本服务 -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -echo "【警告】即将停掉服务,删除所有数据,重新拉取新的镜像,然后启动服务 ..." -echo ">> 5 秒钟后开始,如果不清楚风险请通过【Ctrl + C】取消操作 ..." -sleep 5 - -cd $baseDir/.. -docker-compose down -sudo rm -rf database/mysql/data/* -sudo rm -rf database/redis/data/* -sudo rm -rf database/activemq/data/* - -docker-compose pull -docker-compose up -d contact-center diff --git a/scripts/plugins.install.all.sh b/scripts/plugins.install.all.sh deleted file mode 100755 index 8473d26f..00000000 --- a/scripts/plugins.install.all.sh +++ /dev/null @@ -1,21 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $baseDir/.. - -if [ -d ./private/plugins ]; then - ./private/plugins/scripts/install-all.sh -fi - -cd $baseDir/.. -if [ -d ./public/plugins ]; then - ./public/plugins/scripts/install-all.sh -fi diff --git a/scripts/plugins.uninstall.all.sh b/scripts/plugins.uninstall.all.sh deleted file mode 100755 index ff7b7e50..00000000 --- a/scripts/plugins.uninstall.all.sh +++ /dev/null @@ -1,20 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $baseDir/.. - -if [ -d ./private/plugins ]; then - ./private/plugins/scripts/uninstall-all.sh -fi - -if [ -d ./public/plugins ]; then - ./public/plugins/scripts/uninstall-all.sh -fi diff --git a/scripts/start.sh b/scripts/start.sh deleted file mode 100755 index 3ce62477..00000000 --- a/scripts/start.sh +++ /dev/null @@ -1,14 +0,0 @@ -#! /bin/bash -########################################### -# -########################################### - -# constants -baseDir=$(cd `dirname "$0"`;pwd) -# functions - -# main -[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -cd $baseDir/.. -docker-compose pull -docker-compose --compatibility up -d contact-center diff --git a/contact-center/admin/uninstall.sh b/scripts/uninstall.sh old mode 100755 new mode 100644 similarity index 86% rename from contact-center/admin/uninstall.sh rename to scripts/uninstall.sh index b2431687..dc61b019 --- a/contact-center/admin/uninstall.sh +++ b/scripts/uninstall.sh @@ -9,4 +9,4 @@ baseDir=$(cd `dirname "$0"`;pwd) # main [ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return -rm -rf ~/.m2/repository/com/cskefu/cc +rm -rf ~/.m2/repository/com/cskefu