1 Star 135 Fork 3

唛盟开源/即时通讯系统-唛盟im后端

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

logo

唛盟im:涵盖消息发布、消息订阅、消息存储、群聊、私聊、公告推送、群组管理、群员管理、禁言、朋友圈等一站式即时通讯解决方案

gitee star

👉 https://maimengcloud.com 👈

快速导航

📢 简介唛盟im

唛盟im:涵盖消息发布、消息订阅、消息存储、群聊、私聊、公告推送、群组管理、群员管理、禁言、朋友圈等一站式即时通讯解决方案

📢 唛盟生态

💪唛盟生态遵循 “一个底座+N个专业子系统” 的架构,基于同一个底座的各个专业子系统可以任意组合形成一个大的业务系统。👉聊聊唛盟生态1+n架构

底座 mdp-core

mdp-core

N个专业子系统

以下专业子系统都是基于唛盟底座 + 唛盟低代码 搭建起来的,本工程为其中的研发项目管理子系统后端服务工程

唛盟子系统 说明 版本
低代码、0代码 低代码、0代码框架 3.0.0
账户、权限、组织管理 账户、权限、组织管理,支持多租户 3.0.0
数据模型 表结构设计、表数据增删改查等ddl、dml操作,在线执行sql等 3.0.0
第三方支付登录等 微信支付、支付宝支付、paypal支付、第三方登录 3.0.0
统一认证中心 短信、微信、账号登录 3.0.0
统一流程中心 审批、代办、设计流程、监控流程等 3.0.0
短信 群发消息 3.0.0
代码生成器 自动生成前后端代码 3.0.0
研发项目管理 产品管理、需求管理、任务计划、迭代、测试、效能等 3.0.0
即时通讯 即时通讯、消息、聊天 3.0.0
财务 财务子系统,凭证、报销、会计记账、成本、结算 等 3.0.0
协同办公 办公用品、会议、车辆、资产、档案、用印、采购、绩效等功能 3.0.0

💪 内置功能、界面展示

本工程为后端服务,功能列表以前端介绍为准,请点以下链接可查阅
内置功能

⚙ 技术栈

框架 说明 版本
spring boot spring boot 框架 2.6.11
mybatis plus 数据库操作框架 3.5.3.1
spring security 安全框架 2.1.7
jsqlparse sql解析引擎 4.7+
swagger 接口说明框架 2.2.8
logback 日志框架 1.2.3
jexl13 表达式引擎 3.1
flowable 流程引擎-可换 6.4.2
spring cloud cloud框架-可换 2020.0.0
spring cloud consul cloud框架-可换 1.10+
spring cloud consul cloud框架-可换 1.10+
spring oauth2 统一认证中心-可换 5.2.2
netty socket通讯框架 4.1.24.Final

⚙ 开发工具

插件名 功能
idea java 开发工具 社区版、企业版都可
mysql 数据库 mysql8以上,其它数据库请联系客服

⚙ 工程结构说明

子工程 功能
mdp-im-core-service-api 即时通讯核心api抽象及一些公共工具
mdp-im-core-service 核心服务
mdp-im-socket socket服务启动、初始化等
mdp-im-publish 通讯模型之消息发布端
mdp-im-subscriber 通讯模型之消息订阅端
mdp-im-rest-api 控制层http接口
mdp-im-plugin 通讯模型之消息处理插件,需要添加消息处理,在此工程添加插件
mdp-im-plugin-api 通讯模型之消息处理插件抽象
mdp-im-bootstrap 启动器-单体
mdp-im-bootstrap-cloud 启动器-cloud

⚙ 快速开始

环境要求

数据库版本mysql8,jdk版本java-8-openjdk-amd64,部署时需要用到redis版本3.0.6以上

开发


# 克隆开发底座项目
git clone https://gitee.com/maimengcloud/mdp-core.git
# 安装开发底座依赖
mvn install 

# 克隆oauth2项目(非必须,接入认证中心才需要)
git https://gitee.com/maimengcloud/mdp-oauth2-backend
# 安装oauth2依赖
mvn install

# 克隆cloud项目(非必须,部署cloud版本才需要)
git https://gitee.com/maimengcloud/mdp-cloud-backend
# 安装cloud依赖
mvn install  

# 克隆im项目
git clone https://gitee.com/maimengcloud/mdp-im-backend.git
# 安装im依赖
mvn install

# 导入数据库脚本
 
