using Newtonsoft.Json; using Ninject; using System; using System.Collections.Generic; using System.Linq; using System.Web.Mvc; using WX.CRM.Common; using WX.CRM.IBLL.Wx; using WX.CRM.Model.Entity; using WX.CRM.Model.MAP; using WX.CRM.WebHelper; namespace WX.CRM.WEB.Controllers.WeiXin { public class SubProductController : BaseController { private ValidationErrors errors = new ValidationErrors(); [Inject] public IWX_SZZYSUBPRODUCT wx_szzySubProduct_BL { get; set; } [AuthorizeRedirect(Roles = InitRights.CONST_产品管理)] public ActionResult Index() { ToolBar tool = new ToolBar(); string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights.产品管理, userRightId); tool.AllowButton(toolbtn); ViewBag.ToolBar = tool; var pager = new Pager() { page = 1, rows = 10 }; var tableId = "tablist"; Table tab = new Table(tableId); tab.AddHeadCol("SUBPRODUCTID", "", "产品ID"); tab.AddHeadCol("SUBPRODUCTNAME", "", "渠道产品名称"); tab.AddHeadCol("PRODUCTCODE", "", "产品编码"); tab.AddHeadCol("PRICE", "", "价格"); tab.AddHeadCol("RIGHTPERIOD", "", "天数"); tab.AddHeadCol("PRODUCTALIAS", "", "产品名称"); tab.AddHeadCol("MODULES", "", "权限"); tab.AddHeadCol("REMARKS", "30%", "产品说明"); tab.AddHeadCol("ISVALID", "", "状态"); tab.AddHeadCol("ISSHOW", "", "显示"); tab.AddHeadRow(); ViewBag.gridTable = tab.GetHead() + Pagination.GetPage(pager, tableId, "10,20,30"); ; return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_产品管理)] public JsonResult GetHtmlList(Pager pager, Wx_SzzySubProduct_QueryDto query, string columns) { var list = wx_szzySubProduct_BL.GetList_SubProduct(ref pager, query); Table table = new Table(columns, true); foreach (var model in list) { table.AddCol(model.SUBPRODUCTID); table.AddCol(model.SUBPRODUCTNAME); table.AddCol(model.PRODUCTCODE); table.AddCol(model.PRICE); table.AddCol(model.RIGHTPERIOD); table.AddCol(model.PRODUCTALIAS); table.AddCol(model.MODULES); table.AddCol(model.REMARK); table.AddCol(model.ISVALID == 1 ? "可用" : "不可用"); table.AddCol(model.ISSHOW == 1 ? "显示" : "不显示"); table.AddRow(); } var json = new { totalPages = pager.totalPages, totalRows = pager.totalRows, rowsList = table.GetRows() }; return Json(json, JsonRequestBehavior.AllowGet); } public JsonResult GetWelComeJsonList() { Pager pager = new Pager() { page = 1, rows = 100 }; Wx_SzzySubProduct_QueryDto query = new Wx_SzzySubProduct_QueryDto { isShow = 1, isVaild = 1 }; var list = wx_szzySubProduct_BL.GetList_SubProduct(ref pager, query); var data = new { code = 0, data = list }; return Json(data, JsonRequestBehavior.AllowGet); } [Inject] public IWX_SZZYSUBPRODUCT_GIFT _gift { get; set; } [Inject] public IWX_ORDERACTIVE wx_orderactive { get; set; } [AuthorizeRedirect(Roles = InitRights.CONST_产品管理)] public ActionResult Edit(string subProductId) { WX_SZZYSUBPRODUCT model; if (string.IsNullOrWhiteSpace(subProductId)) { model = new WX_SZZYSUBPRODUCT(); } else { decimal id = Convert.ToDecimal(subProductId); model = wx_szzySubProduct_BL.Get(m => m.SUBPRODUCTID == id); if (string.IsNullOrEmpty(model.DISCOUNT)) { if (!string.IsNullOrEmpty(model.PRODUCTEXT)) { var channel = Utility.GetSettingOrNullByKey("Channel"); if (!string.IsNullOrEmpty(channel)) { var ch = int.Parse(channel); var extObj = JsonConvert.DeserializeObject>(model.PRODUCTEXT); var curExt = extObj.Find(p => p.channel == ch); if (curExt != null) { model.DISCOUNT = curExt.discount; } } } } ViewBag.OrderActiveList = wx_orderactive.GetList(M => M.PRODUCTCODE == model.PRODUCTCODE); decimal[] ids = { 1, 2 }; var gifts = _gift.GetList(p => p.SUBPRODUCTID == id && ids.Contains(p.TYPE)); //var discount = string.Empty; //if (!string.IsNullOrEmpty(model.DISCOUNT)) //{ // discount = model.DISCOUNT; //} ViewBag.giftData = gifts; //if (model.ISGIFT == 1 && gifts.Any()) //{ // var giftData = gifts.Where(p => p.TYPE == 1).OrderBy(p => p.SORT).ToList(); // var giftData2 = gifts.Where(p => p.TYPE == 2).OrderBy(p => p.SORT).ToList(); // ViewBag.giftData = giftData; // ViewBag.giftData2 = giftData2; //} //else //{ // ViewBag.giftData = null; // ViewBag.giftData2 = null; //} } return View(model); } [HttpPost] [AuthorizeToolBar(Roles = InitRights.CONST_产品管理, TooBarId = InitToolBar.CONST_Edit)] public JsonResult Edit(WX_SZZYSUBPRODUCT model, decimal[] gif1, string[] HidDisCount, string[] HIDCUSTOMPRICE, int[] discountarea) { if (model == null) { errors.Add("参数不能为空!"); return JsonHandler.InsertMessage(errors, false); } var modifyModel = wx_szzySubProduct_BL.Get(m => m.SUBPRODUCTID == model.SUBPRODUCTID); #region 赠送控制修改 if (gif1 != null && gif1.Count() > 0) { foreach (var item in gif1) { var entry = _gift.Get(m => m.ID == item); entry.ISSHOW = 1; _gift.Update(entry); } } else { gif1 = new decimal[] { }; } var notlist = _gift.GetList(m => m.SUBPRODUCTID == model.SUBPRODUCTID && !gif1.Contains(m.ID)); foreach (var item in notlist) { item.ISSHOW = 0; _gift.Update(item); } #endregion #region 折扣控制修改 if (string.IsNullOrEmpty(modifyModel.DISCOUNT)) { if (!string.IsNullOrEmpty(modifyModel.PRODUCTEXT)) { var channel = Utility.GetSettingOrNullByKey("Channel"); if (!string.IsNullOrEmpty(channel)) { var ch = int.Parse(channel); var extObj = JsonConvert.DeserializeObject>(modifyModel.PRODUCTEXT); var curExt = extObj.Find(p => p.channel == ch); if (curExt != null) { modifyModel.DISCOUNT = curExt.discount; } } } } //更新隐藏折扣 string NeedHid = ""; if (HidDisCount == null) HidDisCount = new string[] { }; if (!string.IsNullOrEmpty(modifyModel.DISCOUNT)) { var oldDis = modifyModel.DISCOUNT.Split(','); var all = oldDis.Where(m => !HidDisCount.Contains(m)); if (all != null && all.Count() > 0) { NeedHid = string.Join(",", all); } } modifyModel.HID_DISCOUNT = NeedHid; //更新隐藏折后价 string NeedHidC = ""; if (HIDCUSTOMPRICE == null) HIDCUSTOMPRICE = new string[] { }; if (!string.IsNullOrEmpty(modifyModel.CUSTOMPRICE)) { var oldDis = modifyModel.CUSTOMPRICE.Split(','); var all = oldDis.Where(m => !HIDCUSTOMPRICE.Contains(m)); if (all != null && all.Count() > 0) { NeedHidC = string.Join(",", all); } } modifyModel.HID_CUSTOMPRICE = NeedHidC; #region 价格区间 if (!string.IsNullOrEmpty(modifyModel.DISCOUNTAREA)) { var area = JsonConvert.DeserializeObject>(modifyModel.DISCOUNTAREA); if (discountarea == null) discountarea = new int[] { }; foreach (var item in area) { item.IsShow = 0; } var areashowList = area.Where(p => discountarea.Contains(p.Id)); foreach (var item in areashowList) { item.IsShow = 1; } modifyModel.DISCOUNTAREA = JsonConvert.SerializeObject(area); } #endregion #endregion if (modifyModel == null) { errors.Add("该产品不存在!"); return JsonHandler.InsertMessage(errors, false); } if (string.IsNullOrWhiteSpace(model.PRODUCTALIAS)) { errors.Add("产品别名不能为空!"); return JsonHandler.InsertMessage(errors, false); } modifyModel.PRODUCTALIAS = model.PRODUCTALIAS; modifyModel.ISSHOW = model.ISSHOW; var flag = wx_szzySubProduct_BL.Update(modifyModel); return JsonHandler.InsertMessage(errors, flag); } } public class DiscountArea { public int Id { get; set; } public decimal? Min { get; set; } public decimal? Max { get; set; } public decimal? MinRate { get; set; } public decimal? MaxRate { get; set; } public int IsShow { get; set; } } }