Skip to content
本页目录

MAS 模块化应用支撑平台

MAS是一个模块化的应用支撑平台,采用微服务和微应用架构,支持多租户、多站点、模块化开发和积木式搭建。基于该平台,可以快速开发各类业务微应用,通过组合微应用来搭建支持多租户和多站点的业务系统。它能够实现租户独立的、可个性化的各类业务系统(站点),并且支持全代码和低代码的开发方式。

功能范围

序号子平台说明
1平台管理中心管理租户、站点、应用等
2站点管理中心实现一个站点的基本管理功能,包括菜单、主题及基本信息管理
3帐户中心实现站点账号管理、认证和角色授权
4MAUI开发框架前端微应用开发框架,支持对前端内核扩展及业务的模块化开发
5微服务开发框架后端微服务开发框架,基于Spring Cloud Alibaba架构实现微服务的模块化开发

版本

v5.9

更新内容

此版本主要更新内容如下:

新增

  • 打印功能。开发教程:点击进入
  • 外部应用访问(API开放)
  • 标签化路由,处理开发或试点应用对服务的特殊路由需求。使用说明:点击进入
  • 移动端移动站点账号密码登录功能
  • PAD、手机APP启动容器
  • 管理平台操作日志
  • 提供默认大屏主题
  • 账号去掉手机号校验,核对接口中是否有账号的规则校验、重复校验等机制
  • 应用上架调整成锚点方式分类;
  • 应用授权调整为直接授权到站点(后台逻辑保留原功能)
  • sso单点登录菜单标识去掉时间戳生产唯一,调整成固定规则生成,保证切换环境页面跳转正常
  • mas平台内租户间、站点间单点登录(以账号表的c_login_dingding的值一致为基准,视为同一身份,浙政钉场景下值对应浙政钉uid)
  • 支持第三方应用对接(需要部署mas-open-gateway服务)。快速开始:点击进入

修改

  • 跨租户站点访问问题,会话干扰问题、访问地址问题
  • 其他bug处理

优化

  • 全局错误信息没有处理,出错后无任何提示

补丁

微服务版本明细

序号模块微服务版本号说明
基础设施
1Nacos服务nacos/nacos-server2.0.3
2Redisredis6.2.6-alpine3.15
3RabbitMQbyteflair/rabbitmq-stomplatest可选
平台基础
4前端基座mas-nginx5.9.15原foa5-nginx
5网关服务mas-gateway5.9.17原foa-cloud-gateway
6站点系统管理mas-admin5.9.17原foa-cloud-admin
7鉴权服务mas-auth5.9.17原foa-cloud-auth
8文件服务mas-file5.9.17原foa-cloud-file
扩展服务
9单点登录mas-sso5.9.17可选,原foa-cloud-sso-cos
10MQ服务mas-mq5.9.17可选,原foa-cloud-mq
11定时任务mas-task5.9.17可选,原foa-cloud-task
12在线WPSmas-wps5.9.17可选,原foa-cloud-wps
13浙政钉网关mas-dingtalk5.9.17可选,原cos-api-gateway

如何获取微服务镜像?

所有镜像可到容器仓库通过 docker pull 拉取

  • 武汉公司内网:192.168.1.10:5000/tangram/[微服务名]:[版本号]
  • 阿里云:registry.cn-hangzhou.aliyuncs.com/tangram/[微服务名]:[版本号]

如何获取微服务jar包?

所有正式发布版本可到私服仓库下载

  • 下载地址:http://nps.zktx-soft.com:19098/repository/maven-public/com/gsoft/[平台:mas|locas]/[应用名]/[版本号]/[应用名]-[版本号].jar

例:http://nps.zktx-soft.com:19098/repository/maven-public/com/gsoft/mas/mas-admin/5.9.17/mas-admin-5.9.17.jar

微应用版本明细

序号模块微应用版本号说明
管理平台
1应用市场mas-ops-app5.9.5
2租户管理mas-ops-tenant5.9.5
3站点管理mas-ops-site5.9.5
站点系统管理
1账号管理mas-admin-account5.9.5可替换
2角色管理mas-admin-role5.9.5可替换
3单点登录mas-admin-sso5.9.5可选,对应mas-sso
4菜单初始化mas-admin-menu5.9.5
5参数管理mas-admin-param5.9.5可选
6数据字典mas-admin-dictionary5.9.5可选
7数据分类mas-admin-catalog5.9.5可选
8操作日志mas-admin-log5.9.5可选
9在线用户mas-admin-online5.9.5可选
10站点设置mas-admin-site5.9.5
主题
1清新绿(横向)theme-horizontal-green5.9.15可选
2中国红(横向)theme-horizontal-red5.9.15可选
3政务蓝(纵向)theme-vertical-blue5.9.15可选
4清新绿(纵向)theme-vertical-green5.9.15可选
5中国红(纵向)theme-vertical-red5.9.15可选
6蓝色综合theme-multiple-blue5.9.15可选
7蓝色分栏theme-subfield-blue5.9.15可选
8大屏主题theme-fullscreen5.9.15可选
9移动账号密码主题theme-mobile-default5.9.15可选
扩展功能
1工作门户mas-panel5.9.15可选
2打印模块mas-printer5.9.15可选
3页面调试器mas-ops-vconsole5.9.5可选,用于移动端调试

