基于百度万年历定制化 2

接着上面的内容,我们本章节通过设置数据库表结构,将json数据通过一种数据结构存储在数据库中。 首先我们需要设计数据库的表。

image.png

数据库字段说明 Id 主键 HolidayDate 节假日日期 HolidayName 节假日名称 HolidayDescripton 说明 HolidayConfig 放假配置 [放假日期|工作日期] =[A|B] A,B存在多个时用逗号分隔,见上图,通过这样的数据结构,然后编码实现。

后台代码贴部分,数据库交互使用EntityFramework

        public static void SetWnlConfig()
        {
            wnlEntities db = new wnlEntities();
            var list = db.HolidayArrange.ToList();

            var dateFestival = list.Select(u => u.HolidayDate + "||" + u.HolidayName).ToList();
            var dateFestivalContent = list.Select(u => new FestivalContent
            {
                name = u.HolidayName,
                value = u.HolidayDescription
            }).ToList();
            List<string[]> splists = list.Select(u => u.HolidayConfig.Split('|').ToArray()).ToList();
            List<string> dateRest = new List<string>();
            List<string> dateWork = new List<string>();

            foreach (var split in splists)
            {
                dateRest.AddRange(split[0].Split(','));
                dateWork.AddRange(split[1].Split(','));
            }

            var data = new WnlConfig
            {
                dateFestival = dateFestival,
                dateFestivalContent = dateFestivalContent,
                dateRest = dateRest,
                dateWork = dateWork,
            };

            //默认缓存一个小时
            CacheHelper.SetCache("wnl", JsonConvert.SerializeObject(data), new TimeSpan(0, 1, 0, 0));
        }

通过调用上述方法能够得到json数据,回传给前端,前端绑定后,即可得到相应的结果。

配置修改

既然保存在数据库中,那对应的数据应该能够被动态更改,下图给出配置界面

image.png

点击新增弹出配置窗体

配置窗体.png

配置代码

        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="formjson"></param>
        /// <returns></returns>
        public ActionResult AddConfig(string formjson)
        {
            DataMsg datamsg = null;
            var model = JsonConvert.DeserializeObject<HolidayArrange>(formjson);
            if (!ValidateModel(model))
            {
                datamsg = new DataMsg()
                {
                    code = CodeStatus.Error,
                    msg = "配置验证失败,请核对后重新提交!"
                };
                return Json(datamsg, JsonRequestBehavior.AllowGet);
            }

            wnlEntities db = new wnlEntities();
            db.HolidayArrange.Add(model);
            int iret = db.SaveChanges();
            if (iret > 0)
            {
                datamsg = new DataMsg()
                {
                    code = CodeStatus.Ok,
                    msg = "新增成功"
                };
                SetWnlConfig();
            }
            else
            {
                datamsg = new DataMsg()
                {
                    code = CodeStatus.Error,
                    msg = "新增失败"
                };
            }

            return Json(datamsg, JsonRequestBehavior.AllowGet);
        }

剩下的编辑和删除配置同理

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏古时的风筝

ASP.NET-自定义HttpModule与HttpHandler

在之前的ASP.NET是如何在IIS下工作的这篇文章中介绍了ASP.NET与IIS配合工作的机制,在http请求经过一系列处理后,最后到达ASP.NET管道中...

31880
来自专栏张善友的专栏

Quartz.net官方开发指南 第九课: JobStore

JobStore负责保持对所有scheduler “工作数据”追踪,这些工作数据包括:job(任务),trigger(触发器),calendar(日历)等。为你...

26690
来自专栏.NET开发者社区

一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](四)

上一篇《一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](三)》,我们完成了:

22990
来自专栏菩提树下的杨过

Oracle:ODP.NET Managed 小试牛刀

“ODP.NET Managed”发布已经有一段时间了,近期正好有一个新项目,想尝试用一下,参考园子里的文章:《.NET Oracle Developer的福音...

29160
来自专栏林德熙的博客

C# 获取 PC 序列号

在 C++ 需要使用 GetSystemFirmwareTable 的方法来获得 PC 的序列号,需要写的代码很多,但是在 C# 可以使用 WMI 来拿到序列号

28410
来自专栏菩提树下的杨过

img标签的src=""会引起的Page_Load多次执行

今天看见园子里有人因img的src为空导致session丢失,详情见http://www.cnblogs.com/kyneblog/archive/2009/0...

229100
来自专栏程序员的SOD蜜

“一切都是消息”--MSF(消息服务框架)之【请求-响应】模式(点对点)

在前一篇, “一切都是消息”--MSF(消息服务框架)入门简介, 我们介绍了MSF基于异步通信,支持请求-响应通信模式和发布-订阅通信模式,并且介绍了如何获取M...

46980
来自专栏圣杰的专栏

Abp通用配置模块的设计

下面我将尝试用最简单易懂的方式,对Abp源码中通用配置模块的实现方式加以提炼和精简,尽量继承原作者的设计思想,给大家呈现通用配置模块的“最佳实践”。

36010
来自专栏企鹅号快讯

WebApi client 的面向切面编程

.Net的面向切面编程 .Net的服务端应用AOP很常见,在Asp.net MVC与Asp.net WebApi等新框架里到处都有AOP的影子,我们可以把一个服...

205110
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】

上次的探讨没有任何结果,我浏览了大量的文章和个别系统的参考!决定用Cache来做,这可能有点难以接受但是配合mvc过滤器来做效果非常好! 由于之前的过滤器我们用...

21490

扫码关注云+社区

领取腾讯云代金券