文章目录
个人记录 (2023.06.11)
一、简介:
项目名称:尚硅谷Java项目《云尚办公》 以SpringBoot为核心
开发时间:24天
开发工具:后端IDEA2020.3.2、前端VSCode、内网穿透工具Ngrok、数据库Navicat、服务器部署redis
所用技术:SpringBoot、MyBatisPlus、SpringSecurity、Activiti、Redis、微信公众号部分功能、自动化办公部分功能 等
二、实现的功能模块有:
1、管理端
2、用户端
3、微信公众号(临时) 消息推送,数据绑定
三、责任描述:
负责开发,运营(还没部署到服务器上)
一、项目功能模块和核心业务流程
1. 管理端
系统管理
- 用户管理
重点:设置用户对应角色 - 角色管理
重点:分配给角色不同权限,根据不同的权限显示不同的操作页面 - 菜单管理
重点:封装数据库中的菜单数据,前端页面以缩进的方式表示嵌套关系,其中菜单数据格式也方便传到前端作动态路由设置
审批模块
-
审批类型管理
-
审批模板管理
重点:创建不同的审批模板,可发布
工具类:form-create :可以通过 JSON 生成功能的表单生成组件
form-create-designer 可以通过拖拽的方式快速创建表单 -
审批列表
公众号菜单管理
- 消息审批
- 消息推送
工具类:weixin-java-mp 用于微信开发
2. 员工端
微信授权登录
- 通过手机号和微信openid进行用户关联
- 显示所有审批类型和模板
- 发起申请
- 消息推送
- 待处理和已处理
- 查询审批详情和审批操作
3. 数据库
- 表之间关系
角色表、用户表、菜单表
用户和角色是多对多关系
角色和菜单是多对多关系
二、项目技术
基础框架 | SpringBoot |
数据缓存 | Redis |
数据库 | MyBatisPlus + MySQL |
权限控制 | SpringSecurity |
工作流引擎 | Activiti7 |
前端技术 | vue-admin-template + Node.js + Npm + Vue + ElementUI + Axios |
微信公众号 | 公众号菜单 + 微信授权登录 + 消息推送 |
三、项目问题和解决方式
1. 跨域问题
访问协议: http https
ip地址(域名): oa.atguigu.com oa.baidu.com
端口号:8800 9528
原因:在不做任何处理的情况下,跨域请求无法成功,因为浏览器基于同源策略会对跨域请求做一定的限制
同源策略:
同源策略发生的场景——浏览器。如果不是浏览器的话, 就不会受到同源策略的影响。也就是说,两个服务器直接进行跨域请求是可以进行数据请求的。同源策略限制了从同一个源加载的文档或者脚本如何与来自另 一个源的资源进行交互。同源策略用于隔离潜在恶意文件的重要安全机制。
同源策略限制内容:
Cookie、LocalStorage、IndexedDB 等存储性内容
DOM 节点
AJAX 请求不能发送
多种解决方式:
(1)在后端进行配置
- 在controller类上面添加 @CrossOrigin 注解
- CORS跨域资源共享 ( 简单请求 / 复杂请求 ) 其中有编写过滤器等方法
(2)在前端进行配置
- 添加跨域设置
(3)Nginx反向代理
- 搭建nginx中转服务器,用于转发请求
2. mapper扫描问题
//第一种方式 :创建配置类,使用@MapperScan注解
@Configuration
@MapperScan(basePackages = {"com.atguigu.auth.mapper","com.atguigu.process.mapper","com.atguigu.wechat.mapper"})
public class MybatisPlusConfig { }
//第二种方式:在mapper的接口上面添加注解 @Mapper
@Mapper
public interface SysMenuMapper extends BaseMapper<SysMenu> { }
3. xml文件加载问题
Maven默认情况下,在src - main -java目录下面,只会加载java类型文件,其他类型文件不会加载的
第一种解决方式:把xml文件放到resources目录下 ( 同名文件夹 )
第二种解决方式:在pom.xml和项目配置文件进行配置
4. 流程定义部署zip文件
上传zip文件规范(要求)
(1)zip文件名称和流程key保持一致
例:< process id=“qingjia” isExecutable=“true”> 文件名称 qingjia.zip
(2)在zip文件打包xml文件,xml文件命名 .bpmn20.xml
例:jiaban.bpmn20.xml
5. 内网穿透问题
接口和页面在本地localhost,公众号不能直接访问本地路径的,需要使用内网穿透
第一个:前端公众号页面通过内网穿透到本地后端页面 9090
第二个:公众号里面功能接口通过内网穿透到本地后端接口 8800
6. 其他问题
公众号关闭自动授权,否则会出现“自动授权”,“重新访问” 的死循环
解决方案:关闭公众号自动授权,或者增大访问超时时间
后续
其实发现它有的功能还可以写,性能也不算高,希望后期可以多次优化更新。