using Aop.Api.Domain; using CRM.Core.DTO; using Newtonsoft.Json; using Ninject; using NPOI.OpenXml4Net.OPC; using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Linq; using System.Net; using System.Security.Policy; using System.Text; using System.Web.Mvc; using System.Web.UI.WebControls.WebParts; using WX.CRM.Common; using WX.CRM.Common.Layui; using WX.CRM.Common.StockHelper; using WX.CRM.IBLL.Base; using WX.CRM.IBLL.Cms; using WX.CRM.IBLL.Csvr; using WX.CRM.IBLL.Util; using WX.CRM.Model.Entity; using WX.CRM.Model.Enum; using WX.CRM.Model.QueryMap; using WX.CRM.WebHelper; namespace WX.CRM.WEB.Controllers.Cms { public class CmsUpController : BaseController { [Inject] public ICMS_NEWS cms_news_bl { get; set; } [Inject] public ICSVR_MESSAGE csvr_message_bl { get; set; } [Inject] public IBAS_SALESDEPARTMENT_Q bas_salesdepartment { get; set; } [Inject] public ICACHE_Q cache_BL { get; set; } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_广告策划)] /// /// / /// /// public ActionResult Index() { ToolBar tool = new ToolBar(); string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights.广告策划, userRightId); tool.AllowButton(toolbtn); tool.AddOtherButton("Other1", "上传", "icon-lookup", "FenPei_Click", true); ViewBag.ToolBar = tool; //Pager pager = new Pager() { page = 1, rows = 10 }; //string tableId = "tablist"; //Table tab = new Table(tableId); //tab.AddHiddenHeadCol("pkid", "ID");//影藏列 //tab.AddHeadCol("map_eID", "", "工号", true); //tab.AddHeadCol("map_uName", "", "姓名", true); //tab.AddHeadCol("map_trueName", "", "真实姓名"); //tab.AddHeadCol("gName", "", "销售组"); //tab.AddHeadCol("deptName", "", "部门"); //tab.AddHeadCol("MANAGERSTATUS", "", "客服经理"); //tab.AddHeadCol("GENERALCUSTOMER", "", "客服"); //tab.AddHeadCol("SENIORCUSTOMER", "", "高级客服"); //tab.AddHeadCol("map_gender", "", "性别"); //tab.AddHeadCol("map_birthday", "", "生日", true); //tab.AddHeadCol("map_EntryDate", "", "入职时间", true); //tab.AddHeadCol("map_POSITIVETIME", "", "转正时间", true); //tab.AddHeadCol("map_isDismiss", "", "是否离职"); //tab.AddHeadCol("map_dismissTime", "", "离职时间", true); //tab.AddHeadCol("map_dismissType", "", "离职类型"); //tab.AddHeadRow(); //ViewBag.gridTable = tab.GetHead() + Pagination.GetPage(pager, tableId, "5,8,10,15"); var list = GetDeptments(); ViewBag.deptList = list; return View(); } [AuthorizeRedirect(Roles = InitRights.CONST_广告策划)] public JsonResult GetHtmlList(Laypage pager, string columns, Cms_News_Query param) { var layUidata = new LayuiData(); try { var salseDepts = GetDeptments(); var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi); var url = $"{webapi}/api/CmsNews/Page"; var appid = ConfigurationManager.AppSettings["appid"]; ViewBag.appid = appid; param.appid = appid; param.PageIndex = pager.page; param.PageSize = pager.limit; var para = Utility.GetParamToString(param); var result = Utility.GetData(url, para, Encoding.UTF8); var page = JsonConvert.DeserializeObject>>(result); var list = new List(); if (page.code == 0) { list = page.data.Data.ToList(); } layUidata.msg = "数据加载成功"; layUidata.code = 0; layUidata.data = list; layUidata.count = page.data.Total; } catch (Exception ex) { LogHelper.Error(ex.ToString()); layUidata.SetFail(1, "出现错误!" + ex.Message); } return Json(layUidata); } [HttpGet] [AuthorizeToolBar(InitRights.CONST_广告策划, InitToolBar.CONST_Add)] public ActionResult Edit(decimal? id) { var salseDepts = GetDeptments(); var model = new CMS_NEWS_Map(); if (id != null) { var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi); var url = $"{webapi}/api/CmsNews"; var para = $"id={id}"; var result = Utility.GetData(url, para, Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); model = data.data; } ViewBag.NewsJson = Newtonsoft.Json.JsonConvert.SerializeObject(model); ViewBag.Files_Server = cache_BL.GetValue_Parameter(Parameter.Files_Server); List list = cache_BL.GetList_SalesDepartMent().Where(p => p.CHANNELDEF != null).ToList(); ViewBag.SaleDept = GetDeptments(); return View(model); //CMS_NEWS model = new CMS_NEWS() { CREATEUSER = Eid, CREATEUSERNAME = UserName, ID = 0 }; //if (ID.HasValue) //{ // model = cms_news_bl.GetModel(ID.Value); // if (model == null) // { // model = new CMS_NEWS() { CREATEUSER = Eid, CREATEUSERNAME = UserName }; // } //} //ViewBag.NewsJson = Newtonsoft.Json.JsonConvert.SerializeObject(model); //ViewBag.Files_Server = cache_BL.GetValue_Parameter(Parameter.Files_Server); //List list = cache_BL.GetList_SalesDepartMent().Where(p => p.CHANNELDEF != null).ToList(); //ViewBag.SaleDept = list; //return View(model); } ValidationErrors errors = new ValidationErrors(); [HttpPost] [AuthorizeToolBar(InitRights.CONST_广告策划, InitToolBar.CONST_Add)] public JsonResult EditSave(CMS_NEWS_Map model, bool isUploadCore = false) { retMsg ret = new retMsg(); var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi); var url = $"{webapi}/api/CmsNews"; if (model.ID == 0) { model.ID = new BLL.Base.SEQUENCES_BL().Seq_base_get(); model.Companycode = companyCode;//公司编码 } var depment = cache_BL.GetList_SalesDepartMent(); if (string.IsNullOrEmpty(model.DEPTCODE)) { model.DEPTCODE = companyCode; } var dep = depment.Find(p => p.SALEDEPTCODE == model.DEPTCODE); if (dep != null) { if (dep.CHANNELDEF.HasValue) model.Channel = dep.CHANNELDEF; } model.OperateUser = Eid; model.OperateUserName = UserName; var result = Utility.PostAjaxData(url, model.ToJson(), Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); if (data.code == 0 && isUploadCore) { return UploadCore(data.data); } if (data.code == 0) { ret = new retMsg() { result = true, retcode = 200, retmsg = "提交成功!" }; } else { ret = new retMsg() { result = false, retcode = 200, retmsg = data.message }; } return Json(ret); //retMsg ret = new retMsg(); //if (model.ID == 0) //{ // model.CREATEUSER = Eid; // model.CREATEUSERNAME = UserName; // if (cms_news_bl.Create(ref errors, model)) // { // ret = new retMsg() { result = true, retcode = 200, retmsg = "创建成功!" }; // } // else // { // ret = new retMsg() { result = false, retcode = 200, retmsg = "创建失败!" }; // } //} //else //{ // if (cms_news_bl.Update(ref errors, model)) // { // ret = new retMsg() { result = true, retcode = 200, retmsg = "修改成功!" }; // } // else // { // ret = new retMsg() { result = false, retcode = 200, retmsg = "修改失败!" }; // } //} //if (isUploadCore) //{ // return UploadCore(model.ID); //} //return Json(ret); } public JsonResult LookMsg() { retMsg ret = new retMsg(); try { var list = csvr_message_bl.GetList(m => m.EID == Eid && m.ISLOOK == 0); foreach (var item in list) { item.ISLOOK = 1; item.LOOKTIME = DateTime.Now; csvr_message_bl.Update(item); } ret = new retMsg() { result = true, retcode = 200, retmsg = "修改成功!" }; } catch (Exception e) { LogHelper.Error(e.ToString()); ret = new retMsg() { result = false, retcode = 200, retmsg = "修改失败!" }; } return Json(ret); } [HttpPost] public JsonResult UploadAtt() { var file = Request.Files[0]; var vPath = System.Configuration.ConfigurationManager.AppSettings["UploadTemFileDic"] + "/att"; var rootPath = Server.MapPath(vPath); if (!System.IO.Directory.Exists(rootPath)) { System.IO.Directory.CreateDirectory(rootPath); } var saveFileName = Guid.NewGuid().ToString() + Path.GetExtension(file.FileName); var urlPath = vPath + "/" + saveFileName; var fileName = Path.Combine(rootPath, saveFileName); file.SaveAs(fileName); return Json(new { result = true, retcode = 1, retmsg = urlPath }, JsonRequestBehavior.AllowGet); } [HttpGet] [AuthorizeToolBar(InitRights.CONST_广告策划, InitToolBar.CONST_Add)] public ActionResult Detail(decimal ID) { var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi); var url = $"{webapi}/api/CmsNews"; var para = $"id={ID}"; var result = Utility.GetData(url, para, Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); var model = data.data; ViewBag.NewsJson = Newtonsoft.Json.JsonConvert.SerializeObject(model); var salseDepts = bas_salesdepartment.GetList(); var info = salseDepts.FirstOrDefault(p => p.CHANNELMIN <= model.Channel && p.CHANNELMAX >= model.Channel); model.DEPTCODE = (info == null ? "" : info.DEPTNAME); ViewBag.Core_ZxdCoreUrl = cache_BL.GetValue_Parameter(Parameter.Core_ZxdCoreUrl); return View(model); //CMS_NEWS model = cms_news_bl.GetModel(ID); //if (model == null) //{ // model = new CMS_NEWS() { CREATEUSER = Eid, CREATEUSERNAME = UserName }; // ViewBag.NewsJson = Newtonsoft.Json.JsonConvert.SerializeObject(model); // return View(model); //} //ViewBag.NewsJson = Newtonsoft.Json.JsonConvert.SerializeObject(model); //List list = bas_salesdepartment.GetList(); //var info = list.FirstOrDefault(m => m.SALEDEPTCODE == model.DEPTCODE); //model.DEPTCODE = (info == null ? "" : info.DEPTNAME); //ViewBag.Core_ZxdCoreUrl = cache_BL.GetValue_Parameter(Parameter.Core_ZxdCoreUrl); //return View(model); } /// /// 上传至中心点 /// /// public JsonResult UploadCore(int id) { var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi); var url = $"{webapi}/api/CmsNews/Upload"; var request = new { Id = id, Uploader = UserName, UploaderId = (int)Eid }; var result = Utility.PostAjaxData(url, request.ToJson(), Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); if (data.code != 0 || !data.data) { return Json(new { result = false, retcode = 1, retmsg = data.message }, JsonRequestBehavior.AllowGet); } return Json(new { result = true, retcode = 1, retmsg = "上传成功!等待审核!" }, JsonRequestBehavior.AllowGet); //CMS_NEWS model = cms_news_bl.GetModel(ID); //var depment = cache_BL.GetList_SalesDepartMent(); //if (model == null) //{ // return Json(new { result = false, retcode = 1, retmsg = "找不到这条数据!" }, JsonRequestBehavior.AllowGet); //} //else //{ // if (model.UPSTATUS == 1) // { // return Json(new { result = false, retcode = 1, retmsg = "请不要重复上传!" }, JsonRequestBehavior.AllowGet); // } // try // { // var url = cache_BL.GetValue_Parameter(Parameter.Core_CmsNewsUpload_Url); // if (string.IsNullOrEmpty(model.DEPTCODE)) // { // model.DEPTCODE = companyCode; // } // model.Companycode = companyCode;//公司编码 // model.UPLOADNAME = UserName; // model.CTIME = DateTime.Now; // var dep = depment.Find(p => p.SALEDEPTCODE == model.DEPTCODE); // if (dep != null) // { // if (dep.CHANNELDEF.HasValue) // model.CHANNEL = dep.CHANNELDEF; // } // var resault = string.Empty; // //if (!string.IsNullOrEmpty(model.ATT)) // //{ // // Dictionary dic = new Dictionary(); // // dic.Add("param", model.ToJson()); // // string path = Server.MapPath(model.ATT); // // resault = PostFileToServer(path, Path.GetFileName(path), url, dic); // //} // //else // //{ // // Dictionary dic = new Dictionary(); // // dic.Add("param", model.ToJson()); // // string path = Server.MapPath(model.ATT); // // resault = PostFileToServer("", "", url, dic); // // //Utility.PostAjaxData(url, "param=" + model.ToJson(), Encoding.UTF8); // //} // Dictionary dic = new Dictionary(); // dic.Add("param", model.ToJson()); // resault = PostFileToServer("", "", url, dic); // var ret = Utility.ToObject>(resault); // if (ret.result) // { // if (!cms_news_bl.UpUploadStatus(ref errors, model.ID)) // { // return Json(new { result = false, retcode = 1, retmsg = "系统错误:" + errors.Error }, JsonRequestBehavior.AllowGet); // } // } // return Json(new { result = true, retcode = 1, retmsg = "上传成功!等待审核!" }, JsonRequestBehavior.AllowGet); // } // catch (Exception e) // { // return Json(new { result = false, retcode = 1, retmsg = "系统错误:" + e.Message }, JsonRequestBehavior.AllowGet); // } //} } public static string PostFileToServer(string filePath, string fileName, string postURL, Dictionary stringDict) { //参考http://www.cnblogs.com/greenerycn/archive/2010/05/15/csharp_http_post.html //string filePath = "d:\\apple4.jpg"; //string fileName = "apple4.jpg"; //string postURL = "http://192.168.1.11/testhandler/accfile.ashx"; // 边界符 var boundary = "---------------" + DateTime.Now.Ticks.ToString("x"); var beginBoundary = Encoding.ASCII.GetBytes("--" + boundary + "\r\n"); // 最后的结束符 var endBoundary = Encoding.ASCII.GetBytes("--" + boundary + "--\r\n"); // 开始拼数据 var memStream = new MemoryStream(); if (!string.IsNullOrEmpty(filePath)) { var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read); // 文件参数头 const string filePartHeader = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n" + "Content-Type: application/octet-stream\r\n\r\n"; var fileHeader = string.Format(filePartHeader, "file", fileName); var fileHeaderBytes = Encoding.UTF8.GetBytes(fileHeader); memStream.Write(beginBoundary, 0, beginBoundary.Length); // 文件数据 memStream.Write(fileHeaderBytes, 0, fileHeaderBytes.Length); var buffer = new byte[1024]; int bytesRead; // =0 while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) { memStream.Write(buffer, 0, bytesRead); } fileStream.Close(); } // Key-Value数据 var stringKeyHeader = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"{0}\"" + "\r\n\r\n{1}\r\n"; //Dictionary stringDict = new Dictionary(); //stringDict.Add("len", "500"); //stringDict.Add("wid", "300"); foreach (byte[] formitembytes in from string key in stringDict.Keys select string.Format(stringKeyHeader, key, stringDict[key]) into formitem select Encoding.UTF8.GetBytes(formitem)) { memStream.Write(formitembytes, 0, formitembytes.Length); } // 写入最后的结束边界符 memStream.Write(endBoundary, 0, endBoundary.Length); //倒腾到tempBuffer? memStream.Position = 0; var tempBuffer = new byte[memStream.Length]; memStream.Read(tempBuffer, 0, tempBuffer.Length); memStream.Close(); // 创建webRequest并设置属性 var webRequest = (HttpWebRequest)WebRequest.Create(postURL); webRequest.Method = "POST"; webRequest.Timeout = 100000; webRequest.ContentType = "multipart/form-data; boundary=" + boundary; webRequest.ContentLength = tempBuffer.Length; var requestStream = webRequest.GetRequestStream(); requestStream.Write(tempBuffer, 0, tempBuffer.Length); requestStream.Close(); var httpWebResponse = (HttpWebResponse)webRequest.GetResponse(); string responseContent; using (var httpStreamReader = new StreamReader(httpWebResponse.GetResponseStream(), Encoding.GetEncoding("utf-8"))) { responseContent = httpStreamReader.ReadToEnd(); } httpWebResponse.Close(); webRequest.Abort(); return responseContent; } /// /// Http上传文件 /// public static string HttpUploadFile(string url, string path) { // 设置参数 HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; CookieContainer cookieContainer = new CookieContainer(); request.CookieContainer = cookieContainer; request.AllowAutoRedirect = true; request.Method = "POST"; string boundary = DateTime.Now.Ticks.ToString("X"); // 随机分隔线 request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary; byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n"); byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n"); int pos = path.LastIndexOf("\\"); string fileName = path.Substring(pos + 1); //请求头部信息 StringBuilder sbHeader = new StringBuilder(string.Format("Content-Disposition:form-data;name=\"file\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n", fileName)); byte[] postHeaderBytes = Encoding.UTF8.GetBytes(sbHeader.ToString()); FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); byte[] bArr = new byte[fs.Length]; fs.Read(bArr, 0, bArr.Length); fs.Close(); Stream postStream = request.GetRequestStream(); postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length); postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length); postStream.Write(bArr, 0, bArr.Length); postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length); postStream.Close(); //发送请求并获取相应回应数据 HttpWebResponse response = request.GetResponse() as HttpWebResponse; //直到request.GetResponse()程序才开始向目标网页发送Post请求 Stream instream = response.GetResponseStream(); StreamReader sr = new StreamReader(instream, Encoding.UTF8); //返回结果网页(html)代码 string content = sr.ReadToEnd(); return content; } [AuthorizeRedirect(Roles = InitRights.CONST_广告策划)] public ActionResult Log(int Id) { ViewBag.Core_ZxdCoreUrl = cache_BL.GetValue_Parameter(Parameter.Core_ZxdCoreUrl); ViewBag.Id = Id; return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_广告策划)] public JsonResult NewsLog(decimal Id) { var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi); var url = $"{webapi}/api/CmsNews/Log"; var para = $"id={Id}"; var result = Utility.GetData(url, para, Encoding.UTF8); var data = JsonConvert.DeserializeObject>>(result); var model = new LayuiData() { msg = "数据加载成功!", count = data.data.Count(), code = 0, data = data.data }; return Json(model, JsonRequestBehavior.AllowGet); //var list = cms_news_bl.GetLogList(Id).ToList(); //List deptlist = bas_salesdepartment.GetList(); //foreach (var item in list) //{ // var info = deptlist.FirstOrDefault(m => m.SALEDEPTCODE == item.DEPTCODE); // item.DEPTCODE = info == null ? "" : info.DEPTNAME; // if (item.REASON != null && item.REASON > 0) // { // var reasonList = new List(); // foreach (var reason in reasons) // { // if ((reason.Key & (int)item.REASON) > 0) // { // reasonList.Add(reason.Value); // } // } // item.ReasonStr = string.Join(",", reasonList); // } //} //var data = new LayuiData() //{ // msg = "数据加载成功!", // count = list.Count(), // code = 0, // data = list //}; //return Json(data, JsonRequestBehavior.AllowGet); } private List GetDeptments() { var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi); var url = $"{webapi}/api/Department/List"; var headers = new Dictionary(); var appid = ConfigurationManager.AppSettings["appid"]; headers.Add("appid", appid); var result = Utility.GetData(url, "", headers, Encoding.UTF8); var response = JsonConvert.DeserializeObject>>(result); if (response.Code == 0) { return response.Data; } return new List(); } public class DeptmentDto { public int Id { get; set; } public string Title { get; set; } public string Code { get; set; } public string Appid { get; set; } public int DepartmentId { get; set; } public bool? IsDept { get; set; } public string CompanyCode { get; set; } public List DeptmentCampains { get; set; } } public class DeptmentCampainDto { public int StartCampainId { get; set; } public int EndCampainId { get; set; } } } }