主页

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> ...

阅读更多