learun开发社区 - 力软快速开发平台官方论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1061|回复: 9

大湿教我写程序(4)、屌丝也有春天

  [复制链接]

9

主题

9

帖子

56

积分

新手上路

Rank: 1

积分
56
发表于 2018-12-4 11:47:58 | 显示全部楼层 |阅读模式
一、屌丝也有春天
"亲爱的,在不?"
"妹子,你电脑又感觉慢了么?您以后装软件的时候注意点行不,能不能不要装上7-8个浏览器,3-4个杀毒软件,啥配置的机子你都感觉卡。以后别到处瞎找动作类电影看,网上一般都挂马骗你们这些小白的,实在想看找我要种子不就行了。"
"没有啦,人家电脑好着呢,您不是做软件的么,公司有个小项目让我找供应商,我第一个就想到了你,对你好吧,需求你接下,看看能不能做。下周就要用,费用的话万儿八千不是问题。"
  先看看需求吧,没准人家出个几千块让我整个ERP系统出来。。。不着边际的小客户我见多了,想出900块钱做个网站的人都有。
  内容相当少,就是给他们公司的网站后台加一个后台新闻发布的功能。这就万把块?也太爽了吧?
"大妹子,你们的需求是在原有网站的基础上加一个后台新闻发布的功能么?"
"大叔,需求上不都写的明明白白的么?你还来问我,想搭讪找个其它理由可以不?就这一个功能,不过以前后台管理没有进行权限管理的,这次要顺便做进去"
"做个新闻发布的功能顺便把权限管理做进去!!太TM扯蛋了吧,这跟买套婚纱让店主顺便送个老婆有什么区别。。我先考虑下吧。。。"
"好吧,等你的信,下班前给我答复。"
"大雄,过来瞧瞧,我小学同学的大姨妈家的二舅舅的三婶子的四儿子的五姑娘的小女儿要找个人家嫁了,这里有照片,你过来瞅瞅,看有合适的人介绍没?"
"擦,这不小泽老师么?你丫忽悠我。"
"大爷的,你啥时候见小泽老师穿这么厚实过。"
"是哦,联系方式有么,我这不刚失恋,肥水别流外人田了。"
"我这有个小单子,你看看需求,你那边有差不多的代码改改用么?"
"没问题,我上星期刚整了通用权限管理系统,你拿去用,说明书也有,标准的ISO"


二、流水线式生产
大雄还真有心,给了我套框架,还配了说明书,按照流程走标准的流水线生产呀。
权限的事先不用操心了,那就先开始弄数据库了。
1、后台表创建
这里要记得给表和字段添加说明,这样在使用代码生成器的时候就可以带出注释。提高代码可读性
2、代码生成
  2.1连接代码生成器
2.2代码生成
分层生成后台代码,复制到项目文件夹下
"大雄,代码生成完了,接下来我要怎么做呀?"
"配置权限呀,说明里不写着么!"
还是看说明吧,指望他帮我做东西是不现实的
3、配置模块
"大雄,这里配置模块有什么用呀?"
"看下源代码你不就明白了。。。你到底是不是程序猿呀?"
对呀,是该看一下源代码了
  1. //手风琴导航菜单
  2.         var AccordionMenuJson = "";
  3.         function GetAccordionMenu() {
  4.             var index = 0;
  5.             var html = "";
  6.             getAjax("Frame.ashx", "action=LoadFirstMenu", function (data) {
  7.                 AccordionMenuJson = eval("(" + data + ")");
  8.                 $.each(AccordionMenuJson, function (i) {
  9.                     if (AccordionMenuJson[i].ParentId == '9f8ce93a-fc2d-4914-a59c-a6b49494108f') {
  10.                         if (index == 0) {
  11.                             html += "<li><a style="border-top: 0px solid #ccc;"><img src="/Themes/Images/32/" + AccordionMenuJson[i].Img + "">" + AccordionMenuJson[i].FullName + "</a>";
  12.                         } else {
  13.                             html += "<li><a><img src="/Themes/Images/32/" + AccordionMenuJson[i].Img + "">" + AccordionMenuJson[i].FullName + "</a>";
  14.                         }
  15.                         html += GetSubmenu(AccordionMenuJson[i].MenuId);
  16.                         html += "</li>";
  17.                         index++;
  18.                     }
  19.                 });
  20.             })
  21.             $(".accordion").append(html);
  22.         }
