0
点赞
收藏
分享

微信扫一扫

CRM客户关系管理系统源码PHP全开源模型

东言肆语 2022-06-15 阅读 91

  客户关系管理系统很复杂。客户与企业之间的关系涵盖了广泛的方面,包括了解客户、开发销售报价、获取客户和留住客户的需求。因此,为了方便和简单起见,我们将 CRM 数据模型提炼到其核心特征,作为开发 CRM 数据模型的指南。总之,CRM 是对象及其关系的概念形式化,用于描述如何管理客户与业务组织之间的关系。

CRM客户关系管理系统源码PHP全开源模型_docker

 演示:c.xsymz.icu

 IAM 权限:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:GetObjectRetention",
"s3:DeleteObjectVersion",
"s3:GetObjectVersionTagging",
"s3:ListBucket",
"s3:PutObjectLegalHold",
"s3:ReplicateObject",
"s3:GetBucketObjectLockConfiguration",
"s3:PutObject",
"s3:GetObjectAcl",
"s3:GetObject",
"s3:PutObjectRetention",
"s3:GetObjectVersionAcl",
"s3:GetObjectTagging",
"s3:GetObjectVersionForReplication",
"s3:DeleteObject",
"s3:GetBucketLocation",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::monicacrmlaurent",
"arn:aws:s3:::monicacrmlaurent/*"
]
}
]
}
  

 S3 策略示例:

{
"Version": "2012-10-17",
"Id": "Policy1598008770540",
"Statement": [
{
"Sid": "Stmt1598008766523",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::759642557178:user/monicahq"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::monicacrmlaurent/*"
}
]
}

 任务定义 JSON:

