开源客户关系管理系统SplendidCRM下的二次开发

SplendidCRM是.net环境下比较优秀的开源客户关系管理系统。目前有关中文的资料比较少,在官方网站针对二次开发的内容也不多。结合网络中查到的相关资料和自己的实践,下面以一个新模块的开发过程为例,将SplendidCRM下的二次开发步骤及相关注意的地方描述如下,以供同行及感兴趣的参考。

1、 创建表,如需要定制字段,还要创建以_cstm结尾的表,如有多对多的关系,还要创建关系表。

表一般含有以下字段:ID(主键)、DELETED(是否删除标志)、CREATED_BY(创建人)、DATE_ENTERED(录入时间)、MODIFIED_USER_ID(修改用户的ID)、DATE_MODIFIED(修改时间)、ASSIGNED_USER_ID(指定的用户ID)、TEAM_ID(团队ID)。

_cstm一般含有以下字段:ID_C(主键)。

2、创建用于更新及删除数据的存储过程。

存储过程命名:sp模块名_Update、sp模块名_Delete。

然后调用_devtools/procedures.aspx可以自动产生调用存储过程的代码文件SqlProc.cs,此文件位于_code下,然后将此文件覆盖掉_code/DbLevel目录下的SqlProc.cs文件。

3、  创建视图:至少要包括核心视图、以_List和_Edit结尾的视图,视图一般以vw开头。

4、调用存储过程spMODULES_InsertOnly往系统中加入新模块信息。此存储过程参数说明:

Procedure dbo.spMODULES_InsertOnly

         ( @MODIFIED_USER_ID  uniqueidentifier –修改有用户ID

         , @MODULE_NAME       nvarchar(25) –模块名称

         , @DISPLAY_NAME      nvarchar(50)  --模块的显示名称,用术语来描述

         , @RELATIVE_PATH     nvarchar(50)   --模块所处目录的相对路径

         , @MODULE_ENABLED    bit                --是否启用此模块,也可以通过系统管理->工作室-> “配置模块”功能来改变此属性

         , @TAB_ENABLED       bit          --是否在菜单上显示此模块,也可以通过系统管理->工作室-> “配置模块”功能来改变此属性

         , @TAB_ORDER         int         --菜单上显示的次序,也可以通过系统管理->工作室-> “配置模块”功能来改变此属性

         , @PORTAL_ENABLED    bit –是否显示在门户的标志

         , @CUSTOM_ENABLED    bit       --是否可以让使用者来定制字段(需要用以_cstm结尾的表)

         , @REPORT_ENABLED    bit –是否启用报表的标志

         , @IMPORT_ENABLED    bit        -是否可以导入数据的标志

         , @IS_ADMIN          bit  ----是否仅管理员使用标志

         , @TABLE_NAME        nvarchar(30) –模块对应的表名

         )

5、调用存储过程spSHORTCUTS_InsertOnly创建快捷方式。或通过系统管理->工作室->管理捷径->创建快捷方式来创造快捷方式。此存储过程参数说明:

        Procedure dbo.spSHORTCUTS_InsertOnly

         ( @MODIFIED_USER_ID  uniqueidentifier  --修改人的ID

         , @MODULE_NAME       nvarchar( 25)   --模块名称

         , @DISPLAY_NAME      nvarchar(150)    --显示名称,为术语名称

         , @RELATIVE_PATH     nvarchar(255)     --快捷方式命令的相对路径

         , @IMAGE_NAME        nvarchar( 50)    --图片的名称

         , @SHORTCUT_ENABLED  bit             --是否启用的标志

         , @SHORTCUT_ORDER    int             --快捷方式的显示次序

         , @SHORTCUT_MODULE   nvarchar( 25)   --快捷方式权限控制的模块

         , @SHORTCUT_ACLTYPE  nvarchar(100)    --权限的类型

         )

