TradeRecordController.cs 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976
  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.Data;
  10. using System.Threading.Tasks;
  11. using Microsoft.AspNetCore.Mvc;
  12. using Microsoft.AspNetCore.Http;
  13. using Microsoft.Extensions.Logging;
  14. using Microsoft.Extensions.Options;
  15. using MySystem.Models;
  16. using Library;
  17. using LitJson;
  18. using MySystemLib;
  19. namespace MySystem.Areas.Admin.Controllers
  20. {
  21. [Area("Admin")]
  22. [Route("Admin/[controller]/[action]")]
  23. public class TradeRecordController : BaseController
  24. {
  25. public TradeRecordController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
  26. {
  27. OtherMySqlConn.connstr = ConfigurationManager.AppSettings["SqlConnStr"].ToString();
  28. }
  29. #region 交易记录列表
  30. /// <summary>
  31. /// 根据条件查询交易记录列表
  32. /// </summary>
  33. /// <returns></returns>
  34. public IActionResult Index(TradeRecord data, string right, string BrandId)
  35. {
  36. ViewBag.RightInfo = RightInfo;
  37. ViewBag.right = right;
  38. ViewBag.BrandId = BrandId;
  39. return View();
  40. }
  41. #endregion
  42. #region 根据条件查询交易记录列表
  43. /// <summary>
  44. /// 交易记录列表
  45. /// </summary>
  46. /// <returns></returns>
  47. public JsonResult IndexData(TradeRecord data, string right, string BrandId, string MerchantNo, string MerchantName, string MakerCode, string RealName, string MerMakerCode, string MerRealName, string MerNo, string SnNo, string BankCardTypeSelect, string MerBuddyTypeSelect, string CreateDateData, int page = 1, int limit = 30)
  48. {
  49. Dictionary<string, string> Fields = new Dictionary<string, string>();
  50. Fields.Add("BrandId", "1");
  51. Fields.Add("MerNo", "2"); //快钱商户编号
  52. Fields.Add("SnNo", "2"); //快钱SN号
  53. Fields.Add("TopUserId", "0"); //顶级创客
  54. string condition = " and Status>-1 and BrandId =" + BrandId;
  55. //商户编号
  56. if (!string.IsNullOrEmpty(MerchantNo))
  57. {
  58. condition += " and MerchantId in (select MerchantId from MerchantForCode where Code='" + MerchantNo + "')";
  59. }
  60. //商户名称
  61. if (!string.IsNullOrEmpty(MerchantName))
  62. {
  63. condition += " and MerchantId in (select MerchantId from MerchantForName where Name='" + MerchantName + "')";
  64. }
  65. //创客编号
  66. if (!string.IsNullOrEmpty(MakerCode))
  67. {
  68. condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + MakerCode + "')";
  69. }
  70. //创客名称
  71. if (!string.IsNullOrEmpty(RealName))
  72. {
  73. condition += " and UserId in (select UserId from UserForRealName where RealName='" + RealName + "')";
  74. }
  75. //商户创客编号
  76. if (!string.IsNullOrEmpty(MerMakerCode))
  77. {
  78. condition += " and MerUserId in (select UserId from UserForMakerCode where MakerCode='" + MerMakerCode + "')";
  79. }
  80. //商户创客名称
  81. if (!string.IsNullOrEmpty(MerRealName))
  82. {
  83. condition += " and MerUserId in (select UserId from UserForRealName where RealName='" + MerRealName + "')";
  84. }
  85. //快钱商户编号
  86. if (!string.IsNullOrEmpty(MerNo))
  87. {
  88. condition += " and MerNo='" + MerNo + "'";
  89. }
  90. //块钱SN号
  91. if (!string.IsNullOrEmpty(SnNo))
  92. {
  93. condition += " and SnNo='" + SnNo + "'";
  94. }
  95. //银行卡类型
  96. if (!string.IsNullOrEmpty(BankCardTypeSelect))
  97. {
  98. condition += " and BankCardType=" + BankCardTypeSelect;
  99. }
  100. //商户创客类型
  101. if (!string.IsNullOrEmpty(MerBuddyTypeSelect))
  102. {
  103. condition += " and MerBuddyType=" + MerBuddyTypeSelect;
  104. }
  105. if (!string.IsNullOrEmpty(CreateDateData))
  106. {
  107. string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
  108. var start = Convert.ToDateTime(Convert.ToDateTime(datelist[0]).ToString("yyyy-MM-dd"));
  109. var end = Convert.ToDateTime(Convert.ToDateTime(datelist[1]).ToString("yyyy-MM-dd") + " 23:59:59");
  110. var check = db.TradeRecord.Any(m => m.CreateDate >= start && m.BrandId == Convert.ToInt32(BrandId));
  111. var checks = db.TradeRecord.Any(m => m.CreateDate <= end && m.BrandId == Convert.ToInt32(BrandId));
  112. if (check)
  113. {
  114. var sId = db.TradeRecord.Where(m => m.CreateDate >= start && m.BrandId == Convert.ToInt32(BrandId)).Min(m => m.Id);
  115. condition += " and Id >=" + sId;
  116. }
  117. if (checks)
  118. {
  119. var eId = db.TradeRecord.Where(m => m.CreateDate <= end && m.BrandId == Convert.ToInt32(BrandId)).Max(m => m.Id);
  120. condition += " and Id <=" + eId;
  121. }
  122. }
  123. else
  124. {
  125. var start = Convert.ToDateTime(DateTime.Now.AddMonths(-1).ToString("yyyy-MM") + "-01");
  126. var check = db.TradeRecord.Any(m => m.CreateDate >= start && m.BrandId == Convert.ToInt32(BrandId));
  127. if (check)
  128. {
  129. var minId = db.TradeRecord.Where(m => m.CreateDate >= start && m.BrandId == Convert.ToInt32(BrandId)).Min(m => m.Id);
  130. var Info = function.ReadInstance("/WritePage/TradeRecord/TradeRecord" + BrandId + ".txt");
  131. if (string.IsNullOrEmpty(Info))
  132. {
  133. function.WritePage("/WritePage/TradeRecord/", "TradeRecord" + BrandId + ".txt", minId.ToString());
  134. condition += " and Id >=" + minId;
  135. }
  136. else if (minId != int.Parse(Info))
  137. {
  138. function.WritePage("/WritePage/TradeRecord/", "TradeRecord" + BrandId + ".txt", minId.ToString());
  139. condition += " and Id >=" + minId;
  140. }
  141. else
  142. {
  143. condition += " and Id >=" + Convert.ToInt32(Info);
  144. }
  145. }
  146. else
  147. {
  148. condition += " and Id =0";
  149. }
  150. }
  151. Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("TradeRecord", Fields, "Id desc", "0", page, limit, condition);
  152. List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
  153. foreach (Dictionary<string, object> dic in diclist)
  154. {
  155. dic["MerHelpFlag"] = dic["MerHelpFlag"].ToString() == "1" ? "是" : "否";
  156. dic["CapFlag"] = dic["CapFlag"].ToString() == "1" ? "封顶" : "非封顶";
  157. dic["QrPayFlag"] = dic["QrPayFlag"].ToString() == "1" ? "云闪付" : "非云闪付";
  158. dic["DirectFlag"] = dic["DirectFlag"].ToString() == "1" ? "直营" : "非直营";
  159. //直属创客
  160. int UserId = int.Parse(dic["UserId"].ToString());
  161. Users puser = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
  162. dic["MakerCode"] = puser.MakerCode;
  163. dic["RealName"] = puser.RealName;
  164. //顶级创客
  165. int TopUserId = int.Parse(dic["TopUserId"].ToString());
  166. Users tuser = db.Users.FirstOrDefault(m => m.Id == TopUserId) ?? new Users();
  167. dic["TopMakerCode"] = tuser.MakerCode;
  168. dic["TopRealName"] = tuser.RealName;
  169. //商户创客
  170. int MerUserId = int.Parse(dic["MerUserId"].ToString());
  171. Users muser = db.Users.FirstOrDefault(m => m.Id == MerUserId) ?? new Users();
  172. dic["MerMakerCode"] = muser.MakerCode;
  173. dic["MerRealName"] = muser.RealName;
  174. //商户
  175. int MerchantId = int.Parse(dic["MerchantId"].ToString());
  176. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == MerchantId) ?? new MerchantInfo();
  177. dic["MerchantNo"] = "";
  178. dic["MerchantName"] = merchant.Name;
  179. //商户创客类型
  180. int MerBuddyType = int.Parse(dic["MerBuddyType"].ToString());
  181. if (MerBuddyType == 0) dic["MerBuddyType"] = "非商户型创客";
  182. if (MerBuddyType == 1) dic["MerBuddyType"] = "商户型创客";
  183. //银行卡类型
  184. int BankCardType = int.Parse(dic["BankCardType"].ToString());
  185. if (BankCardType == 0) dic["BankCardType"] = "借记卡";
  186. if (BankCardType == 1) dic["BankCardType"] = "贷记卡";
  187. if (BankCardType == 2) dic["BankCardType"] = "准贷记卡";
  188. }
  189. Dictionary<string, object> other = new Dictionary<string, object>();
  190. string TotalTrade0 = "0.00";//贷记卡交易总额
  191. string TotalTrade1 = "0.00";//借记卡交易总额
  192. DataTable dt = OtherMySqlConn.dtable("SELECT SUM(if(BankCardType=1,TradeAmount,0)),SUM(if(BankCardType=0,TradeAmount,0)) FROM TradeRecord where 1=1" + condition);
  193. if (dt.Rows.Count > 0)
  194. {
  195. TotalTrade0 = decimal.Parse(function.CheckNum(dt.Rows[0][0].ToString())).ToString("f2");
  196. TotalTrade1 = decimal.Parse(function.CheckNum(dt.Rows[0][1].ToString())).ToString("f2");
  197. }
  198. other.Add("TotalTrade0", TotalTrade0);
  199. other.Add("TotalTrade1", TotalTrade1);
  200. obj.Add("other", other);
  201. return Json(obj);
  202. }
  203. #endregion
  204. #region 增加交易记录
  205. /// <summary>
  206. /// 增加或修改交易记录信息
  207. /// </summary>
  208. /// <returns></returns>
  209. public IActionResult Add(string right)
  210. {
  211. ViewBag.RightInfo = RightInfo;
  212. ViewBag.right = right;
  213. return View();
  214. }
  215. #endregion
  216. #region 增加交易记录
  217. /// <summary>
  218. /// 增加或修改交易记录信息
  219. /// </summary>
  220. /// <returns></returns>
  221. [HttpPost]
  222. public string Add(TradeRecord data)
  223. {
  224. Dictionary<string, object> Fields = new Dictionary<string, object>();
  225. Fields.Add("SeoTitle", data.SeoTitle);
  226. Fields.Add("SeoKeyword", data.SeoKeyword);
  227. Fields.Add("SeoDescription", data.SeoDescription);
  228. int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("TradeRecord", Fields, 0);
  229. AddSysLog(data.Id.ToString(), "TradeRecord", "add");
  230. db.SaveChanges();
  231. return "success";
  232. }
  233. #endregion
  234. #region 修改交易记录
  235. /// <summary>
  236. /// 增加或修改交易记录信息
  237. /// </summary>
  238. /// <returns></returns>
  239. public IActionResult Edit(string right, int Id = 0)
  240. {
  241. ViewBag.RightInfo = RightInfo;
  242. ViewBag.right = right;
  243. TradeRecord editData = db.TradeRecord.FirstOrDefault(m => m.Id == Id) ?? new TradeRecord();
  244. ViewBag.data = editData;
  245. return View();
  246. }
  247. #endregion
  248. #region 修改交易记录
  249. /// <summary>
  250. /// 增加或修改交易记录信息
  251. /// </summary>
  252. /// <returns></returns>
  253. [HttpPost]
  254. public string Edit(TradeRecord data)
  255. {
  256. Dictionary<string, object> Fields = new Dictionary<string, object>();
  257. Fields.Add("SeoTitle", data.SeoTitle);
  258. Fields.Add("SeoKeyword", data.SeoKeyword);
  259. Fields.Add("SeoDescription", data.SeoDescription);
  260. new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("TradeRecord", Fields, data.Id);
  261. AddSysLog(data.Id.ToString(), "TradeRecord", "update");
  262. db.SaveChanges();
  263. return "success";
  264. }
  265. #endregion
  266. #region 删除交易记录信息
  267. /// <summary>
  268. /// 删除交易记录信息
  269. /// </summary>
  270. /// <returns></returns>
  271. public string Delete(string Id)
  272. {
  273. string[] idlist = Id.Split(new char[] { ',' });
  274. AddSysLog(Id, "TradeRecord", "del");
  275. foreach (string subid in idlist)
  276. {
  277. int id = int.Parse(subid);
  278. Dictionary<string, object> Fields = new Dictionary<string, object>();
  279. Fields.Add("Status", -1);
  280. new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("TradeRecord", Fields, id);
  281. }
  282. db.SaveChanges();
  283. return "success";
  284. }
  285. #endregion
  286. #region 开启
  287. /// <summary>
  288. /// 开启
  289. /// </summary>
  290. /// <returns></returns>
  291. public string Open(string Id)
  292. {
  293. string[] idlist = Id.Split(new char[] { ',' });
  294. AddSysLog(Id, "TradeRecord", "open");
  295. foreach (string subid in idlist)
  296. {
  297. int id = int.Parse(subid);
  298. Dictionary<string, object> Fields = new Dictionary<string, object>();
  299. Fields.Add("Status", 1);
  300. new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("TradeRecord", Fields, id);
  301. }
  302. db.SaveChanges();
  303. return "success";
  304. }
  305. #endregion
  306. #region 关闭
  307. /// <summary>
  308. /// 关闭
  309. /// </summary>
  310. /// <returns></returns>
  311. public string Close(string Id)
  312. {
  313. string[] idlist = Id.Split(new char[] { ',' });
  314. AddSysLog(Id, "TradeRecord", "close");
  315. foreach (string subid in idlist)
  316. {
  317. int id = int.Parse(subid);
  318. Dictionary<string, object> Fields = new Dictionary<string, object>();
  319. Fields.Add("Status", 0);
  320. new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("TradeRecord", Fields, id);
  321. }
  322. db.SaveChanges();
  323. return "success";
  324. }
  325. #endregion
  326. #region 排序
  327. /// <summary>
  328. /// 排序
  329. /// </summary>
  330. /// <param name="Id"></param>
  331. public string Sort(int Id, int Sort)
  332. {
  333. new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Sort("TradeRecord", Sort, Id);
  334. AddSysLog(Id.ToString(), "TradeRecord", "sort");
  335. return "success";
  336. }
  337. #endregion
  338. #region 导入数据
  339. public IActionResult Import(string right)
  340. {
  341. ViewBag.RightInfo = RightInfo;
  342. ViewBag.right = right;
  343. return View();
  344. }
  345. /// <summary>
  346. /// 导入数据
  347. /// </summary>
  348. /// <param name="ExcelData"></param>
  349. public string ImportPost(string ExcelPath)
  350. {
  351. string FullExcelPath = function.getPath(ExcelPath);
  352. FullExcelPath = FullExcelPath.Replace("//", "/");
  353. DataTable list = new PublicFunction().ExcelToDataTable(FullExcelPath);
  354. foreach (DataRow dr in list.Rows)
  355. {
  356. string OrderNo = dr["订单编码"].ToString();
  357. string CreateDate = dr["订单创建时间"].ToString();
  358. string PhoneNumber = dr["选择号码"].ToString();
  359. string HasFirstCharge = dr["是否有首充"].ToString();
  360. string FirstChargeAmount = dr["首充金额(元)"].ToString();
  361. string Province = dr["号码归属省份"].ToString();
  362. string City = dr["号码归属地市"].ToString();
  363. string ProductName = dr["商品名称"].ToString();
  364. string ActiveName = dr["促销活动名称"].ToString();
  365. string ProductType = dr["商品类型名称"].ToString();
  366. string ActualAmount = dr["实付金额(元)"].ToString();
  367. string OrderStatus = dr["订单状态"].ToString();
  368. string ActStatus = dr["激活状态名称"].ToString();
  369. string ActDate = dr["激活时间"].ToString();
  370. string WorkNo = dr["BOSS员工工号"].ToString();
  371. string AccountName = dr["账号姓名"].ToString();
  372. string SimNo = dr["SIM卡号"].ToString();
  373. // PosMerchantInfo checkMer = db.PosMerchantInfo.FirstOrDefault(m => m.KqMerNo == PhoneNumber && m.Field5 == ActStatus);
  374. // if (checkMer == null)
  375. // {
  376. string json = "{";
  377. json += "\"OrderNo\":\"" + OrderNo + "\",";
  378. json += "\"CreateDate\":\"" + CreateDate + "\",";
  379. json += "\"PhoneNumber\":\"" + PhoneNumber + "\",";
  380. json += "\"HasFirstCharge\":\"" + HasFirstCharge + "\",";
  381. json += "\"FirstChargeAmount\":\"" + FirstChargeAmount + "\",";
  382. json += "\"Province\":\"" + Province + "\",";
  383. json += "\"City\":\"" + City + "\",";
  384. json += "\"ProductName\":\"" + ProductName + "\",";
  385. json += "\"ActiveName\":\"" + ActiveName + "\",";
  386. json += "\"ProductType\":\"" + ProductType + "\",";
  387. json += "\"ActualAmount\":\"" + ActualAmount + "\",";
  388. json += "\"OrderStatus\":\"" + OrderStatus + "\",";
  389. json += "\"ActStatus\":\"" + ActStatus + "\",";
  390. json += "\"ActDate\":\"" + ActDate + "\",";
  391. json += "\"WorkNo\":\"" + WorkNo + "\",";
  392. json += "\"AccountName\":\"" + AccountName + "\",";
  393. json += "\"SimNo\":\"" + SimNo + "\"";
  394. json += "}";
  395. spdb.BindRecord.Add(new SpModels.BindRecord()
  396. {
  397. CreateDate = DateTime.Parse(CreateDate),
  398. UpdateTime = DateTime.Parse(CreateDate), //机具绑定、解绑时间
  399. CreateTime = DateTime.Parse(CreateDate), //商户操作时间
  400. MerNewSnNo = PhoneNumber, //商户手机号
  401. MerSnNo = SimNo, //序列号
  402. MerName = AccountName, //商户名称
  403. MerNo = PhoneNumber, //商户编号
  404. Remark = ProductType,
  405. Field1 = Province,
  406. Field2 = ActiveName,
  407. Field3 = ProductName,
  408. Field4 = WorkNo,
  409. Field5 = ActStatus,
  410. SeoTitle = ActualAmount,
  411. SeoKeyword = ActDate,
  412. SeoDescription = json,
  413. ProductType = "14",
  414. Status = 1,
  415. });
  416. spdb.Merchants.Add(new SpModels.Merchants()
  417. {
  418. SnNo = SimNo,
  419. CreateTime = DateTime.Parse(CreateDate),
  420. UpdateTime = DateTime.Parse(CreateDate),
  421. AgentName = AccountName,
  422. MerRealName = AccountName,
  423. MerMobile = PhoneNumber,
  424. MerNo = PhoneNumber,
  425. MerName = AccountName,
  426. ProductType = "14",
  427. Status = 1,
  428. });
  429. // }
  430. // spdb.TradeRecord.Add(new SpModels.TradeRecord()
  431. // {
  432. // CreateDate = DateTime.Parse(CreateDate), //创建时间
  433. // UpdateDate = DateTime.Parse(ActDate), //激活时间
  434. // BankCardNo = PhoneNumber, //卡号(掩码)
  435. // TradeSerialNo = OrderNo, //订单编号
  436. // TradeAmount = decimal.Parse(ActualAmount), //交易金额
  437. // TradeSnNo = SimNo, //序列号
  438. // AgentNo = PhoneNumber, //一级服务商编号
  439. // MerNo = PhoneNumber, //商户编
  440. // TradeStatus = OrderStatus, //订单状态
  441. // ChannelSerial = OrderNo, //请求号
  442. // Field1 = OrderSource,
  443. // Field2 = HasFirstCharge,
  444. // Field3 = FirstChargeAmount,
  445. // Field4 = ProductType,
  446. // Field5 = ActiveName,
  447. // SerEntryMode = ActStatus,
  448. // ProductType = "14",
  449. // Status = 1,
  450. // });
  451. spdb.SaveChanges();
  452. }
  453. AddSysLog("0", "TradeRecord", "Import");
  454. return "success";
  455. }
  456. #endregion
  457. #region 导入交易数据
  458. public IActionResult ImportTrade(string right, string ExcelKind)
  459. {
  460. ViewBag.RightInfo = RightInfo;
  461. ViewBag.right = right;
  462. ViewBag.ExcelKind = ExcelKind;
  463. return View();
  464. }
  465. /// <summary>
  466. /// 导入数据
  467. /// </summary>
  468. /// <param name="ExcelData"></param>
  469. public string ImportTradePost(string ExcelPath)
  470. {
  471. int DoCount = 0;
  472. string FullExcelPath = function.getPath(ExcelPath);
  473. FullExcelPath = FullExcelPath.Replace("//", "/");
  474. DataTable list = new PublicFunction().ExcelToDataTable(FullExcelPath);
  475. foreach (DataRow dr in list.Rows)
  476. {
  477. string Mobile = dr["用户手机号"].ToString();
  478. string SimNo = dr["SIM卡号"].ToString();
  479. string CreateMonth = dr["入网月份"].ToString();
  480. string SettleMonth = dr["结算月份"].ToString();
  481. string SettleTime = dr["结算账期"].ToString();
  482. string SettleSpace = dr["结算场景"].ToString();
  483. string BusinessType = dr["业务类型"].ToString();
  484. string Province = dr["用户省份"].ToString();
  485. string City = dr["用户地市"].ToString();
  486. string Team = dr["团队归属"].ToString();
  487. string WorkName = dr["行销宝姓名"].ToString();
  488. string WorkNo = dr["行销宝工号"].ToString();
  489. string ProductName = dr["商品名称"].ToString();
  490. string TotalAmount = dr["账单总金额"].ToString();
  491. string InAmount = dr["套内金额"].ToString();
  492. string OutAmount = dr["套外金额"].ToString();
  493. string UserStatus = dr["用户状态"].ToString();
  494. string ChannelCode = dr["渠道编码"].ToString();
  495. string ChannelName = dr["渠道名称"].ToString();
  496. string OrderCreateTime = dr["订单创建时间"].ToString();
  497. string OrderStatus = dr["订单状态"].ToString();
  498. string ActTime = dr["激活时间"].ToString();
  499. string SourceProductName = dr["原订单商品名称"].ToString();
  500. string ProductType = dr["商品类型名称"].ToString();
  501. string ActivityName = dr["促销活动名称"].ToString();
  502. string Percent = dr["分成比例"].ToString();
  503. string OrgDivi = dr["机构分成"].ToString();
  504. string json = "{";
  505. json += "\"Mobile\":\"" + Mobile + "\",";
  506. json += "\"SimNo\":\"" + SimNo + "\",";
  507. json += "\"CreateMonth\":\"" + CreateMonth + "\",";
  508. json += "\"SettleMonth\":\"" + SettleMonth + "\",";
  509. json += "\"SettleTime\":\"" + SettleTime + "\",";
  510. json += "\"SettleSpace\":\"" + SettleSpace + "\",";
  511. json += "\"BusinessType\":\"" + BusinessType + "\",";
  512. json += "\"Province\":\"" + Province + "\",";
  513. json += "\"City\":\"" + City + "\",";
  514. json += "\"Team\":\"" + Team + "\",";
  515. json += "\"WorkName\":\"" + WorkName + "\",";
  516. json += "\"WorkNo\":\"" + WorkNo + "\",";
  517. json += "\"ProductName\":\"" + ProductName + "\",";
  518. json += "\"TotalAmount\":\"" + TotalAmount + "\",";
  519. json += "\"InAmount\":\"" + InAmount + "\",";
  520. json += "\"OutAmount\":\"" + OutAmount + "\",";
  521. json += "\"UserStatus\":\"" + UserStatus + "\",";
  522. json += "\"ChannelCode\":\"" + ChannelCode + "\",";
  523. json += "\"ChannelName\":\"" + ChannelName + "\",";
  524. json += "\"OrderCreateTime\":\"" + OrderCreateTime + "\",";
  525. json += "\"OrderStatus\":\"" + OrderStatus + "\",";
  526. json += "\"ActTime\":\"" + ActTime + "\",";
  527. json += "\"SourceProductName\":\"" + SourceProductName + "\",";
  528. json += "\"ProductType\":\"" + ProductType + "\",";
  529. json += "\"ActivityName\":\"" + ActivityName + "\",";
  530. json += "\"Percent\":\"" + Percent + "\",";
  531. json += "\"OrgDivi\":\"" + OrgDivi + "\"";
  532. json += "}";
  533. bool op = true;
  534. string OrderNo = DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
  535. decimal TotalAmountNum = decimal.Parse(function.CheckNum(numberString: TotalAmount));
  536. DateTime CreateDate = DateTime.Parse(OrderCreateTime);
  537. string CheckDate = DateTime.Now.AddMonths(-3).ToString("yyyyMM");
  538. if (int.Parse(CreateMonth) >= int.Parse(CheckDate)) op = false;
  539. if (OrderStatus == "待激活") op = false;
  540. if (UserStatus.Contains("注销") || UserStatus.Contains("欠费"))
  541. {
  542. op = false;
  543. SimposMerchantInfo checkSimMer = db.SimposMerchantInfo.FirstOrDefault(m => m.KqMerNo == Mobile && m.KqSnNo == SimNo);
  544. if (checkSimMer != null)
  545. {
  546. checkSimMer.Status = -1;
  547. if (UserStatus.Contains("欠费") && checkSimMer.Status != -1)
  548. {
  549. checkSimMer.Status = -2;
  550. }
  551. db.SaveChanges();
  552. }
  553. PosMerchantInfo checkMer = db.PosMerchantInfo.FirstOrDefault(m => m.KqMerNo == Mobile && m.KqSnNo == SimNo);
  554. if (checkMer != null)
  555. {
  556. checkMer.Status = -1;
  557. if (UserStatus.Contains("欠费") && checkMer.Status != -1)
  558. {
  559. checkMer.Status = -2;
  560. }
  561. db.SaveChanges();
  562. }
  563. PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == SimNo);
  564. if (pos != null)
  565. {
  566. pos.Status = -1;
  567. if (UserStatus.Contains("欠费") && pos.Status != -1)
  568. {
  569. pos.Status = -2;
  570. }
  571. db.SaveChanges();
  572. }
  573. }
  574. if (UserStatus.Contains("正常"))
  575. {
  576. SimposMerchantInfo checkSimMer = db.SimposMerchantInfo.FirstOrDefault(m => m.KqMerNo == Mobile && m.KqSnNo == SimNo);
  577. if (checkSimMer != null)
  578. {
  579. if (checkSimMer.Status == -2) checkSimMer.Status = 0;
  580. db.SaveChanges();
  581. }
  582. PosMerchantInfo checkMer = db.PosMerchantInfo.FirstOrDefault(m => m.KqMerNo == Mobile && m.KqSnNo == SimNo);
  583. if (checkMer != null)
  584. {
  585. if (checkMer.Status == -2) checkMer.Status = 1;
  586. db.SaveChanges();
  587. }
  588. PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == SimNo);
  589. if (pos != null && pos.Status < 0)
  590. {
  591. if (pos.Status == -2)
  592. {
  593. pos.Status = 0;
  594. }
  595. db.SaveChanges();
  596. }
  597. }
  598. if (TotalAmountNum > 0 && op)
  599. {
  600. spdb.TradeRecord.Add(new SpModels.TradeRecord()
  601. {
  602. CreateDate = DateTime.Parse(DateTime.Now.AddMonths(-1).ToString("yyyy-MM-20 HH:mm:ss")), //创建时间
  603. TradeSerialNo = OrderNo, //订单编号
  604. AgentNo = WorkName + WorkNo, //一级服务商编号
  605. MerNo = Mobile, //商户编
  606. TradeSnNo = SimNo, //sim卡号
  607. ChannelSerial = OrderNo, //请求号
  608. TradeAmount = TotalAmountNum, //账单总金额
  609. TradeStatus = OrderStatus, //订单状态
  610. TradeDate = CreateMonth,
  611. TradeTime = CreateDate.ToString("yyyyMMdd"),
  612. BankCardType = "01",
  613. TradeType = "01",
  614. ProductType = "14",
  615. Status = 1,
  616. Field1 = ProductName,
  617. Field2 = SourceProductName,
  618. Field3 = ProductType,
  619. Field4 = BusinessType,
  620. SeoDescription = json,
  621. });
  622. spdb.SaveChanges();
  623. DoCount += 1;
  624. }
  625. }
  626. AddSysLog("0", "TradeRecord", "Import");
  627. return "success|" + DoCount;
  628. }
  629. #endregion
  630. #region 通过队列导入数据
  631. /// <summary>
  632. /// 通过队列导入数据
  633. /// </summary>
  634. /// <param name="ExcelPath"></param>
  635. [HttpPost]
  636. public string ImportByQueuePost(string ExcelPath, int Kind = 0)
  637. {
  638. string key = function.MD5_16(Guid.NewGuid().ToString());
  639. RedisDbconn.Instance.AddList("SIMPosMerchantTradeQueue", ExcelPath + "#cut#" + Kind + "#cut#" + key + "#cut#" + SysUserName);
  640. return "success|" + key;
  641. }
  642. public string CheckImport(string key)
  643. {
  644. string result = RedisDbconn.Instance.Get<string>("SIMPosMerchantTradeCheckImport:" + key);
  645. if (!string.IsNullOrEmpty(result))
  646. {
  647. string[] datalist = result.Split('|');
  648. if (datalist[0] == "success")
  649. {
  650. return result;
  651. }
  652. return datalist[0];
  653. }
  654. return "0";
  655. }
  656. public Dictionary<string, object> CheckImportV2(string key)
  657. {
  658. Dictionary<string, object> Obj = new Dictionary<string, object>();
  659. string result = RedisDbconn.Instance.Get<string>("SIMPosMerchantTradeCheckImport:" + key);
  660. if (!string.IsNullOrEmpty(result))
  661. {
  662. string[] datalist = result.Split('|');
  663. if (datalist[0] == "success")
  664. {
  665. List<string> errList = RedisDbconn.Instance.GetList<string>("ErrList" + key);
  666. if (errList.Count > 0)
  667. {
  668. Obj.Add("status", 2);
  669. Obj.Add("errList", errList);
  670. }
  671. else
  672. {
  673. Obj.Add("status", 1);
  674. Obj.Add("data", result);
  675. }
  676. return Obj;
  677. }
  678. Obj.Add("status", 0);
  679. Obj.Add("data", datalist[0]);
  680. return Obj;
  681. }
  682. Obj.Add("status", -1);
  683. Obj.Add("data", "执行中...");
  684. return Obj;
  685. }
  686. #endregion
  687. #region 导出Excel
  688. /// <summary>
  689. /// 导出Excel
  690. /// </summary>
  691. /// <returns></returns>
  692. public JsonResult ExportExcel(TradeRecord data, string MerchantNo, string MerchantName, string MakerCode, string RealName, string MerMakerCode, string MerRealName, string BankCardTypeSelect, string MerBuddyTypeSelect)
  693. {
  694. Dictionary<string, string> Fields = new Dictionary<string, string>();
  695. Fields.Add("BrandId", "1");
  696. Fields.Add("MerNo", "2"); //快钱商户编号
  697. Fields.Add("SnNo", "2"); //快钱SN号
  698. Fields.Add("TradeDate", "3"); //交易日期
  699. Fields.Add("TopUserId", "0"); //顶级创客
  700. string condition = " and Status>-1";
  701. //商户编号
  702. if (!string.IsNullOrEmpty(MakerCode))
  703. {
  704. condition += " and MerchantId in (select MerchantId from MerchantForCode where Code='" + MerchantNo + "')";
  705. }
  706. //商户名称
  707. if (!string.IsNullOrEmpty(RealName))
  708. {
  709. condition += " and MerchantId in (select MerchantId from MerchantForName where Name='" + MerchantName + "')";
  710. }
  711. //创客编号
  712. if (!string.IsNullOrEmpty(MakerCode))
  713. {
  714. condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + MakerCode + "')";
  715. }
  716. //创客名称
  717. if (!string.IsNullOrEmpty(RealName))
  718. {
  719. condition += " and UserId in (select UserId from UserForRealName where RealName='" + RealName + "')";
  720. }
  721. //商户创客编号
  722. if (!string.IsNullOrEmpty(MerMakerCode))
  723. {
  724. condition += " and MerUserId in (select UserId from UserForMakerCode where MakerCode='" + MerMakerCode + "')";
  725. }
  726. //商户创客名称
  727. if (!string.IsNullOrEmpty(MerRealName))
  728. {
  729. condition += " and MerUserId in (select UserId from UserForRealName where RealName='" + MerRealName + "')";
  730. }
  731. //银行卡类型
  732. if (!string.IsNullOrEmpty(BankCardTypeSelect))
  733. {
  734. condition += " and BankCardType=" + BankCardTypeSelect;
  735. }
  736. //商户创客类型
  737. if (!string.IsNullOrEmpty(MerBuddyTypeSelect))
  738. {
  739. condition += " and MerBuddyType=" + MerBuddyTypeSelect;
  740. }
  741. Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("TradeRecord", Fields, "Id desc", "0", 1, 20000, condition, "UserId,TopUserId,MerchantId,MerUserId,MerNo,MerBuddyType,SnNo,MerHelpFlag,HelpMonthCount,TradeDate,TradeSerialNo,TradeAmount,BankCardType,CapFlag,QrPayFlag,DirectFlag", false);
  742. List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
  743. foreach (Dictionary<string, object> dic in diclist)
  744. {
  745. dic["MerHelpFlag"] = dic["MerHelpFlag"].ToString() == "1" ? "是" : "否";
  746. dic["CapFlag"] = dic["CapFlag"].ToString() == "1" ? "封顶" : "非封顶";
  747. dic["QrPayFlag"] = dic["QrPayFlag"].ToString() == "1" ? "云闪付" : "非云闪付";
  748. dic["DirectFlag"] = dic["DirectFlag"].ToString() == "1" ? "直营" : "非直营";
  749. //直属创客
  750. int UserId = int.Parse(dic["UserId"].ToString());
  751. Users puser = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
  752. dic["MakerCode"] = puser.MakerCode;
  753. dic["RealName"] = puser.RealName;
  754. //顶级创客
  755. int TopUserId = int.Parse(dic["TopUserId"].ToString());
  756. Users tuser = db.Users.FirstOrDefault(m => m.Id == TopUserId) ?? new Users();
  757. dic["TopMakerCode"] = tuser.MakerCode;
  758. dic["TopRealName"] = tuser.RealName;
  759. //商户创客
  760. int MerUserId = int.Parse(dic["MerUserId"].ToString());
  761. Users muser = db.Users.FirstOrDefault(m => m.Id == MerUserId) ?? new Users();
  762. dic["MerMakerCode"] = muser.MakerCode;
  763. dic["MerRealName"] = muser.RealName;
  764. //商户
  765. int MerchantId = int.Parse(dic["MerchantId"].ToString());
  766. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == MerchantId) ?? new MerchantInfo();
  767. dic["MerchantNo"] = "";
  768. dic["MerchantName"] = merchant.Name;
  769. //商户创客类型
  770. int MerBuddyType = int.Parse(dic["MerBuddyType"].ToString());
  771. if (MerBuddyType == 0) dic["MerBuddyType"] = "非商户型创客";
  772. if (MerBuddyType == 1) dic["MerBuddyType"] = "商户型创客";
  773. //银行卡类型
  774. int BankCardType = int.Parse(dic["BankCardType"].ToString());
  775. if (BankCardType == 0) dic["BankCardType"] = "贷记卡";
  776. if (BankCardType == 1) dic["BankCardType"] = "借记卡";
  777. dic.Remove("UserId");
  778. dic.Remove("TopUserId");
  779. dic.Remove("MerUserId");
  780. dic.Remove("MerchantId");
  781. }
  782. Dictionary<string, object> result = new Dictionary<string, object>();
  783. result.Add("Status", "1");
  784. result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
  785. result.Add("Obj", diclist);
  786. Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
  787. ReturnFields.Add("MakerCode", "创客编码");
  788. ReturnFields.Add("RealName", "创客姓名");
  789. ReturnFields.Add("TopMakerCode", "顶级创客编码");
  790. ReturnFields.Add("TopRealName", "顶级创客名称");
  791. ReturnFields.Add("MerchantNo", "商户编号");
  792. ReturnFields.Add("MerchantName", "商户名称");
  793. ReturnFields.Add("MerMakerCode", "商户直属创客编号");
  794. ReturnFields.Add("MerRealName", "商户直属创客姓名");
  795. ReturnFields.Add("MerNo", "快钱商户编号");
  796. ReturnFields.Add("MerBuddyType", "商户创客类型");
  797. ReturnFields.Add("SnNo", "快钱SN号");
  798. ReturnFields.Add("MerHelpFlag", "是否属于扶持周期内商户");
  799. ReturnFields.Add("HelpMonthCount", "扶持第几个月");
  800. ReturnFields.Add("TradeDate", "交易日期");
  801. ReturnFields.Add("TradeSerialNo", "交易流水号");
  802. ReturnFields.Add("TradeAmount", "交易金额(元)");
  803. ReturnFields.Add("BankCardType", "银行卡类型");
  804. ReturnFields.Add("CapFlag", "借记卡封顶交易标志");
  805. ReturnFields.Add("QrPayFlag", "云闪付标识");
  806. ReturnFields.Add("DirectFlag", "是否直营");
  807. result.Add("Fields", ReturnFields);
  808. AddSysLog("0", "TradeRecord", "ExportExcel");
  809. return Json(result);
  810. }
  811. #endregion
  812. #region 获取激活信息预览
  813. public IActionResult IndexDataSIM(string right, string DateStr)
  814. {
  815. ViewBag.RightInfo = RightInfo;
  816. ViewBag.right = right;
  817. ViewBag.DateStr = DateStr;
  818. return View();
  819. }
  820. #endregion
  821. #region 获取激活信息预览
  822. public IActionResult IndexDataSIMDo(string DateStr)
  823. {
  824. List<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
  825. Dictionary<string, object> dataInfo = new Dictionary<string, object>();
  826. var result = RadioCardHelper.Instance.QueryCardOrderInfo(DateStr, DateStr, "1", "99999");
  827. result = result.Replace("null", "\"\"");
  828. JsonData jsonObj = JsonMapper.ToObject(result);
  829. if (jsonObj["resultCode"].ToString() == "1")
  830. {
  831. var data = jsonObj["data"]["records"];
  832. for (int i = 0; i < data.Count; i++)
  833. {
  834. dataInfo.Add("OrderNo", data[i]["orderNo"].ToString()); //订单编码
  835. dataInfo.Add("CreateDate", data[i]["orderCreateTime"].ToString()); //订单创建时间
  836. dataInfo.Add("PhoneNumber", data[i]["phoneNo"].ToString()); //选择号码
  837. dataInfo.Add("HasFirstCharge", data[i]["firstCharge"].ToString()); //是否有首充
  838. dataInfo.Add("FirstChargeAmount", data[i]["initialChargeAmount"].ToString()); //首充金额(元)
  839. dataInfo.Add("Province", data[i]["province"].ToString()); //号码归属省份
  840. dataInfo.Add("City", data[i]["city"].ToString()); //号码归属地市
  841. dataInfo.Add("ProductName", data[i]["productName"].ToString()); //商品名称
  842. dataInfo.Add("ActiveName", data[i]["promotionName"].ToString()); //促销活动名称
  843. dataInfo.Add("ProductType", data[i]["productTypeName"].ToString()); //商品类型名称
  844. dataInfo.Add("ActualAmount", data[i]["paidInAmount"].ToString()); //实付金额(元)
  845. dataInfo.Add("OrderStatus", data[i]["orderStatus"].ToString()); //订单状态
  846. dataInfo.Add("ActStatus", data[i]["activationStatusName"].ToString()); //激活状态名称
  847. dataInfo.Add("ActDate", data[i]["activationTime"].ToString()); //激活时间
  848. dataInfo.Add("WorkNo", data[i]["jobId"].ToString()); //BOSS员工工号
  849. dataInfo.Add("AccountName", ""); //账号姓名
  850. dataInfo.Add("SimNo", data[i]["iccId"].ToString()); //SIM卡号
  851. dataList.Add(dataInfo);
  852. }
  853. }
  854. Dictionary<string, object> obj = new Dictionary<string, object>();
  855. obj.Add("code", 0);
  856. obj.Add("msg", "");
  857. obj.Add("count", dataList.Count);
  858. obj.Add("data", dataList);
  859. AddSysLog("0", "TradeRecord", "PreviewGetSimTrade");
  860. return Json(obj);
  861. }
  862. #endregion
  863. #region 获取激活信息
  864. public IActionResult GetSimTrade(string right)
  865. {
  866. ViewBag.RightInfo = RightInfo;
  867. ViewBag.right = right;
  868. return View();
  869. }
  870. public string GetSimTradePost(string DateStr)
  871. {
  872. string check = RedisDbconn.Instance.Get<string>("CheckSIMActInfo:" + SysId);
  873. if (!string.IsNullOrEmpty(check))
  874. {
  875. return "请勿重复操作";
  876. }
  877. if (DateTime.Parse(DateStr) >= DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")))
  878. {
  879. return "请输入早于今天的日期";
  880. }
  881. RedisDbconn.Instance.Set("CheckSIMActInfo:" + SysId, "1");
  882. RedisDbconn.Instance.SetExpire("CheckSIMActInfo:" + SysId, 10);
  883. RedisDbconn.Instance.AddList("SIMActInfo", DateStr);
  884. AddSysLog("0", "TradeRecord", "GetSimTrade");
  885. return "success";
  886. }
  887. #endregion
  888. }
  889. }