PosCouponRecordController.cs 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  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 PosCouponRecordController : BaseController
  18. {
  19. public PosCouponRecordController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
  20. {
  21. }
  22. #region 创客-首页-客小爽产品-机具管理-划拨券
  23. [Authorize]
  24. public JsonResult Add(string value)
  25. {
  26. value = DesDecrypt(value);
  27. JsonData data = JsonMapper.ToObject(value);
  28. AppResultJson result = AddDo(value);
  29. return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data });
  30. }
  31. int[] ToUserIds = { 1, 76922 };
  32. public AppResultJson AddDo(string value)
  33. {
  34. JsonData data = JsonMapper.ToObject(value);
  35. int ToUserId = int.Parse(function.CheckInt(data["ToUserId"].ToString())); //目标创客
  36. int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客Id
  37. int Kind = int.Parse(function.CheckInt(data["Kind"].ToString()));//券类型
  38. string CouponIds = data["CouponIds"].ToString(); //券列表返回的Id集合
  39. Dictionary<string, object> Obj = new Dictionary<string, object>();
  40. bool checkUser = maindb.Users.Any(m => m.Id == ToUserId);
  41. if (!checkUser)
  42. {
  43. return new AppResultJson() { Status = "-1", Info = "请输入正确的创客编号", Data = Obj };
  44. }
  45. Users user = maindb.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
  46. Users touser = maindb.Users.FirstOrDefault(m => m.Id == ToUserId) ?? new Users();
  47. if (!ToUserIds.Contains(UserId))
  48. {
  49. if (!function.CheckNull(touser.ParentNav).Contains("," + UserId + ",") || function.CheckNull(user.ParentNav).Contains("," + ToUserId + ","))
  50. {
  51. return new AppResultJson() { Status = "-1", Info = "划拨对象不在您的权限范围", Data = Obj };
  52. }
  53. }
  54. if (!string.IsNullOrEmpty(CouponIds))
  55. {
  56. string ChangeRecordNo = "SC" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
  57. string[] CouponIdList = CouponIds.Split(',');
  58. foreach (string CouponId in CouponIdList)
  59. {
  60. int CouponIdNum = int.Parse(CouponId);
  61. PosCoupons coupon = maindb.PosCoupons.FirstOrDefault(m => m.Id == CouponIdNum) ?? new PosCoupons();
  62. if (coupon.UserId != UserId)
  63. {
  64. return new AppResultJson() { Status = "-1", Info = "券" + coupon.ExchangeCode + "已划拨,请勿重复划拨", Data = Obj };
  65. }
  66. // if (coupon.UserId > 0)
  67. // {
  68. // return new AppResultJson() { Status = "-1", Info = "券" + coupon.ExchangeCode + "已划拨,请勿重复划拨", Data = Obj };
  69. // }
  70. if (coupon.QueryCount != Kind)
  71. {
  72. return new AppResultJson() { Status = "-1", Info = "选择的机具券类型不匹配", Data = Obj };
  73. }
  74. PosCouponRecord query = maindb.PosCouponRecord.Add(new PosCouponRecord()
  75. {
  76. QueryCount = Kind,
  77. CreateDate = DateTime.Now,
  78. ChangeKind = 1,
  79. OrderNo = ChangeRecordNo,
  80. ToUserId = ToUserId,
  81. FromUserId = UserId,
  82. PosCouponId = CouponIdNum,
  83. }).Entity;
  84. coupon.UserId = ToUserId;
  85. maindb.SaveChanges();
  86. }
  87. int CouponCount = CouponIdList.Length;
  88. PosCouponForUser forUser = maindb.PosCouponForUser.FirstOrDefault(m => m.Id == UserId);
  89. if (forUser == null)
  90. {
  91. forUser = maindb.PosCouponForUser.Add(new PosCouponForUser()
  92. {
  93. Id = UserId,
  94. }).Entity;
  95. maindb.SaveChanges();
  96. }
  97. int BeforeOut = forUser.OutNum;
  98. int BeforeTotal = forUser.TotalNum;
  99. int BeforeStock = forUser.StockNum;
  100. forUser.OutNum += CouponCount;
  101. forUser.StockNum -= CouponCount;
  102. int AfterOut = forUser.OutNum;
  103. int AfterTotal = forUser.TotalNum;
  104. int AfterStock = forUser.StockNum;
  105. PosCouponOrders stat = maindb.PosCouponOrders.Add(new PosCouponOrders()
  106. {
  107. QueryCount = Kind,
  108. CreateDate = DateTime.Now,
  109. ChangeKind = 2,
  110. ChangeCount = CouponCount,
  111. AfterOut = AfterOut,
  112. AfterTotal = AfterTotal,
  113. AfterStock = AfterStock,
  114. BeforeOut = BeforeOut,
  115. BeforeTotal = BeforeTotal,
  116. BeforeStock = BeforeStock,
  117. OrderNo = ChangeRecordNo,
  118. ToUserId = ToUserId,
  119. FromUserId = UserId,
  120. }).Entity;
  121. maindb.SaveChanges();
  122. PosCouponForUser forToUser = maindb.PosCouponForUser.FirstOrDefault(m => m.Id == ToUserId);
  123. if (forToUser == null)
  124. {
  125. forToUser = maindb.PosCouponForUser.Add(new PosCouponForUser()
  126. {
  127. Id = ToUserId,
  128. }).Entity;
  129. maindb.SaveChanges();
  130. }
  131. BeforeOut = forToUser.OutNum;
  132. BeforeTotal = forToUser.TotalNum;
  133. BeforeStock = forToUser.StockNum;
  134. forToUser.TotalNum += CouponCount;
  135. forToUser.StockNum += CouponCount;
  136. AfterOut = forToUser.OutNum;
  137. AfterTotal = forToUser.TotalNum;
  138. AfterStock = forToUser.StockNum;
  139. PosCouponOrders tostat = maindb.PosCouponOrders.Add(new PosCouponOrders()
  140. {
  141. QueryCount = Kind,
  142. CreateDate = DateTime.Now,
  143. ChangeKind = 1,
  144. ChangeCount = CouponCount,
  145. AfterOut = AfterOut,
  146. AfterTotal = AfterTotal,
  147. AfterStock = AfterStock,
  148. BeforeOut = BeforeOut,
  149. BeforeTotal = BeforeTotal,
  150. BeforeStock = BeforeStock,
  151. OrderNo = ChangeRecordNo,
  152. ToUserId = UserId,
  153. FromUserId = ToUserId,
  154. }).Entity;
  155. maindb.SaveChanges();
  156. }
  157. return new AppResultJson() { Status = "1", Info = "", Data = Obj };
  158. }
  159. #endregion
  160. #region 检查签名是否合法,合法返回1,不合法返回提示信息
  161. /// <summary>
  162. /// 检查签名是否合法,合法返回1,不合法返回提示信息
  163. /// </summary>
  164. /// <param name="value">请求的参数(json字符串)</param>
  165. /// <param name="signField">要签名的字段</param>
  166. /// <returns></returns>
  167. private string CheckSign(string value, string[] signField)
  168. {
  169. JsonData json = JsonMapper.ToObject(value);
  170. Dictionary<string, string> dic = new Dictionary<string, string>();
  171. for (int i = 0; i < signField.Length; i++)
  172. {
  173. dic.Add(signField[i], json[signField[i]].ToString());
  174. }
  175. string sign = json["sign"].ToString(); //客户端签名字符串
  176. return new Sign().sign(dic, sign);
  177. }
  178. #endregion
  179. }
  180. }