# 1.创建im库
[im.sql](./sql/im.sql)

# 配置数据库链接链接(需要提前准备数据库)
[application-prod.yml](./mdp-im-bootstrap/src/main/resources/application-prod.yml)

# 启动服务 ⚠注意启动类放在test下面,
找到并运行[ImApplication.java](./mdp-im-bootstrap/src/main/java/com/mdp/ImApplication.java) 

http访问端口 http://localhost:7019
socket访问端口 127.0.0.1:3333

修改socket端口

mdp.im.port=3333

发布

服务器的目录结构

假设工作空间为/home/m1/

/hom/m1/
	├── start-service          => 唛盟一键启停脚本存放目录
	├── config                 => spring boot的外置配置文件存放目录
	├── lib                    => jar包存放目录
	├── conf                   => 其它配置文件存放目录
	├── consul                 => consul安装目录
	├── logs                   => 唛盟日志存放目录
	├── backup-log             => 日志备份存放目录
	├── arcfile                => 唛盟内容素材上传下载访问的目录(素材存放目录)
	├── bin                    => 一些公共脚本目录,如日志定时清理脚本、微服务注销脚本
	 

构建

# 构建 
在mdp-im-backend下执行 
mvn instal

发布及启停服务

# 部署 指部署jar包到nexus私服,如果企业没有nexus私服,则忽略此步骤
在mdp-im-backend下执行
mvn deploy

# 手工发布到测试环境或者生产环境
如果是单体应用则拷贝并推送到服务器上[mdp-im-bootstrap-3.0.0-RELEASE.jar](./mdp-im-bootstrap/target/im-bootstrap-3.0.0-RELEASE.jar)
如果是微服务则拷贝并推送到服务器上[mdp-im-cloud-bootstrap-3.0.0-RELEASE.jar](./mdp-im-cloud-bootstrap/target/im-cloud-bootstrap-3.0.0-RELEASE.jar)

# 启动应用(单体、cloud对jar包的引用不同,需要根据情况修改下脚本bootstrap-im-00.sh,默认是单体)初次部署把./start-service/bootstrap-im-00.sh拷贝到服务器上
sh bootstrap-mdp-im-00.sh

接入统一认证中心

1.如果部署了统一认证中心,需要做配置更改。 统一认证中心相关的配置项:

mdp.jwt.connect-oauth2-server=true|false  如果不需要对接统一认证中心,connect-oauth2-server设为false,则对jwt token的解析将采用HS256算法解密,默认为true
mdp.oauth2.server.uri=统一认证中心的访问地址  如http://127.0.0.1:7000,如果是cloud环境下可以设置为http://oauth2server

mdp:
  jwt:
    connect-oauth2-server: true
  oauth2:
    server:
      uri: http://127.0.0.1:7000

2.本地起的后端服务pom.xml文件需要引入mdp-client-oauth2 或者mdp-client-oauth2-cloud 单体应用下:

      <!-- mdp-client-oauth2 必须放在业务包之上优先加载 -->
      <dependency>
          <groupId>com.mdp</groupId>
          <artifactId>mdp-client-oauth2</artifactId>
      </dependency>

cloud环境下

      <!-- mdp-client-oauth2-cloud 必须放在业务包之上优先加载 -->
      <dependency>
          <groupId>com.mdp</groupId>
          <artifactId>mdp-client-oauth2-cloud</artifactId>
      </dependency>

场景1 开发时,登录时对接统一认证中心进行登录,本地起了部分后端服务

此场景下,本地起的后端服务需要配置以下几个选项,让本地后端服务对jwt令牌的解析验证调用统一认证中心,否则会报令牌错误。

mdp.jwt.connect-oauth2-server=true
mdp.oauth2.server.uri=统一认证中心的访问地址

场景2 生产测试环境

此场景下配置根场景1一致

接入spring cloud

唛盟提供了完整的部署例子mdp-im-cloud-bootstrap

1 下载mdp-cloud-backend并安装

2 在*-cloud-bootstrap/pom.xml文件中添加cloud客户端的引用

  <dependency>
    <groupId>com.mdp</groupId>
    <artifactId>mdp-boot-starter-cloud</artifactId>
  </dependency>

3 需要在配置文件中配置spring.cloud*相关的配置项。

  1. spring cloud如何配置以官方文档为准
  2. 唛盟相关的有以下几个配置项需要做特殊处理
