接着上面的内容,我们本章节通过设置数据库表结构,将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); }
剩下的编辑和删除配置同理
作者:HapplyFox
链接:https://www.jianshu.com/p/c3c134308124