1. 需求背景
1.1 需求描述
界面上可以显示公司数据库中的数据库、数据库下面对应的数据表和表的注释,没有表查看权限的员工只能看到界面上显示的信息,不能查看具体的表内容。现在没有权限的员工想要查看具体表的信息,就需要在界面上选中想要查看的表名进行申请。员工在界面上选中先要查看的表信息,点击发送 "申请" 按钮后。后台需要做两件事情,一是把申请的信息存入到数据库中,而是发送一封邮件给管理员,由管理员进行申请审核。
1.2 需求图示
2. 分析需求
3. 表设计
4. 概要设计
5. 详细设计
6. 编码实现
7. 测试
/** * 发送复杂邮件 * * @param jsonObject * @throws Exception */ private void sendComplexMail(JSONObject jsonObject) throws Exception { MimeMessage mimeMessage = this.javaMailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true); // 发件人 mimeMessageHelper.setFrom("2435049674@qq.com"); // 收件人 mimeMessageHelper.setTo("2954518534@qq.com"); // 邮件主题 mimeMessageHelper.setSubject("测试主题-复杂"); // 正文 // 1. 申请信息构造 JSONObject applyUser = jsonObject.getJSONObject("applyUser"); ApplyUser applyUser1 = JSONObject.toJavaObject(applyUser, ApplyUser.class); JSONObject applyMessage = jsonObject.getJSONObject("applyMessage"); ApplyMessageNew applyMessageNew = JSONObject.toJavaObject(applyMessage, ApplyMessageNew.class); List<String> batchApplyAccountList = applyMessageNew.getBatchApplyAccount(); List<ApplyTableMessage> applyTableList = applyMessageNew.getApplyTable(); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("<b style='color:red;'>申请人信息如下:").append("</b>").append("<br>"); stringBuilder.append("<b>申请人姓名: </b>").append(applyUser1.getApplyUserName()).append("<br>"); stringBuilder.append("<b>申请人UM账号:</b>").append(applyUser1.getApplyUserAccount()).append("<br>"); stringBuilder.append("<b>申请人岗位:</b>").append(applyUser1.getApplyJob()).append("<br>"); stringBuilder.append("<b>申请人部门:</b>").append(applyUser1.getApplyDepartment()).append("<br>").append("<br>"); stringBuilder.append("<b style='color: red;'>申请信息如下:</b><br>"); stringBuilder.append("<b>申请原因:</b>").append(applyMessageNew.getApplyReason()).append("<br>"); stringBuilder.append("<b>申请时间:</b>").append(applyMessageNew.getFormatDate()).append("<br>"); stringBuilder.append("<b>批量申请人:</b>").append(batchApplyAccountList).append("<br>"); stringBuilder.append("<table border='1px' width='100%'>"); stringBuilder.append("<tr height='50px'>"); stringBuilder.append("<td>编号</td>"); stringBuilder.append("<td>库名</td>"); stringBuilder.append("<td>表名</td>"); stringBuilder.append("<td>表注释</td>"); stringBuilder.append("</tr>"); for (ApplyTableMessage tableMessage : applyTableList) { stringBuilder.append("<tr>"); stringBuilder.append("<td>").append(tableMessage.getId()).append("</td>"); stringBuilder.append("<td>").append(tableMessage.getDatabaseName()).append("</td>"); stringBuilder.append("<td>").append(tableMessage.getTableName()).append("</td>"); stringBuilder.append("<td>").append(tableMessage.getTableComment()).append("</td>"); stringBuilder.append("</tr>"); } stringBuilder.append("</table>"); mimeMessageHelper.setText(stringBuilder.toString(), true); // 附件 // mimeMessageHelper.addAttachment("1.jpg", new File("C:\\Users\\Sun\\Desktop\\1.jpg")); javaMailSender.send(mimeMessage); }