delatbabel/contacts

Laravel 联系人管理包。

v1.0.5 2016-12-29 09:10 UTC

README

StyleCI Latest Stable Version Total Downloads

一个用于 Laravel 简单联系人管理和存储的包。

非常适合用于电子商务、CRM 或其他需要进行联系人管理的系统。

这并不是一个完整的 CRM 系统,但目标是能够将联系人列表与独立的 CRM 系统同步。

目标

存储以下内容

  • 联系人
  • 公司
  • 地址

与外部 CRM 系统接口。目标系统包括任何提供合理 API 的系统,首先是开源系统。我们计划集成的开源 CRM 系统列表如下:Top 10 Open Source CRM Systems。我们计划接口的其他系统包括

安装

将这些行添加到您的 composer.json 文件中

    "require": {
        "delatbabel/contacts": "~1.0"
    },

完成上述操作后,运行 composer update 命令

    composer update

或者只需运行以下命令

    composer require delatbabel/contacts

注册服务提供者

composer update 完成后,将此行添加到您的 config/app.php 文件中的 'providers' 数组中

    Delatbabel\Contacts\ContactsServiceProvider::class,

整合并运行迁移和种子文件

最后,整合并运行迁移脚本以创建和填充数据库表,如下所示

php artisan vendor:publish --force
php artisan migrate
php artisan db:seed

我已经包含了一个 ContactSeeder,它按照正确的顺序整合了类别、配置和键列表的种子文件。您可以使用这个文件或自行选择。要使用它,请将 ContactSeeder 包含到您的常规 DatabaseSeeder 类或用于填充数据库的其他类中。

我还包含了一个 ContactSampleSeeder,它将一些示例公司和个人的联系人填充到联系人数据库中。您可以查看这个文件来创建自己的种子文件,或者可能从 CSV 文件或 CRM 等中拉取数据。由您决定。

使用示例

通用使用示例:TODO,尽管请参阅 ContactSampleSeeder 以获取创建地址、公司和联系人的简单示例。

地理编码

有关更多信息,请参阅 Google 上的 地理编码简介

地理编码功能已大部分实现。以下是 geocoder 的示例 URL

https://maps.google.com/maps/api/geocode/json?address=10+Downing+Street,London,United+Kingdom

geocoder 在 Address 模型类中工作,可以自动使用 Google API 从部分地址中获取地址组件。

您可以通过将配置变量 contacts.geocode.enable 设置为 false 来禁用 geocoder。

您可以将 geocoder 配置为使用 API 密钥(这意味着您可以超过每天 2500 次请求的限制),通过将 contacts.geocode.use_api_key 设置为 true,并设置 contacts.geocode.api_key 为 API 密钥。请参阅 ContactConfigSeeder 以了解如何设置这些配置变量(在数据库中的 configs 表中)。

使用限制

API 密钥

地理编码每天免费提供 2500 次请求,如果需要超过此限制,则需要获取 API 密钥。

TODO

Zoho 集成

构建与 Zoho 的集成。这似乎有一个易于使用的 API。

示例

任务

  • 构建通用的调用接口。
  • 构建 Zoho CRM API 字段与我们的字段的映射。
  • 构建上传和下载每种记录类型的服务。

阅读此内容

  • Zoho CRM 模块和字段 -- 注意,在 Zoho 中,有“模块”的概念,例如 Leads、Accounts、Contacts、Potentials 等,用于不同类型的联系(这在 CRM 系统中很常见),而在这个包中,我们有一个包含不同联系类别的单一联系表。例如,在样本数据中,我们将 UK PM 办公室和 David Cameron 设置为“潜在客户”联系类型。此外,Zoho 混合公司和联系数据,而我们将其保存在不同的表中。

这些链接在登录到 Zoho CRM 时有效

Salesforce.com 集成

其他

其他集成可能会根据需求进行,但最可能的是

更多功能

在不跨越完整 CRM 的界限的情况下,这是我认为我们应该实施的内容

  • 联系、公司和地址去重。
  • i18n,包括更好的姓名处理和姓名排序生成(“姓氏,名字”或“名字 姓氏”或“姓氏 van der,名字”)(进行中)。

架构

这已从一个旧 Laravel 3 包移植过来,该包处理电子商务系统内的联系管理。早期的想法是将它变成一个完整的 CRM 系统,但已经有几个好的 CRM 系统,我觉得没有必要重新发明轮子。

然而,作为任何电子商务网站的基本起点,联系和客户管理是一个需求。能够从电子商务系统同步数据到 CRM 系统将是一个优势。

数据结构

基本表

  • addresses
  • companies
  • contacts
  • crms

关系

  • companies 多对多 addresses
  • contacts 多对多 addresses
  • companies 1对多 contacts
  • contacts 多对多 categories(来自 delatbabel/nestedcategories)
  • companies 多对多 categories

在 addresses 上的多对多枢纽表有 start_date 和 end_date 字段,以便在需要时存储过去和当前的地址。

依赖关系

这些由 composer 自动处理

  • Applog 用于审计和将应用程序日志记录到数据库。
  • NestedCategories 用于联系和公司类别。
  • Keylists 用于键/值列表存储,例如地址类型和状态。
  • NestedCategories 用于联系和公司类别。
  • SiteConfig 用于数据库支持的配置,例如地理位置密钥。
  • Eloquent ORM 用于数据库访问。