{
"ipcMode": null,
"executionRoleArn": "<create_new>",
"containerDefinitions": [
{
"dnsSearchDomains": null,
"environmentFiles": [],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/MonicaCRM",
"awslogs-region": "<<AWS REGION>>",
"awslogs-stream-prefix": "ecs"
}
},
"entryPoint": [],
"portMappings": [],
"command": [],
"linuxParameters": null,
"cpu": 0,
"environment": [
{
"name": "APP_DISABLE_SIGNUP",
"value": "false"
},
{
"name": "APP_KEY",
"value": "<<APP KEY>>"
},
{
"name": "APP_TRUSTED_PROXIES",
"value": "*"
},
{
"name": "AWS_BUCKET",
"value": "<<BUCKET NAME>>"
},
{
"name": "AWS_REGION",
"value": "<<BUCKET REGION>>"
},
{
"name": "AWS_KEY",
"value": "<<AWS KEY TO ACCESS BUCKET>>"
},
{
"name": "AWS_SECRET",
"value": "<<AWS SECRET TO ACCESS BUCKET>>"
},
{
"name": "AWS_SERVER",
"value": ""
},
{
"name": "DAV_ENABLED",
"value": "true"
},
{
"name": "DB_HOST",
"value": "<<AURORA CLUSTER NAME>>"
},
{
"name": "DB_USERNAME",
"value": "<<MYSQL USERNAME>>"
},
{
"name": "DB_PASSWORD",
"value": "<<MYSQL PASSWORD>>"
},
{
"name": "DEFAULT_FILESYSTEM",
"value": "s3"
},
{
"name": "MAIL_ENCRYPTION",
"value": "tls"
},
{
"name": "MAIL_FROM_ADDRESS",
"value": "<<FROM EMAIL ADDRESS>>"
},
{
"name": "MAIL_FROM_NAME",
"value": "<<FROM EMAIL NAME>>"
},
{
"name": "MAIL_HOST",
"value": "<<SMTP HOST>>"
},
{
"name": "MAIL_MAILER",
"value": "smtp"
},
{
"name": "MAIL_USERNAME",
"value": "<<SMTP USERNAME>>"
},
{
"name": "MAIL_PASSWORD",
"value": "<<SMTP PASSWORD>>"
},
{
"name": "MAIL_PORT",
"value": "587"
},
{
"name": "MFA_ENABLED",
"value": "true"
}
],
"resourceRequirements": null,
"ulimits": null,
"dnsServers": null,
"mountPoints": null,
"workingDirectory": null,
"secrets": null,
"dockerSecurityOptions": null,
"memoryReservation": 250,
"volumesFrom": null,
"stopTimeout": null,
"image": "monicahq/monicahq",
"startTimeout": null,
"firelensConfiguration": null,
"dependsOn": null,
"disableNetworking": null,
"interactive": null,
"healthCheck": null,
"essential": true,
"links": [],
"hostname": null,
"extraHosts": null,
"pseudoTerminal": null,
"user": null,
"readonlyRootFilesystem": null,
"dockerLabels": {
"traefik.enable": "true",
"traefik.http.routers.app.entrypoints": "app",
"traefik.http.routers.app.rule": "Host(`<<FQDN OF MONICA CRM>>`)",
"traefik.http.routers.app.tls.certresolver": "mytls"
},
"systemControls": null,
"privileged": null,
"name": "app",
"repositoryCredentials": {
"credentialsParameter": ""
}
},
{
"dnsSearchDomains": null,
"environmentFiles": [],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/MonicaCRM",
"awslogs-region": "<<AWS REGION>>",
"awslogs-stream-prefix": "ecs"
}
},
"entryPoint": null,
"portMappings": [
{
"hostPort": 443,
"protocol": "tcp",
"containerPort": 443
},
{
"hostPort": 8080,
"protocol": "tcp",
"containerPort": 8080
}
],
"command": [],
"linuxParameters": null,
"cpu": 0,
"environment": [
{
"name": "TRAEFIK_API_INSECURE",
"value": "true"
},
{
"name": "TRAEFIK_CERTIFICATESRESOLVERS_MYTLS_ACME_EMAIL",
"value": "<<EMAIL ADDRESS CERTIFICATE REGISTRATION>>"
},
{
"name": "TRAEFIK_CERTIFICATESRESOLVERS_MYTLS_ACME_TLSCHALLENGE",
"value": "true"
},
{
"name": "TRAEFIK_CERTIFICATESRSOLVERS_MYTLS_ACME_STORAGE",
"value": "/letsencrypt/acme.json"
},
{
"name": "TRAEFIK_ENTRYPOINTS_APP_ADDRESS",
"value": ":443"
},
{
"name": "TRAEFIK_PROVIDERS_DOCKER",
"value": "true"
},
{
"name": "TRAEFIK_PROVIDERS_DOCKER_EXPOSEDBYDEFAULT",
"value": "false"
}
],
"resourceRequirements": null,
"ulimits": null,
"dnsServers": null,
"mountPoints": [
{
"readOnly": true,
"containerPath": "/var/run/docker.sock",
"sourceVolume": "dockersock"
},
{
"readOnly": null,
"containerPath": "/letsencrypt",
"sourceVolume": "tmp"
}
],
"workingDirectory": null,
"secrets": null,
"dockerSecurityOptions": null,
"memoryReservation": 200,
"volumesFrom": null,
"stopTimeout": null,
"image": "traefik:v2.3.0-rc2",
"startTimeout": null,
"firelensConfiguration": null,
"dependsOn": [
{
"containerName": "app",
"condition": "START"
}
],
"disableNetworking": null,
"interactive": null,
"healthCheck": null,
"essential": true,
"links": null,
"hostname": null,
"extraHosts": null,
"pseudoTerminal": null,
"user": null,
"readonlyRootFilesystem": null,
"dockerLabels": null,
"systemControls": null,
"privileged": null,
"name": "traefik",
"repositoryCredentials": {
"credentialsParameter": ""
}
}
],
"memory": null,
"taskRoleArn": "",
"family": "MonicaCRM",
"pidMode": null,
"requiresCompatibilities": [
"EC2"
],
"networkMode": null,
"cpu": null,
"inferenceAccelerators": null,
"proxyConfiguration": null,
"volumes": [
{
"efsVolumeConfiguration": null,
"name": "dockersock",
"host": {
"sourcePath": "/var/run/docker.sock"
},
"dockerVolumeConfiguration": null
},
{
"efsVolumeConfiguration": null,
"name": "tmp",
"host": {
"sourcePath": "/tmp/"
},
"dockerVolumeConfiguration": null
}
],
"placementConstraints": [],
"tags": []
}