可选的微应用,没有特殊说明的,对应的微服务均为必选微服务或无需对应服务

如何获取应用tgz安装包?

所有安装包可到阿里云OSS仓库下载

  • 路径:oss://foa5-oss/deploy/[平台:mas/locas]/[应用名称]/[版本号]/[应用名称]-[版本号].tgz 如:oss://foa5-oss/deploy/mas/mas-panel/5.9.15/mas-panel-5.9.15.tgz

浙政钉代理(IRS托管需要)

序号模块微应用版本号说明
1代理mas-ui-dingtalk5.8.2可选

5.8升级至5.9

说明

升级的过程中请注意:按步骤执行,每步执行成功才执行后续步骤

按如下步骤执行

1、在主库执行:

sql
select * from cos_basicdata_catalog where c_site_id = 1 and c_root_key = 'DIC_TYPE';

2、如果上面查询没数据,在主库执行:

sql
INSERT INTO cos_basicdata_catalog(c_tenant_id,c_site_id,c_text,c_cascade_id,c_root_name,c_root_key,c_status,c_type,c_value) VALUES ( 1,1,'系统类','/', '数据字典分类科目', 'DIC_TYPE', 1,'','');

3、在主库执行:

sql
INSERT INTO cos_basicdata_dictionary(c_tenant_id,c_site_id,c_name,c_key,c_remark,c_catalog_id,c_catalog_cascade_id) VALUES ( 1,1,'应用分类', 'appCategory','应用分类',(select c_id from cos_basicdata_catalog where c_site_id = 1 and c_root_key = 'DIC_TYPE'), ('/' || (select c_id from cos_basicdata_catalog where c_site_id = 1 and c_root_key = 'DIC_TYPE') || '/'));

4、在主库执行:【如果需要添加分类可以参照如下sql编写,也可以在系统管理-数据字典里进行界面操作来维护】

sql
INSERT INTO cos_basicdata_dictionary_item(c_site_id,c_tenant_id,c_dic_key,c_code,c_value,c_sort_number) VALUES (1,1, 'appCategory', '1','系统管理',1);
INSERT INTO cos_basicdata_dictionary_item(c_site_id,c_tenant_id,c_dic_key,c_code,c_value,c_sort_number) VALUES (1,1, 'appCategory', '2','低代码',2);
INSERT INTO cos_basicdata_dictionary_item(c_site_id,c_tenant_id,c_dic_key,c_code,c_value,c_sort_number) VALUES (1,1, 'appCategory', '3','财政应用',3);
INSERT INTO cos_basicdata_dictionary_item(c_site_id,c_tenant_id,c_dic_key,c_code,c_value,c_sort_number) VALUES (1,1, 'appCategory', '4','主题应用',4);
INSERT INTO cos_basicdata_dictionary_item(c_site_id,c_tenant_id,c_dic_key,c_code,c_value,c_sort_number) VALUES (1,1, 'appCategory', '5','其他',5);

5、在主库执行:

sql
delete from t_app_catalog_mapping where c_id in (select max(c_id) from t_app_catalog_mapping where c_app_code in (select c_app_code from 
(select c_app_code , count(c_id) as num from t_app_catalog_mapping group by c_app_code) where num > 1) group by c_app_code);

6、在主库执行

