UserTradeMonthSummaryController.cs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420
  1. /*
  2. * 交易按产品汇总
  3. */
  4. using System;
  5. using System.Web;
  6. using System.Collections.Generic;
  7. using System.Diagnostics;
  8. using System.Linq;
  9. using System.Threading.Tasks;
  10. using Microsoft.AspNetCore.Mvc;
  11. using Microsoft.AspNetCore.Http;
  12. using Microsoft.Extensions.Logging;
  13. using Microsoft.Extensions.Options;
  14. using MySystem.Models;
  15. using Library;
  16. using LitJson;
  17. using MySystemLib;
  18. namespace MySystem.Areas.Admin.Controllers
  19. {
  20. [Area("Admin")]
  21. [Route("Admin/[controller]/[action]")]
  22. public class UserTradeMonthSummaryController : BaseController
  23. {
  24. public UserTradeMonthSummaryController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
  25. {
  26. OtherMySqlConn.connstr = ConfigurationManager.AppSettings["SqlConnStr"].ToString();
  27. }
  28. #region 交易按产品汇总列表
  29. /// <summary>
  30. /// 根据条件查询交易按产品汇总列表
  31. /// </summary>
  32. /// <returns></returns>
  33. public IActionResult Index(UserTradeMonthSummary data, string right)
  34. {
  35. ViewBag.RightInfo = RightInfo;
  36. ViewBag.right = right;
  37. List<KqProducts> Brands = db.KqProducts.OrderBy(m => m.Id).ToList();
  38. ViewBag.Brands = Brands;
  39. return View();
  40. }
  41. #endregion
  42. #region 根据条件查询交易按产品汇总列表
  43. /// <summary>
  44. /// 交易按产品汇总列表
  45. /// </summary>
  46. /// <returns></returns>
  47. public JsonResult IndexData(UserTradeMonthSummary data, string MakerCode, string RealName, string StatTypeSelect, string CreateDateData, int page = 1, int limit = 30)
  48. {
  49. Dictionary<string, string> Fields = new Dictionary<string, string>();
  50. Fields.Add("BrandId", "1"); //品牌
  51. string condition = " and Status>-1";
  52. //创客编号
  53. if (!string.IsNullOrEmpty(MakerCode))
  54. {
  55. condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + MakerCode + "')";
  56. }
  57. //创客名称
  58. if (!string.IsNullOrEmpty(RealName))
  59. {
  60. condition += " and UserId in (select UserId from UserForRealName where RealName='" + RealName + "')";
  61. }
  62. //交易统计类型
  63. if (!string.IsNullOrEmpty(StatTypeSelect))
  64. {
  65. condition += " and StatType=" + StatTypeSelect;
  66. }
  67. //交易所在月
  68. // if (!string.IsNullOrEmpty(CreateDateData))
  69. // {
  70. // string[] months = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
  71. // DateTime end = DateTime.Parse(months[0] + "-01 00:00:00").AddMonths(1);
  72. // condition += " and CreateDate>='" + months[0] + "-01 00:00:00' and CreateDate<'" + end.ToString("yyyy-MM-dd HH:mm:ss") + "'";
  73. // }
  74. if (!string.IsNullOrEmpty(CreateDateData))
  75. {
  76. string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
  77. var start = Convert.ToDateTime(datelist[0]).ToString("yyyyMM");
  78. var end = Convert.ToDateTime(datelist[1]).ToString("yyyyMM");
  79. condition += " and TradeMonth>=" + Convert.ToInt32(start) + " and TradeMonth<=" + Convert.ToInt32(end) + " ";
  80. // var check = db.UserTradeMonthSummary.Any(m => Convert.ToInt32(m.SeoKeyword) >= Convert.ToInt32(start));
  81. // var checks = db.UserTradeMonthSummary.Any(m => Convert.ToInt32(m.SeoKeyword) <= Convert.ToInt32(end));
  82. // if (check)
  83. // {
  84. // var sId = db.UserTradeMonthSummary.Where(m => Convert.ToInt32(m.SeoKeyword) >= Convert.ToInt32(start)).Min(m => m.Id);
  85. // condition += " and Id >=" + sId;
  86. // }
  87. // if (checks)
  88. // {
  89. // var eId = db.UserTradeMonthSummary.Where(m => Convert.ToInt32(m.SeoKeyword) <= Convert.ToInt32(end)).Max(m => m.Id);
  90. // condition += " and Id <=" + eId;
  91. // }
  92. }
  93. else
  94. {
  95. var start = DateTime.Now.AddMonths(-1).ToString("yyyyMM");
  96. condition += " and TradeMonth >=" + Convert.ToInt32(start);
  97. // var check = db.UserTradeMonthSummary.Any(m => Convert.ToInt32(m.TradeMonth) >= Convert.ToInt32(start));
  98. // if (check)
  99. // {
  100. // var minId = db.UserTradeMonthSummary.Where(m => Convert.ToInt32(m.TradeMonth) >= Convert.ToInt32(start)).Min(m => m.Id);
  101. // var Info = Convert.ToInt32(function.ReadInstance("/WritePage/UserTradeMonthSummary/UserTradeMonthSummary.txt"));
  102. // if (string.IsNullOrEmpty(Info.ToString()))
  103. // {
  104. // function.WritePage("/WritePage/UserTradeMonthSummary/", "UserTradeMonthSummary.txt", minId.ToString());
  105. // condition += " and Id >=" + minId;
  106. // }
  107. // else
  108. // {
  109. // condition += " and Id >=" + Info;
  110. // }
  111. // }
  112. // else
  113. // {
  114. // condition += " and Id =0";
  115. // }
  116. }
  117. Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("UserTradeMonthSummary", Fields, "Id desc", "0", page, limit, condition);
  118. List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
  119. foreach (Dictionary<string, object> dic in diclist)
  120. {
  121. dic["BrandId"] = RelationClass.GetKqProductBrandInfo(int.Parse(dic["BrandId"].ToString()));
  122. int UserId = int.Parse(dic["UserId"].ToString());
  123. Users user = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
  124. dic["MakerCode"] = user.MakerCode;
  125. dic["RealName"] = user.RealName;
  126. int StatType = int.Parse(dic["StatType"].ToString());
  127. if (StatType == 0) dic["StatType"] = "直营商户交易统计";
  128. if (StatType == 1) dic["StatType"] = "团队交易统计";
  129. }
  130. return Json(obj);
  131. }
  132. #endregion
  133. #region 增加交易按产品汇总
  134. /// <summary>
  135. /// 增加或修改交易按产品汇总信息
  136. /// </summary>
  137. /// <returns></returns>
  138. public IActionResult Add(string right)
  139. {
  140. ViewBag.RightInfo = RightInfo;
  141. ViewBag.right = right;
  142. return View();
  143. }
  144. #endregion
  145. #region 增加交易按产品汇总
  146. /// <summary>
  147. /// 增加或修改交易按产品汇总信息
  148. /// </summary>
  149. /// <returns></returns>
  150. [HttpPost]
  151. public string Add(UserTradeMonthSummary data)
  152. {
  153. Dictionary<string, object> Fields = new Dictionary<string, object>();
  154. Fields.Add("SeoTitle", data.SeoTitle);
  155. Fields.Add("SeoKeyword", data.SeoKeyword);
  156. Fields.Add("SeoDescription", data.SeoDescription);
  157. int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("UserTradeMonthSummary", Fields, 0);
  158. AddSysLog(data.Id.ToString(), "UserTradeMonthSummary", "add");
  159. db.SaveChanges();
  160. return "success";
  161. }
  162. #endregion
  163. #region 修改交易按产品汇总
  164. /// <summary>
  165. /// 增加或修改交易按产品汇总信息
  166. /// </summary>
  167. /// <returns></returns>
  168. public IActionResult Edit(string right, int Id = 0)
  169. {
  170. ViewBag.RightInfo = RightInfo;
  171. ViewBag.right = right;
  172. UserTradeMonthSummary editData = db.UserTradeMonthSummary.FirstOrDefault(m => m.Id == Id) ?? new UserTradeMonthSummary();
  173. ViewBag.data = editData;
  174. return View();
  175. }
  176. #endregion
  177. #region 修改交易按产品汇总
  178. /// <summary>
  179. /// 增加或修改交易按产品汇总信息
  180. /// </summary>
  181. /// <returns></returns>
  182. [HttpPost]
  183. public string Edit(UserTradeMonthSummary data)
  184. {
  185. Dictionary<string, object> Fields = new Dictionary<string, object>();
  186. Fields.Add("SeoTitle", data.SeoTitle);
  187. Fields.Add("SeoKeyword", data.SeoKeyword);
  188. Fields.Add("SeoDescription", data.SeoDescription);
  189. new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("UserTradeMonthSummary", Fields, data.Id);
  190. AddSysLog(data.Id.ToString(), "UserTradeMonthSummary", "update");
  191. db.SaveChanges();
  192. return "success";
  193. }
  194. #endregion
  195. #region 删除交易按产品汇总信息
  196. /// <summary>
  197. /// 删除交易按产品汇总信息
  198. /// </summary>
  199. /// <returns></returns>
  200. public string Delete(string Id)
  201. {
  202. string[] idlist = Id.Split(new char[] { ',' });
  203. AddSysLog(Id, "UserTradeMonthSummary", "del");
  204. foreach (string subid in idlist)
  205. {
  206. int id = int.Parse(subid);
  207. Dictionary<string, object> Fields = new Dictionary<string, object>();
  208. Fields.Add("Status", -1);
  209. new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("UserTradeMonthSummary", Fields, id);
  210. }
  211. db.SaveChanges();
  212. return "success";
  213. }
  214. #endregion
  215. #region 开启
  216. /// <summary>
  217. /// 开启
  218. /// </summary>
  219. /// <returns></returns>
  220. public string Open(string Id)
  221. {
  222. string[] idlist = Id.Split(new char[] { ',' });
  223. AddSysLog(Id, "UserTradeMonthSummary", "open");
  224. foreach (string subid in idlist)
  225. {
  226. int id = int.Parse(subid);
  227. Dictionary<string, object> Fields = new Dictionary<string, object>();
  228. Fields.Add("Status", 1);
  229. new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("UserTradeMonthSummary", Fields, id);
  230. }
  231. db.SaveChanges();
  232. return "success";
  233. }
  234. #endregion
  235. #region 关闭
  236. /// <summary>
  237. /// 关闭
  238. /// </summary>
  239. /// <returns></returns>
  240. public string Close(string Id)
  241. {
  242. string[] idlist = Id.Split(new char[] { ',' });
  243. AddSysLog(Id, "UserTradeMonthSummary", "close");
  244. foreach (string subid in idlist)
  245. {
  246. int id = int.Parse(subid);
  247. Dictionary<string, object> Fields = new Dictionary<string, object>();
  248. Fields.Add("Status", 0);
  249. new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("UserTradeMonthSummary", Fields, id);
  250. }
  251. db.SaveChanges();
  252. return "success";
  253. }
  254. #endregion
  255. #region 排序
  256. /// <summary>
  257. /// 排序
  258. /// </summary>
  259. /// <param name="Id"></param>
  260. public string Sort(int Id, int Sort)
  261. {
  262. new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Sort("UserTradeMonthSummary", Sort, Id);
  263. AddSysLog(Id.ToString(), "UserTradeMonthSummary", "sort");
  264. return "success";
  265. }
  266. #endregion
  267. #region 导入数据
  268. /// <summary>
  269. /// 导入数据
  270. /// </summary>
  271. /// <param name="ExcelData"></param>
  272. public string Import(string ExcelData)
  273. {
  274. ExcelData = HttpUtility.UrlDecode(ExcelData);
  275. JsonData list = JsonMapper.ToObject(ExcelData);
  276. for (int i = 1; i < list.Count; i++)
  277. {
  278. JsonData dr = list[i];
  279. db.UserTradeMonthSummary.Add(new UserTradeMonthSummary()
  280. {
  281. CreateDate = DateTime.Now,
  282. UpdateDate = DateTime.Now,
  283. });
  284. db.SaveChanges();
  285. }
  286. AddSysLog("0", "UserTradeMonthSummary", "Import");
  287. return "success";
  288. }
  289. #endregion
  290. #region 导出Excel
  291. /// <summary>
  292. /// 导出Excel
  293. /// </summary>
  294. /// <returns></returns>
  295. public JsonResult ExportExcel(UserTradeMonthSummary data, string MakerCode, string RealName, string StatTypeSelect, string CreateDateData)
  296. {
  297. Dictionary<string, string> Fields = new Dictionary<string, string>();
  298. Fields.Add("BrandId", "1"); //品牌
  299. string condition = " and Status>-1";
  300. //创客编号
  301. if (!string.IsNullOrEmpty(MakerCode))
  302. {
  303. condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + MakerCode + "')";
  304. }
  305. //创客名称
  306. if (!string.IsNullOrEmpty(RealName))
  307. {
  308. condition += " and UserId in (select UserId from UserForRealName where RealName='" + RealName + "')";
  309. }
  310. //交易统计类型
  311. if (!string.IsNullOrEmpty(StatTypeSelect))
  312. {
  313. condition += " and StatType=" + StatTypeSelect;
  314. }
  315. //交易所在月
  316. if (!string.IsNullOrEmpty(CreateDateData))
  317. {
  318. string[] months = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
  319. DateTime end = DateTime.Parse(months[0] + "-01 00:00:00").AddMonths(1);
  320. condition += " and CreateDate>='" + months[0] + "-01 00:00:00' and CreateDate<'" + end.ToString("yyyy-MM-dd HH:mm:ss") + "'";
  321. }
  322. Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("UserTradeMonthSummary", Fields, "Id desc", "0", 1, 20000, condition, "UserId,TradeMonth,BrandId,StatType,TradeAmt,CreditTradeAmt,DebitNotCapTradeAmt,DebitCapTradeAmt", false);
  323. List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
  324. foreach (Dictionary<string, object> dic in diclist)
  325. {
  326. dic["BrandId"] = RelationClass.GetKqProductBrandInfo(int.Parse(dic["BrandId"].ToString()));
  327. int UserId = int.Parse(dic["UserId"].ToString());
  328. Users user = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
  329. dic["MakerCode"] = user.MakerCode;
  330. dic["RealName"] = user.RealName;
  331. int StatType = int.Parse(dic["StatType"].ToString());
  332. if (StatType == 0) dic["StatType"] = "直营商户交易统计";
  333. if (StatType == 1) dic["StatType"] = "团队交易统计";
  334. dic.Remove("UserId");
  335. }
  336. Dictionary<string, object> result = new Dictionary<string, object>();
  337. result.Add("Status", "1");
  338. result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
  339. result.Add("Obj", diclist);
  340. Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
  341. ReturnFields.Add("MakerCode", "创客编码");
  342. ReturnFields.Add("RealName", "创客姓名");
  343. ReturnFields.Add("TradeMonth", "交易所在月份");
  344. ReturnFields.Add("BrandId", "产品类型");
  345. ReturnFields.Add("StatType", "交易统计类型");
  346. ReturnFields.Add("TradeAmt", "商户交易总额");
  347. ReturnFields.Add("CreditTradeAmt", "商户贷记卡交易总金额");
  348. ReturnFields.Add("DebitNotCapTradeAmt", "商户非封顶借记卡交易总金额");
  349. ReturnFields.Add("DebitCapTradeAmt", "商户借记卡封顶交易总额");
  350. ReturnFields.Add("DebitCapTradeNum", "商户借记卡封顶交易总笔数");
  351. ReturnFields.Add("CreateDate", "创建时间");
  352. result.Add("Fields", ReturnFields);
  353. AddSysLog("0", "UserTradeMonthSummary", "ExportExcel");
  354. return Json(result);
  355. }
  356. #endregion
  357. }
  358. }