复制代码


            
  1. switch (active)
  2.             {
  3.                 case "login"://登录
  4.                     #region 登录
  5.                     try
  6.                     {
  7.                         string IPAddress = RequestHelper.GetIPAddress();
  8.                         objScan.IP = IPAddress;
  9.                         objScan.DataPath = context.Server.MapPath("/Themes/IPScaner/QQWry.Dat");
  10.                         string IPAddressName = objScan.IPLocation();
  11.                         if (code.ToLower() != context.Session["dt_session_code"].ToString().ToLower())
  12.                         {
  13.                             Msg = "1";//验证码输入不正确
  14.                         }
  15.                         else
  16.                         {
  17.                             //系统管理
  18.                             if (Account == ConfigHelper.GetValue("CurrentUserName") && Md5Helper.MD5(Pwd, 32) == ConfigHelper.GetValue("CurrentPassword"))
  19.                             {
  20.                                 SessionUser user = new SessionUser();
  21.                                 user.UserId = "System";
  22.                                 user.Account = "System";
  23.                                 user.UserName = "超级管理员";
  24.                                 user.Gender = "男";
  25.                                 user.Password = bpms_user.Password;
  26.                                 user.Code = "System";
  27.                                 user.DepartmentId = "超级管理员";
  28.                                 user.DepartmentName = "超级管理员";
  29.                                 RequestSession.AddSessionUser(user);
  30.                                 Msg = "3";//验证成功
  31.                                 bpms_syslogibll.AddSysLoginLog(bpms_user.Account, "登录成功", IPAddress, IPAddressName);
  32.                             }
  33.                             else
  34.                             {
  35.                                 #region 验证
  36.                                 bpms_ipblacklistibll.TheIpIsRange(IPAddress);
  37.                                 string outmsg;
  38.                                 bpms_user = bpms_useribll.UserLogin(Account.Trim(), Pwd.Trim(), out outmsg);
  39.                                 if (outmsg != "-1")
  40.                                 {
  41.                                     if (outmsg == "succeed")
  42.                                     {
  43.                                         if (bpms_user.Enabled == 1)
  44.                                         {
  45.                                             if (Islogin(context, Account.Trim()))
  46.                                             {
  47.                                                 string DepartmentName = "";
  48.                                                 bpms_organization = bpms_organizationibll.GetEntity(bpms_user.DepartmentId);
  49.                                                 if (bpms_organization != null)
  50.                                                 {
  51.                                                     DepartmentName = bpms_organization.FullName;
  52.                                                 }
  53.                                                 SessionUser user = new SessionUser();
  54.                                                 user.UserId = bpms_user.UserId;
  55.                                                 user.Account = bpms_user.Account;
  56.                                                 user.UserName = bpms_user.RealName;
  57.                                                 user.Gender = bpms_user.Gender;
  58.                                                 user.Password = bpms_user.Password;
  59.                                                 user.Code = bpms_user.Code;
  60.                                                 user.Secretkey = bpms_user.Secretkey;
  61.                                                 user.DepartmentId = bpms_user.DepartmentId;
  62.                                                 user.DepartmentName = DepartmentName;
  63.                                                 user.RoleId = bpms_user.RoleId;
  64.                                                 RequestSession.AddSessionUser(user);
  65.                                                 Msg = "3";//验证成功
  66.                                                 bpms_syslogibll.AddSysLoginLog(bpms_user.Account, "登录成功", IPAddress, IPAddressName);
  67.                                             }
  68.                                             else
  69.                                             {
  70.                                                 context.Response.Write("6");//该用户已经登录,不允许重复登录
  71.                                                 context.Response.End();
  72.                                             }
  73.                                         }
  74.                                         else
  75.                                         {
  76.                                             Msg = "2";//账户锁定
  77.                                             bpms_syslogibll.AddSysLoginLog(bpms_user.Account, "账户锁定", IPAddress, IPAddressName);
  78.                                         }
  79.                                     }
  80.                                     else
  81.                                     {
  82.                                         Msg = "4";//账户或者密码有错误
  83.                                         bpms_syslogibll.AddSysLoginLog(bpms_user.Account, "登录失败", IPAddress, IPAddressName);
  84.                                     }
  85.                                 }
  86.                                 else
  87.                                 {
  88.                                     Msg = DbErrorMsg.ReturnMsg;//服务连接不上
  89.                                 }
  90.                                 #endregion
  91.                             }
  92.                         }
  93.                     }
  94.                     catch (Exception ex)
  95.                     {
  96.                         Msg = ex.Message;
  97.                     }
  98.                     context.Response.Write(Msg);
  99.                     context.Response.End();
  100.                     #endregion
  101.                     break;
  102.                 case "Outlogin"://安全退出
  103.                     UserId = RequestSession.GetSessionUser().UserId;
  104.                     CacheHelper.RemoveAllCache("Module" + UserId);
  105.                     CacheHelper.RemoveAllCache("Button" + UserId);
  106.                     CacheHelper.RemoveAllCache("Data" + UserId);
  107.                     context.Session.Abandon();  //取消当前会话
  108.                     context.Session.Clear();    //清除当前浏览器所以Session
  109.                     context.Response.Write("1");
  110.                     context.Response.End();
  111.                     break;
  112.                 case "LoadFirstMenu":
  113.                     UserId = RequestSession.GetSessionUser().UserId;
  114.                     IList list = (IList)StorePermission.Instance.GetModulePermission(UserId);
  115.                     context.Response.Write(JsonHelper.DropToJson<BPMS_ModulePermission>(list, "JSON"));
  116.                     context.Response.End();
  117.                     break;
  118.                 case "SetSystemId"://模块ID、访问模块
  119.                     UserId = RequestSession.GetSessionUser().UserId;
  120.                     string SystemId = context.Request["SystemId"];                    //模块ID
  121.                     List<BPMS_ModulePermission> Modulelist = IListHelper.IListToList<BPMS_ModulePermission>((IList)StorePermission.Instance.GetModulePermission(UserId)).FindAll(t => t.MenuId == SystemId);
  122.                     foreach (BPMS_ModulePermission entity in Modulelist)
  123.                     {
  124.                         BPMS_SysLogDAL.Instance.AddVisitLog(UserId, RequestSession.GetSessionUser().UserName, entity.FullName, "URL:" + entity.NavigateUrl);
  125.                         break;
  126.                     }
  127.                     //写入Session
  128.                     context.Session["SystemId"] = SystemId;
  129.                     context.Response.Write(SystemId);
  130.                     context.Response.End();
  131.                     break;
  132.                 case "LeaveModule"://离开模块
  133.                     break;
  134.                 default:
  135.                     break;
  136.             }
  137.         }