sql
DROP TABLE IF EXISTS "cos_admin_open_api";
CREATE TABLE "cos_admin_open_api" (
"c_id" serial8 NOT NULL,
"c_last_modifier" int8,
"c_last_modify_time" timestamp(6),
"c_creator" varchar(50) COLLATE "pg_catalog"."default",
"c_create_time" timestamp(6),
"c_sort_number" int4,
"c_tenant_id" int8,
"c_module_name" varchar(255) COLLATE "pg_catalog"."default",
"c_name" varchar(255) COLLATE "pg_catalog"."default",
"c_path" varchar(255) COLLATE "pg_catalog"."default",
"c_description" varchar(255) COLLATE "pg_catalog"."default",
CONSTRAINT "cos_admin_open_api_pkey" PRIMARY KEY ("c_id")
)WITH (OIDS=TRUE);
COMMENT ON COLUMN "cos_admin_open_api"."c_id" IS '主键';
COMMENT ON COLUMN "cos_admin_open_api"."c_last_modifier" IS '修改人';
COMMENT ON COLUMN "cos_admin_open_api"."c_last_modify_time" IS '修改时间';
COMMENT ON COLUMN "cos_admin_open_api"."c_creator" IS '创建人';
COMMENT ON COLUMN "cos_admin_open_api"."c_create_time" IS '创建时间';
COMMENT ON COLUMN "cos_admin_open_api"."c_sort_number" IS '排序号';
COMMENT ON COLUMN "cos_admin_open_api"."c_tenant_id" IS '租户ID';
COMMENT ON COLUMN "cos_admin_open_api"."c_module_name" IS '模块名';
COMMENT ON COLUMN "cos_admin_open_api"."c_name" IS '名称';
COMMENT ON COLUMN "cos_admin_open_api"."c_path" IS '请求地址';
COMMENT ON COLUMN "cos_admin_open_api"."c_description" IS '描述';
insert into cos_admin_open_api (c_module_name,c_name,c_path,c_description) values('系统管理', '新增账号','/mas-admin/open/account/saveAccount','新增账号');
insert into cos_admin_open_api (c_module_name,c_name,c_path,c_description) values('系统管理', '修改密码','/mas-admin/open/account/changePwd','修改密码');
insert into cos_admin_open_api (c_module_name,c_name,c_path,c_description) values('系统管理', '解除账号站点关联','/mas-admin/open/account/deleteAccountInfoRel','解除账号站点关联');
insert into cos_admin_open_api (c_module_name,c_name,c_path,c_description) values('系统管理', '新增角色','/mas-admin/open/role/saveRole','新增角色');
insert into cos_admin_open_api (c_module_name,c_name,c_path,c_description) values('系统管理', '角色账号关联','/mas-admin/open/role/saveMapping','角色账号关联');
insert into cos_admin_open_api (c_module_name,c_name,c_path,c_description) values('系统管理', '角色账号取消关联','/mas-admin/open/role/removeMapping','角色账号取消关联');
insert into cos_admin_open_api (c_module_name,c_name,c_path,c_description) values('系统管理', '获取角色列表','/mas-admin/open/role/getRoleList','获取角色列表');

DROP TABLE IF EXISTS "cos_admin_open_gateway_log";
CREATE TABLE "cos_admin_open_gateway_log" (
"c_id" serial8 NOT NULL,
"c_create_time" timestamp(6),
"c_tenant_id" int8,
"c_site_id" int8,
"c_path" varchar(255) COLLATE "pg_catalog"."default",
"c_access_key" varchar(255) COLLATE "pg_catalog"."default",
"c_access_timestamp" varchar(255) COLLATE "pg_catalog"."default",
"c_sign" varchar(2000) COLLATE "pg_catalog"."default",
"c_client_ip" varchar(255) COLLATE "pg_catalog"."default",
"c_user_agent" varchar(255) COLLATE "pg_catalog"."default",
"c_result" bit(1),
"c_result_message" varchar(4000) COLLATE "pg_catalog"."default",
CONSTRAINT "cos_admin_open_gateway_log_pkey" PRIMARY KEY ("c_id")
)WITH (OIDS=TRUE);
COMMENT ON COLUMN "cos_admin_open_gateway_log"."c_id" IS '主键';
COMMENT ON COLUMN "cos_admin_open_gateway_log"."c_create_time" IS '访问时间';
COMMENT ON COLUMN "cos_admin_open_gateway_log"."c_tenant_id" IS '租户id';
COMMENT ON COLUMN "cos_admin_open_gateway_log"."c_site_id" IS '站点id';
COMMENT ON COLUMN "cos_admin_open_gateway_log"."c_path" IS '接口地址';
COMMENT ON COLUMN "cos_admin_open_gateway_log"."c_access_key" IS 'appId';
COMMENT ON COLUMN "cos_admin_open_gateway_log"."c_access_timestamp" IS '认证时间戳';
COMMENT ON COLUMN "cos_admin_open_gateway_log"."c_sign" IS '签名';
COMMENT ON COLUMN "cos_admin_open_gateway_log"."c_client_ip" IS '访问ip';
COMMENT ON COLUMN "cos_admin_open_gateway_log"."c_user_agent" IS '浏览器信息';
COMMENT ON COLUMN "cos_admin_open_gateway_log"."c_result" IS '访问状态';
COMMENT ON COLUMN "cos_admin_open_gateway_log"."c_result_message" IS '错误信息';


