public async Task <string> PointPay(PointPayInput input) { var orderInfo = _sellAppService.GetOrderInfo(input.OrderId); if (orderInfo == null) { throw new LotteryDataException("下单失败,请稍后重试"); } if (!orderInfo.OrderCost.Equals(input.Price)) { throw new LotteryDataException("订单金额错误,请核对订单信息"); } var userInfo = await _userInfoService.GetUserInfoById(_lotterySession.UserId); if (userInfo.Points < input.Price) { throw new LotteryDataException("积分余额不足,您可以通过分享App、签到等多种途径获取积分"); } string lotteryId; if (!_sellAppService.PointPay(input, out lotteryId)) { throw new HttpException("兑换失败,请稍后重试"); } await AllotDefaultPlanNorm(userInfo.Id, lotteryId); var notes = $"{DateTime.Now.ToString("yyyy-MM-dd")}日,积分兑换授权"; await SendCommandAsync(new AddPointRecordCommand(Guid.NewGuid().ToString(), -input.Price, PointType.SignAdditional, PointOperationType.Increase, notes, _lotterySession.UserId)); return("兑换成功"); }
public bool PointPay(PointPayInput input, out string lotteryId) { try { lotteryId = _sellCallBackService.PointPay(input, _lotterySession.UserId); return(true); } catch (Exception e) { _logger.Error(e.Message); lotteryId = ""; return(false); } }
public string PointPay(PointPayInput input, string userId) { using (var conn = GetLotteryConnection()) { conn.Open(); using (var transaction = conn.BeginTransaction()) { var orderDto = conn.QueryList <OrderInfoInfo>(new { SalesOrderNo = input.OrderId }, TableNameConstants.OrderdRecordTable, transaction: transaction).First(); var authRank = conn .QueryList <AuthRankDto>(new { Id = orderDto.AuthRankId }, TableNameConstants.AuthRankTable, transaction: transaction) .First(); var authinfoLast = conn.QueryList <AuthOrderInfo>(new { AuthUserId = userId, LotteryId = orderDto.LotteryId, Status = AuthStatus.Normal }, TableNameConstants.AuthorizeRecordTable, transaction: transaction).OrderByDescending(p => p.CreateTime).FirstOrDefault(); var memberInfo = conn .QueryList <MemberInfoDto>(new { UserId = userId, LotteryId = orderDto.LotteryId, }, TableNameConstants.MemberTable, transaction: transaction) .FirstOrDefault(); orderDto.PayCost = input.Price; orderDto.Status = PayStatus.Payed; orderDto.Payer = userId; orderDto.ThirdPayOrderNo = ""; orderDto.PayOrderNo = OrderHelper.GenerateOrderNo(OrderType.Pay, SellType.Rmb); orderDto.PayType = PayType.PaysApi; orderDto.PayTime = DateTime.Now; conn.Update(orderDto, new { orderDto.Id }, TableNameConstants.OrderdRecordTable, transaction: transaction); var authinfo = new AuthOrderInfo() { Id = Guid.NewGuid().ToString(), AuthRankId = orderDto.AuthRankId, AuthUserId = userId, AuthOrderNo = OrderHelper.GenerateOrderNo(OrderType.Order, SellType.Rmb), // InvalidDate = DateTime.Now.AddMonths(orderDto.Count), AuthTime = DateTime.Now, AuthType = SellType.Point, CreateBy = userId, CreateTime = DateTime.Now, Notes = authRank.MemberRank.GetChineseDescribe(), Status = AuthStatus.Normal, SaleRecordId = orderDto.Id, LotteryId = orderDto.LotteryId }; if (authinfoLast == null) { authinfo.InvalidDate = DateTime.Now.AddMonths(orderDto.Count); } else { authinfo.InvalidDate = authinfoLast.InvalidDate.AddMonths(orderDto.Count); authinfoLast.UpdateBy = userId; authinfoLast.UpdateTime = DateTime.Now; authinfoLast.Status = AuthStatus.Invalid; conn.Update(authinfoLast, new { Id = authinfoLast.Id }, TableNameConstants.AuthorizeRecordTable, transaction); } conn.Insert(authinfo, TableNameConstants.AuthorizeRecordTable, transaction); if (memberInfo == null) { memberInfo = new MemberInfoDto() { Id = Guid.NewGuid().ToString(), InvalidDate = authinfo.InvalidDate, LastAuthOrderId = authinfo.Id, LotteryId = orderDto.LotteryId, MemberRank = (int)authRank.MemberRank, Status = MemberStatus.Normal, UserId = userId, CreateBy = userId, CreateTime = DateTime.Now }; conn.Insert(memberInfo, TableNameConstants.MemberTable, transaction); } else { memberInfo.MemberRank = (int)authRank.MemberRank; memberInfo.InvalidDate = authinfo.InvalidDate; memberInfo.UpdateBy = userId; memberInfo.UpdateTime = DateTime.Now; conn.Update(memberInfo, new { Id = memberInfo.Id }, TableNameConstants.MemberTable, transaction); } #region 指标配置 //var userNormConigs = conn.QueryList<NormConfigDto>(new { UserId = userInfo.Id, IsEnable = 1 }, TableNameConstants.NormConfigTable, transaction: transaction); //if (!userNormConigs.Safe().Any()) //{ // var normConfigs = conn.QueryList<NormConfigDto>(new { LotteryId = orderDto.LotteryId, IsDefualt = 1, IsEnable = 1 }, TableNameConstants.NormConfigTable, transaction: transaction); // foreach (var normConfig in normConfigs) // { // normConfig.UserId = userInfo.Id; // normConfig.Id = Guid.NewGuid().ToString(); // conn.Insert(normConfig, TableNameConstants.NormConfigTable, transaction); // } //} #endregion 指标配置 #region 清除相关缓存 var redisKey1 = string.Format(RedisKeyConstants.MEMBERRANK_MEMBERPOWER_KEY, orderDto.LotteryId, authRank.MemberRank); var redisKey2 = string.Format(RedisKeyConstants.MEMBERRANK_ROLE_KEY, orderDto.LotteryId, authRank.MemberRank); var redisKey3 = string.Format(RedisKeyConstants.USERINFO_KEY, userId); var redisKey4 = string.Format(RedisKeyConstants.OPERATION_MEMBERINFO_KEY, orderDto.LotteryId); _cacheManager.RemoveByPattern(redisKey1); _cacheManager.RemoveByPattern(redisKey2); _cacheManager.RemoveByPattern(redisKey3); _cacheManager.RemoveByPattern(redisKey4); transaction.Commit(); return(orderDto.LotteryId); #endregion 清除相关缓存 } } }