漳州港项目结构简单介绍

前言

跟大家分享一下漳州港项目的整体结构

一、目录结构及描述

漳州港项目的目录结构大致如下,创建新项目时可参考此目录结构进行创建。

1.目录结构及简单描述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

|--zzg //项目名称
|--common //公共模块
|--common-entity
|--src/main/java.com.szwcyq.ggw.zzg.common
|--constant //常量定义类
|--enums //状态枚举类
|--util //工具类

|--doc //存放一些文件或文档
|--sqlscript //sql脚本文件

|--frontpage //前端打包的代码文件
|--manager //运维管理项目前端代码
|--platform //平台(用于给用户办单)项目的前端代码

|--service //服务类,此目录下的工程,不对外公开
|--service-user //权限项目
|--web-platform-base //操作员管理项目

|--web
|--web-manager-base //后台运维项目
|--web-shyw //办单系统
|--src.main
|--codeGen //代码生成工具
|--freemarker //配置生成代码的模版
config.xml //自动生成代码环境配置信息
|--java.com.szwcyq.ggw.zzg.shyw
|--annotation //自定义注解
|--config //
|--dao //mybatis操作数据库的接口
|--entity //数据库实体类
|--form //前端提交的from表单对应的实体对类
|--jobs //定时任务
|--manager //通用类
|--service //service类
|--web //控制器
ShywWebapp.java //项目启动入口
|--resources //资源文件
|--import //导入excel的配置文件
|--spring
|--dubbo //duboo服务调用配置文件
|--mybaits //mybatis的mapper.xml的配置文件
|--templates //生成pdf模版文件
application.yml //运行环境配置文件

2.web-manager-base简单介绍

  1. 此项目是用于管理用户资源、角色管理、会员管理

  2. 数据库关系图

3.service-user简单介绍

此项目作为权限管理模块,前台和中台的登录由此项目控制,主要提供用户权限
那块的远程服务调用。

用户数据流转过程:

  • 用户通过港港网进行会员注册 (sso-center)
  • 散货业务平台登录之后,将用户信息通过到运维后台 (zzg_bs)

4、项目与项目之间的调用关系

zzg-web-shyw是消费者,调用service-user中的权限服务进行登录,调用web-manager-base里面的字典服务查询字典数据。
service-user和web-manager-base是服务提供者。

二、配置信息解释

1. codeGen自动生成代码模版配置信息

${basedir}/src/main/codeGen/config.xml描述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- 1.首先maven需要依赖插件
- <plugin>
<groupId>com.szwcyq.d3platform</groupId>
<artifactId>code-generator-maven-plugin</artifactId>
<version>${d3platform.codegen.version}</version>
</plugin>
此插件运行的默认路径为${basedir}/src/main/codeGen/。

- 2.配置自动自动生成代码的配置文件
jdbc:数据库环境
<!-- 输出目录 -->
<property name="relativeOutputDir" value="src/test/java/"/>
<!-- 数据库实体类输出的包目录 -->
<property name="domain" value="com.szwcyq.ggw.shzwy.manager.entity"/>
<!-- 需要自动生成代码的数据库表,及实体类名称 -->
<table table="bs_agency" domain="Agency"/>

- 3.运行maven命令(mvn code-generator:gen -U-e)进行自动生成代码。

2. 导入excel文件配置信息

resources/import/config.xml描述

1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- 起始行号 -->
<startRowNo>1</startRowNo>
<!-- excel单元格 -->
<cell>
<!-- 列号 -->
<number>0</number>
<!-- 英文含义 -->
<key>index1</key>
<!-- 数据类型 -->
<cellType>Int</cellType>
<!-- 是否可空。1可空,0不可空 -->
<nullble>0</nullble>
</cell>

3. sso配置信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
sso:
#是否启动sso服务
open: true
debug: true
#模式
mode: ajax
#此地址允许跨域访问
origin: http://localhost:3000
#0:'会员登录',1:'会员后台登陆',2:'平台控制台登录'
client-type: 1
# 系统编号:(内详)前台以m开头,后台以b开头
systemId: 'M00003'
#港口代码
portId: 'CNZAZ'
# 项目ID
appId: sdxg
#appKey: 2
#encryptType: AES
#加密密钥
encryptKey: 8fa1517033e58716e5627c36de9c4ea7
# filter 拦截地址,默认会拦截'/ssoLogin'
urlPatterns: '/*'
# 服务器的登录/登出分别为:http://sso.com:9000/login,http://sso.com:9000/logout
# 登录中心地址,例如:实际地址为'https://sso.com:9000/user/login',填写 'https://sso.com:9000/user'
centerUrl: 'https://sso.com:9000'
#内部通讯地址
hessianServiceUrl: 'https://sso.com:9000/authRpcService'
#登录/登出,默认跳转页面;不填自动生成
defaultUrl: 'http://client.com:10403/shyw/auth/current'
#匿名就可以访问的url,默认会加上:/static/**,/assets/**,/css/**,/js/**,/ssoLogin,/ssoLogout
excludeUrls: '/,/index.html,/index,/index/**,/**/*.html,/management/**,/webjars/*,/swagger-resources,/swagger-resources/**/*,/dictionary/list,/pdf/**,/pdf/**/*'
checkRemoteInterval: 60
checkLocalInterval: 10
# -Djavax.net.ssl.trustStore=D:/dev/svn/d3Platform/projects/webapp/sso-client-demo/src/main/resources/jssecacerts -Djavax.net.ssl.trustStorePassword=changeit
#内部通讯地址https安全认证
ssl:
enable: true
trustStore: 'file:C:\java\key\jssecacerts'
#trustStore: '@project.basedir@/src/main/resources/jssecacerts'
trustStorePassword: changeit
permission:
#是否启动权限控制
enable: true
#权限拦截url
filter-patterns: '/*'
#登录就可以访问的url
needLoginUrls: '/auth/current,/user/index,/hello/qw,/swagger-ui.html,/**/*'

三、项目登陆的调用过程

调用步骤大致如下

  • 用户在浏览器输入项目的登陆地址client.com:8055/shyw/auth/curent

  • 调用依赖包d3platform-boot-starter-sso中的PermissionFilter过滤器的doFilter方法对请求进行拦截。

  • 拦截到请求后,判断用户是否登陆,如果没有登陆,跳转到登陆中心工程的登录界面(sso-center)。

  • 登录中心登录成功之后,跳转到shyw工程backUrl地址,默认是/ssoLogin,并带上code(tickie)参数。
    过滤器执行顺序的配置为registrationBean.setOrder(2147483547);

  • 跳转回来之后通过拦截器SsoClientFilter.doFilter对请求进行拦截,并通过tickie远程获取用户信息

1
SsoUser remoteUser = this.getRemoteUser(request, code);
  • 将用户信息通过到运维后台数据库,并将用户信息保存到session里面。
1
2
this.authService.loginSuccess(remoteUser);
SsoUtil.setSessionUser(request, remoteUser);
-------------本文结束感谢您的阅读-------------