云上办公系统项目

Posted 不懂开发的程序猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云上办公系统项目相关的知识,希望对你有一定的参考价值。

云上办公系统项目

申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计13077字,阅读大概需要30分钟
更多学习内容, 欢迎关注我
个人公众号:不懂开发的程序猿
个人网站:https://jerry-jy.co/

【警告】本篇博客较长,若引起阅读不适,建议收藏,稍后再读

1、云上办公系统

1.1、介绍

云上办公系统是一套自动办公系统,系统主要包含:管理端和员工端

管理端包含:权限管理、审批管理、公众号菜单管理

员工端采用微信公众号操作,包含:办公审批、微信授权登录、消息推送等功能

项目服务器端架构:SpringBoot + MyBatisPlus + SpringSecurity + Redis + Activiti+ mysql

前端架构:vue-admin-template + Node.js + Npm + Vue + ElementUI + Axios

1.2、核心技术

基础框架:SpringBoot
数据缓存:Redis
数据库:MySQL
权限控制:SpringSecurity
工作流引擎:Activiti
前端技术:vue-admin-template + Node.js + Npm + Vue + ElementUI + Axios
微信公众号:公众号菜单 + 微信授权登录 + 消息推送

1.3、开发环境说明

工具版本
后台SpringBoot 2.3.6 + MyBatisPlus 3.4.1
服务器Tomcat 8.5.73
数据库MySQL 8.0.27
Build ToolsMaven 3.8.5
前端Vue + ElementUI + Node.js 14.15.0
开发工具IDEA 2022.3
版本管理工具Git

1.4、产品展示

后台

登录页

【系统管理】–【用户管理】

【系统管理】–【角色管理】

【系统管理】–【菜单管理】

【审批设置】–【审批类型】

【审批设置】–【审批模板】

【审批管理】–【审批列表】

【公众号菜单】–【菜单列表】

前台

正常的前台页面是在微信公众号上,我这里没有整合

http://localhost:9090/#/

审批页面

测试号的页面展示

1.5、 个人总结

我认为该项目对我来说主要的帮助有:

1、项目是前后端分离的,符合目前主流业务开发逻辑,作为后端程序员,复习前端Vue + ElementUI框架, 巩固练习使用前端的脚手架工程,学习使用前后端联调开发过程

2、项目中引入JWT加密token,用作用户登录身份校验,用 SpringSecurity 来做权限控制,涉及多表查询,是项目的重难点学习对象,也是对前面学习SpringSecurity的一个巩固

3、前端使用微信公众号来作为前端接入口,以前没有开发过,也是亮点。

4、引入 工作流引擎:Activiti 作为组件,第一次用,学习下

5、集成Swagger,方便进行接口API的统一测试

2、后端环境搭建

2.1、建库建表

db.sql

sql语句太多了,见文末的资料

2.2、创建Maven项目

本项目采用Maven聚合模块来管理工程

pom文件

guigu-oa-parent

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.6.RELEASE</version>
  </parent>

  <groupId>com.jerry</groupId>
  <artifactId>guigu-oa-parent</artifactId>
  <version>1.0</version>
  <packaging>pom</packaging>


  <modules>
    <module>common</module>
    <module>model</module>
    <module>service-oa</module>
  </modules>

  <properties>
    <java.version>1.8</java.version>
    <mybatis-plus.version>3.4.1</mybatis-plus.version>
    <mysql.version>8.0.27</mysql.version>
    <knife4j.version>3.0.3</knife4j.version>
    <jwt.version>0.9.1</jwt.version>
    <fastjson.version>2.0.21</fastjson.version>
  </properties>

  <!--配置dependencyManagement锁定依赖的版本-->
  <dependencyManagement>
    <dependencies>
      <!--mybatis-plus 持久层-->
      <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>$mybatis-plus.version</version>
      </dependency>
      <!--mysql-->
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>$mysql.version</version>
      </dependency>
      <!--knife4j-->
      <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>knife4j-spring-boot-starter</artifactId>
        <version>$knife4j.version</version>
      </dependency>
      <!--jjwt-->
      <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>$jwt.version</version>
      </dependency>
      <!--fastjson-->
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>$fastjson.version</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>

common

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.jerry</groupId>
        <artifactId>guigu-oa-parent</artifactId>
        <version>1.0</version>
    </parent>

    <artifactId>common</artifactId>
    <packaging>pom</packaging>

    <modules>
        <module>common-util</module>
        <module>service-util</module>
    </modules>
</project>

common-util

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.jerry</groupId>
        <artifactId>common</artifactId>
        <version>1.0</version>
    </parent>
    <artifactId>common-util</artifactId>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <scope>provided </scope>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>
    </dependencies>
</project>

service-util

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.jerry</groupId>
        <artifactId>common</artifactId>
        <version>1.0</version>
    </parent>
    <artifactId>service-util</artifactId>

    <dependencies>
        <dependency>
            <groupId>com.jerry</groupId>
            <artifactId>common-util</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

</project>

model

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.jerry</groupId>
        <artifactId>guigu-oa-parent</artifactId>
        <version>1.0</version>
    </parent>
    <artifactId>model</artifactId>
    <dependencies>
        <!--lombok用来简化实体类-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <scope>provided </scope>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <scope>provided </scope>
        </dependency>
    </dependencies>

</project>

service-oa

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=

云上迁移(分享十)

       根据公司业务发展,公司计划发展云上迁移项目,云上迁移,顾名思义是把原有的系统迁移到公有云或者私有云上,也许是P2V或者V2V模式,都有可能。最近我也是这负责这个这个云上迁移方案流程制定,也就此与大家分享。

     云上迁移分6个阶段:系统评估与分析、方案设计、云平台环境准备、实施阶段、验证阶段和业务割接

  • 评估与分析

在系统评估与分析阶段,应确定迁移范围和目标,利用调查问卷、系统评估工具和访谈等评估形式,对应用系统进行评估,分析和汇总系统需求,形成调研报告。

  • 方案设计

在方案设计阶段,针对项目范围内的物理服务器进行虚拟化适用性分析,设计迁移场景和云平台架构方案。在云平台方案设计的基础上,进行迁移顺序、迁移方法等内容的设计,形成总体迁移方案。

  • 云平台环境准备

在云平台环境准备阶段,应判断现有的云平台环境是否能容纳被迁移的所有对象,以及,具体应检查计算资源、存储资源、网络资源以及数据库资源等,建立迁移所需的环境准备,如虚拟机、虚拟化网络等。

  • 实施阶段

在系统移植阶段,应根据既定的迁移方案严格的执行应用系统迁移,将物理机的应用系统移植到虚拟机内,有工具移植和手工部署两种方式。

  • 验证阶段

对云平台上的应用系统进行功能性测试、性能测试和稳定性测试,并进行应用验证,以便预先排除隐患,使得应用系统成功的运行在云平台环境下。

  • 业务割接

制定割接方案,依照割接方案进行割接操作,割接完成后进入割接后观察期,通过割接验收后将原系统下线。

应用系统在云平台上线1个月后,提供性能分析报告。

以上是关于云上办公系统项目的主要内容,如果未能解决你的问题,请参考以下文章

前端中的Vue是啥?

强烈推荐 GitHub 上值得前端学习的开源实战项目

Vue.js:轻量高效的前端组件化方案

分布式系统环境搭建

前端Vue.js经典开源项目汇总

前端vue是啥?