UserTradeDaySummaryController.cs 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Microsoft.AspNetCore.Mvc;
  5. using Microsoft.AspNetCore.Http;
  6. using Microsoft.Extensions.Logging;
  7. using Microsoft.Extensions.Options;
  8. using Microsoft.AspNetCore.Authorization;
  9. using System.Web;
  10. using MySystem.MainModels;
  11. using LitJson;
  12. using Library;
  13. namespace MySystem.Areas.Api.Controllers.v1.pos
  14. {
  15. [Area("Api")]
  16. [Route("Api/v1/pos/[controller]/[action]")]
  17. public class UserTradeDaySummaryController : BaseController
  18. {
  19. public UserTradeDaySummaryController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
  20. {
  21. }
  22. #region 首页-本月团队业绩
  23. [Authorize]
  24. public JsonResult ThisMonth(string value)
  25. {
  26. value = DesDecrypt(value);
  27. JsonData data = JsonMapper.ToObject(value);
  28. Dictionary<string, object> Obj = ThisMonthDo(value);
  29. return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj });
  30. }
  31. public Dictionary<string, object> ThisMonthDo(string value)
  32. {
  33. JsonData data = JsonMapper.ToObject(value);
  34. int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客
  35. Dictionary<string, object> Obj = new Dictionary<string, object>();
  36. string Month = DateTime.Now.ToString("yyyyMM");
  37. IndexTeamPerformance performance = RedisDbconn.Instance.Get<IndexTeamPerformance>("IndexTeamPerformance:" + UserId + ":" + Month) ?? new IndexTeamPerformance();
  38. Obj.Add("DirectTradeAmt", RedisDbconn.Instance.Get<decimal>("TeamTradeStat:" + UserId + ":" + Month)); //团队交易总额
  39. Obj.Add("DirectDebitCapNum", RedisDbconn.Instance.Get<int>("TActMerchantCount:" + UserId + ":" + Month)); //直营激活商户数
  40. Obj.Add("AddCount", performance.AddCount); //新增创客数
  41. return Obj;
  42. }
  43. #endregion
  44. #region 首页-客小爽产品-我的业绩-个人业绩
  45. [Authorize]
  46. public JsonResult PersonalPerformance(string value)
  47. {
  48. value = DesDecrypt(value);
  49. JsonData data = JsonMapper.ToObject(value);
  50. Dictionary<string, object> Obj = PersonalPerformanceDo(value);
  51. return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj });
  52. }
  53. public Dictionary<string, object> PersonalPerformanceDo(string value)
  54. {
  55. JsonData data = JsonMapper.ToObject(value);
  56. int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客
  57. string TradeMonth = data["TradeMonth"].ToString(); //交易月
  58. Dictionary<string, object> Obj = new Dictionary<string, object>();
  59. Obj.Add("TradeAmount", RedisDbconn.Instance.Get<decimal>("TradeStat:" + UserId + ":" + TradeMonth)); //总交易额
  60. Obj.Add("CardAmount", RedisDbconn.Instance.Get<decimal>("TradeStat:Card:" + UserId + ":" + TradeMonth)); //刷卡总交易
  61. Obj.Add("QrPayAmount", RedisDbconn.Instance.Get<decimal>("TradeStat:QrPay:" + UserId + ":" + TradeMonth)); //云闪付小额交易
  62. Obj.Add("MakerCount", UserDataDbconn.Instance.GetSelfMakerCount(UserId)); //累计总创客
  63. Obj.Add("AddMakerCount", UserDataDbconn.Instance.GetSelfMakerCountForMonth(UserId, TradeMonth)); //新增创客
  64. Obj.Add("ActMerchantCount", RedisDbconn.Instance.Get<int>("ActMerchantCount:" + UserId)); //累计激活商户
  65. Obj.Add("AddActMerchantCount", RedisDbconn.Instance.Get<int>("ActMerchantCount:" + UserId + ":" + TradeMonth)); //新增激活商户
  66. return Obj;
  67. }
  68. #endregion
  69. #region 首页-客小爽产品-我的业绩-个人业绩-按时间和产品统计
  70. [Authorize]
  71. public JsonResult PersonalPerformanceForDateAndPro(string value)
  72. {
  73. value = DesDecrypt(value);
  74. JsonData data = JsonMapper.ToObject(value);
  75. Dictionary<string, object> Obj = PersonalPerformanceForDateAndProDo(value);
  76. return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj });
  77. }
  78. public Dictionary<string, object> PersonalPerformanceForDateAndProDo(string value)
  79. {
  80. JsonData data = JsonMapper.ToObject(value);
  81. int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客
  82. string TradeDate = data["TradeDate"].ToString(); //交易月/交易日
  83. string ProductType = data["ProductType"].ToString(); //产品类型
  84. Dictionary<string, object> Obj = new Dictionary<string, object>();
  85. if (ProductType != "1") //MPOS没有扶持期
  86. {
  87. //扶持期商户交易
  88. Dictionary<string, object> HelpTradeObj = new Dictionary<string, object>();
  89. PerformanceForDateAndPro HelpTrade = RedisDbconn.Instance.Get<PerformanceForDateAndPro>("PerformanceForDateAndPro:" + UserId + ":" + ProductType + ":Help:" + TradeDate) ?? new PerformanceForDateAndPro();
  90. HelpTradeObj.Add("TradeAmount", HelpTrade.TradeAmount);
  91. HelpTradeObj.Add("CreditAmount", HelpTrade.CreditAmount);
  92. HelpTradeObj.Add("DebitNotCapAmount", HelpTrade.DebitNotCapAmount);
  93. HelpTradeObj.Add("DebitCapAmount", HelpTrade.DebitCapAmount);
  94. HelpTradeObj.Add("DebitCapCount", HelpTrade.DebitCapCount);
  95. HelpTradeObj.Add("QrTradeAmount", HelpTrade.QrTradeAmount);
  96. Obj.Add("HelpTrade", HelpTradeObj);
  97. }
  98. //稳定期商户交易
  99. Dictionary<string, object> NotHelpTradeObj = new Dictionary<string, object>();
  100. PerformanceForDateAndPro NotHelpTrade = RedisDbconn.Instance.Get<PerformanceForDateAndPro>("PerformanceForDateAndPro:" + UserId + ":" + ProductType + ":NotHelp:" + TradeDate) ?? new PerformanceForDateAndPro();
  101. NotHelpTradeObj.Add("TradeAmount", NotHelpTrade.TradeAmount);
  102. NotHelpTradeObj.Add("CreditAmount", NotHelpTrade.CreditAmount);
  103. NotHelpTradeObj.Add("DebitNotCapAmount", NotHelpTrade.DebitNotCapAmount);
  104. NotHelpTradeObj.Add("DebitCapAmount", NotHelpTrade.DebitCapAmount);
  105. NotHelpTradeObj.Add("DebitCapCount", NotHelpTrade.DebitCapCount);
  106. NotHelpTradeObj.Add("QrTradeAmount", NotHelpTrade.QrTradeAmount);
  107. Obj.Add("NotHelpTrade", NotHelpTradeObj);
  108. //交易商户
  109. List<int> TradeMerchants = RedisDbconn.Instance.GetList<int>("PerformanceForDateAndPro:Mer:" + UserId + ":" + ProductType + ":" + TradeDate);
  110. List<Dictionary<string, object>> TradeMerchantList = new List<Dictionary<string, object>>();
  111. foreach (int TradeMerchantId in TradeMerchants)
  112. {
  113. PosMerchantInfo merchant = maindb.PosMerchantInfo.FirstOrDefault(m => m.Id == TradeMerchantId) ?? new PosMerchantInfo();
  114. Dictionary<string, object> item = new Dictionary<string, object>();
  115. item.Add("Name", merchant.MerchantName); //商户名称
  116. item.Add("TradeAmount", RedisDbconn.Instance.Get<decimal>("TradeStat:" + merchant.UserId + ":" + ProductType + ":" + TradeDate)); //交易额
  117. TradeMerchantList.Add(item);
  118. }
  119. Obj.Add("TradeMerchants", TradeMerchantList);
  120. return Obj;
  121. }
  122. #endregion
  123. #region 首页-客小爽产品-我的业绩-个人业绩-每月明细
  124. [Authorize]
  125. public JsonResult PersonalPerformanceForDay(string value)
  126. {
  127. value = DesDecrypt(value);
  128. JsonData data = JsonMapper.ToObject(value);
  129. List<Dictionary<string, object>> dataList = PersonalPerformanceForDayDo(value);
  130. return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList });
  131. }
  132. public List<Dictionary<string, object>> PersonalPerformanceForDayDo(string value)
  133. {
  134. JsonData data = JsonMapper.ToObject(value);
  135. int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客
  136. string TradeMonth = data["TradeMonth"].ToString(); //交易月
  137. int PageSize = int.Parse(function.CheckInt(data["PageSize"].ToString()));
  138. int PageNum = int.Parse(function.CheckInt(data["PageNum"].ToString()));
  139. List<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
  140. DateTime start = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00");
  141. if (DateTime.Now.ToString("yyyyMM") != TradeMonth)
  142. {
  143. start = DateTime.Parse(TradeMonth.Substring(0, 4) + "-" + TradeMonth.Substring(4, 2) + "-01 00:00:00").AddHours(1).AddDays(-1);
  144. }
  145. if (PageNum > 1)
  146. {
  147. int skipNum = PageSize * (PageNum - 1);
  148. start = start.AddDays(-skipNum);
  149. }
  150. for (int i = 0; i < PageSize; i++)
  151. {
  152. DateTime date = start.AddDays(-i);
  153. string Date = date.ToString("yyyyMMdd");
  154. if (Date != DateTime.Now.ToString("yyyyMMdd"))
  155. {
  156. Dictionary<string, object> curData = new Dictionary<string, object>();
  157. curData.Add("TradeDate", date.ToString("yyyy-MM-dd")); //交易月份
  158. curData.Add("TradeAmount", RedisDbconn.Instance.Get<decimal>("TradeStat:" + UserId + ":" + Date)); //总交易额
  159. curData.Add("CardAmount", RedisDbconn.Instance.Get<decimal>("TradeStat:Card:" + UserId + ":" + Date)); //刷卡总交易
  160. curData.Add("QrPayAmount", RedisDbconn.Instance.Get<decimal>("TradeStat:QrPay:" + UserId + ":" + Date)); //云闪付小额交易
  161. List<Dictionary<string, object>> ProductList = new List<Dictionary<string, object>>();
  162. List<KqProducts> list = RedisDbconn.Instance.GetList<KqProducts>("KqProducts", 1, 100);
  163. foreach (KqProducts sub in list)
  164. {
  165. decimal Amount = RedisDbconn.Instance.Get<decimal>("TradeStat:" + UserId + ":" + sub.Id + ":" + Date);
  166. if (Amount > 0)
  167. {
  168. Dictionary<string, object> item = new Dictionary<string, object>();
  169. item.Add("Id", sub.Id); //产品Id
  170. item.Add("Name", sub.Name); //名称
  171. item.Add("Amount", Amount); //交易额
  172. ProductList.Add(item);
  173. }
  174. }
  175. curData.Add("ProductList", ProductList); //产品列表
  176. dataList.Add(curData);
  177. }
  178. }
  179. return dataList;
  180. }
  181. #endregion
  182. #region 首页-客小爽产品-我的业绩-个人业绩-近半年
  183. [Authorize]
  184. public JsonResult PersonalPerformanceHalfYear(string value)
  185. {
  186. value = DesDecrypt(value);
  187. JsonData data = JsonMapper.ToObject(value);
  188. List<Dictionary<string, object>> dataList = PersonalPerformanceHalfYearDo(value);
  189. return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList });
  190. }
  191. public List<Dictionary<string, object>> PersonalPerformanceHalfYearDo(string value)
  192. {
  193. JsonData data = JsonMapper.ToObject(value);
  194. int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客
  195. int PageSize = int.Parse(function.CheckInt(data["PageSize"].ToString()));
  196. int PageNum = int.Parse(function.CheckInt(data["PageNum"].ToString()));
  197. List<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
  198. for (int i = 0; i < 6; i++)
  199. {
  200. DateTime Month = DateTime.Now.AddMonths(-i);
  201. Dictionary<string, object> curData = new Dictionary<string, object>();
  202. curData.Add("TradeMonth", Month.ToString("yyyy-MM")); //交易月份
  203. curData.Add("TradeAmount", RedisDbconn.Instance.Get<decimal>("TradeStat:" + UserId + ":" + Month.ToString("yyyyMM"))); //总交易额
  204. curData.Add("CardAmount", RedisDbconn.Instance.Get<decimal>("TradeStat:Card:" + UserId + ":" + Month.ToString("yyyyMM"))); //刷卡总交易
  205. curData.Add("QrPayAmount", RedisDbconn.Instance.Get<decimal>("TradeStat:QrPay:" + UserId + ":" + Month.ToString("yyyyMM"))); //云闪付小额交易
  206. List<Dictionary<string, object>> ProductList = new List<Dictionary<string, object>>();
  207. List<KqProducts> list = RedisDbconn.Instance.GetList<KqProducts>("KqProducts", 1, 100);
  208. foreach (KqProducts sub in list)
  209. {
  210. decimal Amount = RedisDbconn.Instance.Get<decimal>("TradeStat:" + UserId + ":" + sub.Id + ":" + Month.ToString("yyyyMM"));
  211. if (Amount > 0)
  212. {
  213. Dictionary<string, object> item = new Dictionary<string, object>();
  214. item.Add("Id", sub.Id); //产品Id
  215. item.Add("Name", sub.Name); //名称
  216. item.Add("Amount", Amount); //交易额
  217. ProductList.Add(item);
  218. }
  219. }
  220. curData.Add("ProductList", ProductList); //产品列表
  221. dataList.Add(curData);
  222. }
  223. return dataList;
  224. }
  225. #endregion
  226. #region 首页-客小爽产品-我的业绩-团队业绩
  227. [Authorize]
  228. public JsonResult TeamPerformance(string value)
  229. {
  230. value = DesDecrypt(value);
  231. JsonData data = JsonMapper.ToObject(value);
  232. Dictionary<string, object> Obj = TeamPerformanceDo(value);
  233. return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj });
  234. }
  235. public Dictionary<string, object> TeamPerformanceDo(string value)
  236. {
  237. JsonData data = JsonMapper.ToObject(value);
  238. int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客
  239. string TradeMonth = data["TradeMonth"].ToString(); //交易月
  240. Dictionary<string, object> Obj = new Dictionary<string, object>();
  241. Obj.Add("TradeAmount", RedisDbconn.Instance.Get<decimal>("TeamTradeStat:" + UserId + ":" + TradeMonth)); //总交易额
  242. Obj.Add("CardAmount", RedisDbconn.Instance.Get<decimal>("TeamTradeStat:Card:" + UserId + ":" + TradeMonth)); //刷卡总交易
  243. Obj.Add("QrPayAmount", RedisDbconn.Instance.Get<decimal>("TeamTradeStat:QrPay:" + UserId + ":" + TradeMonth)); //云闪付小额交易
  244. Obj.Add("MakerCount", UserDataDbconn.Instance.GetTeamMakerCount(UserId)); //累计总创客
  245. Obj.Add("AddMakerCount", UserDataDbconn.Instance.GetTeamMakerCountForMonth(UserId, TradeMonth)); //新增创客
  246. Obj.Add("ActMerchantCount", RedisDbconn.Instance.Get<int>("TActMerchantCount:" + UserId)); //累计激活商户
  247. Obj.Add("AddActMerchantCount", RedisDbconn.Instance.Get<int>("TActMerchantCount:" + UserId + ":" + TradeMonth)); //新增激活商户
  248. return Obj;
  249. }
  250. #endregion
  251. #region 首页-客小爽产品-我的业绩-团队业绩-按时间和产品统计
  252. [Authorize]
  253. public JsonResult TeamPerformanceForDateAndPro(string value)
  254. {
  255. value = DesDecrypt(value);
  256. JsonData data = JsonMapper.ToObject(value);
  257. Dictionary<string, object> Obj = TeamPerformanceForDateAndProDo(value);
  258. return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj });
  259. }
  260. public Dictionary<string, object> TeamPerformanceForDateAndProDo(string value)
  261. {
  262. JsonData data = JsonMapper.ToObject(value);
  263. int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客
  264. string TradeDate = data["TradeDate"].ToString(); //交易月/交易日
  265. string ProductType = data["ProductType"].ToString(); //产品类型
  266. Dictionary<string, object> Obj = new Dictionary<string, object>();
  267. if (ProductType != "1") //MPOS没有扶持期
  268. {
  269. //扶持期商户交易
  270. Dictionary<string, object> HelpTradeObj = new Dictionary<string, object>();
  271. PerformanceForDateAndPro HelpTrade = RedisDbconn.Instance.Get<PerformanceForDateAndPro>("TeamPerformanceForDateAndPro:" + UserId + ":" + ProductType + ":Help:" + TradeDate) ?? new PerformanceForDateAndPro();
  272. HelpTradeObj.Add("TradeAmount", HelpTrade.TradeAmount);
  273. HelpTradeObj.Add("CreditAmount", HelpTrade.CreditAmount);
  274. HelpTradeObj.Add("DebitNotCapAmount", HelpTrade.DebitNotCapAmount);
  275. HelpTradeObj.Add("DebitCapAmount", HelpTrade.DebitCapAmount);
  276. HelpTradeObj.Add("DebitCapCount", HelpTrade.DebitCapCount);
  277. HelpTradeObj.Add("QrTradeAmount", HelpTrade.QrTradeAmount);
  278. Obj.Add("HelpTrade", HelpTradeObj);
  279. }
  280. //稳定期商户交易
  281. Dictionary<string, object> NotHelpTradeObj = new Dictionary<string, object>();
  282. PerformanceForDateAndPro NotHelpTrade = RedisDbconn.Instance.Get<PerformanceForDateAndPro>("TeamPerformanceForDateAndPro:" + UserId + ":" + ProductType + ":NotHelp:" + TradeDate) ?? new PerformanceForDateAndPro();
  283. NotHelpTradeObj.Add("TradeAmount", NotHelpTrade.TradeAmount);
  284. NotHelpTradeObj.Add("CreditAmount", NotHelpTrade.CreditAmount);
  285. NotHelpTradeObj.Add("DebitNotCapAmount", NotHelpTrade.DebitNotCapAmount);
  286. NotHelpTradeObj.Add("DebitCapAmount", NotHelpTrade.DebitCapAmount);
  287. NotHelpTradeObj.Add("DebitCapCount", NotHelpTrade.DebitCapCount);
  288. NotHelpTradeObj.Add("QrTradeAmount", NotHelpTrade.QrTradeAmount);
  289. Obj.Add("NotHelpTrade", NotHelpTradeObj);
  290. //交易商户
  291. // List<int> TradeMerchants = RedisDbconn.Instance.GetList<int>("TeamPerformanceForDateAndPro:Mer:" + UserId + ":" + ProductType + ":" + TradeDate);
  292. // List<Dictionary<string, object>> TradeMerchantList = new List<Dictionary<string, object>>();
  293. // foreach (int TradeMerchantId in TradeMerchants)
  294. // {
  295. // MerchantInfo merchant = RedisDbconn.Instance.Get<MerchantInfo>("MerchantInfo:" + TradeMerchantId) ?? new MerchantInfo();
  296. // Dictionary<string, object> item = new Dictionary<string, object>();
  297. // item.Add("Name", merchant.MerchantName); //商户名称
  298. // item.Add("TradeAmount", RedisDbconn.Instance.Get<decimal>("TeamTradeStat:" + merchant.UserId + ":" + ProductType + ":" + TradeDate)); //交易额
  299. // TradeMerchantList.Add(item);
  300. // }
  301. // Obj.Add("TradeMerchants", TradeMerchantList);
  302. return Obj;
  303. }
  304. #endregion
  305. #region 首页-客小爽产品-我的业绩-团队业绩-每月明细
  306. [Authorize]
  307. public JsonResult TeamPerformanceForDay(string value)
  308. {
  309. value = DesDecrypt(value);
  310. JsonData data = JsonMapper.ToObject(value);
  311. List<Dictionary<string, object>> dataList = TeamPerformanceForDayDo(value);
  312. return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList });
  313. }
  314. public List<Dictionary<string, object>> TeamPerformanceForDayDo(string value)
  315. {
  316. JsonData data = JsonMapper.ToObject(value);
  317. int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客
  318. string TradeMonth = data["TradeMonth"].ToString(); //交易月
  319. string MerchantId = data["MerchantId"].ToString(); //商户Id
  320. int PageSize = int.Parse(function.CheckInt(data["PageSize"].ToString()));
  321. int PageNum = int.Parse(function.CheckInt(data["PageNum"].ToString()));
  322. List<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
  323. DateTime start = DateTime.Parse(TradeMonth.Substring(0, 4) + "-" + TradeMonth.Substring(4, 2) + "-01 00:00:00");
  324. DateTime end = start.AddMonths(1).AddDays(-1);
  325. int skipNum = 1;
  326. if (PageNum > 1)
  327. {
  328. skipNum = PageSize * (PageNum - 1) + 1;
  329. }
  330. int index = 0;
  331. while (start <= end)
  332. {
  333. index += 1;
  334. if (index >= skipNum && dataList.Count < PageSize)
  335. {
  336. string Date = end.ToString("yyyyMMdd");
  337. if (Date != DateTime.Now.ToString("yyyyMMdd"))
  338. {
  339. Dictionary<string, object> curData = new Dictionary<string, object>();
  340. curData.Add("TradeDate", end.ToString("yyyy-MM-dd")); //交易月份
  341. curData.Add("TradeAmount", RedisDbconn.Instance.Get<decimal>("TeamTradeStat:" + UserId + ":" + MerchantId + ":" + Date)); //总交易额
  342. curData.Add("CardAmount", RedisDbconn.Instance.Get<decimal>("TeamTradeStat:Card:" + UserId + ":" + MerchantId + ":" + Date)); //刷卡总交易
  343. curData.Add("QrPayAmount", RedisDbconn.Instance.Get<decimal>("TeamTradeStat:QrPay:" + UserId + ":" + MerchantId + ":" + Date)); //云闪付小额交易
  344. List<Dictionary<string, object>> ProductList = new List<Dictionary<string, object>>();
  345. List<KqProducts> list = RedisDbconn.Instance.GetList<KqProducts>("KqProducts", 1, 100);
  346. foreach (KqProducts sub in list)
  347. {
  348. decimal Amount = RedisDbconn.Instance.Get<decimal>("TeamTradeStat:" + UserId + ":" + MerchantId + ":" + sub.Id + ":" + Date);
  349. if (Amount > 0)
  350. {
  351. Dictionary<string, object> item = new Dictionary<string, object>();
  352. item.Add("Id", sub.Id); //产品Id
  353. item.Add("Name", sub.Name); //名称
  354. item.Add("Amount", Amount); //交易额
  355. ProductList.Add(item);
  356. }
  357. }
  358. curData.Add("ProductList", ProductList); //产品列表
  359. dataList.Add(curData);
  360. }
  361. }
  362. end = end.AddDays(-1);
  363. }
  364. return dataList;
  365. }
  366. #endregion
  367. #region 首页-客小爽产品-我的业绩-团队业绩-近半年
  368. [Authorize]
  369. public JsonResult TeamPerformanceHalfYear(string value)
  370. {
  371. value = DesDecrypt(value);
  372. JsonData data = JsonMapper.ToObject(value);
  373. List<Dictionary<string, object>> dataList = TeamPerformanceHalfYearDo(value);
  374. return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList });
  375. }
  376. public List<Dictionary<string, object>> TeamPerformanceHalfYearDo(string value)
  377. {
  378. JsonData data = JsonMapper.ToObject(value);
  379. int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客
  380. string MerchantId = data["MerchantId"].ToString(); //商户Id
  381. int PageSize = int.Parse(function.CheckInt(data["PageSize"].ToString()));
  382. int PageNum = int.Parse(function.CheckInt(data["PageNum"].ToString()));
  383. List<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
  384. for (int i = 0; i < 6; i++)
  385. {
  386. DateTime Month = DateTime.Now.AddMonths(-i);
  387. Dictionary<string, object> curData = new Dictionary<string, object>();
  388. curData.Add("TradeMonth", Month.ToString("yyyy-MM")); //交易月份
  389. curData.Add("TradeAmount", RedisDbconn.Instance.Get<decimal>("TeamTradeStat:" + UserId + ":" + MerchantId + ":" + Month.ToString("yyyyMM"))); //总交易额
  390. curData.Add("CardAmount", RedisDbconn.Instance.Get<decimal>("TeamTradeStat:Card:" + UserId + ":" + MerchantId + ":" + Month.ToString("yyyyMM"))); //刷卡总交易
  391. curData.Add("QrPayAmount", RedisDbconn.Instance.Get<decimal>("TeamTradeStat:QrPay:" + UserId + ":" + MerchantId + ":" + Month.ToString("yyyyMM"))); //云闪付小额交易
  392. List<Dictionary<string, object>> ProductList = new List<Dictionary<string, object>>();
  393. List<KqProducts> list = RedisDbconn.Instance.GetList<KqProducts>("KqProducts", 1, 100);
  394. foreach (KqProducts sub in list)
  395. {
  396. decimal Amount = RedisDbconn.Instance.Get<decimal>("TeamTradeStat:" + UserId + ":" + MerchantId + ":" + sub.Id + ":" + Month.ToString("yyyyMM"));
  397. if (Amount > 0)
  398. {
  399. Dictionary<string, object> item = new Dictionary<string, object>();
  400. item.Add("Id", sub.Id); //产品Id
  401. item.Add("Name", sub.Name); //名称
  402. item.Add("Amount", Amount); //名称
  403. ProductList.Add(item);
  404. }
  405. }
  406. curData.Add("ProductList", ProductList); //产品列表
  407. dataList.Add(curData);
  408. }
  409. return dataList;
  410. }
  411. #endregion
  412. #region 首页-我的商户-商户详情-交易记录
  413. [Authorize]
  414. public JsonResult MerchantTradeList(string value)
  415. {
  416. value = DesDecrypt(value);
  417. JsonData data = JsonMapper.ToObject(value);
  418. Dictionary<string, object> Other = new Dictionary<string, object>();
  419. List<Dictionary<string, object>> dataList = MerchantTradeListDo(value, out Other);
  420. return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList, Other = Other });
  421. }
  422. public List<Dictionary<string, object>> MerchantTradeListDo(string value, out Dictionary<string, object> Other)
  423. {
  424. JsonData data = JsonMapper.ToObject(value);
  425. string TradeMonth = data["TradeMonth"].ToString(); //交易月
  426. int MerchantId = int.Parse(function.CheckInt(data["MerchantId"].ToString())); //商户Id
  427. int PageSize = int.Parse(function.CheckInt(data["PageSize"].ToString()));
  428. int PageNum = int.Parse(function.CheckInt(data["PageNum"].ToString()));
  429. List<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
  430. PosMerchantInfo merchant = PosMerchantInfoDbconn.Instance.Get(MerchantId) ?? new PosMerchantInfo();
  431. DateTime start = DateTime.Parse(TradeMonth.Substring(0, 4) + "-" + TradeMonth.Substring(4, 2) + "-01 00:00:00");
  432. DateTime end = start.AddMonths(1).AddDays(-1);
  433. if (TradeMonth == DateTime.Now.ToString("yyyyMM"))
  434. {
  435. end = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00");
  436. }
  437. int skipNum = 1;
  438. if (PageNum > 1)
  439. {
  440. skipNum = PageSize * (PageNum - 1) + 1;
  441. }
  442. int index = 0;
  443. while(start <= end)
  444. {
  445. index += 1;
  446. if (index >= skipNum && dataList.Count < PageSize)
  447. {
  448. Dictionary<string, object> curData = new Dictionary<string, object>();
  449. curData.Add("TradeDate", end.ToString("yyyy-MM-dd")); //交易日
  450. curData.Add("TradeAmt", PosMerchantTradeSummaryDbconn.Instance.GetDateTimeTrade(merchant.Id, end.ToString("yyyyMMdd"))); //交易额
  451. dataList.Add(curData);
  452. }
  453. end = end.AddDays(-1);
  454. }
  455. Other = new Dictionary<string, object>();
  456. Other.Add("MonthTradeAmt", PosMerchantTradeSummaryDbconn.Instance.GetDateTimeTrade(merchant.Id, TradeMonth));
  457. return dataList;
  458. }
  459. #endregion
  460. #region 检查签名是否合法,合法返回1,不合法返回提示信息
  461. /// <summary>
  462. /// 检查签名是否合法,合法返回1,不合法返回提示信息
  463. /// </summary>
  464. /// <param name="value">请求的参数(json字符串)</param>
  465. /// <param name="signField">要签名的字段</param>
  466. /// <returns></returns>
  467. private string CheckSign(string value, string[] signField)
  468. {
  469. JsonData json = JsonMapper.ToObject(value);
  470. Dictionary<string, string> dic = new Dictionary<string, string>();
  471. for (int i = 0; i < signField.Length; i++)
  472. {
  473. dic.Add(signField[i], json[signField[i]].ToString());
  474. }
  475. string sign = json["sign"].ToString(); //客户端签名字符串
  476. return new Sign().sign(dic, sign);
  477. }
  478. #endregion
  479. }
  480. }