/// <summary> /// 创建订单 /// </summary> /// <param name="orders"></param> /// <para> /// /// </para> /// <returns></returns> public bool PlaceOrder(Orders orders) { // 1.校验商品是否存在 var product = productRepository.QueryDetail(orders.Pid); if (product == null) { throw new MsgException("商品不存在"); } if (product.Status != 1) { throw new MsgException("商品已下架"); } if (product.State != 0) { throw new MsgException("账户已禁用"); } // 2.生成订单 IDictionary <string, DbParameter[]> dictionary = new Dictionary <string, DbParameter[]>(); orders.OrderId = IdWorkTool.Instance().GetId(); orders.AddTime = DateTime.Now; orders.EditTime = DateTime.Now; orderRepository.CreateOrder(orders, ref dictionary); // 3.事务下单 orderRepository.CommitTransactionLock(dictionary); return(true); // TODO::虚拟类商品无需做库存设置,如果雇主需要请在第二期计划里做 }
/// <summary> /// 批量创建订单 /// </summary> /// <param name="orders"></param> /// <returns></returns> public void PlaceOrder(IList <Orders> orders, ref IDictionary <string, DbParameter[]> dictionary) { IDictionary <string, DbParameter[]> nDictionary = new Dictionary <string, DbParameter[]>(); // 1.校验商品是否存在 var product = productRepository.QueryDetails(string.Join(",", orders.Select(item => item.Pid).ToList())); if (product == null) { throw new MsgException("商品不存在"); } if (product.Count < orders.Count) { throw new MsgException("清单中包含已下架的商品, 请您重新下单!"); } // 2.生成订单 var orderId = IdWorkTool.Instance().GetId(); orders[0].OrderId = orderId; orders[0].AddTime = DateTime.Now; orders[0].EditTime = DateTime.Now; orders[0].Amount = product.First(item => item.Pid == orders[0].Pid).Amount; orders[0].Sid = product.First(item => item.Pid == orders[0].Pid).Sid; orderRepository.CreateOrder(orders[0], ref nDictionary); if (orders.Count > 1) { for (int i = 1; i < orders.Count; i++) { var order = orders[i]; order.OrderId = IdWorkTool.Instance().GetId(); order.ParentId = orderId; order.AddTime = DateTime.Now; order.EditTime = DateTime.Now; order.Amount = product.First(item => item.Pid == order.Pid).Amount; order.Sid = product.First(item => item.Pid == order.Pid).Sid; orderRepository.CreateOrder(order, ref nDictionary); } } dictionary = nDictionary; }
public static Pays GetPayAccounts(int fromUid, int toUid, PayParam payParam) { payParam.SystemRecordId = IdWorkTool.Instance().GetId(); Pays pays = new Pays() { PayId = payParam.SystemRecordId, FromUid = fromUid, ToUid = toUid, ChannelType = Constants.DynamicMap.DefaultChannelType, ProductType = Constants.DynamicMap.DefaultProductType, TradeType = Constants.DynamicMap.RechargeTradeType, Remark = payParam.Remark, Amount = payParam.Amount, Status = 0, SystemRecordId = IdWorkTool.Instance().GetId() }; return(pays); }
/// <summary> /// 直接充值 /// </summary> /// <param name="uid"></param> /// <param name="amount"></param> /// <returns></returns> public bool DirectRecharge(int uid, double amount) { // 1.生成参数 IDictionary <string, DbParameter[]> dictionary = new Dictionary <string, DbParameter[]>(); PayParam payParam = RechargeUtil.GetDirectParam(uid, amount); // 2.生成流水账 Pays payAccounts = RechargeUtil.GetPayAccounts(Constants.HotAccountID, uid, payParam); paysRepository.InsertAccounts(payAccounts, ref dictionary); // 3.生成往来账 var list = new List <Accounts>() { new Accounts() { AccountsId = IdWorkTool.Instance().GetId(), PayId = payParam.SystemRecordId, TradeAccountId = payParam.ToUid, TradeAccountName = payParam.ToUsername, AccountsType = 1, Amount = payParam.Amount, Remark = payParam.Remark, Currency = payParam.Currency, AddTime = DateTime.Now } }; accountsRepository.BatchInsertAccounts(list, ref dictionary); // 4.目标账户进账 var user = userRepository.SelectFinanceDetail(uid); walletRepository.PutAccounts(user.Uid, amount, user.Version, ref dictionary); return(walletRepository.CommitTransactionLock(dictionary)); }
/// <summary> /// 生成往来账 /// </summary> /// <param name="payParam"></param> /// <returns></returns> private IList <Accounts> GetCurrentAccounts(PayParam payParam) { // 生成甲方账单 Accounts owner = new Accounts() { AccountsId = IdWorkTool.Instance().GetId(), PayId = payParam.SystemRecordId, TradeAccountId = payParam.FromUid, TradeAccountName = payParam.FromUsername, AccountsType = 2, Amount = payParam.Amount, Remark = payParam.Remark == null ? "借" : payParam.Remark, Currency = payParam.Currency, AddTime = DateTime.Now }; // 生成乙方账单 Accounts customer = new Accounts() { AccountsId = IdWorkTool.Instance().GetId(), PayId = payParam.SystemRecordId, TradeAccountId = payParam.ToUid, TradeAccountName = payParam.ToUsername, AccountsType = 1, Amount = payParam.Amount, Remark = payParam.Remark == null ? "贷" : payParam.Remark, Currency = payParam.Currency, AddTime = DateTime.Now }; var list = new List <Accounts>(); list.Add(owner); list.Add(customer); return(list); }