RadioCardController.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. using Microsoft.AspNetCore.Mvc;
  2. using Microsoft.AspNetCore.Http;
  3. using Microsoft.Extensions.Logging;
  4. using Microsoft.Extensions.Options;
  5. using System.IO;
  6. using System.Collections.Generic;
  7. using LitJson;
  8. using Library;
  9. using System.Linq;
  10. using System;
  11. using MySystem.MainModels;
  12. using System.Data;
  13. namespace MySystem.Areas.Api.Controllers.v1
  14. {
  15. public class RadioCardController : BaseController
  16. {
  17. public RadioCardController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
  18. {
  19. }
  20. //测试
  21. // string apiKey = "12345678";
  22. //生产
  23. string apiKey = "n^ZbEjK%";
  24. #region 广电卡获取机构用户信息
  25. [HttpPost]
  26. [Route("/kxs/gdk/getuserinfo")]
  27. public Dictionary<string, object> GetUserInfo()
  28. {
  29. StreamReader sr = new StreamReader(Request.Body);
  30. string requestMes = sr.ReadToEnd();
  31. function.WriteLog(DateTime.Now.ToString() + ":" + requestMes, "广电卡获取机构用户信息");
  32. JsonData req = JsonMapper.ToObject(requestMes);
  33. string sign = req["sign"].ToString(); //接口签名
  34. string brhUserId = req["brhUserId"].ToString(); //机构用户编码
  35. string month = DateTime.Now.AddMonths(-1).ToString("yyyyMM");
  36. int UserId = int.Parse(function.CheckInt(dbconn.DesDecrypt(brhUserId, apiKey)));
  37. Users user = maindb.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
  38. Dictionary<string, object> obj = new Dictionary<string, object>();
  39. Dictionary<string, object> data = new Dictionary<string, object>();
  40. if(user.AuthFlag == 0)
  41. {
  42. obj.Add("resultCode", 0);
  43. obj.Add("errorCode", 40000);
  44. obj.Add("errorDesc", "用户暂未认证");
  45. obj.Add("data", data);
  46. return obj;
  47. }
  48. string timestamp = req["timestamp"].ToString(); //时间戳,精确到秒。签名用参数
  49. obj.Add("resultCode", 1);
  50. data.Add("name",user.RealName); //用户姓名
  51. data.Add("brhMobile",user.Mobile); //机构用户手机号
  52. data.Add("gender",int.Parse(function.CheckInt(user.CertId.Substring(16, 1))) % 2 == 0 ? "1" : "0"); //性别:0 男,1 女
  53. data.Add("idcardNo",user.CertId); //用户身份证号
  54. data.Add("brhUserRegTime",user.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss")); //机构用户注册时间
  55. decimal SimTradeAmount = maindb.SimCardDaySummary.Where(m => m.UserId == UserId && m.SeoTitle == "team" && m.TradeMonth == month).Sum(m => m.TradeAmount);
  56. decimal SimTradeAmountResult = SimTradeAmount * 100;
  57. data.Add("paymentPerformance",SimTradeAmountResult.ToString("f0")); //用户上月业绩,单位:分
  58. int Percent = function.get_Random(1, 35);
  59. decimal SimProfit = SimTradeAmount * Percent;
  60. data.Add("paymentIncome",SimProfit.ToString("f0")); //用户上月分润收入,单位:分
  61. obj.Add("data", data);
  62. return obj;
  63. }
  64. #endregion
  65. #region 预扣款-添加预扣款
  66. [Route("/v1/kxsmain/tochargebackrecord/addtochargebackrecord")]
  67. public JsonResult AddToChargeBackRecord(string value)
  68. {
  69. // value = DesDecrypt(value);
  70. function.WriteLog(DateTime.Now.ToString() + "\n" + value + "\n\n", "预扣款-添加预扣款");
  71. JsonData data = JsonMapper.ToObject(value);
  72. AppResultJson result = AddToChargeBackRecordDo(value);
  73. return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data });
  74. }
  75. private AppResultJson AddToChargeBackRecordDo(string value)
  76. {
  77. JsonData data = JsonMapper.ToObject(value);
  78. string PosSn = data["PosSn"].ToString(); //机具SN
  79. Dictionary<string, object> Obj = new Dictionary<string, object>();
  80. var pos = maindb.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosSn && m.Status > -1) ?? new PosMachinesTwo();
  81. if (pos.Id > 0)
  82. {
  83. bool check = maindb.ToChargeBackRecord.Any(m => m.Field1 == PosSn && m.ChargeType == 124);
  84. if(!check)
  85. {
  86. var brand = maindb.KqProducts.FirstOrDefault(m => m.Id == pos.BrandId) ?? new KqProducts();
  87. var amount = 0.00M;
  88. if (brand.Kind == 1) amount = 200;
  89. if (brand.Kind == 2) amount = 300;
  90. var ToChargeBackRecord = maindb.ToChargeBackRecord.Add(new ToChargeBackRecord
  91. {
  92. CreateDate = DateTime.Now,
  93. SeoTitle = SysUserName + "_" + SysRealName,
  94. SeoDescription = "循环过期(" + PosSn + ")",
  95. Remark = "循环过期(" + PosSn + ")",
  96. Field1 = PosSn,
  97. ChargeType = 124,
  98. Kind = 0,
  99. ChargeAmount = amount,
  100. UserId = pos.BuyUserId,
  101. }).Entity;
  102. UserAccount account = maindb.UserAccount.FirstOrDefault(m => m.Id == pos.BuyUserId);
  103. if(account != null)
  104. {
  105. account.ToChargeAmount += amount;
  106. }
  107. maindb.SaveChanges();
  108. }
  109. return new AppResultJson() { Status = "1", Info = "成功", Data = Obj };
  110. }
  111. else
  112. {
  113. return new AppResultJson() { Status = "-1", Info = "机具不存在", Data = Obj };
  114. }
  115. }
  116. #endregion
  117. #region 团队开机统计
  118. [Route("/v1/kxsmain/users/getteamopenposinfo")] // 团队开机统计
  119. public JsonResult GetTeamOpenPosInfo(string value)
  120. {
  121. JsonData data = JsonMapper.ToObject(value);
  122. int UserId = int.Parse(function.CheckInt(data["UserId"].ToString()));
  123. string StartTime = data["StartTime"].ToString(); //开始时间
  124. string EndTime = data["EndTime"].ToString(); //结束时间
  125. var SelfPosMerchantCount = 0; // 个人POS机激活商户
  126. var TeamPosMerchantCount = 0; // 团队POS机激活商户
  127. var SelfSimMerchantCount = 0; // 个人广电卡激活商户
  128. var TeamSimMerchantCount = 0; // 团队广电卡激活商户
  129. var SelfMpMerchantCount = 0; // 个人来客吧激活商户
  130. var TeamMpMerchantCount = 0; // 团队来客吧激活商户
  131. var SelfMpMerchantCount1 = 0; // 个人来客吧激活商户(直连)
  132. var TeamMpMerchantCount1 = 0; // 团队来客吧激活商户(直连)
  133. var SelfMpMerchantCount2 = 0; // 个人来客吧激活商户(银联)
  134. var TeamMpMerchantCount2 = 0; // 团队来客吧激活商户(银联)
  135. Dictionary<string, object> Obj = new Dictionary<string, object>();
  136. DataTable dt = CustomerSqlConn.dtable("SELECT a.teamPosAct,a.selfPosAct,b.teamSimAct,b.selfSimAct FROM(SELECT UserId,SUM(IF(SeoTitle='team',ActiveBuddyMerStatus,0)) teamPosAct,SUM(IF(SeoTitle='self',ActiveBuddyMerStatus,0)) selfPosAct from UserTradeMonthSummary WHERE BrandId!=14 AND UserId=" + UserId + " AND SeoKeyword>=" + StartTime + " AND SeoKeyword<=" + EndTime + ")a LEFT JOIN(SELECT UserId,SUM(IF(SeoTitle='team',ActiveBuddyMerStatus,0)) teamSimAct,SUM(IF(SeoTitle='self',ActiveBuddyMerStatus,0)) selfSimAct from UserTradeMonthSummary WHERE BrandId=14 AND UserId=" + UserId + " AND SeoKeyword>=" + StartTime + " AND SeoKeyword<=" + EndTime + ")b ON a.UserId=b.UserId;", AppConfig.Base.ReadSqlConn);
  137. if (dt.Rows.Count > 0)
  138. {
  139. foreach (DataRow dr in dt.Rows)
  140. {
  141. SelfPosMerchantCount = int.Parse(function.CheckNum(dr["selfPosAct"].ToString()));
  142. TeamPosMerchantCount = int.Parse(function.CheckNum(dr["teamPosAct"].ToString()));
  143. SelfSimMerchantCount = int.Parse(function.CheckNum(dr["selfSimAct"].ToString()));
  144. TeamSimMerchantCount = int.Parse(function.CheckNum(dr["teamSimAct"].ToString()));
  145. }
  146. }
  147. dt = CustomerSqlConn.dtable("SELECT SUM(IF(SeoTitle='team',ActiveBuddyMerStatus,0)) teamAct,SUM(IF(SeoTitle='self',ActiveBuddyMerStatus,0)) selfAct from UserTradeMonthSummary WHERE UserId=" + UserId + " AND SeoKeyword>=" + StartTime + " AND SeoKeyword<=" + EndTime + ";", AppConfig.Base.MpSqlConn);
  148. if (dt.Rows.Count > 0)
  149. {
  150. foreach (DataRow dr in dt.Rows)
  151. {
  152. SelfMpMerchantCount1 = int.Parse(function.CheckNum(dr["selfAct"].ToString()));
  153. TeamMpMerchantCount1 = int.Parse(function.CheckNum(dr["teamAct"].ToString()));
  154. }
  155. }
  156. dt = CustomerSqlConn.dtable("SELECT SUM(IF(SeoTitle='team',ActiveBuddyMerStatus,0)) teamAct,SUM(IF(SeoTitle='self',ActiveBuddyMerStatus,0)) selfAct from UserTradeMonthSummary WHERE UserId=" + UserId + " AND SeoKeyword>=" + StartTime + " AND SeoKeyword<=" + EndTime + ";", AppConfig.Base.MpSqlConn2);
  157. if (dt.Rows.Count > 0)
  158. {
  159. foreach (DataRow dr in dt.Rows)
  160. {
  161. SelfMpMerchantCount2 = int.Parse(function.CheckNum(dr["selfAct"].ToString()));
  162. TeamMpMerchantCount2 = int.Parse(function.CheckNum(dr["teamAct"].ToString()));
  163. }
  164. }
  165. SelfMpMerchantCount = SelfMpMerchantCount1 + SelfMpMerchantCount2;
  166. TeamMpMerchantCount = TeamMpMerchantCount1 + TeamMpMerchantCount;
  167. Obj.Add("SelfPosMerchantCount", SelfPosMerchantCount); // 个人POS机激活商户
  168. Obj.Add("TeamPosMerchantCount", TeamPosMerchantCount); // 团队POS机激活商户
  169. Obj.Add("SelfSimMerchantCount", SelfSimMerchantCount); // 个人广电卡激活商户
  170. Obj.Add("TeamSimMerchantCount", TeamSimMerchantCount); // 团队广电卡激活商户
  171. Obj.Add("SelfMpMerchantCount", SelfMpMerchantCount); // 个人来客吧激活商户
  172. Obj.Add("TeamMpMerchantCount", TeamMpMerchantCount); // 团队来客吧激活商户
  173. return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj });
  174. }
  175. #endregion
  176. #region 首页-股东大盘分红交易统计
  177. [Route("/Api/v1/UserTradeDaySummary/GetUserTradeAmout")]
  178. public JsonResult GetUserTradeAmout(string value)
  179. {
  180. JsonData data = JsonMapper.ToObject(value);
  181. int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客Id
  182. string TradeMonthOrDate = data["TradeMonthOrDate"].ToString(); //月份或日期(yyyyMM yyyyMMdd)
  183. string Kind = data["Kind"].ToString(); //类别(个人 self 团队 team)
  184. if (string.IsNullOrEmpty(data["UserId"].ToString()))
  185. {
  186. return Json(new AppResultJson() { Status = "-1", Info = "创客Id为空" });
  187. }
  188. if (string.IsNullOrEmpty(data["TradeMonthOrDate"].ToString()))
  189. {
  190. return Json(new AppResultJson() { Status = "-1", Info = "月份或日期为空" });
  191. }
  192. if (string.IsNullOrEmpty(data["Kind"].ToString()))
  193. {
  194. return Json(new AppResultJson() { Status = "-1", Info = "类别为空" });
  195. }
  196. Dictionary<string, object> Obj = new Dictionary<string, object>();
  197. Obj = GetUserTradeAmoutWd(UserId, TradeMonthOrDate, Kind);
  198. return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj });
  199. }
  200. #endregion
  201. #region 获取创客稳定交易额
  202. /// <summary>
  203. /// 获取创客稳定交易额
  204. /// </summary>
  205. /// <param name="UserId">创客Id</param>
  206. /// <param name="Kind">类型(个人 self 团队 team)</param>
  207. /// <param name="TradeMonthOrDate">月份或日期(yyyyMM yyyyMMdd)</param>
  208. public static Dictionary<string, object> GetUserTradeAmoutWd(int UserId, string TradeMonthOrDate, string Kind)
  209. {
  210. using (WebCMSEntities maindb = new WebCMSEntities())
  211. {
  212. Dictionary<string, object> Obj = new Dictionary<string, object>();
  213. //POS机
  214. var TotalAmtwd = 0M; //刷卡交易总额(稳定期)
  215. var TotalAmtwdA = 0M; //刷卡交易总额(稳定期A)
  216. var TotalAmtwdB = 0M; //刷卡交易总额(稳定期B)
  217. var TotalPosAmt = 0M; //POS总交易额
  218. //来客吧码牌
  219. var MpAmtwd = 0M; //来客吧码牌交易总额
  220. //广电卡
  221. var SimAmtwd = 0M; //广电卡活动交易总额
  222. //POS机
  223. List<TradeDaySummary> query = new List<TradeDaySummary>();
  224. if (TradeMonthOrDate.Length == 6)
  225. {
  226. bool check = maindb.TradeDaySummary.Any(m => m.SeoTitle == Kind && m.UserId == UserId && m.TradeMonth == TradeMonthOrDate);
  227. if (check)
  228. {
  229. query = maindb.TradeDaySummary.Where(m => m.SeoTitle == Kind && m.UserId == UserId && m.TradeMonth == TradeMonthOrDate).ToList();
  230. }
  231. }
  232. else if (TradeMonthOrDate.Length == 8)
  233. {
  234. bool check = maindb.TradeDaySummary.Any(m => m.SeoTitle == Kind && m.UserId == UserId && m.TradeDate == TradeMonthOrDate);
  235. if (check)
  236. {
  237. query = maindb.TradeDaySummary.Where(m => m.SeoTitle == Kind && m.UserId == UserId && m.TradeDate == TradeMonthOrDate).ToList();
  238. }
  239. }
  240. List<TradeDaySummary2> query2 = new List<TradeDaySummary2>();
  241. if (TradeMonthOrDate.Length == 6)
  242. {
  243. bool check = maindb.TradeDaySummary2.Any(m => m.SeoTitle == Kind && m.UserId == UserId && m.TradeMonth == TradeMonthOrDate);
  244. if (check)
  245. {
  246. query2 = maindb.TradeDaySummary2.Where(m => m.SeoTitle == Kind && m.UserId == UserId && m.TradeMonth == TradeMonthOrDate).ToList();
  247. }
  248. }
  249. else if (TradeMonthOrDate.Length == 8)
  250. {
  251. bool check = maindb.TradeDaySummary2.Any(m => m.SeoTitle == Kind && m.UserId == UserId && m.TradeDate == TradeMonthOrDate);
  252. if (check)
  253. {
  254. query2 = maindb.TradeDaySummary2.Where(m => m.SeoTitle == Kind && m.UserId == UserId && m.TradeDate == TradeMonthOrDate).ToList();
  255. }
  256. }
  257. if (query.Count > 0)
  258. {
  259. // //扶持期
  260. // if (Kind == "team")
  261. // {
  262. // TotalAmtfc = query.Sum(m => m.HelpNonDirectTradeAmt + m.HelpNonDirectDebitTradeAmt);
  263. // }
  264. // else
  265. // {
  266. // TotalAmtfc = query.Sum(m => m.HelpDirectTradeAmt + m.HelpDirectDebitTradeAmt);
  267. // }
  268. //稳定期
  269. if (Kind == "team")
  270. {
  271. TotalAmtwd = query.Sum(m => m.NotHelpNonDirectTradeAmt + m.NotHelpNonDirectDebitTradeAmt);
  272. }
  273. else
  274. {
  275. TotalAmtwd = query.Sum(m => m.NotHelpDirectTradeAmt + m.NotHelpDirectDebitTradeAmt);
  276. }
  277. //稳定期A
  278. if (Kind == "team")
  279. {
  280. TotalAmtwdA = query.Sum(m => m.ProfitNonDirectTradeAmt + m.ProfitNonDirectDebitTradeAmt);
  281. }
  282. else
  283. {
  284. TotalAmtwdA = query.Sum(m => m.ProfitDirectTradeAmt + m.ProfitDirectDebitTradeAmt);
  285. }
  286. }
  287. if (query2.Count > 0)
  288. {
  289. //稳定期B
  290. TotalAmtwdB = query2.Sum(m => m.ProfitTradeAmt + m.ProfitDebitTradeAmt);
  291. }
  292. TotalPosAmt = TotalAmtwd + TotalAmtwdA + TotalAmtwdB;
  293. //来客吧码牌
  294. decimal MpActTradeAmount = MpStatDbconn.Instance.GetTrade(UserId, TradeMonthOrDate, 1, "team");
  295. decimal MpUnActTradeAmount = MpStatDbconn.Instance.GetTrade(UserId, TradeMonthOrDate, 0, "team");
  296. MpAmtwd = MpActTradeAmount + MpUnActTradeAmount;
  297. //广电卡
  298. var SimActCount = UserDataDbconn.Instance.GetTeamBrandPosActCount(UserId, 14, TradeMonthOrDate);
  299. SimAmtwd = SimActCount * 10000M;
  300. // Obj.Add("TotalAmtwd", TotalAmtwd); //刷卡交易总额(稳定期)
  301. // Obj.Add("TotalAmtwdA", TotalAmtwdA); //刷卡交易总额(稳定期A)
  302. // Obj.Add("TotalAmtwdB", TotalAmtwdB); //刷卡交易总额(稳定期B)
  303. Obj.Add("TotalPosAmt", TotalPosAmt); //POS总交易额
  304. Obj.Add("MpAmtwd", MpAmtwd); //来客吧码牌交易总额
  305. Obj.Add("SimAmtwd", SimAmtwd); //广电卡活动交易总额
  306. return Obj;
  307. }
  308. }
  309. #endregion
  310. }
  311. }