Skip to content

Server

WARNING

本文档介绍XSDK服务端程序开发环境的搭建,后端开发工具请使用Intellij IDEA(2021),如果您还没有下载安装,请先完成下载安装:Intellij IDEA下载地址

项目结构

XSDK 后端程序使用Springboot+Mybatis-plus进行开发, 项目采用标准的MVC架构, 项目内通过多个子module组织不同模块的代码逻辑。

XSDK Server端目录结构

整个业务模块按MVC架构组织和命名, 具体的模块命名说明:

ug-common-xxx: 通用基础组件封装,可以被其他模块引用

ug-support-xxx: 第三方服务相关的业务逻辑封装, 比如阿里云相关服务,腾讯相关服务,AppStore相关服务,中宣部相关服务等

ug-entities: 实体Model层,定义和数据库中表对应的实体结构

ug-repository: 数据访问层,被所有子程序的业务层引用

ug-server/ug-manager/ug-quartz-core: 三个子程序的业务层。 ug-server:处理SDK相关的核心业务逻辑,支持集群部署。 ug-manager: 处理管理后台程序相关的业务逻辑。ug-quartz-core: 批处理作业管理程序的业务逻辑。

ug-xxx-web: Web访问控制层, ug-server-web:处理客户端SDK的请求;ug-manager-web:处理管理后台前端程序的业务请求。

ug-xxx-xstarter: 子程序启动组件,处理依赖关系,定义程序配置文件等。

具体各个模块的含义和用途,请参考如下说明(server工程内README.md):

ug-common

通用库,里面是不依赖spring框架的通用组件,可以被所有其他模块依赖

ug-common-batch

Spring Batch通用库,主要增加了Spring Batch对Mybatis-Plus的支持

ug-common-service

通用Service组件库,可以被其他Service层依赖,内含比如支付通知,阿里云人机验证,Redis,i18n,分布式唯一ID生成组件等

ug-common-id-generator

分布式唯一ID生成服务的封装,使用百度开源的分布式ID组件

ug-support-appstore

AppStore支付相关的业务逻辑封装,可以快速完成AppStore支付和退款相关逻辑的调用

ug-support-alibaba

阿里巴巴相关的服务API封装,比如支付宝支付,OSS操作,短信验证码服务等

ug-support-tencent

腾讯相关的服务API封装,比如微信支付等

ug-support-idcard

实名认证服务相关的封装,比如中宣部实名认证服务,第三方实名认证服务等

ug-support-bundle

包体相关的操作封装,比如Android包apk的CPS子包打包,apk包的校验,ipa包的校验等封装

ug-entities

实体类组件,包括了和数据库表中一一对应的实体类

ug-repository

数据访问层组件,实现ug-entities定义的实体类对应的mapper和dao。

ug-repository-config

数据访问层配置组件,主要涵盖了数据源的配置以及flyway定义的sql脚本

ug-server

核心业务组件,定义组件接口抽象,实现业务主要逻辑

ug-server-web

web层组件,对外提供可访问的api协议和接口

ug-server-xstarter

server装配启动组件,配置依赖关系,定义springboot配置和启动运行等,启动UG Server使用该工程。

ug-manager

后台管理系统业务程序

ug-manager-web

后台管理系统web层组件,对外提供可访问的api协议和接口

ug-manager-xstarter

manager装配启动组件,配置依赖组件,定义springboot配置和启动运行等。启动管理后台使用该工程。和ug-manager-client前端工程配合使用。

ug-quartz-core

基于quartz的简易作业调度管理中心,自带一个简易的任务管理后台,可以对作业实现添加,启动,暂停,告警等处理

ug-quartz-jobs

具体的作业任务,比如数据统计作业,退款检测,自动封号作业等

ug-quartz-xstarter

作业调度中心启动组件,定义springboot配置和启动运行等。 启动作业调度中心(UG-Quartz)使用该工程。和ug-quartz-client前端工程配合使用。

导入工程

使用Intelij IDEA 导入server工程, 首次导入的时候,请选择按gradle方式导入:

XSDK 项目工程导入

