TG.WXCRM.V4/WEB/Controllers/Cms/CmsUpController.cs

624 lines
26 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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_广告策划)]
/// <summary>
/// /
/// </summary>
/// <returns></returns>
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<CMS_NEWS_Map>();
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<Common.Employee.ApiResult<PageResult<CMS_NEWS_Map>>>(result);
var list = new List<CMS_NEWS_Map>();
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<Common.Employee.ApiResult<CMS_NEWS_Map>>(result);
model = data.data;
}
ViewBag.NewsJson = Newtonsoft.Json.JsonConvert.SerializeObject(model);
ViewBag.Files_Server = cache_BL.GetValue_Parameter(Parameter.Files_Server);
List<WX.CRM.Model.Entity.BAS_SALESDEPARTMENT> 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<WX.CRM.Model.Entity.BAS_SALESDEPARTMENT> 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<WX.CRM.Common.Employee.ApiResult<int>>(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<Common.Employee.ApiResult<CMS_NEWS_Map>>(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<WX.CRM.Model.Entity.BAS_SALESDEPARTMENT> 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);
}
/// <summary>
/// 上传至中心点
/// </summary>
/// <returns></returns>
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<WX.CRM.Common.Employee.ApiResult<bool>>(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<string, string> dic = new Dictionary<string, string>();
// // dic.Add("param", model.ToJson());
// // string path = Server.MapPath(model.ATT);
// // resault = PostFileToServer(path, Path.GetFileName(path), url, dic);
// //}
// //else
// //{
// // Dictionary<string, string> dic = new Dictionary<string, string>();
// // dic.Add("param", model.ToJson());
// // string path = Server.MapPath(model.ATT);
// // resault = PostFileToServer("", "", url, dic);
// // //Utility.PostAjaxData(url, "param=" + model.ToJson(), Encoding.UTF8);
// //}
// Dictionary<string, string> dic = new Dictionary<string, string>();
// dic.Add("param", model.ToJson());
// resault = PostFileToServer("", "", url, dic);
// var ret = Utility.ToObject<retMsg<string>>(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<string, string> 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<string, string> stringDict = new Dictionary<string, string>();
//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;
}
/// <summary>
/// Http上传文件
/// </summary>
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<Common.Employee.ApiResult<List<CMS_NEWS_LOG>>>(result);
var model = new LayuiData<CMS_NEWS_LOG>()
{
msg = "数据加载成功!",
count = data.data.Count(),
code = 0,
data = data.data
};
return Json(model, JsonRequestBehavior.AllowGet);
//var list = cms_news_bl.GetLogList(Id).ToList();
//List<WX.CRM.Model.Entity.BAS_SALESDEPARTMENT> 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<string>();
// 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<CMS_NEWS_LOG>()
//{
// msg = "数据加载成功!",
// count = list.Count(),
// code = 0,
// data = list
//};
//return Json(data, JsonRequestBehavior.AllowGet);
}
private List<DeptmentDto> GetDeptments()
{
var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi);
var url = $"{webapi}/api/Department/List";
var headers = new Dictionary<string, string>();
var appid = ConfigurationManager.AppSettings["appid"];
headers.Add("appid", appid);
var result = Utility.GetData(url, "", headers, Encoding.UTF8);
var response = JsonConvert.DeserializeObject<ApiResult<List<DeptmentDto>>>(result);
if (response.Code == 0)
{
return response.Data;
}
return new List<DeptmentDto>();
}
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<DeptmentCampainDto> DeptmentCampains { get; set; }
}
public class DeptmentCampainDto
{
public int StartCampainId { get; set; }
public int EndCampainId { get; set; }
}
}
}