openmeetings(十二)

2021SC@SDUSC

openmeetings(十二)

一.前言

前面几章,我们分析了,quartz目录下的源码,今天这篇文章我们来分析service目录下的最后一个子目录room

在这里插入图片描述
我们看到,room目录下只有一个源文件,invitation的管理,

@Autowired
	private InvitationDao invitationDao;
	@Autowired
	private MailHandler mailHandler;

成员变量有操作数据库中invitation的dao层对象和emailhandle,我们来看一个方法的实现
生成email,循环添加加入者,最后将邮件发送出去。

@Override
	public void sendInvitationLink(Invitation i, MessageType type, String subject, String message, boolean ical) throws Exception {
		String invitationLink = null;
		if (type != MessageType.Cancel) {
			IApplication app = ensureApplication(1L);
			invitationLink = app.getOmInvitationLink(i);
		}
		User owner = i.getInvitedBy();

		String invitorName = owner.getFirstname() + " " + owner.getLastname();
		String template = InvitationTemplate.getEmail(i.getInvitee(), invitorName, message, invitationLink);
		String email = i.getInvitee().getAddress().getEmail();
		String replyToEmail = owner.getAddress().getEmail();

		if (ical) {
			String username = i.getInvitee().getLogin();
			boolean isOwner = owner.getId().equals(i.getInvitee().getId());
			IcalHandler handler = new IcalHandler(MessageType.Cancel == type ? IcalHandler.ICAL_METHOD_CANCEL : IcalHandler.ICAL_METHOD_REQUEST);

			Map<String, String> attendeeList = handler.getAttendeeData(email, username, isOwner);

			List<Map<String, String>> atts = new ArrayList<>();
			atts.add(attendeeList);

			// Defining Organizer

			Map<String, String> organizerAttendee = handler.getAttendeeData(replyToEmail, owner.getLogin(), isOwner);

			Appointment a = i.getAppointment();
			// Create ICal Message
			String meetingId = handler.addNewMeeting(a.getStart(), a.getEnd(), a.getTitle(), atts, invitationLink,
					organizerAttendee, a.getIcalId(), getTimeZone(owner).getID());

			// Writing back meetingUid
			if (Strings.isEmpty(a.getIcalId())) {
				a.setIcalId(meetingId);
			}

			log.debug(handler.getICalDataAsString());
			mailHandler.send(new MailMessage(email, replyToEmail, subject, template, handler.getIcalAsByteArray()));
		} else {
			mailHandler.send(email, replyToEmail, subject, template);
		}
	}

改类中实现了发送invitation,生成invitation,接受invitation等操作,我们来分析发送invitaion链接的方法,其他方法大致调用对象都是类似的,就不再赘述。

总结

本篇文章分析的内容较少,改目录下仅有invitationmanager一个java文件,业务逻辑也与之前其他部分重合,所以没有什么新出现的技术。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值