35.微人事部署问题
最新版部署视频教程:前后端分离项目(微人事)常见部署问题汇总
35.1 下载问题
有两个地方可以下载到最新版的微人事,如果在 GitHub 上下载失败,也可以从 Gitee 上下载。
GitHub:https://github.com/lenve/vhr
Gitee:https://gitee.com/lenve/vhr
35.2 提前准备
准备三样东西:
空的 vhr 数据库
redis
rabbitmq
35.3 项目导入
项目的 Maven 依赖下载失败,可以参考这篇文章:
依赖下载失败解决方案
35.4 项目配置
vhrserver 的 web 模块 application.properties 中配置三样:
数据库连...
34.两年了,微人事重大更新
不知为什么,当我准备写这篇文章的时候,就想起下面这句台词:
从九月份到现在,三个月忙里偷闲,终于将微人事(https://github.com/lenve/vhr)重构了一遍。
第一版的微人事发布的时候,当时 Spring Boot2 还没出来,当时用的还是 Spring Boot1.5.x,Vue 当时倒是用的 Vue2,前端构建工具用的 vue-cli2,技术上来说,稍微有点老;另一方面大家看我在 GitHub 上的提交日志,应该可以看出来,第一版的微人事大概在不到两周的时间就搞出来了,所以里边有许多松哥自己也不是特别满意的地方,不过一直以来工作比较忙,晚上回到家也有很多事情要做,一直没空去优化重构微人事。
去年在我的书出版前夕,为了配合书里的 Demo,我将微人事的 ...
33.系统通知功能实现
不同于在线聊天,系统通知会在服务端进行保存。服务端数据库设计如下:
msgcontent表用来保存每一条系统通知,sysmsg表则用来记录每一个用户和每一条通知的关系,比如该用户是否阅读了该条通知。
系统通知的整个处理流程是这样的:
用户登录成功来到 Home 页面后,会主动发起一次请求,查看是否有未读通知,如果有,则页面右上角的闹铃按钮会有相关提示
管理员发送了系统通知之后,会由 websocket 主动推送一条消息,告诉当前登录用户有新通知
用户打开系统通知页面后,未读通知会有红点提示,打开该通知后,该通知就变为已读通知
通知的发送则是先由前端发起请求,向数据库中添加一条记录,添加成功后,再发送一条群发通知的请求
接下来我们来看看一个大致的实现步骤。...
32.在线聊天功能实现
在线聊天使用了 SpringBoot+WebSocket 实现,为了保证用户隐私,所有的聊天数据都保存在系统本地,服务器只进行了数据转发。OK,那接下来,我们来看下大致的实现步骤。
32.1 服务端
服务端首先加入 websocket 依赖,如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
创建 WebSocket 的配置类,如下:
@Configuration
@EnableWe...
31.在线聊天功能介绍
在线聊天功能是为了方便HR快速交流,由于 HR 人数有限,因此这里并未考虑高并发问题,小伙伴思考问题一定要结合上下文环境。OK,我们先来看看效果图:
31.1 在线聊天效果图
登陆成功后,点击右上角的闹铃图标,进入到消息页面,点击 好友聊天 选项卡,效果如下:
此时换个浏览器,或者使用 chrome 中的多用户模式再打开一个浏览器,以另外一个用户身份登录,开始进行聊天,聊天页面如下:
如果系统管理员正在和韩愈聊天,此时李白发来的消息,则李白的姓名旁会有提示:
31.2 系统消息效果图
只有管理员具备发送系统消息的权限,管理员的系统消息页面如下:
普通 HR 的系统消息页面没有发送按钮,发送系统消息页面如下:
消息发送成功之后,会有红点提示未读消息,如...
30.员工账套设置功能介绍
整体来看,员工账套设置还是比较简单的,都是常规功能常规页面,如下:
当鼠标移动到账套标签上时,会自动显示该账套详情信息:
点击修改账套按钮,会弹出一个下拉框,可以修改账套:
其他的都是常规功能,我就不一一介绍了,小伙伴部署成功后可以自行查看。
扫码关注微信公众号 江南一点雨,回复 2TB,获取超 2TB Java 学习教程~
29.工资账套管理功能介绍
整体来看,工资账套管理还是比较简单的,都是常规功能常规页面,如下:
可以添加工资账套,添加用到了Steps 步骤条:
其他的都是常规功能,我就不一一介绍了,小伙伴部署成功后可以自行查看。
扫码关注微信公众号 江南一点雨,回复 2TB,获取超 2TB Java 学习教程~
28.SpringBoot中使用新线程发送邮件
由于邮件的发送是一个阻塞操作,因此我将之放到子线程中完成,因此我需要在 SpringBoot 中配置一个线程池,如下:
@Bean
public ExecutorService executorService() {
return Executors.newCachedThreadPool();
}
在配置类中提供上面这个 bean 即可,然后在需要用的地方将之注入即可:
@Autowired
ExecutorService executorService;
然后使用:
executorService.execute(new EmailRunnable(employee));
扫码关注微信公众号 江南一点雨,回复 2TB,获取超 2TB Java 学习教程~
27.Java中邮件的发送
邮件发送也是一个老生常谈的问题了,代码虽然简单,但是许多小伙伴对过程不太理解,所以还是打算和各位小伙伴聊聊这个话题。
27.1 邮件协议
我们经常会听到各种各样的邮件协议,比如 SMTP、POP3、IMAP,那么这些协议有什么作用,有什么区别?我们先来讨论一下这个问题。
SMTP 是一个基于 TCP/IP 的应用层协议,江湖地位有点类似于 HTTP,SMTP 服务器默认监听的端口号为 25。看到这里,小伙伴们可能会想到既然 SMTP 协议是基于 TCP/IP 的应用层协议,那么我是不是也可以通过 Socket 发送一封邮件呢?回答是肯定的。
生活中我们投递一封邮件要经过如下几个步骤:
深圳的小王先将邮件投递到深圳的邮局
深圳的邮局将邮件运送到上海的邮局
上海的小...
26.SpringBoot中使用Freemarker邮件模板生成邮件
当邮件内容比较简单的时候,我们可能一行字符串就能表达所有意思了,但是大部分情况下,我们的邮件内容都比较复杂需要用 HTML 来组织邮件内容,而且 HTML 中的数据还要动态修改,这时,最好的解决方案莫过于 Freemarker 了。
有的小伙伴看到 Freemarker 就疑惑了,你不是号称前后端分离么,怎么还用上 Freemarker 了?freemarker 使用的最多的场景就是做页面模板,但是它不仅可以做 HTML 模板(大部分情况下它都扮演了这个角色),还可以做 XML、邮件等的模板,本文我们就来看看作为邮件模板,Freemarker 要怎么使用。
26.1 引入依赖
第一步当然是引入 freemarker 依赖了,如下:
<dependency>
...
共计 55 篇文章,6 页。