using System; using System.Collections.Generic; using System.Linq; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Microsoft.AspNetCore.Authorization; using System.Web; using MySystem.MainModels; using LitJson; using Library; namespace MySystem.Areas.Api.Controllers.v1.pos { [Area("Api")] [Route("Api/v1/pos/[controller]/[action]")] public class UserTradeDaySummaryController : BaseController { public UserTradeDaySummaryController(IHttpContextAccessor accessor, ILogger logger, IOptions setting) : base(accessor, logger, setting) { } #region 首页-本月团队业绩 [Authorize] public JsonResult ThisMonth(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); Dictionary Obj = ThisMonthDo(value); return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj }); } public Dictionary ThisMonthDo(string value) { JsonData data = JsonMapper.ToObject(value); int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客 Dictionary Obj = new Dictionary(); string Month = DateTime.Now.ToString("yyyyMM"); IndexTeamPerformance performance = RedisDbconn.Instance.Get("IndexTeamPerformance:" + UserId + ":" + Month) ?? new IndexTeamPerformance(); Obj.Add("DirectTradeAmt", RedisDbconn.Instance.Get("TeamTradeStat:" + UserId + ":" + Month)); //团队交易总额 Obj.Add("DirectDebitCapNum", RedisDbconn.Instance.Get("TActMerchantCount:" + UserId + ":" + Month)); //直营激活商户数 Obj.Add("AddCount", performance.AddCount); //新增创客数 return Obj; } #endregion #region 首页-客小爽产品-我的业绩-个人业绩 [Authorize] public JsonResult PersonalPerformance(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); Dictionary Obj = PersonalPerformanceDo(value); return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj }); } public Dictionary PersonalPerformanceDo(string value) { JsonData data = JsonMapper.ToObject(value); int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客 string TradeMonth = data["TradeMonth"].ToString(); //交易月 Dictionary Obj = new Dictionary(); Obj.Add("TradeAmount", RedisDbconn.Instance.Get("TradeStat:" + UserId + ":" + TradeMonth)); //总交易额 Obj.Add("CardAmount", RedisDbconn.Instance.Get("TradeStat:Card:" + UserId + ":" + TradeMonth)); //刷卡总交易 Obj.Add("QrPayAmount", RedisDbconn.Instance.Get("TradeStat:QrPay:" + UserId + ":" + TradeMonth)); //云闪付小额交易 Obj.Add("MakerCount", UserDataDbconn.Instance.GetSelfMakerCount(UserId)); //累计总创客 Obj.Add("AddMakerCount", UserDataDbconn.Instance.GetSelfMakerCountForMonth(UserId, TradeMonth)); //新增创客 Obj.Add("ActMerchantCount", RedisDbconn.Instance.Get("ActMerchantCount:" + UserId)); //累计激活商户 Obj.Add("AddActMerchantCount", RedisDbconn.Instance.Get("ActMerchantCount:" + UserId + ":" + TradeMonth)); //新增激活商户 return Obj; } #endregion #region 首页-客小爽产品-我的业绩-个人业绩-按时间和产品统计 [Authorize] public JsonResult PersonalPerformanceForDateAndPro(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); Dictionary Obj = PersonalPerformanceForDateAndProDo(value); return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj }); } public Dictionary PersonalPerformanceForDateAndProDo(string value) { JsonData data = JsonMapper.ToObject(value); int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客 string TradeDate = data["TradeDate"].ToString(); //交易月/交易日 string ProductType = data["ProductType"].ToString(); //产品类型 Dictionary Obj = new Dictionary(); if (ProductType != "1") //MPOS没有扶持期 { //扶持期商户交易 Dictionary HelpTradeObj = new Dictionary(); PerformanceForDateAndPro HelpTrade = RedisDbconn.Instance.Get("PerformanceForDateAndPro:" + UserId + ":" + ProductType + ":Help:" + TradeDate) ?? new PerformanceForDateAndPro(); HelpTradeObj.Add("TradeAmount", HelpTrade.TradeAmount); HelpTradeObj.Add("CreditAmount", HelpTrade.CreditAmount); HelpTradeObj.Add("DebitNotCapAmount", HelpTrade.DebitNotCapAmount); HelpTradeObj.Add("DebitCapAmount", HelpTrade.DebitCapAmount); HelpTradeObj.Add("DebitCapCount", HelpTrade.DebitCapCount); HelpTradeObj.Add("QrTradeAmount", HelpTrade.QrTradeAmount); Obj.Add("HelpTrade", HelpTradeObj); } //稳定期商户交易 Dictionary NotHelpTradeObj = new Dictionary(); PerformanceForDateAndPro NotHelpTrade = RedisDbconn.Instance.Get("PerformanceForDateAndPro:" + UserId + ":" + ProductType + ":NotHelp:" + TradeDate) ?? new PerformanceForDateAndPro(); NotHelpTradeObj.Add("TradeAmount", NotHelpTrade.TradeAmount); NotHelpTradeObj.Add("CreditAmount", NotHelpTrade.CreditAmount); NotHelpTradeObj.Add("DebitNotCapAmount", NotHelpTrade.DebitNotCapAmount); NotHelpTradeObj.Add("DebitCapAmount", NotHelpTrade.DebitCapAmount); NotHelpTradeObj.Add("DebitCapCount", NotHelpTrade.DebitCapCount); NotHelpTradeObj.Add("QrTradeAmount", NotHelpTrade.QrTradeAmount); Obj.Add("NotHelpTrade", NotHelpTradeObj); //交易商户 List TradeMerchants = RedisDbconn.Instance.GetList("PerformanceForDateAndPro:Mer:" + UserId + ":" + ProductType + ":" + TradeDate); List> TradeMerchantList = new List>(); foreach (int TradeMerchantId in TradeMerchants) { PosMerchantInfo merchant = maindb.PosMerchantInfo.FirstOrDefault(m => m.Id == TradeMerchantId) ?? new PosMerchantInfo(); Dictionary item = new Dictionary(); item.Add("Name", merchant.MerchantName); //商户名称 item.Add("TradeAmount", RedisDbconn.Instance.Get("TradeStat:" + merchant.UserId + ":" + ProductType + ":" + TradeDate)); //交易额 TradeMerchantList.Add(item); } Obj.Add("TradeMerchants", TradeMerchantList); return Obj; } #endregion #region 首页-客小爽产品-我的业绩-个人业绩-每月明细 [Authorize] public JsonResult PersonalPerformanceForDay(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); List> dataList = PersonalPerformanceForDayDo(value); return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList }); } public List> PersonalPerformanceForDayDo(string value) { JsonData data = JsonMapper.ToObject(value); int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客 string TradeMonth = data["TradeMonth"].ToString(); //交易月 int PageSize = int.Parse(function.CheckInt(data["PageSize"].ToString())); int PageNum = int.Parse(function.CheckInt(data["PageNum"].ToString())); List> dataList = new List>(); DateTime start = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00"); if (DateTime.Now.ToString("yyyyMM") != TradeMonth) { start = DateTime.Parse(TradeMonth.Substring(0, 4) + "-" + TradeMonth.Substring(4, 2) + "-01 00:00:00").AddHours(1).AddDays(-1); } if (PageNum > 1) { int skipNum = PageSize * (PageNum - 1); start = start.AddDays(-skipNum); } for (int i = 0; i < PageSize; i++) { DateTime date = start.AddDays(-i); string Date = date.ToString("yyyyMMdd"); if (Date != DateTime.Now.ToString("yyyyMMdd")) { Dictionary curData = new Dictionary(); curData.Add("TradeDate", date.ToString("yyyy-MM-dd")); //交易月份 curData.Add("TradeAmount", RedisDbconn.Instance.Get("TradeStat:" + UserId + ":" + Date)); //总交易额 curData.Add("CardAmount", RedisDbconn.Instance.Get("TradeStat:Card:" + UserId + ":" + Date)); //刷卡总交易 curData.Add("QrPayAmount", RedisDbconn.Instance.Get("TradeStat:QrPay:" + UserId + ":" + Date)); //云闪付小额交易 List> ProductList = new List>(); List list = RedisDbconn.Instance.GetList("KqProducts", 1, 100); foreach (KqProducts sub in list) { decimal Amount = RedisDbconn.Instance.Get("TradeStat:" + UserId + ":" + sub.Id + ":" + Date); if (Amount > 0) { Dictionary item = new Dictionary(); item.Add("Id", sub.Id); //产品Id item.Add("Name", sub.Name); //名称 item.Add("Amount", Amount); //交易额 ProductList.Add(item); } } curData.Add("ProductList", ProductList); //产品列表 dataList.Add(curData); } } return dataList; } #endregion #region 首页-客小爽产品-我的业绩-个人业绩-近半年 [Authorize] public JsonResult PersonalPerformanceHalfYear(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); List> dataList = PersonalPerformanceHalfYearDo(value); return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList }); } public List> PersonalPerformanceHalfYearDo(string value) { JsonData data = JsonMapper.ToObject(value); int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客 int PageSize = int.Parse(function.CheckInt(data["PageSize"].ToString())); int PageNum = int.Parse(function.CheckInt(data["PageNum"].ToString())); List> dataList = new List>(); for (int i = 0; i < 6; i++) { DateTime Month = DateTime.Now.AddMonths(-i); Dictionary curData = new Dictionary(); curData.Add("TradeMonth", Month.ToString("yyyy-MM")); //交易月份 curData.Add("TradeAmount", RedisDbconn.Instance.Get("TradeStat:" + UserId + ":" + Month.ToString("yyyyMM"))); //总交易额 curData.Add("CardAmount", RedisDbconn.Instance.Get("TradeStat:Card:" + UserId + ":" + Month.ToString("yyyyMM"))); //刷卡总交易 curData.Add("QrPayAmount", RedisDbconn.Instance.Get("TradeStat:QrPay:" + UserId + ":" + Month.ToString("yyyyMM"))); //云闪付小额交易 List> ProductList = new List>(); List list = RedisDbconn.Instance.GetList("KqProducts", 1, 100); foreach (KqProducts sub in list) { decimal Amount = RedisDbconn.Instance.Get("TradeStat:" + UserId + ":" + sub.Id + ":" + Month.ToString("yyyyMM")); if (Amount > 0) { Dictionary item = new Dictionary(); item.Add("Id", sub.Id); //产品Id item.Add("Name", sub.Name); //名称 item.Add("Amount", Amount); //交易额 ProductList.Add(item); } } curData.Add("ProductList", ProductList); //产品列表 dataList.Add(curData); } return dataList; } #endregion #region 首页-客小爽产品-我的业绩-团队业绩 [Authorize] public JsonResult TeamPerformance(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); Dictionary Obj = TeamPerformanceDo(value); return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj }); } public Dictionary TeamPerformanceDo(string value) { JsonData data = JsonMapper.ToObject(value); int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客 string TradeMonth = data["TradeMonth"].ToString(); //交易月 Dictionary Obj = new Dictionary(); Obj.Add("TradeAmount", RedisDbconn.Instance.Get("TeamTradeStat:" + UserId + ":" + TradeMonth)); //总交易额 Obj.Add("CardAmount", RedisDbconn.Instance.Get("TeamTradeStat:Card:" + UserId + ":" + TradeMonth)); //刷卡总交易 Obj.Add("QrPayAmount", RedisDbconn.Instance.Get("TeamTradeStat:QrPay:" + UserId + ":" + TradeMonth)); //云闪付小额交易 Obj.Add("MakerCount", UserDataDbconn.Instance.GetTeamMakerCount(UserId)); //累计总创客 Obj.Add("AddMakerCount", UserDataDbconn.Instance.GetTeamMakerCountForMonth(UserId, TradeMonth)); //新增创客 Obj.Add("ActMerchantCount", RedisDbconn.Instance.Get("TActMerchantCount:" + UserId)); //累计激活商户 Obj.Add("AddActMerchantCount", RedisDbconn.Instance.Get("TActMerchantCount:" + UserId + ":" + TradeMonth)); //新增激活商户 return Obj; } #endregion #region 首页-客小爽产品-我的业绩-团队业绩-按时间和产品统计 [Authorize] public JsonResult TeamPerformanceForDateAndPro(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); Dictionary Obj = TeamPerformanceForDateAndProDo(value); return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj }); } public Dictionary TeamPerformanceForDateAndProDo(string value) { JsonData data = JsonMapper.ToObject(value); int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客 string TradeDate = data["TradeDate"].ToString(); //交易月/交易日 string ProductType = data["ProductType"].ToString(); //产品类型 Dictionary Obj = new Dictionary(); if (ProductType != "1") //MPOS没有扶持期 { //扶持期商户交易 Dictionary HelpTradeObj = new Dictionary(); PerformanceForDateAndPro HelpTrade = RedisDbconn.Instance.Get("TeamPerformanceForDateAndPro:" + UserId + ":" + ProductType + ":Help:" + TradeDate) ?? new PerformanceForDateAndPro(); HelpTradeObj.Add("TradeAmount", HelpTrade.TradeAmount); HelpTradeObj.Add("CreditAmount", HelpTrade.CreditAmount); HelpTradeObj.Add("DebitNotCapAmount", HelpTrade.DebitNotCapAmount); HelpTradeObj.Add("DebitCapAmount", HelpTrade.DebitCapAmount); HelpTradeObj.Add("DebitCapCount", HelpTrade.DebitCapCount); HelpTradeObj.Add("QrTradeAmount", HelpTrade.QrTradeAmount); Obj.Add("HelpTrade", HelpTradeObj); } //稳定期商户交易 Dictionary NotHelpTradeObj = new Dictionary(); PerformanceForDateAndPro NotHelpTrade = RedisDbconn.Instance.Get("TeamPerformanceForDateAndPro:" + UserId + ":" + ProductType + ":NotHelp:" + TradeDate) ?? new PerformanceForDateAndPro(); NotHelpTradeObj.Add("TradeAmount", NotHelpTrade.TradeAmount); NotHelpTradeObj.Add("CreditAmount", NotHelpTrade.CreditAmount); NotHelpTradeObj.Add("DebitNotCapAmount", NotHelpTrade.DebitNotCapAmount); NotHelpTradeObj.Add("DebitCapAmount", NotHelpTrade.DebitCapAmount); NotHelpTradeObj.Add("DebitCapCount", NotHelpTrade.DebitCapCount); NotHelpTradeObj.Add("QrTradeAmount", NotHelpTrade.QrTradeAmount); Obj.Add("NotHelpTrade", NotHelpTradeObj); //交易商户 // List TradeMerchants = RedisDbconn.Instance.GetList("TeamPerformanceForDateAndPro:Mer:" + UserId + ":" + ProductType + ":" + TradeDate); // List> TradeMerchantList = new List>(); // foreach (int TradeMerchantId in TradeMerchants) // { // MerchantInfo merchant = RedisDbconn.Instance.Get("MerchantInfo:" + TradeMerchantId) ?? new MerchantInfo(); // Dictionary item = new Dictionary(); // item.Add("Name", merchant.MerchantName); //商户名称 // item.Add("TradeAmount", RedisDbconn.Instance.Get("TeamTradeStat:" + merchant.UserId + ":" + ProductType + ":" + TradeDate)); //交易额 // TradeMerchantList.Add(item); // } // Obj.Add("TradeMerchants", TradeMerchantList); return Obj; } #endregion #region 首页-客小爽产品-我的业绩-团队业绩-每月明细 [Authorize] public JsonResult TeamPerformanceForDay(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); List> dataList = TeamPerformanceForDayDo(value); return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList }); } public List> TeamPerformanceForDayDo(string value) { JsonData data = JsonMapper.ToObject(value); int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客 string TradeMonth = data["TradeMonth"].ToString(); //交易月 string MerchantId = data["MerchantId"].ToString(); //商户Id int PageSize = int.Parse(function.CheckInt(data["PageSize"].ToString())); int PageNum = int.Parse(function.CheckInt(data["PageNum"].ToString())); List> dataList = new List>(); DateTime start = DateTime.Parse(TradeMonth.Substring(0, 4) + "-" + TradeMonth.Substring(4, 2) + "-01 00:00:00"); DateTime end = start.AddMonths(1).AddDays(-1); int skipNum = 1; if (PageNum > 1) { skipNum = PageSize * (PageNum - 1) + 1; } int index = 0; while (start <= end) { index += 1; if (index >= skipNum && dataList.Count < PageSize) { string Date = end.ToString("yyyyMMdd"); if (Date != DateTime.Now.ToString("yyyyMMdd")) { Dictionary curData = new Dictionary(); curData.Add("TradeDate", end.ToString("yyyy-MM-dd")); //交易月份 curData.Add("TradeAmount", RedisDbconn.Instance.Get("TeamTradeStat:" + UserId + ":" + MerchantId + ":" + Date)); //总交易额 curData.Add("CardAmount", RedisDbconn.Instance.Get("TeamTradeStat:Card:" + UserId + ":" + MerchantId + ":" + Date)); //刷卡总交易 curData.Add("QrPayAmount", RedisDbconn.Instance.Get("TeamTradeStat:QrPay:" + UserId + ":" + MerchantId + ":" + Date)); //云闪付小额交易 List> ProductList = new List>(); List list = RedisDbconn.Instance.GetList("KqProducts", 1, 100); foreach (KqProducts sub in list) { decimal Amount = RedisDbconn.Instance.Get("TeamTradeStat:" + UserId + ":" + MerchantId + ":" + sub.Id + ":" + Date); if (Amount > 0) { Dictionary item = new Dictionary(); item.Add("Id", sub.Id); //产品Id item.Add("Name", sub.Name); //名称 item.Add("Amount", Amount); //交易额 ProductList.Add(item); } } curData.Add("ProductList", ProductList); //产品列表 dataList.Add(curData); } } end = end.AddDays(-1); } return dataList; } #endregion #region 首页-客小爽产品-我的业绩-团队业绩-近半年 [Authorize] public JsonResult TeamPerformanceHalfYear(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); List> dataList = TeamPerformanceHalfYearDo(value); return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList }); } public List> TeamPerformanceHalfYearDo(string value) { JsonData data = JsonMapper.ToObject(value); int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客 string MerchantId = data["MerchantId"].ToString(); //商户Id int PageSize = int.Parse(function.CheckInt(data["PageSize"].ToString())); int PageNum = int.Parse(function.CheckInt(data["PageNum"].ToString())); List> dataList = new List>(); for (int i = 0; i < 6; i++) { DateTime Month = DateTime.Now.AddMonths(-i); Dictionary curData = new Dictionary(); curData.Add("TradeMonth", Month.ToString("yyyy-MM")); //交易月份 curData.Add("TradeAmount", RedisDbconn.Instance.Get("TeamTradeStat:" + UserId + ":" + MerchantId + ":" + Month.ToString("yyyyMM"))); //总交易额 curData.Add("CardAmount", RedisDbconn.Instance.Get("TeamTradeStat:Card:" + UserId + ":" + MerchantId + ":" + Month.ToString("yyyyMM"))); //刷卡总交易 curData.Add("QrPayAmount", RedisDbconn.Instance.Get("TeamTradeStat:QrPay:" + UserId + ":" + MerchantId + ":" + Month.ToString("yyyyMM"))); //云闪付小额交易 List> ProductList = new List>(); List list = RedisDbconn.Instance.GetList("KqProducts", 1, 100); foreach (KqProducts sub in list) { decimal Amount = RedisDbconn.Instance.Get("TeamTradeStat:" + UserId + ":" + MerchantId + ":" + sub.Id + ":" + Month.ToString("yyyyMM")); if (Amount > 0) { Dictionary item = new Dictionary(); item.Add("Id", sub.Id); //产品Id item.Add("Name", sub.Name); //名称 item.Add("Amount", Amount); //名称 ProductList.Add(item); } } curData.Add("ProductList", ProductList); //产品列表 dataList.Add(curData); } return dataList; } #endregion #region 首页-我的商户-商户详情-交易记录 [Authorize] public JsonResult MerchantTradeList(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); Dictionary Other = new Dictionary(); List> dataList = MerchantTradeListDo(value, out Other); return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList, Other = Other }); } public List> MerchantTradeListDo(string value, out Dictionary Other) { JsonData data = JsonMapper.ToObject(value); string TradeMonth = data["TradeMonth"].ToString(); //交易月 int MerchantId = int.Parse(function.CheckInt(data["MerchantId"].ToString())); //商户Id int PageSize = int.Parse(function.CheckInt(data["PageSize"].ToString())); int PageNum = int.Parse(function.CheckInt(data["PageNum"].ToString())); List> dataList = new List>(); PosMerchantInfo merchant = PosMerchantInfoDbconn.Instance.Get(MerchantId) ?? new PosMerchantInfo(); DateTime start = DateTime.Parse(TradeMonth.Substring(0, 4) + "-" + TradeMonth.Substring(4, 2) + "-01 00:00:00"); DateTime end = start.AddMonths(1).AddDays(-1); if (TradeMonth == DateTime.Now.ToString("yyyyMM")) { end = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00"); } int skipNum = 1; if (PageNum > 1) { skipNum = PageSize * (PageNum - 1) + 1; } int index = 0; while(start <= end) { index += 1; if (index >= skipNum && dataList.Count < PageSize) { Dictionary curData = new Dictionary(); curData.Add("TradeDate", end.ToString("yyyy-MM-dd")); //交易日 curData.Add("TradeAmt", PosMerchantTradeSummaryDbconn.Instance.GetDateTimeTrade(merchant.Id, end.ToString("yyyyMMdd"))); //交易额 dataList.Add(curData); } end = end.AddDays(-1); } Other = new Dictionary(); Other.Add("MonthTradeAmt", PosMerchantTradeSummaryDbconn.Instance.GetDateTimeTrade(merchant.Id, TradeMonth)); return dataList; } #endregion #region 检查签名是否合法,合法返回1,不合法返回提示信息 /// /// 检查签名是否合法,合法返回1,不合法返回提示信息 /// /// 请求的参数(json字符串) /// 要签名的字段 /// private string CheckSign(string value, string[] signField) { JsonData json = JsonMapper.ToObject(value); Dictionary dic = new Dictionary(); for (int i = 0; i < signField.Length; i++) { dic.Add(signField[i], json[signField[i]].ToString()); } string sign = json["sign"].ToString(); //客户端签名字符串 return new Sign().sign(dic, sign); } #endregion } }