工程导入之后, 我们需要将工程编码设置为UTF-8编码,点击IDEA菜单File->Settings,打开设置窗口界面,然后搜File Encoding,将编码都设置为UTF-8:

XSDK项目编码设置

有时候,我们在IDEA控制台中也会出现乱码,我们可以将这个编码也设置为UTF-8。 点击IDEA菜单Help->Edit Custom VM Options,打开自定义参数文件,最后加上这一行:

-Dfile.encoding=utf-8

修改之后, 重启IDEA,然后再点击IDEA菜单Build->Rebuild Project 重新编译一下工程。

然后,如果我们需要在Intellij IDEA中直接能够启动应用程序, 还需要在启动配置中,做如下配置:

XSDK 项目启动配置

如上图设置后, UGApplication就是ug-server-xstarter子程序的启动配置了, 点击右上角三角形启动按钮或者旁边debug启动按钮,就可以启动了。其他子程序的设置, 和UGApplication是一样的。 各个子程序启动配置说明如下:

UGApplication: ug-server-xstarter子程序对应的启动配置
UGMApplication: ug-manager-xstarter子程序对应的启动配置
UGQApplication: ug-quartz-xstarter子程序对应的启动配置
UGMonitorApplication: springbootadmin监控程序对应的启动配置(项目中目前已停用,可以不用配置)

参数配置

每个子程序都是标准的springboot启动程序,采用标准的springboot配置文件。 比如ug-server-xstarter子程序的配置文件,在ug-server-xstarter/src/main/resources/目录下application.properties。 为了方便在开发环境和正式环境中切换不同的配置, 我们定义了application-dev.properties用于开发环境,application-prod.properties用于正式环境。 具体使用哪个环境的配置文件, 可以在上面启动配置设置的时候,通过spring.profiles.active启动参数指定(dev/prod)

接下来,我们就来看下application.properties/application_dev.properties中的配置(说明的参数都是可以修改的,其他未说明的参数,一般默认即可):

1、ug-server-xstarter程序配置:

properties
server.port: 程序启动后占用的端口

ug.common.storePath: 持久化程序文件存储目录, 用于临时存储支付宝公钥文件等
spring.servlet.multipart.location: 程序临时文件目录位置,建议手动指定,防止使用系统临时目录,一段实际无使用,被系统回收,导致程序需要重启

spring.datasource.url: 数据库链接,修改其中的数据库IP地址,端口和数据库名称即可。
spring.datasource.username: 数据库用户名
spring.datasource.password: 数据库用户密码

spring.redis.host:redis服务所在的ip地址
spring.redis.password: redis服务的密码,如果redis中没有配置,可以为空
spring.redis.port: redis服务的端口,默认是6379
spring.redis.database: 当前程序使用的redis数据库索引, 取值:0到15

2、ug-manager-xstarter程序配置:

properties
server.port: 程序启动后占用的端口
ug.mgr.noPasswordLogin: 管理后台是否支持游客登录,正式环境设置为false
ug.mgr.storePath: 管理后台存储目录,存储上传的文件等
ug.mgr.packageToolPath: 子渠道打包工具所在的位置,打包工具在ug-support-bundle/tools目录
ug.mgr.packageTempPath: 子渠道打包时的临时目录
spring.servlet.multipart.location: 程序临时文件目录位置,建议手动指定,防止使用系统临时目录,一段实际无使用,被系统回收,导致程序需要重启

spring.datasource.url: 数据库链接,修改其中的数据库IP地址,端口和数据库名称即可。 和ug-server-xstarter程序的配置要一致
spring.datasource.username: 数据库用户名, 和ug-server-xstarter程序的配置要一致
spring.datasource.password: 数据库用户密码, 和ug-server-xstarter程序的配置要一致

spring.redis.host:redis服务所在的ip地址, 和ug-server-xstarter程序的配置要一致
spring.redis.password: redis服务的密码,如果redis中没有配置,可以为空, 和ug-server-xstarter程序的配置要一致
spring.redis.port: redis服务的端口,默认是6379,和ug-server-xstarter程序的配置要一致
spring.redis.database: 当前程序使用的redis数据库索引, 取值:0到15, 和ug-server-xstarter程序的配置要一致

