README.md

    Scala CI with Gradle

    在线测试地址 http://im.dreamylost.cn

    在线API文档 swagger-ui

    敬请关注进阶版:https://github.com/bitlap/zim 基于scala、zio、tapir、circe、akka-http、scalikejdbc、redis实现的纯异步、函数式、流式API的LayIM。

    技术栈

    • 开发语言:Scala
    • 平台:JVM
    • 前端:LayIM 3.0
    • MVC:Spring Boot
    • 数据库:Redis、MySQL
    • DAO:Mybatis
    • 分页:PageHelper
    • 连接池:Druid
    • WebSocket:Akka Actor、Akka HTTP
    • 邮件:Java Mail
    • API文档:Swagger
    • 构建工具:Gradle
    • 代码生成:scala-macro-tools

    项目结构

    Sim
    ├─ gradle                                                 - 本项目gradle使用6.5.1,高版本有bug,编译不了
    ├─ .gitattributes                                         - Git仓库显示语言的配置
    ├─ .gitignore                                             - Git忽略文件的配置
    ├─ .scalafmt.conf                                         - Scala代码格式化的配置
    ├─ README.md
    ├─ build.gradle
    ├─ deploy.sh                                              - 部署脚本
    ├─ settings.gradle
    └─ src
           ├─ main
           │    ├─ resources
           │    │    ├─ application.conf                      - Websocket配置:基于Akka实现
           │    │    ├─ application.properties                - Springboot程序配置
           │    │    ├─ data.sql                              - 初始化数据
           │    │    ├─ favicon.ico
           │    │    ├─ layim.png
           │    │    ├─ mapper                                - mybatis mapper文件
           │    │    └─ schema.sql                            - 初始化表结构
           │    ├─ scala
           │    │    └─ io.github.dreamylost                  - 代码实现   
           │    │    └─ io.github.dreamylost.websocket        - websocket代码实现
           │    └─ webapp
           │           ├─ WEB-INF                             - 聊天记录和背景页
           │           ├─ index.html                          - 首页  
           │           └─ static                              - 静态资源文件
           └─ test

    本地调试

    配置Mysql数据库,Redis以及邮件服务器,如果不需要邮件相关服务,可以在UserService.scala中注释掉相关的代码

    1. 创建MySQL库 websocket
    2. schema.sqldata.sql文件从resources/sql/目录移动到resources/,初始化表结构和数据,如需要自己mock数据,参考 RandomData.scala 构造
    3. 查看application.confapplication.properties配置
    4. 启动 Application.scala
    5. 访问 http://localhost:8080
    6. 登录

    选取t_user表中的任意一条数据,如:

    • 邮箱 15906184943@sina.com
    • 密码 123456(所有mock数据都是一个密码)
    • 激活 将status状态改为nonactivated(需要激活才能登录,要配置JavaMail)

    注意:

    1. 使用环境参数spring.profiles.active=dev,拷贝一份配置命名为application-dev.properties,修改数据库信息
    2. 修改model类后需要清理build目录的class文件
    3. 数据库每次启动自动格式化,不需要格式化就删掉resources下的schema.sqldata.sql

    觉得OK点个赞即可,有问题可以创建issue。

    部署

    # 在Sim目录执行
    bash deploy.sh 1.3.0 # 1.3.0表示最新版本号

    TODO

    • 使用scalikejdbc替代mybatis
    • 使用纯HTML替代余下的jsp
    • 使用akka-http替代springmvc
    • 使用zio替代springboot
    • 使用zio-ftp存储图片和文件,移除scala.util.Using
    • 使用zio-json替代Jackson
    • 使用zio-crypto替代spring-security
    • 使用zio-redis替代jedis
    • 使用sbt替代gradle
    • 考虑使用zio-loggingzio-actors
    • 达成目标:完全基于ZIO生态的安全、异步、函数式风格的Scala IM系统。(仅用于学习)

    项目简介

    Scala、Spring Boot、Akka HTTP 实现的LayIM

    🚀 Github 镜像仓库 🚀

    原项目 https://github.com/jxnu-liguobin/Sim

    发行版本 3

    1.3.1

    全部发行版

    贡献者 2

    梦境迷离 @qq_34446485
    梦境迷离 @梦境迷离

    开发语言

    • Scala 99.0 %
    • Java 1.0 %
    • Shell 0.1 %