/// <summary> /// 作废定金 /// <para>作 者::Huang GaoLiang </para> /// <para>创建时间:2018-10-30 </para> /// </summary> /// <param name="orderId">订金编号</param> /// <param name="cancelUserId">作废人操作编号</param> /// <param name="cancelUserName">作废人名称</param> /// <param name="cancelRemark">作废原因</param> /// <exception cref="BussinessException"> /// 异常ID:5,数据异常 /// 异常ID:8,余额不足,不能作废 /// </exception> public override Task Cancel(long orderId, string cancelUserId, string cancelUserName, string cancelRemark) { lock (LocalThreadLock.GetLockKeyName(LockKeyNames.LOCK_DEPOSITORDERCANCEL, this._schoolId, orderId.ToString())) { // 根据订金编号查询订金信息 TblOdrDepositOrder odrDepositOrder = _odrDepositOrderRepository.Value.GetOdrDepositOrder(orderId); if (odrDepositOrder == null) { throw new BussinessException((byte)ModelType.Cash, 5); } // 1、数据校验 OdrDepositOrderCancelVerification(odrDepositOrder); // 2、准备数据 odrDepositOrder.OrderStatus = (int)OrderStatus.Cancel; odrDepositOrder.CancelDate = DateTime.Now; odrDepositOrder.CancelUserId = cancelUserId; odrDepositOrder.CancelUserName = cancelUserName; odrDepositOrder.CancelRemark = cancelRemark; // 3、作废之后,余额扣除掉相应的金额 bool isWalletSufficient = WalletService.IsWalletSufficient(_schoolId, odrDepositOrder.StudentId, odrDepositOrder.Amount); if (!isWalletSufficient) { throw new BussinessException((byte)ModelType.Cash, 8); } DepositOrderTrade orderTrade = new DepositOrderTrade(odrDepositOrder); using (UnitOfWork unitOfWork = new UnitOfWork()) { try { unitOfWork.BeginTransaction(); // 1、资金交易 TradeService tradeService = new TradeService(orderTrade, unitOfWork); tradeService.Invalid(); // 2、订金 unitOfWork.GetCustomRepository <TblOdrDepositOrderRepository, TblOdrDepositOrder>().UpdateTask(odrDepositOrder).Wait(); // 3、收款交接 new OrderHandoverService(_schoolId).DeleteHandleOver(orderId, OrderTradeType.DepositOrder, unitOfWork); unitOfWork.CommitTransaction(); } catch (Exception ex) { unitOfWork.RollbackTransaction(); throw ex; } } } return(Task.CompletedTask); }
/// <summary> /// 添加订金 /// <para>作 者:Huang GaoLiang </para> /// <para>创建时间:2018-10-30 </para> /// </summary> /// <param name="request">订金充值实体</param> /// <param name="payeeId">收银人编号</param> /// <param name="payeeName">收银人</param> /// <returns>返回订金编号</returns> public string Add(DepositOrderAddRequest request, string payeeId, string payeeName) { lock (LocalThreadLock.GetLockKeyName(LockKeyNames.LOCK_DEPOSITORDERADD, this._schoolId, request.StudentId.ToString())) { // 1、数据合法性校验 Verification(request); long depositOrderId = IdGenerator.NextId(); // 2、准备数据 TblOdrDepositOrder odrDepositOrder = this.SetOdrDepositOrder(request, payeeId, payeeName, depositOrderId); // 3、资金调用 DepositOrderTrade orderTrade = new DepositOrderTrade(odrDepositOrder); // 4、添加事务 using (UnitOfWork unitOfWork = new UnitOfWork()) { try { unitOfWork.BeginTransaction(); TradeService tradeService = new TradeService(orderTrade, unitOfWork); tradeService.Trade(); unitOfWork.GetCustomRepository <TblOdrDepositOrderRepository, TblOdrDepositOrder>().AddTask(odrDepositOrder).Wait(); unitOfWork.CommitTransaction(); return(depositOrderId.ToString()); } catch (Exception ex) { unitOfWork.RollbackTransaction(); throw ex; } } } }