基於百度萬年曆定製化 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);
        }

剩下的編輯和刪除配置同理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章