复制代码


从源代码中可以看出来,在模块管理中记录了这个菜单模块的URL地址,显示图标等信息,登陆系统的时候在前台就能显示出这个菜单项。
然后原有权限框架根据模块的ID也能对这个模块进行权限管理。
做的真的很不多,源码还是要好好看的。
接下来就是公用按钮的分配了
分配过后点击保存再刷新一次界面
非常好,勾选的那几个按钮按顺序都显示出来了。但是按下去好像不起作用。。。
"大雄,我分配了公共按钮以后点击按钮为什么不起作用呢?"
"你在代码里面实现了按钮对应的方法函数没有?"
"我既然要一个个去写函数,还在这里来分配什么按钮,不如直接自己写好了,太麻烦了"
"那你自己写的按钮,进行权限判断的时候每个按钮里都要去判断一下么?"
"哦,我明白啦,你这里的按钮其实也跟菜单模块权限类似,这里并不是为了省多少代码。而是为了更细更方便的控制权限,权限系统能根据模块和按钮的ID来控制每一个按钮的操作权限。比如:新增、删除、修改什么的。"
"不错不错,一点就通"
  
  1. //新增
  2.         function add() {
  3.             var url = "/ExampleModule/News/NewsForm.aspx";
  4.             top.openDialog(url, 'NewsForm', '新闻信息 - 添加', 800, 500, 50, 50);
  5.         }
  6.         //编辑
  7.         function edit() {
  8.             var key = GetPqGridRowValue("#grid_paging", 0);
  9.             if (IsEditdata(key)) {
  10.                 var url = "/ExampleModule/News/NewsForm.aspx?key=" + key;
  11.                 top.openDialog(url, 'NewsForm', '新闻信息 - 编辑', 800, 500, 50, 50);
  12.             }
  13.         }
  14.         //删除
  15.         function Delete() {
  16.             var key = GetPqGridRowValue("#grid_paging", 0);
  17.             if (IsDelData(key)) {
  18.                 var delparm = 'action=Delete&key=' + key;
  19.                 delConfig('NewsList.aspx', delparm);
  20.             }
  21.         }
  22.         //刷新
  23.         function windowload() {
  24.             $("#grid_paging").pqGrid("refreshDataAndView");
  25.             GetRowIndex = -1;
  26.         }
