基于百度万年历定制化 2
2018-09-19 本文已影响6人
HapplyFox
接着上面的内容,我们本章节通过设置数据库表结构,将json数据通过一种数据结构存储在数据库中。
首先我们需要设计数据库的表。
数据库字段说明
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);
}
剩下的编辑和删除配置同理