后台
using CommonInterface; using MiniSite.EF; using System.IO; using MiniSite.Web.Areas.Admin.Controllers; using MiniSite.Web.Areas.Pos.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Drawing; using System.Globalization; namespace MiniSite.Web.Areas.Pos.Controllers { /// <summary> /// Banner图片管理 /// </summary> public class BannerController : BaseController { /// <summary> /// 初期处理 /// </summary> /// <returns></returns> public ActionResult Index() { ViewData["pos_city"] = GetPosCityInfos(); ViewData["pos_brand"] = GetPosBrandInfos(); ViewData["pos_store"] = GetPosStoreInfos(); return View(); } /// <summary> /// 取得Banner情报 /// </summary> /// <param name="cityId">城市ID</param> /// <param name="brandId">品牌ID</param> /// <param name="storeId">门店ID</param> /// <param name="isInvalid">Banner是否失效(0:有效,1:失效,空所有)</param> /// <returns></returns> public ActionResult GetBannerInfo(string cityId, string brandId, string storeId, string isInvalid) { // 取得Banner图片信息 var results = from ban in DB.pos_banner where ban.status == 1 orderby ban.sort ascending select new { ban.id, ban.brand_explain, ban.img_x, ban.img_s, ban.remark1, ban.remark2, ban.sort, validity_begin_dt = ban.validity_begin, validity_end_dt = ban.validity_end, validity_begin = ((DateTime?)ban.validity_begin).ToString().Substring(0, 10), validity_end = ((DateTime?)ban.validity_end).ToString().Substring(0, 10) }; if (string.IsNullOrEmpty(isInvalid) == false) { var systemNow = DateTime.Now; if ("0".Equals(isInvalid)) { // 有效 results = results.Where(p => p.validity_begin_dt <= systemNow && systemNow <= p.validity_end_dt); } else { // 失效 results = results.Where(p => systemNow < p.validity_begin_dt || p.validity_end_dt < systemNow); } } var returnInfo = new List<object>(); foreach (var item in results) { var tmpResult = from storeban in DB.pos_store_banner join store in DB.pos_store on storeban.store_id equals store.id join city in DB.pos_city on store.city_id equals city.id join brand in DB.pos_brand on store.brand_id equals brand.id where storeban.status == 1 && storeban.banner_id == item.id && store.status == 1 select new { storeban.store_id, store.city_id, store.brand_id, brand_name = brand.name, cityname = city.city_name, store_name = store.store_name }; if (string.IsNullOrEmpty(cityId) == false) { var iCityId = Convert.ToInt32(cityId); tmpResult = tmpResult.Where(p => p.city_id == iCityId); } if (string.IsNullOrEmpty(brandId) == false) { var iBrandId = Convert.ToInt32(brandId); tmpResult = tmpResult.Where(p => p.brand_id == iBrandId); } if (string.IsNullOrEmpty(storeId) == false) { var iStoreId = Convert.ToInt32(storeId); tmpResult = tmpResult.Where(p => p.store_id == iStoreId); } var tmpStoreList = tmpResult.ToArray(); if (tmpStoreList.Count() > 0) { var tmpStoreName = tmpStoreList.Select(p => p.store_name).Distinct().ToArray(); returnInfo.Add(new { item.id, item.brand_explain, item.img_x, item.img_s, item.remark1, item.remark2, item.sort, item.validity_begin, item.validity_end, store_info = tmpStoreList //store_name = String.Join(",", tmpStoreName) }); } } return Json(returnInfo, JsonRequestBehavior.AllowGet); } /// <summary> /// 根据城市ID和品牌ID取得门店列表 /// </summary> /// <param name="cityId"></param> /// <param name="brandId"></param> /// <returns></returns> public ActionResult GetStoreInfo(string cityId, string brandId) { var storeInfo = DB.pos_store.Where(p => p.status == 1); if (string.IsNullOrEmpty(cityId) == false) { var iCityId = Convert.ToInt32(cityId); storeInfo = storeInfo.Where(p => p.city_id == iCityId); } if (string.IsNullOrEmpty(brandId) == false) { var iBrandId = Convert.ToInt32(brandId); storeInfo = storeInfo.Where(p => p.brand_id == iBrandId); } var result = storeInfo.Select(p => new SelectListItem { Value = p.id.ToString(), Text = p.store_code + ":" + p.store_name }).ToArray(); return Json(result, JsonRequestBehavior.AllowGet); } /// <summary> /// 保存Banner信息 /// </summary> /// <param name="bannerInfo"></param> /// <returns></returns> public ActionResult saveBannerInfo(BannerInfoModel bannerInfo) { var returnInfo = new { retCode = 0, retMsg = "Banner信息更新成功" }; using (var tran = DB.Database.BeginTransaction()) { try { // 添加更新Banner情报 var posBannerInfo = new pos_banner(); if (string.IsNullOrEmpty(bannerInfo.banner_id) == false) { // 更新的时候 var iBannerId = Convert.ToInt32(bannerInfo.banner_id); posBannerInfo = DB.pos_banner.Where(p => p.id == iBannerId).FirstOrDefault(); } posBannerInfo.brand_explain = bannerInfo.brand_explain; posBannerInfo.img_x = bannerInfo.img_x; posBannerInfo.img_s = bannerInfo.img_s; posBannerInfo.validity_begin = Convert.ToDateTime(bannerInfo.validity_begin); posBannerInfo.validity_end = Convert.ToDateTime(bannerInfo.validity_end); posBannerInfo.status = 1; posBannerInfo.update_date = DateTime.Now; if (string.IsNullOrEmpty(bannerInfo.banner_id)) { // 新规添加 // 最大排序 posBannerInfo.sort = DB.pos_banner.Max(p => p.sort) + 1; posBannerInfo.create_date = DateTime.Now; DB.pos_banner.Add(posBannerInfo); } DB.SaveChanges(); // 添加门店所属的Banner情报 var stroreBannerInfos = DB.pos_store_banner.Where(p => p.banner_id == posBannerInfo.id).ToList(); DB.pos_store_banner.RemoveRange(stroreBannerInfos); foreach (var item in bannerInfo.store_id_list) { var storeId = Convert.ToInt32(item); var storeBanner = new pos_store_banner(); storeBanner.banner_id = posBannerInfo.id; storeBanner.store_id = storeId; storeBanner.status = 1; storeBanner.create_date = DateTime.Now; storeBanner.update_date = DateTime.Now; DB.pos_store_banner.Add(storeBanner); } DB.SaveChanges(); tran.Commit(); } catch (Exception ex) { returnInfo = new { retCode = 1, retMsg = "Banner信息更新失败" }; Logger.LogException("保存出错", "saveBannerInfo", "BannerController", ex); tran.Rollback(); } } return Json(returnInfo); } /// <summary> /// 根据ID取得Banner信息 /// </summary> /// <param name="bannerId"></param> /// <returns></returns> [HttpGet] public ActionResult GetBannerInfoById(string bannerId) { var returnInfo = new { retCode = 0, data = new object(), retMsg = "Banner信息取得成功" }; if (string.IsNullOrEmpty(bannerId)) { returnInfo = new { retCode = -1, data = new object(), retMsg = "Banner信息取得失败" }; } else { var iBannerId = Convert.ToInt32(bannerId); var bannerInfo = DB.pos_banner.Where(p => p.id == iBannerId).FirstOrDefault(); if (bannerInfo == null) { returnInfo = new { retCode = -1, data = new object(), retMsg = "指定的Banner ID的信息不存在" }; } else { var bannerStore = from storeBanner in DB.pos_store_banner join store in DB.pos_store on new { storeBanner.store_id, status = 1 } equals new { store_id = store.id, status = store.status } where storeBanner.status == 1 && storeBanner.banner_id == bannerInfo.id select new { storeBanner.store_id, store_name = store.store_code + ":" + store.store_name }; var returnData = new { banner_id = bannerInfo.id.ToString(), banner_explain = bannerInfo.brand_explain, img_x = bannerInfo.img_x, img_s = bannerInfo.img_s, validity_begin = ((DateTime?)bannerInfo.validity_begin).ToString().Substring(0, 10), validity_end = ((DateTime?)bannerInfo.validity_end).ToString().Substring(0, 10), store_id_list = bannerStore.ToList() }; return Json(new { retCode = 0, retMsg = "Banner信息取得成功", data = returnData }, JsonRequestBehavior.AllowGet); } } return Json(returnInfo, JsonRequestBehavior.AllowGet); } /// <summary> /// 删除Banner图片 /// </summary> /// <param name="bannerIds"></param> /// <returns></returns> public ActionResult DeleteBannerInfo(List<string> bannerIds) { var returnInfo = new { retCode = 0, retMsg = "Banner图片删除成功" }; using (var tran = DB.Database.BeginTransaction()) { try { foreach (var bannerid in bannerIds) { var id = Convert.ToInt32(bannerid); var posbanner = DB.pos_banner.Where(m => m.id == id).FirstOrDefault(); if (posbanner == null) { throw new Exception("没找到指定的ID数据"); } else { DB.pos_banner.Remove(posbanner); } } //保存数据 DB.SaveChanges(); tran.Commit(); } catch (Exception ex) { returnInfo = new { retCode = 99, retMsg = "Banner图片删除失败" }; Logger.LogException("删除Banner图片出错", "", "", ex); tran.Rollback(); } } return Json(returnInfo); } #region 上传图片功能 /// <summary> /// 上传图片的路径 /// </summary> private string UploadImgPath = "/assets/files/banner/"; /// <summary> /// 上传图片处理 /// </summary> /// <returns></returns> [HttpPost] public ActionResult UploadPic() { var resultInfo = new UploadImgResultModel(); try { resultInfo.files = new List<UpFileInfo>(); resultInfo.initialPreview = new List<string>(); Response.ContentType = "text/plain"; // 相对路径 // FileRelativePath = System.Configuration.ConfigurationManager.AppSettings["UploadProductImgPath"]; //FileRelativePath = "../../assets/files/banner/"; // 绝对路径 var uploadFilePath = System.Web.HttpContext.Current.Server.MapPath(UploadImgPath); if (!Directory.Exists(uploadFilePath)) { Directory.CreateDirectory(uploadFilePath); } HttpFileCollectionBase files = (HttpFileCollectionBase)Request.Files; for (int i = 0; i < files.Count; i++) { HttpPostedFileBase file = files[i]; // 检查是否是图片 string checkResult = CheckImage(file); // 检查结果判断 if (string.IsNullOrEmpty(checkResult)) { // 上传图片 var imgInfo = UploadImage(file, uploadFilePath); resultInfo.files.Add(imgInfo); resultInfo.initialPreview.Add(imgInfo.fileurl); } else { throw new Exception("上传的图片格式不正确"); } } } catch (Exception ex) { resultInfo.code = 2; resultInfo.msg = ex.Message; } return Json(resultInfo, JsonRequestBehavior.AllowGet); } /// <summary> /// 检查是否为合法的上传图片 /// </summary> /// <param name="_fileExt"></param> /// <returns></returns> private string CheckImage(HttpPostedFileBase imgfile) { string allowExt = ".gif.jpg.png"; string fileName = imgfile.FileName; FileInfo file = new FileInfo(fileName); string imgExt = file.Extension; Image img = IsImage(imgfile); string errorMsg = fileName + ":"; if (img == null) { errorMsg = "文件格式错误,请上传gif、jpg、png格式的图片"; return errorMsg; } if (allowExt.IndexOf(imgExt.ToLower()) == -1) { errorMsg = "请上传gif、jpg、png格式的图片;"; } //if (imgfile.ContentLength > 512 * 1024) //{ // errorMsg += "图片最大限制为0.5Mb;"; //} //if (img.Width < 20 || img.Width > 480 || img.Height < 20 || img.Height > 854) //{ // errorMsg += "请上传正确尺寸的图片,图片最小为20x20,最大为480*854。"; //} if (errorMsg == fileName + ":") { return ""; } return errorMsg; } /// <summary> /// 验证是否为真正的图片 /// </summary> /// <param name="file"></param> /// <returns></returns> private Image IsImage(HttpPostedFileBase file) { try { Image img = Image.FromStream(file.InputStream); return img; } catch { return null; } } /// <summary> /// 上传图片 /// </summary> /// <param name="file"></param> /// <returns></returns> private UpFileInfo UploadImage(HttpPostedFileBase file, string uploadFilePath) { string fileNameExt = (new FileInfo(file.FileName)).Extension; // 获得要保存的文件路径 string newFileName = NewFileName(fileNameExt); // 设置保存路径 string ymd = DateTime.Now.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo); uploadFilePath += ymd + "/"; // 保存图片 string fileFullPath = uploadFilePath + newFileName; // 保存图片路径不存在时,新建路径 if (!Directory.Exists(uploadFilePath)) Directory.CreateDirectory(uploadFilePath); file.SaveAs(fileFullPath); UpFileInfo upFileInfo = new UpFileInfo(); upFileInfo.filename = newFileName; //upFileInfo.filepath = FilePhysicalPath + newFileName; upFileInfo.fileurl = Request.Url.Scheme + "://" + Request.Url.Authority + UploadImgPath + ymd + "/" + newFileName; return upFileInfo; } /// <summary> /// 从新取得图片名称 /// </summary> /// <param name="fileNameExt"></param> /// <returns></returns> private string NewFileName(string fileNameExt) { //return DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + fileNameExt; return Guid.NewGuid().ToString() + fileNameExt; } #endregion } }