前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >表单控制增删改权限难不难,狐友看过这篇纷纷点赞

表单控制增删改权限难不难,狐友看过这篇纷纷点赞

作者头像
加菲猫的VFP
发布2021-08-16 15:10:40
4050
发布2021-08-16 15:10:40
举报
文章被收录于专栏:加菲猫的VFP

开发工具:VFP 9 SP2(7423)+祺佑三层开发框架(猫框)

数据库:MSSQL2000及以上

前面讲了菜单权限,现在来做一个表单功能权限开发,也是极简开发(提高80%的速度,少写80%的代码)。

一、数据库设计

首先来看权限表的设计:增加了 新增,修改,删除,打印权限

二、权限控制界面

所有的逻辑代码都可以不用动

只需要把DAL_RoleRight的SetupCA方法修改如下,可以利用生成器,也可以手工更改一下。

如果不用菜单名(DESCRIPTION)来查找权限,而是且right_id,select 语句还可以再简单一点。

代码语言:javascript
复制
    PROCEDURE setupCA
        Text to This.SelectCmd noshow
        select MODULE,DESCRIPTION,ENABLED,ALLOWNEW,ALLOWDEL,ALLOWEDIT,ALLOWPRT,roleright.ID from roleright inner join  rights on roleright.right_id=rights.id
        where userid=?this.uid
        EndText
        Text to This.CursorSchema noshow
         MOdule  C(50) , DEscription C(50) , ENabled  L(1) , ALlownew L(1) , ALlowdel L(1) , ALlowedit L(1) , ALlowprt L(1) , ID   I(4) 
        EndText
        Text to This.UpdatableFieldList noshow
        ID,ENABLED,ALLOWNEW,ALLOWDEL,ALLOWEDIT,ALLOWPRT 
        EndText
        Text to This.UpdateNameList noshow
        MODULE roleright.MODULE,DESCRIPTION roleright.DESCRIPTION,ENABLED roleright.ENABLED,ALLOWNEW roleright.ALLOWNEW,ALLOWDEL roleright.ALLOWDEL,ALLOWEDIT roleright.ALLOWEDIT,ALLOWPRT roleright.ALLOWPRT,ID roleright.ID
        EndText
    ENDPROC

三、前台操作界面

创建框架表单,拖入框架自响应控件。刷新权限按钮为普通控件。

在框架的开发中实际上是先把所有功能开发完毕,最后一步再开发权限,而权限的开发也非常简单,附加权限类就自动拥有了权限。

实现采购入库权限类(保存为Right_CGRKD.prg)

代码语言:javascript
复制
*-- 实现一个权限子类
Define Class Right_CGRKD As Qiyu_RightManager Of Locfile("Qiyu_RightManager.prg")   
    Userid=0  &&用户id
    Description=""   &&功能名称
    *-- DO开头为勾子方法(框架约定不得直接调用)
    *-- 取得实际权限 用于UI与BLL类,写入状态标志
    Procedure DoGetRightStatus
        Lparameters oUIBLL      
        Local lcSQLCmd
        TEXT TO lcSQLCmd NOSHOW TEXTMERGE PRETEXT 1+2
        select * from roleright  inner join Rights
        on RoleRight.right_id=Rights.id
        WHERE userid=<<this.userid>> and description='<<this.description>>'
        ENDTEXT
        If This.oDbSQLhelper.SQLQuery(lcSQLCmd,"RightStatus")>0
            oUIBLL.isadd=RightStatus.allownew
            oUIBLL.isedit=RightStatus.allowedit
            oUIBLL.isDel=RightStatus.AllowDel
            oUIBLL.isprint=RightStatus.allowprt
        Else
            oUIBLL.isadd=.F.
            oUIBLL.isedit=.F.
            oUIBLL.isDel=.F.
            oUIBLL.isprint=.F.
        Endif     
    Endproc
Enddefine

采购入库单表单的Load事件

代码语言:javascript
复制
Thisform.oRight=Newobject("right_cgrkd","right_cgrkd.prg")
Thisform.oRight.Userid=1  &&假设是用户id=1登录
Thisform.oRight.Description="采购入库单"  &&取采购入库单权限
Thisform.oRight.SetRightStatus(This)

实际上权限就加载成功了,为方便演示,我加了一个按钮,click方法如下:

代码语言:javascript
复制
Thisform.oRight.SetRightStatus(Thisform) &&重新设置权限

最后,我们来看动图。

权限已经更新到第四篇了,可以对比一个代码量可以看出框架的极简开发风是什么感觉了。

框架从来不限制开发者的思维,而是提供给开发者更爽的开发体验。 框架用过的狐友都知道,就是一种说不出来感觉的开发体验,但爽感却是共同的。

少写代码,极速开发就是框架的目标。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲猫的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档