DROP TABLE IF EXISTS "cos_admin_third_party_auth";
CREATE TABLE "cos_admin_third_party_auth" (
"c_id" serial8 NOT NULL,
"c_last_modifier" int8,
"c_last_modify_time" timestamp(6),
"c_creator" varchar(50) COLLATE "pg_catalog"."default",
"c_create_time" timestamp(6),
"c_sort_number" int4,
"c_tenant_id" int8,
"c_access_key" varchar(255) COLLATE "pg_catalog"."default",
"c_api_id" varchar(255) COLLATE "pg_catalog"."default",
CONSTRAINT "cos_admin_third_party_auth_pkey" PRIMARY KEY ("c_id")
)WITH (OIDS=TRUE);
COMMENT ON COLUMN "cos_admin_third_party_auth"."c_id" IS '主键';
COMMENT ON COLUMN "cos_admin_third_party_auth"."c_last_modifier" IS '修改人';
COMMENT ON COLUMN "cos_admin_third_party_auth"."c_last_modify_time" IS '修改时间';
COMMENT ON COLUMN "cos_admin_third_party_auth"."c_creator" IS '创建人';
COMMENT ON COLUMN "cos_admin_third_party_auth"."c_create_time" IS '创建时间';
COMMENT ON COLUMN "cos_admin_third_party_auth"."c_sort_number" IS '排序号';
COMMENT ON COLUMN "cos_admin_third_party_auth"."c_tenant_id" IS '租户ID';
COMMENT ON COLUMN "cos_admin_third_party_auth"."c_access_key" IS 'appId';
COMMENT ON COLUMN "cos_admin_third_party_auth"."c_api_id" IS '开放接口id';


DROP TABLE IF EXISTS "cos_admin_third_party_info";
CREATE TABLE "cos_admin_third_party_info" (
"c_id" serial8 NOT NULL,
"c_last_modifier" int8,
"c_last_modify_time" timestamp(6),
"c_creator" varchar(50) COLLATE "pg_catalog"."default",
"c_create_time" timestamp(6),
"c_sort_number" int4,
"c_tenant_id" int8,
"c_site_id" int8,
"c_business_tenant_id" int8,
"c_name" varchar(255) COLLATE "pg_catalog"."default",
"c_description" varchar(255) COLLATE "pg_catalog"."default",
"c_access_key" varchar(255) COLLATE "pg_catalog"."default",
"c_secret_key" varchar(255) COLLATE "pg_catalog"."default",
"c_status" int4,
CONSTRAINT "cos_admin_third_party_info_pkey" PRIMARY KEY ("c_id")
)WITH (OIDS=TRUE);
COMMENT ON COLUMN "cos_admin_third_party_info"."c_id" IS '主键';
COMMENT ON COLUMN "cos_admin_third_party_info"."c_last_modifier" IS '修改人';
COMMENT ON COLUMN "cos_admin_third_party_info"."c_last_modify_time" IS '修改时间';
COMMENT ON COLUMN "cos_admin_third_party_info"."c_creator" IS '创建人';
COMMENT ON COLUMN "cos_admin_third_party_info"."c_create_time" IS '创建时间';
COMMENT ON COLUMN "cos_admin_third_party_info"."c_sort_number" IS '排序号';
COMMENT ON COLUMN "cos_admin_third_party_info"."c_tenant_id" IS '租户ID';
COMMENT ON COLUMN "cos_admin_third_party_info"."c_site_id" IS '站点ID';
COMMENT ON COLUMN "cos_admin_third_party_info"."c_business_tenant_id" IS '租户ID';
COMMENT ON COLUMN "cos_admin_third_party_info"."c_name" IS '接入方名称';
COMMENT ON COLUMN "cos_admin_third_party_info"."c_description" IS '描述';
COMMENT ON COLUMN "cos_admin_third_party_info"."c_access_key" IS 'appId';
COMMENT ON COLUMN "cos_admin_third_party_info"."c_secret_key" IS 'appSecret';
COMMENT ON COLUMN "cos_admin_third_party_info"."c_status" IS '状态 1启用0停用';

初始化安装

  • mas平台polardb数据库环境全新安装脚本获取地址:oss://foa5-oss/deploy/mas-polardb-sqls/5.9.x/

内部资料,请勿外传