# 网关地址 如果接入cloud,指cpringcloud的gate服务的访问地址 http://gate,如果不接入cloud,这里填写nginx的地址,或者注释掉
mdp.api-gate= http://gate
# 统一认证中心的访问地址  如http://127.0.0.1:7000,如果是cloud环境下可以设置为http://oauth2server
mdp.oauth2.server.uri= http://oauth2server

4 打包部署

注意,部署的是*-cloud-bootstrap*.jar包,对应的一键启停脚本也需要做部分修改。具体例子查看bootstrap-xm-00.sh)

异构目录下如何加载唛盟包

唛盟的java代码统一在com.mdp下,异构目录下如何加载唛盟的spring bean 假设企业的业务包在com.ipcm下 有两种办法:

  1. 把启动类置于com下。
  2. 在**Application.java同目录下创建AutoConfig.java
 /**
  * 要使用mdp平台功能,必须 扫码com.mdp包
  * 一些默认公共配置
  */
  @ComponentScan(basePackages={"com.mdp"})
  @Configuration
  public class AutoConfig {
  }

服务端多语言支持

服务端支持多语言0编码切换,主要涉及以下内容

1 配置文件

在配置文件application-*.yml中指定语言

mdp:
  # 站点语言类型cn\en等
  site-type: cn
  

2 语言包

msgtpl.properties 格式为:
mdp.msg.tpl.${tipscode}@${mdp.site-type}=消息内容

举例如下:

mdp.msg.tpl.tipscode1@cn=%s先生/女士,你好,恭喜获得奖励¥ %s 
mdp.msg.tpl.tipscode1@en=Hello %s, congratulations on receiving a reward of ¥ %s 

${tipscode}来自以下几种地方:

1.BizException.java抛出的异常,唛盟框架会自动匹配语言

    throw new BizException(LangTips.errMsg("tipscode1","%s先生/女士,你好,恭喜获得奖励¥ %s","陈天天","1000"));
  1. 控制层返回结果后,唛盟框架会自动做语言切换,前端会收到已切换的消息
	@RequestMapping(value="/list",method=RequestMethod.GET)
	public Result list(){
		 return Result.ok("tipscode1","%s先生/女士,你好,恭喜获得奖励¥ %s","陈天天","1000"); 
	}

🔔️ 特别提醒

mdp 4.0 版本已经开始规划更新了,尽请期待新版本的诞生吧

🔔️ 特别提醒

xm 4.0 版本已经开始规划更新了,尽请期待新版本的诞生吧

💯 项目管理演示环境

  1. 账户管理平台
  2. 唛盟众包-网页
  3. 项目管理-网页
  4. 项目管理-小程序
    drawing

🐞 交流讨论 、反馈 BUG、提出建议等

  1. 快扫描下方左侧微信二维码和我们一起交流讨论吧!(备注 唛盟-mdp 进群) drawing

  2. 唛盟微信公众号查看一些基础教程
    drawing

  3. 反馈 BUG、提出建议,欢迎新建:issues,开发人员会不定时查看回复。

  4. 参与贡献,请查看贡献指南

💲 打赏

感谢所有赞赏以及参与贡献的小伙伴,你们的支持是我们不断更新前进的动力!微信扫一扫,赏杯咖啡呗!
drawing

🔔商务合作

序号 合作项目 详细介绍 费用说明
1. 打赏获得赞助商名额 在赞助商列表展示(添加微信沟通) 不限额度
2. 新组件开发 提供组件扩展、优化服务 视复杂程度而定
3. 开发问题解答 如果使用该产品遇到棘手问题需要解决,添加微信进行沟通解决 免费
4. 开发培训 提供开发流程介绍、技术介绍、功能介绍、部署流程介绍,仅限线上培训 加微信详聊
5. 扩展问题解答 如果需要使用该产品进行自有业务系统研发,需要我方提供意见建议,我方收取一定费用后提供相应服务 加微信详聊
6. 广告合作 广告位(精品项目推荐、赞助商展位) 加微信沟通
MIT License Copyright (c) 2018-present 广州擎勤网络科技有限公司 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

唛盟im:涵盖消息发布、消息订阅、消息存储、群聊、私聊、公告推送、群组管理、群员管理、禁言、朋友圈等一站式即时通讯解决方案 展开 收起
Java
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/maimengcloud/mdp-im-backend.git
git@gitee.com:maimengcloud/mdp-im-backend.git
maimengcloud
mdp-im-backend
即时通讯系统-唛盟im后端
master

搜索帮助