aliyun.captcha.regionid: 阿里云人机验证 regionid
aliyun.captcha.accessKey: 阿里云后台 AccessKey
aliyun.captcha.accessSecret: 阿里云后台 AccessSecret
aliyun.captcha.appkey: 阿里云人机验证服务的 AppKey

3、ug-quartz-xstarter程序配置:

properties
server.port: 程序启动后占用的端口
spring.servlet.multipart.location: 程序临时文件目录位置,建议手动指定,防止使用系统临时目录,一段实际无使用,被系统回收,导致程序需要重启

spring.datasource.source.jdbc-url: 源数据库链接,修改其中的数据库IP地址,端口和数据库名称即可。和ug-server-xstarter程序的配置要一致
spring.datasource.username: 数据库用户名, 和ug-server-xstarter程序的配置要一致
spring.datasource.password: 数据库用户密码, 和ug-server-xstarter程序的配置要一致

spring.datasource.warehouse.jdbc-url: 作业数据库链接,修改其中的数据库IP地址,端口和数据库名称即可。 
spring.datasource.warehouse.username: 作业数据库用户名
spring.datasource.warehouse.password: 作业数据库密码

spring.flyway.url: 同上面spring.datasource.source.jdbc-url配置的值
spring.flyway.user: 同上面spring.datasource.username配置的值
spring.flyway.password: 同上面spring.datasource.password配置的值

spring.redis.host:redis服务所在的ip地址
spring.redis.password: redis服务的密码,如果redis中没有配置,可以为空
spring.redis.port: redis服务的端口,默认是6379
spring.redis.database: 当前程序使用的redis数据库索引, 取值:0到15。 如果和ug-server-xstarter程序用的同一个redis,这里数据库索引使用一个和他们不同的

如果您还没有安装导入mysql数据库,请参考这篇文档完成Mysql的安装和配置: MySql配置

如果您还没有安装Redis,请参考这篇文档完成Redis的安装和配置:Redis配置

发布程序

1、 生成部署文件

开发环境搭建成功之后, 如果我们想要在远程服务器上发布后端程序的话, 我们直接在IDEA中可以编译出对应子程序的部署文件:

1、 在Intellij IDEA中, 按ALT+F12快捷键, 启动命令行中断
2、 编译ug-server-xstarter子程序: 输入 gradlew :ug-server-xstarter:release
3、 编译ug-manager-xstarter子程序: 输入 gradlew :ug-manager-xstarter:release
4、 编译ug-quartz-xstarter子程序: 输入 gradlew :ug-quartz-xstarter:release
5、 编译执行完成后, 生成的发布目录在:server工程/release目录下

2、 部署文件介绍

经过上一步的操作, 我们已经在release目录下生成了ug-server-xstarter、ug-manager-xstarter和ug-quartz-xstarter三个程序的部署文件。 我们接下来, 就可以将这些部署文件,上传到服务器(一般使用Linux系统,推荐使用Centos 7.2/7.6系统)上。

我们以ug-manager-xstarter管理后台程序为例(其他两个程序部署文件也是一样):

startdev.sh : 程序启动脚本
stopdev.sh : 程序关闭脚本
service.sh : 启动和关闭辅助脚本
ugmanager.dev: 程序运行目录
	----bin/ug-manager-xstarter-1.0.0.jar : 程序可执行jar文件
	----application.properties: 程序配置文件
	----application-dev.properties: 程序开发环境配置文件
	----logback-spring.xml: 日志输出配置文件
	
	----store/files/templates: 子渠道包下载页模板文件。 管理后台程序独有的目录文件,源文件在ug-manager-xstarter/src/main/resources/templates目录下。 需要将templates目录上传到application-xxx.properties中指定的ug.mgr.storePath下
	----tools: 子渠道打包工具。 管理后台程序独有的目录文件,源目录在ug-support-bundle/tools目录下。需要将tools目录下所有文件上传到application-xxx中指定的ug.mgr.packageToolPath目录下

版权所有© 2021-2030 上海丞诺网络科技有限公司