复制代码


这里写了一个每个按钮的操作函数,不管是js还是后台代码都可以被权限系统牢牢控制,非常好用呀,再次运行
OK,完全实现了功能。
掐表一算,整个过程才20分钟不到,而且我是第一次使用这个框架。流水线式生产就是好呀。
"大雄,我用了不到20分钟就全搞定了呀。明天请你吃饭噢。"
"20分钟?你也太慢了。。。先看看这篇博客了解下这个框架的详细结构《打造一套UI与后台并重.net通用权限管理系统》,10分钟你就能搞定"

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

2

帖子

121

积分

注册会员

Rank: 2

积分
121
发表于 2019-1-25 03:05:00 | 显示全部楼层
不错
回复

使用道具 举报

0

主题

2

帖子

48

积分

新手上路

Rank: 1

积分
48
发表于 2019-2-15 11:20:16 | 显示全部楼层
支持一下
回复

使用道具 举报

0

主题

2

帖子

44

积分

新手上路

Rank: 1

积分
44
发表于 2019-3-22 04:13:34 | 显示全部楼层
很好的分享
回复

使用道具 举报

0

主题

7

帖子

138

积分

注册会员

Rank: 2

积分
138
发表于 2019-3-30 07:06:43 | 显示全部楼层
可以有,感谢分享
回复

使用道具 举报

0

主题

6

帖子

209

积分

中级会员

Rank: 3Rank: 3

积分
209
发表于 2019-3-31 07:34:39 | 显示全部楼层
加油
回复

使用道具 举报

0

主题

4

帖子

140

积分

注册会员

Rank: 2

积分
140
发表于 2019-4-1 01:24:03 | 显示全部楼层
学到了
回复

使用道具 举报

0

主题

2

帖子

111

积分

注册会员

Rank: 2

积分
111
发表于 2019-4-2 04:10:46 | 显示全部楼层
加油,认真学习。
回复

使用道具 举报

0

主题

7

帖子

127

积分

注册会员

Rank: 2

积分
127
发表于 2019-4-3 07:03:35 | 显示全部楼层
整理很详细 可以参考 感谢分享
回复

使用道具 举报

0

主题

9

帖子

220

积分

中级会员

Rank: 3Rank: 3

积分
220
发表于 2019-4-3 23:37:41 | 显示全部楼层
继续加油
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|learun开发社区 - 力软快速开发平台官方论坛 ( 沪ICP备14034717号 )

GMT+8, 2020-4-8 03:41 , Processed in 0.245895 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表