public IHttpActionResult CheckStoreOrderPayState(PayDetailModelGet payDetailModelGet) { DataTable dtStoreOrderState = _storeOrderDal.CheckStoreOrderState(payDetailModelGet.OrderNo); if (dtStoreOrderState.Rows.Count != 1) { return(Json(new ResultDataModel <StoreOrderPayStateModelResult> { Code = -1, Messages = "订单号不存在" })); } IList <StoreOrderPayStateModelResult> storeOrderPayStateModelResults = ModelConvertHelper <StoreOrderPayStateModelResult> .ConvertToModel(dtStoreOrderState); var model = storeOrderPayStateModelResults.FirstOrDefault(); model.RealRank = _userInfoDal.CheckUserVipRank(Convert.ToUInt32(payDetailModelGet.UserId)); return(Json(new ResultDataModel <StoreOrderPayStateModelResult> { Code = 0, Data = model })); }
public IHttpActionResult PayStoreOrder(PayDetailModelGet payDetailModelGet) { try { if (string.IsNullOrEmpty(payDetailModelGet.PayPassword)) { return(Json(new ResultDataModel <StoreOrderModelResult> { Code = -1, Messages = "支付密码不能为空" })); } DataTable dt = _storeOrderDal.QueryStoreOrderInfo(payDetailModelGet.OrderNo); if (dt.Rows.Count <= 0) { return(Json(new ResultDataModel <StoreOrderModelResult> { Code = -1, Messages = "订单不存在" })); } UserCloudMinerDal userCloudMinerDal = new UserCloudMinerDal(); int userRunningCount = userCloudMinerDal.QueryRunningCloudMinerCount(payDetailModelGet.UserId, Convert.ToInt32(dt.Rows[0]["CommodityId"])); if (Convert.ToInt32(dt.Rows[0]["PurchaseRestrictionCount"]) < userRunningCount + Convert.ToInt32(dt.Rows[0]["Count"])) { _storeOrderDal.UpdateStoreOrderState(payDetailModelGet.OrderNo, "5"); return(Json(new ResultDataModel <StoreOrderModelResult> { Code = -1, Messages = "已超出购买数量限制" })); } bool checkPayPassowrd = _userInfoDal.CheckPayPassowrd(payDetailModelGet.UserId, payDetailModelGet.PayPassword); if (!checkPayPassowrd) { return(Json(new ResultDataModel <StoreOrderModelResult> { Code = 4106, Messages = "支付密码错误" })); } if (payDetailModelGet.PayDetailModels == null) { return(Json(new ResultDataModel <StoreOrderModelResult> { Code = -1, Messages = "支付金额信息有误" })); } if (payDetailModelGet.PayDetailModels.Count < 1 || payDetailModelGet.PayDetailModels.Count > 2) { return(Json(new ResultDataModel <StoreOrderModelResult> { Code = -1, Messages = "支付金额信息有误" })); } if (payDetailModelGet.PayDetailModels.Count(n => n.CurrencyId == 0) != 1) { return(Json(new ResultDataModel <StoreOrderModelResult> { Code = -1, Messages = "支付金额信息有误" })); } if (payDetailModelGet.PayDetailModels.Count == 2) { try { if (payDetailModelGet.PayDetailModels.Where(n => n.CurrencyId == 0).ToList()[0].Amount < payDetailModelGet.PayDetailModels.Where(n => n.CurrencyId == 2).ToList()[0].Amount) { throw new Exception(); } } catch (Exception) { return(Json(new ResultDataModel <StoreOrderModelResult> { Code = -1, Messages = "支付金额信息有误" })); } } DataTable dtWalletInfo = _walletInfoDal.QueryWalletInfo(payDetailModelGet.UserId); IList <WalletInfoModelResult> currencyInfoModelResults = ModelConvertHelper <WalletInfoModelResult> .ConvertToModel(dtWalletInfo); if (currencyInfoModelResults.Count <= 0) { LogHelper.error("支付商城订单失败:用户金额有误"); throw new Exception(); } foreach (var item in payDetailModelGet.PayDetailModels) { decimal amount = currencyInfoModelResults.FirstOrDefault(n => n.CurrencyId == item.CurrencyId).CanUseAmount; if (amount < item.Amount) { return(Json(new ResultDataModel <StoreOrderModelResult> { Code = 4302, Messages = "余额不足" })); } } bool b = TransactionService.AddStoreOrder(payDetailModelGet, null); return(Json(new ResultDataModel <StoreOrderModelResult> { Code = b ? 0 : -1, Messages = "" })); } catch (Exception) { return(Json(new ResultDataModel <StoreOrderModelResult> { Code = 4001, Messages = "服务器内部出现错误" })); } }
/// <summary> /// 审核赠送商品订单 /// </summary> /// <param name="modelGet"></param> /// <returns></returns> public IHttpActionResult AuditGaveCommodityStoreOrder(AuditGaveCommodityStoreOrderModelGet modelGet) { try { if (modelGet.OrderId <= 0 || modelGet.UserId <= 0) { return(Json(new ResultDataModel <StoreOrderModelResult> { Code = -1, Messages = "参数有误" })); } if (!_userInfoDal.CheckIsShareholder(modelGet.UserId)) { LogHelper.warn("非法账户请求股东接口,非法账户:" + modelGet.UserId); return(Json(new ResultDataModel <IList <StoreOrderModelResult> > { Code = 4108, Messages = "非法账户,该操作已被记录,并提交给客服人员" })); } DataTable dt = _storeOrderDal.QueryStoreOrderInfo(modelGet.OrderId); if (dt.Rows.Count <= 0) { return(Json(new ResultDataModel <StoreOrderModelResult> { Code = -1, Messages = "订单不存在" })); } UserCloudMinerDal userCloudMinerDal = new UserCloudMinerDal(); int userRunningCount = userCloudMinerDal.QueryRunningCloudMinerCount(Convert.ToInt32(dt.Rows[0]["ConsignorUserId"]), Convert.ToInt32(dt.Rows[0]["CommodityId"])); if (Convert.ToInt32(dt.Rows[0]["PurchaseRestrictionCount"]) < userRunningCount + Convert.ToInt32(dt.Rows[0]["Count"])) { _storeOrderDal.UpdateStoreOrderState(modelGet.OrderId, "5"); return(Json(new ResultDataModel <StoreOrderModelResult> { Code = -1, Messages = "已超出购买数量限制" })); } if (modelGet.State != "0") { _storeOrderDal.UpdateStoreOrderState(modelGet.OrderId, "6"); return(Json(new ResultDataModel <StoreOrderModelResult> { Code = 0 })); } DataTable dtWalletInfo = _walletInfoDal.QueryCompanyWalletInfo(1); IList <WalletInfoModelResult> currencyInfoModelResults = ModelConvertHelper <WalletInfoModelResult> .ConvertToModel(dtWalletInfo); if (currencyInfoModelResults.Count <= 0) { LogHelper.error("审核赠送商品订单失败:公司金额金额有误"); throw new Exception(); } decimal amount = currencyInfoModelResults.First(n => n.CurrencyId == 0).CanUseAmount; if (amount < Convert.ToDecimal(dt.Rows[0]["TotalPrice"])) { return(Json(new ResultDataModel <StoreOrderModelResult> { Code = -1, Messages = "审核赠送商品订单失败:公司账户通证数量不足" })); } PayDetailModelGet payDetailModelGet = new PayDetailModelGet(); payDetailModelGet.OrderNo = Convert.ToString(dt.Rows[0]["OrderNo"]); payDetailModelGet.UserId = Convert.ToInt32(dt.Rows[0]["BuyUserId"]); payDetailModelGet.PayDetailModels.Add(new StoreOrderPayDetailModel { CurrencyId = 0, OrderNo = payDetailModelGet.OrderNo, Amount = Convert.ToDecimal(dt.Rows[0]["TotalPrice"]) }); CountdownEvent countdownEvent = new CountdownEvent(1); bool b = TransactionService.AddStoreOrder(payDetailModelGet, countdownEvent); if (!b) { return(Json(new ResultDataModel <StoreOrderModelResult> { Code = 4001, Messages = "服务器内部出现错误" })); } countdownEvent.Wait(); string state = _storeOrderDal.CheckStoreOrderState(modelGet.OrderId); return(Json(new ResultDataModel <StoreOrderModelResult> { Code = state == "1" ? 0 : -1, Messages = state == "1" ? "" : "审核失败" })); } catch (Exception) { return(Json(new ResultDataModel <StoreOrderModelResult> { Code = 4001, Messages = "服务器内部出现错误" })); } }
/// <summary> /// 添加商城自营交易 /// </summary> /// <param name="payDetailModelGet"></param> /// <param name="countdownEvent"></param> /// <returns></returns> public static bool AddStoreOrder(PayDetailModelGet payDetailModelGet, CountdownEvent countdownEvent) { try { TransactionInfo transactionInfo = new TransactionInfo(); transactionInfo.PayeeUserId = 5; DataTable dt = StoreOrderDal.QueryStoreOrderInfo(payDetailModelGet.OrderNo); if (dt.Rows.Count != 1) { return(false); } decimal amount = Convert.ToDecimal(dt.Rows[0]["TotalPrice"]); if (amount != payDetailModelGet.PayDetailModels.Sum(n => n.Amount)) { StoreOrderDal.UpdateStoreOrderState(transactionInfo.OrderId, "5"); return(false); } transactionInfo.PayUserId = Convert.ToInt32(dt.Rows[0]["BuyUserId"]); int consignorUserId = Convert.ToInt32(dt.Rows[0]["ConsignorUserId"]); transactionInfo.Type = "00"; transactionInfo.OrderId = Convert.ToInt32(dt.Rows[0]["Id"]); int commodityId = Convert.ToInt32(dt.Rows[0]["CommodityId"]); int count = Convert.ToInt32(dt.Rows[0]["Count"]); if (count < 1) { throw new Exception("订单中云矿机数量有误 OrderId:" + transactionInfo.OrderId); } transactionInfo.No = GetTransactionNo(transactionInfo.Type, payDetailModelGet.UserId); transactionInfo.ExectionedAction += (state) => { StoreOrderDal.UpdateStoreOrderState(transactionInfo.OrderId, state); if (state == "1") { UserCloudMinerDal.InsertUserCloudMiner(transactionInfo.OrderId, payDetailModelGet.OrderNo, transactionInfo.No, consignorUserId, commodityId, count); foreach (var item in payDetailModelGet.PayDetailModels) { StoreOrderDal.InsertPayDetail(transactionInfo.OrderId, item.CurrencyId, item.Amount); } DataTable dtUserVipInfo = UserInfoDal.QueryUserVipInfo(consignorUserId); if (dtUserVipInfo.Rows.Count == 1) { //用户当前的VIP等级 int userRank = Convert.ToInt32(dtUserVipInfo.Rows[0]["Rank"]); DataTable dtVipUrCloudminerInfo = VipInfoDal.QueryVipUrCloudminerUpgrade(commodityId); if (dtVipUrCloudminerInfo.Rows.Count <= 0) { return; } int commodityUrRank = Convert.ToInt32(dtVipUrCloudminerInfo.Rows[0]["Rank"]); if (userRank < commodityUrRank) { int commodityUrVipId = Convert.ToInt32(dtVipUrCloudminerInfo.Rows[0]["Id"]); UserInfoDal.UpdateUserVip(consignorUserId, commodityUrVipId); } } } if (countdownEvent != null) { countdownEvent.Signal(); } }; foreach (var item in payDetailModelGet.PayDetailModels) { TransactionPayDetail loansTransaction = new TransactionPayDetail(); loansTransaction.CurrencyId = item.CurrencyId; loansTransaction.Amount = item.Amount; transactionInfo.LoansTransactions.Add(loansTransaction); TransactionPayDetail borrowTransaction = new TransactionPayDetail(); borrowTransaction.CurrencyId = item.CurrencyId; borrowTransaction.Amount = item.Amount; transactionInfo.BorrowTransactions.Add(borrowTransaction); } if (TransactionQueue.AddQueue(transactionInfo)) { StoreOrderDal.UpdateStoreOrderState(transactionInfo.OrderId, "4"); return(true); } return(false); } catch (Exception exception) { LogHelper.error("添加支付订单时错误:" + exception.Message); return(false); } }