ComplianceServer/oldcode/Core.Web/Controllers/NewsController.cs

464 lines
18 KiB
C#
Raw 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 Core.Web.App_Start;
using Core.Web.WebHelper;
using CRM.Core.BLL;
using CRM.Core.BLL.Base;
using CRM.Core.BLL.Cms;
using CRM.Core.BLL.EventBus.Events;
using CRM.Core.BLL.Util;
using CRM.Core.Common.EventBus;
using CRM.Core.Common.Layui;
using CRM.Core.Common.WebHelper;
using CRM.Core.DTO;
using CRM.Core.Model.Entity;
using CRM.Core.Model.Enum;
using Newtonsoft.Json;
using NPOI.POIFS.FileSystem;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Linq.Expressions;
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.StockHelper;
using static CRM.Core.Model.ConStringHelper;
namespace Core.Web.Controllers
{
public class NewsController : BaseController
{
private CMS_News_BL _news = new CMS_News_BL();
private CMS_News_Log_BL _newslog = new CMS_News_Log_BL();
private CACHE_BL _cache = new CACHE_BL();
private BAS_ROLE_BL role_bl = new BAS_ROLE_BL();
private Bas_CompanyVirtual_BL _companyvirtual = new Bas_CompanyVirtual_BL();
private BAS_PARAMETER_BL _paramter = new BAS_PARAMETER_BL();
[AuthorizeRedirect(RightsConfig.CONST_广告策划审核, ToolBarConfig.CONST_NotButton, true)]
public ActionResult Index()
{
ViewBag.Eid = Eid;
ViewBag.rightCode = RightsConfig.CONST_广告策划审核;
//List<Bas_CompanyVirtual> vurtual = _cache.GetCompanyVirtual();
var deptments = GetDeptments();
List<DeptmentDto> deptList = new List<DeptmentDto>();
ViewBag.hgServiceHost = _cache.GetValue_Parameter("HgCrm_ServiceHost");
ViewBag.File_Server = _cache.GetValue_Parameter("File_Server");
string[] comcodelist = role_bl.GetRoleComLists(userRoleId).Select(m => m.companycode).ToArray();
if (userRoleCodes.Contains("[GLY]"))//管理员看全部
{
//vurtual.Insert(0, new Bas_CompanyVirtual() { CompanyName = "--请选择--", CompanyCode = "" });
deptList = deptments;
}
else
{
//vurtual =
var cc = deptments.Where(m => comcodelist.Contains(m.CompanyCode)).ToList();
deptList = cc;
}
var deptMentlist = new List<Dictionary<string, string>>();
foreach (var item in deptList)
{
var channel = new Dictionary<string, string>
{
{ "name", item.Title },
{ "value", item.DepartmentId.ToString() }
};
deptMentlist.Add(channel);
}
ViewBag.companyList = deptMentlist.ToJson();
var reasons = GetReasonForRejection();
ViewBag.reasons = reasons;
var list = new List<Dictionary<string, string>>();
foreach (var item in reasons)
{
var channel = new Dictionary<string, string>
{
{ "name", item.Value },
{ "value", item.Key.ToString() }
};
list.Add(channel);
}
ViewBag.AllReasons = JsonHelper.ToJson(list);
BAS_PARAMETER model = _paramter.GetModel(CRM.Core.Model.Enum.Parameter.WeiXin_IllegalKewords.ToString());
if (model == null)
ViewBag.KeyWords = "";
else
ViewBag.KeyWords = model.PARAVALUE;
return View();
}
private List<DeptmentDto> GetDeptments()
{
var data = new List<DeptmentDto>();
var cacheKey = "cache_deptment_list";
if (CacheHelper.Exists(cacheKey))
{
data = CacheHelper.Get<List<DeptmentDto>>(cacheKey);
}
else
{
var webapi = _cache.GetValue_Parameter(Parameter.Hg_Core_WebApi);
var url = $"{webapi}/api/Department/List";
var result = Utility.GetData(url, "", Encoding.UTF8);
var response = JsonConvert.DeserializeObject<ApiResult<List<DeptmentDto>>>(result);
if (response.Code == 0)
{
data = response.Data;
CacheHelper.Set(cacheKey, data);
}
}
return data;
}
private Dictionary<int, string> GetReasonForRejection()
{
var data = new Dictionary<int, string>();
var cacheKey = "cache_new_reason_list";
if (CacheHelper.Exists(cacheKey))
{
data = CacheHelper.Get<Dictionary<int, string>>(cacheKey);
}
else
{
var webapi = _cache.GetValue_Parameter(Parameter.Hg_Core_WebApi);
var url = $"{webapi}/api/CmsNews/reason";
var result = Utility.GetData(url, "", Encoding.UTF8);
var response = JsonConvert.DeserializeObject<ApiResult<Dictionary<int, string>>>(result);
if (response.Code == 0)
{
data = response.Data;
CacheHelper.Set(cacheKey, data);
}
}
return data;
}
[HttpPost]
[AuthorizeRedirect(RightsConfig.CONST_广告策划审核, ToolBarConfig.CONST_NotButton, false)]
public JsonResult GetListHtml(Laypage pager, NewsQueryDto dto)
{
var webapi = _cache.GetValue_Parameter(Parameter.Hg_Core_WebApi);
var url = $"{webapi}/api/CmsNews/Page";
var appid = System.Configuration.ConfigurationManager.AppSettings["appid"];
ViewBag.appid = appid;
dto.appid = appid;
dto.PageIndex = pager.page;
dto.PageSize = pager.limit;
var para = Utility.GetParamToString(dto);
var result = Utility.GetData(url, para, Encoding.UTF8);
var page = JsonConvert.DeserializeObject<ApiResult<PageResult<CmsNewsDto>>>(result);
var list = new List<CmsNewsDto>();
if (page.Code == 0)
{
list = page.Data.Data.ToList();
}
var data = new LayuiData<CmsNewsDto>()
{
msg = "数据加载成功!",
count = page.Data.Total,
code = 0,
data = list
};
return Json(data, JsonRequestBehavior.AllowGet);
}
public JsonResult Add(CMS_News dto)
{
if (string.IsNullOrWhiteSpace(dto.Title) || string.IsNullOrWhiteSpace(dto.Content) || string.IsNullOrWhiteSpace(dto.NewsType))
{
return Json(new { result = false, code = -1, msg = "参数错误!" }, JsonRequestBehavior.AllowGet);
}
var model = new CMS_News(dto.NewsType, dto.Title, dto.Content, Convert.ToInt32(Eid), UserName, dto.Att, dto.Remark, 0);
_news.Add(model);
return Json(new { result = true, code = 0, msg = "提交成功!" }, JsonRequestBehavior.AllowGet);
}
public JsonResult Edit(CMS_News dto)
{
if (dto.Id <= 0)
{
return Json(new { result = false, code = -1, msg = "参数错误!" }, JsonRequestBehavior.AllowGet);
}
var model = _news.Get(p => p.Id == dto.Id);
if (model != null)
{
model.NewsType = dto.NewsType;
model.Title = dto.Title;
model.Content = dto.Content;
model.Status = 0;
model.CreateUser = Convert.ToInt32(Eid);
model.CreateUserName = UserName;
model.Att = dto.Att;
model.Remark = dto.Remark;
model.Author = dto.Author;
model.Channels = dto.Channels;
_news.Update(model);
}
else
{
return Json(new { result = false, code = -1, msg = "参数错误!" }, JsonRequestBehavior.AllowGet);
}
return Json(new { result = true, code = 0, msg = "提交成功!" }, JsonRequestBehavior.AllowGet);
}
public JsonResult Del(int Id)
{
retMsg ret = new retMsg();
var webapi = _cache.GetValue_Parameter(Parameter.Hg_Core_WebApi);
var url = $"{webapi}/api/CmsNews/Delete";
var data = new { DelUsername=UserName, Id=Id };
var result = Utility.PostAjaxData(url, data.ToJson(), Encoding.UTF8);
var resultData = JsonConvert.DeserializeObject<WX.CRM.Common.Employee.ApiResult<bool>>(result);
if (resultData.code == 0)
{
ret = new retMsg() { result = true, retcode = 200, retmsg = "提交成功!" };
}
else
{
ret = new retMsg() { result = false, retcode = 200, retmsg = "提交失败Error:" + resultData.msg };
}
return Json(ret);
}
public JsonResult Set(CMS_News model, string ImgListValue)
{
retMsg ret = new retMsg();
var webapi = _cache.GetValue_Parameter(Parameter.Hg_Core_WebApi);
var url = $"{webapi}/api/CmsNews/Audit";
model.Auditer = Eid;
model.AuditerName = UserName;
var result = Utility.PostAjaxData(url, model.ToJson(), Encoding.UTF8);
var data = JsonConvert.DeserializeObject<WX.CRM.Common.Employee.ApiResult<bool>>(result);
if (data.code == 0)
{
ret = new retMsg() { result = true, retcode = 200, retmsg = "提交成功!" };
}
else
{
ret = new retMsg() { result = false, retcode = 200, retmsg = "提交失败Error:" + data.msg };
}
model = _news.Get(x => x.Id == model.Id);
// 首华处理
if (model.deptcode == "TNBD")
{
CMS_News_Log log = new CMS_News_Log()
{
CTime = DateTime.Now,
Att = model.Att,
Content = model.Content,
deptcode = model.deptcode,
newid = model.Id,
NewsType = model.NewsType,
OpEvent = model.Status == 1 ? "通过审核" : "驳回",
OpName = model.AuditerName,
OpUser = model.Auditer.Value,
Remark = model.Remark,
Status = model.Status,
Title = model.Title,
AuditImg1 = model.AuditImg1,
AuditImg2 = model.AuditImg2,
AuditImg3 = model.AuditImg3,
AuditImg4 = model.AuditImg4,
AuditImg5 = model.AuditImg5,
AuditImg6 = model.AuditImg6,
CheckRemark = model.AuditRemark,
Channel = model.Channel,
Reason = model.Reason,
Channels = model.Channels,
Author = model.Author
};
string snedCode = "";
var companyCode = _cache.GetCompanyCode();
var company = companyCode.FirstOrDefault(p => p.Min <= model.Channel && p.Max >= model.Channel);
if (company != null)
{
snedCode = company.CompanyCode;
}
else
{
Bas_CompanyVirtual bas_company = _cache.GetCompanyVirtual().FirstOrDefault(m => m.deptcode == model.deptcode);
if (bas_company == null)
{
bas_company = _cache.GetCompanyVirtual().FirstOrDefault(m => m.CompanyCode == model.deptcode);
snedCode = bas_company.CompanyCode;
}
}
EventBus.Instance.Publish(new CmsNewsEvent(log, snedCode));
}
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);
}
[AuthorizeRedirect(RightsConfig.CONST_广告策划审核, ToolBarConfig.CONST_NotButton, true)]
public ActionResult Log(int Id)
{
ViewBag.Id = Id;
return View();
}
[HttpPost]
[AuthorizeRedirect(RightsConfig.CONST_广告策划审核, ToolBarConfig.CONST_NotButton, false)]
public JsonResult NewsLog(Laypage pager, int Id)
{
var webapi = _cache.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<ApiResult<List<CmsNewsLogDto>>>(result);
var model = new LayuiData<CmsNewsLogDto>()
{
msg = "数据加载成功!",
count = data.Data.Count(),
code = 0,
data = data.Data
};
return Json(model, JsonRequestBehavior.AllowGet);
}
public ActionResult Test()
{
return View();
}
[AuthorizeRedirect(RightsConfig.CONST_广告策划审核, ToolBarConfig.CONST_NotButton, true)]
public ActionResult Check(int id)
{
ViewBag.Id = id;
ViewBag.Eid = Eid;
ViewBag.UserName = UserName;
ViewBag.File_Server = _cache.GetValue_Parameter("File_Server");
var reasons = GetReasonForRejection();
ViewBag.reasons = reasons;
var model = _news.Get(x => x.Id == id);
if (model.Reason != null && model.Reason > 0)
{
var reasonList = new Dictionary<int, string>();
foreach (var reason in reasons)
{
if ((reason.Key & (int)model.Reason) > 0)
{
reasonList.Add(reason.Key, reason.Value);
}
}
model.ReasonStr = string.Join(",", reasonList.Values);
model.SelectReason = string.Join(",", reasonList.Keys);
}
ViewBag.Model = model.ToJson();
var list = new List<Dictionary<string, string>>();
foreach (var item in reasons)
{
var channel = new Dictionary<string, string>
{
{ "name", item.Value },
{ "value", item.Key.ToString() }
};
list.Add(channel);
}
ViewBag.AllReasons = JsonHelper.ToJson(list);
BAS_PARAMETER kewrods = _paramter.GetModel(CRM.Core.Model.Enum.Parameter.WeiXin_IllegalKewords.ToString());
if (model == null)
ViewBag.KeyWords = "";
else
ViewBag.KeyWords = kewrods.PARAVALUE;
return View();
}
public class NewsQueryDto
{
public string newstype { get; set; }
public string title { get; set; }
public DateTime? newsStartTime { get; set; }
public DateTime? newsEndTime { get; set; }
public int? status { get; set; }
public DateTime? auditStartTime { get; set; }
public DateTime? auditEndTime { get; set; }
public string channel { get; set; }
public int? reason { get; set; }
public string createUserName { get; set; }
public string auditerName { get; set; }
public string remark { get; set; }
public bool? IsUpload { get; set; }
public int? PageIndex { get; set; }
public int? PageSize { get; set; }
public string appid { get; set; }
public string DepartmentId { get; set; }
}
public class CmsNewsDto : CMS_News
{
public string DeptName { get; set; }
public string RejectedReason { get; set; }
}
public class CmsNewsLogDto : CMS_News_Log
{
public string DeptName { get; set; }
public string RejectedReason { get; set; }
}
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; }
}
}
}