热释光;博士
类似facebook的消息传递系统,带有laravel/mysql,客人也可以向公司代理发送消息。公司代理可以开始与注册客户对话。
全部详细信息
我试图创建一个系统,允许注册客户/客户向公司代理发送消息,反之亦然,但我陷入了消息发送者/接收者和消息本身之间的关系中。
这是该系统的需求列表(我已经涵盖了几乎所有的项目):
允许注册客户和访客发送消息。顾客和客人只能向公司各部门发送信息。这意味着客户不能向其他客户发送消息。
在创建消息时,创建者需要通过从类别列表中选择一个选项来告诉正在创建的消息类型。
每个类别都需要由“角色”接收(因此,财务部门将接收与帐单相关的消息,客户服务部门将接收支持消息等)。
这些信息可以来自1)在网站的联系人页面上提供的联系人表单,其中询问姓名、电子邮件、电话号码、主题和信息;2)用户发送的邮件(系统通过webhook接收并妥善存储)。
各部门可随时联系任何用户(无论是否注册)。这意味着他们可以回复消息,但也可以“启动”对话(例如:请求确认/更新详细信息的消息)。
以下是我目前的情况:
这几乎涵盖了所有内容,除了用户/访客消息关系。
每条消息都是由某人(注册客户、注册公司代理或客户)创建的,并指向某人(注册客户到部门、客户到部门、注册公司代理到注册客户或注册公司代理回复客户)。
我目前的方法是使用两个表: Guest
以及 User
. 这个 User
表将包含客户和代理(这一个很简单,我只需要分配适当的角色)。这意味着我需要储存在 Message
表a显示发件人类型(访客或用户)、发件人id(id)、收件人类型(访客或用户)和收件人id。但是,例如,当customer1需要向帐单部门发送邮件时,我不知道哪个代理将答复该邮件。这是否意味着我应该在receiver字段中存储“null”?这可能会导致许多行包含空列。
提前谢谢
1条答案
按热度按时间r6vfmomb1#
有两个单独的表是一种方法。您需要确保在发送消息之后,给定的访客用户仍然可以访问他们的会话,因此您需要生成访客用户id,并且理想情况下需要一些其他身份验证来访问这些消息(安全地)。
就实际用户而言,我只需要一个表,其中存储有用户配置文件数据,其中“user type”是您的注册客户(c)或注册公司代理(a)类型。
尽管您可以简单地将其放在一个“user”表中,方法是在php内的mysql之外生成guest profile id和身份验证,然后将其插入到您的user表中。这将大大简化查询数据和索引的工作。
两个都可以,但我个人会选择第二个。