using CRM.Core.DTO; using Newtonsoft.Json; using Ninject; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using System.Web.Mvc; using WX.CRM.BLL.Base; using WX.CRM.BLL.Util; using WX.CRM.Common; using WX.CRM.Common.Layui; using WX.CRM.Common.StockHelper; using WX.CRM.IBLL.Base; using WX.CRM.IBLL.Util; using WX.CRM.Model.DTO; using WX.CRM.Model.Enum; using WX.CRM.WebHelper; namespace WX.CRM.WEB.Controllers.WeiXin { public class InComplaintController: BaseController { public ICACHE_Q _cache { get; set; } [Inject] public IBAS_SALESDEPARTMENT_Q _bas_salesdepartment { get; set; } public readonly string webapi = ""; public InComplaintController(ICACHE_Q cache) { _cache = cache; webapi = _cache.GetValue_Parameter(Parameter.Hg_Core_WebApi); } [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-detail", "Deal_Click", true); tool.AddOtherButton("Other2", "查看回复", "icon-detail", "Detail_Click", true); tool.AddOtherButton("Other3", "延长期限", "icon-detail", "Prolong_Click", true); tool.AddOtherButton("Other4", "调整期限", "icon-detail", "Adjust_Click", true); tool.AddOtherButton("Other5", "导出", "icon-detail", "Export_Click", true); ViewBag.ToolBar = tool; //List list = _bas_salesdepartment.GetList(); var deptList = _cache.GetList_BusinessLines().ToList(); ViewBag.deptList = deptList; ViewBag.eid = Eid; return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_内诉处理列表)] public JsonResult GetHtmlList(Laypage pager, InComplaintRequest dto) { var layUidata = new LayuiData(); try { var data = GetList(pager, dto); layUidata.msg = "数据加载成功"; layUidata.code = 0; layUidata.data = data.data.Data.ToList(); layUidata.count = data.data.Total; } catch (Exception ex) { LogHelper.Error(ex.ToString()); layUidata.SetFail(1, "出现错误!" + ex.Message); } return Json(layUidata); } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_内诉处理列表)] public ActionResult Edit(int id) { var model = new InComplaintReplyDto(); var url = $"{webapi}/api/InComplaint/Restore"; var para = $"id={id}"; var result = Utility.GetData(url, para, Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); if (data.code == 0 && data.data != null) model = data.data; ViewBag.id = id; ViewBag.eid = Eid; ViewBag.userName = UserName; ViewBag.File_Server = _cache.GetValue_Parameter("File_Server"); return View(model); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_内诉处理列表)] public JsonResult EditSubmit(CreateInComplaintRestoreDto dto) { var url = $"{webapi}/api/InComplaint/Restore"; dto.RestoreType = 1; var result = Utility.PostAjaxData(url, dto.ToJson(), Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); retMsg ret = new retMsg(); if (data.code == 0 && data.data) ret = new retMsg() { result = true, retcode = 200, retmsg = "创建成功!" }; else ret = new retMsg() { result = false, retcode = 200, retmsg = "创建失败!" }; return Json(ret); } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_内诉处理列表)] public ActionResult Detail(int id) { var model = new InComplaintReplyDto(); var url = $"{webapi}/api/InComplaint/Restore"; var para = $"id={id}"; var result = Utility.GetData(url, para, Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); if (data.code == 0 && data.data != null) model = data.data; return View(model); } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_内诉处理列表)] public JsonResult ProLong(int id) { var model = new InComplaintProLongDto() { Id = id, Eid = Eid, Name = UserName }; var url = $"{webapi}/api/InComplaint/ProLong"; var result = Utility.PostAjaxData(url, model.ToJson(), Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); retMsg ret = new retMsg(); if (data.code == 0 && data.data) ret = new retMsg() { result = true, retcode = 200, retmsg = "延长成功!" }; else ret = new retMsg() { result = false, retcode = 200, retmsg = "延长失败!" }; return Json(ret, JsonRequestBehavior.AllowGet); } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_内诉处理列表)] public ActionResult Adjust(int id) { ViewBag.id = id; ViewBag.eid = Eid; ViewBag.username = UserName; return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_内诉处理列表)] public JsonResult AdjustSubmit(InComplaintAdjustDto dto) { try { var url = $"{webapi}/api/InComplaint/Adjust"; var result = Utility.PostAjaxData(url, dto.ToJson(), Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); retMsg ret = new retMsg(); if (data.code == 0 && data.data) ret = new retMsg() { result = true, retcode = 200, retmsg = "调整成功!" }; else ret = new retMsg() { result = false, retcode = 200, retmsg = "调整失败!" }; return Json(ret); } catch (Exception ex) { return Json(new retMsg() { result = false, retcode = 200, retmsg = "调整失败!" }); } } [AuthorizeRedirect(Roles = InitRights.CONST_内诉处理列表)] public ActionResult Export(InComplaintRequest dto) { var data = GetList(new Laypage { page = 1, limit = 100000 }, dto); if (data.code == 0) { string checkedFilds = PageRequest.GetQueryString("checkedFilds").Replace("[]", ""); string checkedTitles = PageRequest.GetQueryString("checkedTitles"); return File(ExcelHelper.ExportListModelToExcel(data.data.Data.ToList(), "内诉处理列表", 10000, checkedFilds, checkedTitles, DataFormart), "application/ms-excel", PageRequest.GetDlownLoadName("内诉处理列表.xls")); } return Json(new { message = "数据获取错误!" }, JsonRequestBehavior.AllowGet); } private string DataFormart(string key, object value) { string formartValue = string.Empty; switch (key) { case "inComplaintChannelList": case "reasonList": case "orderList": case "priceList": formartValue = string.Join("\n", Utility.ToObject>(Utility.ToJson(value))); break; default: formartValue = string.Format("{0}", value); break; } return formartValue; } private WX.CRM.Common.Employee.ApiResult> GetList(Laypage pager, InComplaintRequest dto) { try { string eids = null; var innerUserIds = new List(); var ug = _cache.GetList_InnerUserGroup(); if (dto.txt_userId.HasValue) { innerUserIds.Add(dto.txt_userId.Value); } else if (!string.IsNullOrWhiteSpace(dto.txt_groupIds)) { var users = ug.Where(x => x.GID == decimal.Parse(dto.txt_groupIds)).ToList(); if (users != null && users.Any()) innerUserIds.AddRange(users.Select(x => x.INNERUSERID).ToList()); } else if (!string.IsNullOrWhiteSpace(dto.txt_deptId)) { var users = ug.Where(x => x.DEPTID == decimal.Parse(dto.txt_deptId)).ToList(); if (users != null && users.Any()) innerUserIds.AddRange(users.Select(x => x.INNERUSERID).ToList()); } if (innerUserIds.Count > 0) eids = string.Join(",", new BAS_INNERUSER_BL().GetInnerUserByGroup(innerUserIds.ToArray()).Select(p => p.EID)); var deptIds = _cache.GetList_BusinessLines().ToList(); var showDeptIds = string.Join(",", deptIds.Select(x => x.BUSINESSID)); var url = $"{webapi}/api/InComplaint/page"; var para = $"Deptid={dto.Deptid}&Orderid={dto.Orderid}" + $"&Reason={dto.Reason}&Resid={dto.Resid}&CreaetOrUpdateUser={dto.CreaetOrUpdateUser}" + $"&BusinessStatus={dto.BusinessStatus}&Cname={dto.Cname}&ComplaintId={dto.ComplaintId}" + $"&DateType={dto.DateType}&DueStatus={dto.DueStatus}&Eid={dto.Eid}&showDeptIds={showDeptIds}" + $"&InComplaintChannel={dto.InComplaintChannel}&InComplaintStatus={dto.InComplaintStatus}" + $"&DateFrom={dto.DateFrom}&DateTo={dto.DateTo}&Eids={eids}&PageIndex={pager.page}&PageSize={pager.limit}"; var result = Utility.GetData(url, para, Encoding.UTF8); var data = JsonConvert.DeserializeObject>>(result); var list = data.data.Data.ToList(); if (data.code == 0 && data.data != null) { foreach (var item in list) { var uid = InnerUserHelper.Instance.GetUserIdByEid(item.eid); if (uid > 1) item.groupname = InnerUserHelper.Instance.GetGroupName(InnerUserHelper.Instance.GetGroupId(uid)); } } return data; } catch (Exception ex) { LogHelper.Error(ex.ToString()); throw new Exception(ex.ToString()); } } } }