using Ninject; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web.Mvc; using WX.CRM.Common; using WX.CRM.IBLL.WeWork; using WX.CRM.WebHelper; namespace WX.CRM.WEB.Controllers.WeWork { public class ExtUserController : BaseController { [Inject] public IWW_EXTUSER extUser_BL { get; set; } [HttpGet] [AuthorizeRedirect(InitRights.CONST_企业微信资源日报表)] public ActionResult DayReport() { string tableId = "tablist"; Table tab = new Table(tableId); tab.AddHeadCol("DayTime", "", "日期"); tab.AddHeadCol("ResourceCount", "", "资源数"); tab.AddHeadCol("DistinctResourceCount", "", "去重资源数"); tab.AddHeadRow(); ViewBag.gridTable = tab.GetTable(); return View(); } [HttpPost] public JsonResult DayReportHtml(string columns, string sdCTime, string edCTime) { try { if (string.IsNullOrEmpty(sdCTime) || string.IsNullOrEmpty(edCTime)) { return JsonHandler.ManageMessage("参数有误,请确认!", false); } DateTime? sTime = null; DateTime? eTime = null; DateTime stTime; DateTime etTime; DateTime.TryParse(sdCTime, out stTime); sTime = stTime; DateTime.TryParse(edCTime, out etTime); eTime = etTime.AddDays(1); Table table = new Table(columns, true); var dt = extUser_BL.CountByDayReport(sTime, eTime); var list = new List(); foreach (DataRow model in dt.Rows) { if (string.IsNullOrEmpty(model["DayTime"].ToString())) { table.AddCol("合计:"); table.AddCol(model["ResourceCount"].ToString()); table.AddCol(list.Sum()); } else { var i = getDistinctWeWordFriendCountFromCache(model["dayTime"].ToString()); list.Add(i); var linkUrl = string.Format("{2}", "企业微信日资源汇总", "/WeWork/ExtUser/UserDayReport?datetime=" + model["DayTime"], model["ResourceCount"]); table.AddCol(model["dayTime"].ToString()); table.AddCol(linkUrl); table.AddCol(i); } table.AddRow(); } var json = new { rowsList = table.GetRows() }; return Json(json, JsonRequestBehavior.AllowGet); } catch (Exception ex) { LogHelper.Error("ExtUserController:" + ex.Message + ex.StackTrace); return JsonHandler.ManageMessage(ex.Message, false); } } private decimal getDistinctWeWordFriendCountFromCache(string day) { if (string.IsNullOrWhiteSpace(day)) { return 0; } int days = 1;//默认是一天前 if (DateTime.Now.Date > Convert.ToDateTime(day).AddDays(days - 1)) { var cacheKey = "cache_GetDistinctWeWorkFriendCount_" + day; if (CacheHelper.Exists(cacheKey)) { return CacheHelper.Get(cacheKey); } else { var val = extUser_BL.GetDistinctWeWorkFriendCount(day); CacheHelper.Set(cacheKey, val, DateTime.Now.AddDays(1)); return val; } } else { return extUser_BL.GetDistinctWeWorkFriendCount(day); } } [HttpGet] [AuthorizeRedirect(InitRights.CONST_企业微信资源日报表)] public ViewResult UserDayReport(DateTime datetime, decimal? type) { string tableId = "tablist"; Table tab = new Table(tableId); //Pager pager = new Pager() { page = 1, rows = int.MaxValue }; tab.AddHeadCol("uname", "", "员工"); tab.AddHeadCol("userid", "", "工作微信号"); tab.AddHeadCol("ResourceCount", "", "资源数"); tab.AddHeadRow(); ViewBag.gridTable = tab.GetTable(); return View(); } public JsonResult UserDayReportHtml(string columns, DateTime datetime) { Table table = new Table(columns, true); try { DateTime eTime = datetime.AddDays(1); var dt = extUser_BL.CountByUserAndDay(datetime, eTime); foreach (DataRow item in dt.Rows) { var linkUrl = string.Format("{2}", "企业微信员工日资源详细", "/WeWork/ExtUser/BeiJiaResource?userId=" + item["userid"] + "&day=" + datetime.ToString("yyyy-MM-dd"), item["ResourceCount"]); table.AddCol(item["uname"]); table.AddCol(item["userid"]); table.AddCol(linkUrl); table.AddRow(); } } catch (Exception ex) { LogHelper.Error("ExtUserController:" + ex.Message + ex.StackTrace); return JsonHandler.ManageMessage(ex.Message, false); } var json = new { rowsList = table.GetRows() }; return Json(json, JsonRequestBehavior.AllowGet); } [HttpGet] [AuthorizeRedirect(InitRights.CONST_企业微信资源日报表)] public ActionResult BeiJiaResource(string day, string userId) { string tableId = "tablist"; Table tab = new Table(tableId); tab.AddHeadCol("userid", "", "ID"); tab.AddHeadCol("name", "", "昵称"); tab.AddHeadCol("avatar", "", "头像"); tab.AddHeadCol("ctime", "", "添加时间"); tab.AddHeadRow(); ViewBag.gridTable = tab.GetTable(); ViewBag.day = day; ViewBag.userId = userId; return View(); } [HttpPost] public JsonResult BeiJiaResourceHtml(string columns) { try { var day = Request["day"]; var userId = Request["userId"]; DateTime? time = null; if (!string.IsNullOrEmpty(day)) { DateTime t; DateTime.TryParse(day, out t); time = t; } Table table = new Table(columns, true); var list = extUser_BL.GetList(userId, time); foreach (var item in list) { table.AddCol(item.WW_ExtUser.USERID); table.AddCol(item.WW_ExtUser.NAME); table.AddCol(string.Format("", item.WW_ExtUser.AVATAR)); table.AddCol(item.WW_ExtUser.CTIME); table.AddRow(); } var json = new { rowsList = table.GetRows() }; return Json(json, JsonRequestBehavior.AllowGet); } catch (Exception ex) { LogHelper.Error("BeiJiaResourceHtml:" + ex.Message + ex.StackTrace); return JsonHandler.ManageMessage(ex.Message, false); } } } }