6、调用存储过程spDYNAMIC_BUTTONS_CopyDefault创建动态按钮,需要调用二次分别创建EditView和DetailView的动态按钮。或通过系统管理->工作室->管理动态按钮->创建动态按钮来创造动态按钮。

   一般需要调用以下语句:

        exec  dbo.spDYNAMIC_BUTTONS_CopyDefault '.EditView', ‘模块名.EditView', '模块名';

       exec dbo.spDYNAMIC_BUTTONS_CopyDefault '.DetailView', '模块名.DetailView', '模块名';

    此存储过程参数说明:

        Procedure dbo.spDYNAMIC_BUTTONS_CopyDefault

         ( @SOURCE_VIEW_NAME    nvarchar(50) –系统存在的默认的动态按钮名

         , @NEW_VIEW_NAME       nvarchar(50) –新的模块视图的名称

         , @MODULE_NAME         nvarchar(25) –模块名

         )

7、创建列表的列的信息。

涉及到GRIDVIEWS与GRIDVIEWS_COLUMNS表。是主细表结构,插入列的信息与列的类型有关,分别调用spGRIDVIEWS_COLUMNS_InsBound、spGRIDVIEWS_COLUMNS_InsBoundDate、spGRIDVIEWS_COLUMNS_InsBoundList、spGRIDVIEWS_COLUMNS_InsField、spGRIDVIEWS_COLUMNS_InsHyperLink。这个可以通过界面来配置。

调用存储过程spGRIDVIEWS_InsertOnly创建列表的主表信息。

        exec dbo.spGRIDVIEWS_InsertOnly '模块名.L名称istView', '模块名', '获取数据的视图(一般以_List结尾)';

   然后调用系统管理->页面布局->网格的布局来创建列表的列的信息。

8、创建查看的列的信息。

涉及到三个表DETAILVIEWS、DETAILVIEWS_FIELDS、DETAILVIEWS_RELATIONSHIPS。一个主表,两个细表。一个是查看的列的信息表,一个是查看对象的关系表。列的信息根据类型不同,分别调用spDETAILVIEWS_FIELDS_InsBlank、spDETAILVIEWS_FIELDS_InsBound、spDETAILVIEWS_FIELDS_InsBoundList、spDETAILVIEWS_FIELDS_InsButton、spDETAILVIEWS_FIELDS_InsCheckBox、spDETAILVIEWS_FIELDS_InsertOnly、spDETAILVIEWS_FIELDS_InsHyperLink。

    调用存储过程spDETAILVIEWS_InsertOnly插入查看的主表信息。

       exec dbo.spDETAILVIEWS_InsertOnly '模块名.DetailView', '模块名', '获取数据的视图名称(一般以_Edit结尾)', '15%', '35%';

   然后调用系统管理->页面布局->查看的布局来创建查看的列的信息。

9、创建编辑的列的信息。

涉及到两个表EDITVIEWS、EDITVIEWS_FIELDS。

调用存储过程spEDITVIEWS_InsertOnly插入编辑的主表信息。

exec dbo.spEDITVIEWS_InsertOnly '模块名.EditView', '模块名', ''获取数据的视图名称(一般以_Edit结尾)', '15%', '35%';

   然后调用系统管理->页面布局->编辑的布局来创建编辑的列的信息。

10、在web site目录下创建模块的文件夹,将相似模块的文件夹下的文件拷贝到新的模块的文件夹下。重命名文件中的命名空间、文件及相关的类名。文件夹下的主要文件如下:

       ListView.ascx 显示数据网格的控件。

       DetailView.ascx显示数据的详细信息的控件。

       EditView.ascx编辑数据的控件。

       NewRecord.ascx创建新纪录的控件。

       MassUpdate.ascx批量更新的控件。

   必须要修改ListView.asc.cs、DetailView.ascx.cs、EditView.ascx.cs文件中InitializeComponent()、Page_Load()、Page_Command()函数中相应的地方,读一下代码就知道了。

原文地址:https://www.cnblogs.com/zjoch/p/2864966.html