CRM总结
一、CRM初始
CRM,客户关系管理系统(Customer Relationship Management)。企业用CRM技术来管理与客户之间的关系,以求提升企业成功的管理方式,其目的是协助企业管理销售循环:新客户的招来、保留旧客户、提供客户服务及进一步提升企业和客户的关系,并运用市场营销工具,提供创新式的个人化的客户商谈和服务,辅以相应的信息系统或信息技术如数据挖掘和数据库营销来协调所有公司与顾客间在销售、营销以及服务上的交互。
此系统主要是以教育行业为背景,为公司开发的一套客户关系管理系统。考虑到各位童鞋可能处于各行各业,为了扩大的系统使用范围,特此将该项目开发改为组件化开发,让同学们可以日后在自己公司快速搭建类似系统及新功能扩展。
- 权限系统,一个独立的rbac组件。
- stark组件,一个独立的curd组件。
- crm业务,以教育行业为背景并整合以上两个组件开发一套系统。
权限系统:
1 为什么程序需要权限控制:
这个道理很简单 就好比你在公司内的构造一样 为了让每个人各司其职 负责的不同,
经理 --->管理人
程序员---->埋头敲代码
人事 --- >打扮的漂漂亮亮的忽悠人来工作
程序开发时的权限控制,对于不同用户使用系统时候就应该有不同的功能
所以,只要有不同角色的人员来使用系统,那么就肯定需要权限系统。
2. 为什么要开发权限组件?
为了提高开发效率 以后的开发中就可以直接拿出来使用了
3. web开发中权限指的是什么?
一个权限 约等于 URL,也就是他们进去多少个url去得到功能
相关权限表关系
表关系:
from django.db import models class Menu(models.Model):
"""
菜单表
"""
title = models.CharField(max_length=32,unique=True)
icon = models.CharField(max_length=32) def __str__(self):
return self.title class Permission(models.Model):
"""
权限表
"""
title = models.CharField(verbose_name='标题', max_length=32)
url = models.CharField(verbose_name='含正则的URL', max_length=128)
name = models.CharField(verbose_name='URL别名',max_length=32,null=True,blank=True)
parent = models.ForeignKey(verbose_name='父权限',to='Permission',null=True,blank=True)
menu = models.ForeignKey(verbose_name='菜单',to='Menu',null=True,blank=True) def __str__(self):
return self.title class Role(models.Model):
"""
角色
"""
title = models.CharField(verbose_name='角色名称', max_length=32)
permissions = models.ManyToManyField(verbose_name='拥有的所有权限', to='Permission', blank=True) def __str__(self):
return self.title class UserInfo(models.Model):
"""
用户表
"""
name = models.CharField(verbose_name='用户名', max_length=32)
password = models.CharField(verbose_name='密码', max_length=64)
email = models.CharField(verbose_name='邮箱', max_length=32)
roles = models.ManyToManyField(verbose_name='拥有的所有角色', to='Role', blank=True) def __str__(self):
return self.name
表关系
其中权限关系涉及到6张表,人物表 ,角色表,权限表,菜单表,人物和角色多对多表,角色和权限多对多表,菜单和权限一对多
因为一个人可以兼职多个角色 ,一个角色可以有多个权限 一个菜单下有多个权限(二级菜单)
4、为什么要把权限放入session?
是为了不同的用户登陆显示不同的效果
5、简述权限流程(如何实现的权限系统)
粒度控制到按钮级别的权限控制
-用户登陆成功之后,将权限和菜单信息放入session
CRM总结的更多相关文章
- Enterprise Solution 3.1 企业应用开发框架 .NET ERP/CRM/MIS 开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms
行业:基于数据库的制造行业管理软件,包含ERP.MRP.CRM.MIS.MES等企业管理软件 数据库平台:SQL Server 2005或以上 系统架构:C/S 开发技术 序号 领域 技术 1 数据库 ...
- SAP CRM 性能小技巧
导言 本页面打算收集SAP CRM实施中可以用于避免性能问题的注意事项,重要的事项会由图标标识. 如果你有其他的技巧想要说出来,别犹豫! 性能注意事项 通用 缓存读取类访问,特别是在性能关键的地方,比 ...
- SAP CRM 树视图(TREE VIEW)
树视图可以用于表示数据的层次. 例如:SAP CRM中的组织结构数据可以表示为树视图. 在SAP CRM Web UI的术语当中,没有像表视图(table view)或者表单视图(form view) ...
- SAP CRM 用户界面对象类型和设计对象
在CRM中的用户界面对象类型的帮助下,我们可以做这些工作: 进行不同的视图配置 创建动态导航 从设计层控制字段标签.值帮助 控制BOL对象的属性的可视性 从导航栏访问自定义组件 一个用户界面对象类型之 ...
- SAP CRM 显示消息/在消息中进行导航
向用户展示消息,在任何软件中都是十分重要的. 在SAP CRM WEB UI中展示消息,不是一项很难的任务,只需要创建消息并在之后调用方法来显示它 消息类和消息号: 我在SE91中创建了如下的消息类和 ...
- Dynamics CRM 2015-Data Encryption激活报错
在CRM的日常开发中,Data Encryption经常是不得不开启的一个功能.但是有时,我们可能遇到一种情况,Organization导入之后,查看Data Encryption是已激活的状态,但是 ...
- SAP CRM 客户控制器与数据绑定
当用户从视图离开时,视图将失去它的数据.解决这个问题,需要引入客户控制器(Custom Controller)(译者注:SAP CRM客户端中,不同地方的Custom Controller会翻译为“客 ...
- SAP CRM BOL编程基础,代码+详细注释
网络上可以找到一些使用BOL查询.维护数据的DEMO,但几乎都是单纯的代码,缺乏说明,难以理解.本文除了代码外,还给出了详细的注释,有助于理解BOL编程中的一些基本概念. 这是一篇翻译的文章,你可能会 ...
- SAP CRM 通过调试观察CL_CRM_BOL_ENTITY中的数据
这个(BOL里面)最重要的类值得一看. BOL中的每条记录都会在CL_CRM_BOL_ENTIT中表示.至今,我们已经写过一些事件处理器,并且我们已经直接或间接的通过这个类工作.在业务场景中,我们也许 ...
- SAP CRM 7.0中的BOL(Business Object Layer)
业务对象层(BOL)和通用交互层(GenIL)属于业务层. 业务对象层: 在CRM WebClient会话运行期间,业务对象层存储业务对象的数据以及它们属性和关系的定义. 通用交互层 通用交互层将 ...
随机推荐
- 下载Windows版本的Redis
1.打开官网http://redis.io/点击Download 2.往下拉,找到Windows, 由图片中的文字可以看出Redis项目不正式支持Windows. 但是,Microsoft开放技术小组 ...
- ABP实战--集成Ladp/AD认证
参照Hunter的ABP-Zero模块中用户管理部分. 由于我们公司的各系统基本都是AD帐号登录的,所以我们需扩展ABP的AuthenticationSource. 添加MyLdapAuthentic ...
- 在你的 Rails App 中开启 ETag 加速页面载入同时节省资源
转自http://huacnlee.com/blog/use-etag-in-your-rails-app-to-speed-up-loading/ 什么是 ETag 网上关于 ETag 的解释有很多 ...
- js中var与let
问题 for (var iii = 0; iii < 3; iii++) { setTimeout(function(){ console.debug(iii) }, 1000) let let ...
- yum 安装php7.1
yum install http://rpms.remirepo.net/enterprise/remi-release-6.rpm yum -y install php71-php.x86_64 p ...
- python之多进程multiprocessing模块
process类介绍 multiprocessing 模块官方说明文档 Process 类用来描述一个进程对象.创建子进程的时候,只需要传入一个执行函数和函数的参数即可完成 Process 示例的创建 ...
- Python Django 获取表单数据的三种方式
# In viewsdef zbsservice(request): #返回一个列表 v1 = models.Business.objects.all() # .value返回一个字典 v2 = mo ...
- Sublime Text 自动换行
- 移动端点击输入框,弹出键盘,底部被顶起问题(vue)
这个问题相信做移动端开发的童鞋会有深刻体会,以前用jq开发时就很头疼这个问题,每次底部footer部分需要用position:fixed,如果页面内容不是很长,没有超出屏幕范围,那就还好,没有问题:一 ...
- Java基础学习—思维导图
找到两张Java学习的思维导图,特别适合我这样的菜鸟学习,贴过来和小伙伴分享.