1.什么是CRM数据模型?

 将数据模型描述为“组织数据元素并标准化它们如何相互关联以及与现实世界实体的属性的抽象模型”。换句话说,数据模型或实体关系 (ER) 数据模型是数据库设计的图形化方法。

 开发全面的 ER 数据模型是 CRM 软件开发生命周期的重要组成部分。简而言之,如果没有这个模型作为数据库设计的框架或基础,数据库就会有缺陷,导致应用程序或系统功能不全,无法满足利益相关者和最终用户的要求。

 报告的统计数据显示,75% 的 IT 高管承认他们的内部软件开发项目失败了。因此,在开始 CRM 开发项目的软件开发部分之前,生成一个高质量、完整的数据模型至关重要。

 2. CRM 使用什么数据库?

 如上所述,CRM 系统是一种软件应用程序,其设计、开发和部署具有能够管理总体客户生命周期以及企业与客户之间关系的功能。它的数据模型是在普通的关系数据库中实现的。销售人员使用 Oracle 数据库,而 Hubspot 使用 MySQL。

 构建 CRM 数据库模型的分步指南

 现在我们了解了数据模型和 CRM 系统是什么,让我们考虑一个创建简单 CRM 数据模型的分步指南。

 1.实体或对象

 第一步是确定您需要在数据模型中表示的实体或对象,例如客户管理、人员管理、潜在客户管理和客户服务管理对象。

 出于讨论的目的,让我们看一下 CRM 新客户获取工作流程图。

 此图演示了对客户主实体、新潜在客户或潜在客户实体以及员工主实体的需求。

 换句话说,新线索或潜在客户对象存储了销售人员捕获的新线索列表。员工对象记录了公司雇用的所有员工。分配给销售员工对象的潜在客户将新潜在客户链接到销售员工。并且客户主记录为每个获得的新客户记录新客户的详细信息。

 2. 创建实体关系 (ER) 模型

 一旦实体被定义并添加到数据模型图中,下一步就是描述不同实体或对象之间的关系。这些关系是通过添加指示每个实体之间关系的箭头来定义的。

 总之,两个实体之间可能出现四种可能的关系或基数:多对一、一对一、多对多和一对多。

 一对一关系:两个实体之间的一对一基数是每个实体只有一个实例与第二个实体的一个实例相关。例如,在上面突出显示的场景中,客户实体链接到潜在客户实体。潜在客户只能转换为单个客户。一个潜在客户不能匹配多个客户。

 一对多关系:一对多关系或基数描述了两个实体之间的关系,例如客户及其联系方式。因此,一个客户可以有许多不同的联系类型,例如邮政地址、实际办公地址、电子邮件、电话和手机。

 多对一关系:多对一关系是一对多关系的逆。例如,许多客户的办公室可能位于一个大办公大楼内。实际上,许多客户将拥有相同的办公地址。

 多对多关系:简而言之,多对多基数描述了两个实体之间的关系,每个实体的多个实例相互链接。例如,许多客户可以连接到同一个地址。许多地址与许多客户相关联。而且,如下所示,许多潜在客户或潜在客户与许多销售员工或代表有关。

 注意:多对多关系必须建模为两个多对一关系,如下图所示。例如,潜在客户和员工之间的关系是多对多的关系。同样的规则也适用于客户与员工的关系。

 一个潜在客户与多个员工相关联,而一名员工与多个潜在客户或潜在客户相关。因此,使用一个名为 ProspectEmployee 的对象(或表)将这种多对多关系描述为 Prospect 和 ProspectEmployee 以及 Employee 和 ProspectEmployee 之间的两个一对多关系。

 最后,潜在客户和客户之间的关系是一对一的关系。

 数据建模在 CRM 中的重要性

 一旦CRM数据模型完成,下一步就是将数据模型转换为SQL来创建CRM数据库,并从项目的软件开发部分开始开发一个简单的CRM系统。如果您需要实时数据库创建工具来编写数据定义语言 (DDL) 脚本,请考虑查看 Arctype SQL 编辑器。它内置了与多个不同关系数据库的原生连接,包括 Postgres、SQLite、MySQL、BigQuery 和 Firebase。

举报

相关推荐

0 条评论