zoukankan      html  css  js  c++  java
  • 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

        

            

  • 相关阅读:
    网络编程学习小结
    我的学习笔记_Windows_HOOK编程 2009-12-03 11:19
    void及void指针含义的深刻解析
    Android开发之自己定义TabHost文字及背景(源码分享)
    ActionBar自己定义改动无效解决方法
    一位Erlang程序猿的自白
    Xcode 5.1安装插件:规范凝视生成器VVDocumenter
    Socket程序中的Error#10054错误
    CSDN博客清理缓存
    ACM 位运算
  • 原文地址:https://www.cnblogs.com/zhaoyunlong/p/9623305.html
Copyright © 2011-2022 走看看