TG.WXCRM.V4/WEB/Controllers/WeWork/ExtUserController.cs

217 lines
7.7 KiB
C#

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<decimal>();
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("<a href=\"javascript:parent.ChildAddTab('{0}', '{1}', '')\">{2}</a>", "企业微信日资源汇总", "/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<decimal>(cacheKey);
}
else
{
var val = extUser_BL.GetDistinctWeWorkFriendCount(day);
CacheHelper.Set<decimal>(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("<a href=\"javascript:parent.ChildAddTab('{0}', '{1}', '')\">{2}</a>", "企业微信员工日资源详细", "/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("<img src='{0}' width='50' height='50'/>", 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);
}
}
}
}