美文网首页程序员dotNET我爱编程
基于百度万年历定制化 2

基于百度万年历定制化 2

作者: HapplyFox | 来源:发表于2018-09-19 09:25 被阅读6次

    接着上面的内容,我们本章节通过设置数据库表结构,将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);
            }
    

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

    相关文章

      网友评论

        本文标题:基于百度万年历定制化 2

        本文链接:https://www.haomeiwen.com/subject/zslcwftx.html