public string ConsumePkg(List<Model.VO.ConsumeVO> list) { if (list.Count < 1) { throw new Exception("请选择套餐消费项目"); } string strBatchNo = ""; CustClubCardModule.ClubCardMgm clubCardMgm = new CustClubCardModule.ClubCardMgm(); int clubCardStat = clubCardMgm.GetCardStatusByClubCardID(list[0].ClubCardID); if (clubCardStat != Convert.ToInt32(ClubCardStatus.OpenCard)) { throw new Exception("非有效会员卡,请联系后台管理员"); } ConsumeLogData consumeLogData = new ConsumeLogData(); ClubCardData clubCardData = new ClubCardData(); DataSet ds = clubCardData.GetDetailByClubCardPkgID(list[0].ClubCardPackageID.ToString()); List<ClubCardPackageDetailPO> clubCardPkgDetailPOList = ds.GetEntity<List<ClubCardPackageDetailPO>>(); SqlConnection conn = new SqlConnection(PubConstant.ConnectionString); conn.Open(); SqlTransaction tx = conn.BeginTransaction(); int storeId = Convert.ToInt32(list.FirstOrDefault().Reserved1); list.ForEach(itm => itm.Reserved1 = null); try { strBatchNo = SerialNoGenerator.GenConsumeBatchNo(storeId); foreach (var item in list) { ClubCardPackageDetailPO tmpPkgDetail = null; foreach(var item1 in clubCardPkgDetailPOList) { if(item.PackageDetailID == item1.PackageDetailID) { item1.RemainCount -= item.ConsumeCount; tmpPkgDetail = item1; item.ItemID = item1.ItemID; break; } } if(tmpPkgDetail == null) { throw new Exception("消费项目套餐中不存在"); } ClubCardPackageData clubCardPackageData = new ClubCardPackageData(); clubCardPackageData.EditClubCardPkgDetail(tmpPkgDetail); item.ConsumeBatchNo = strBatchNo; consumeLogData.AddConsumeLog(Mapper.Map<ConsumeVO, ConsumeLogPO>(item)); } if (clubCardPkgDetailPOList.Any(i=>i.RemainCount==0)) { var cardPkg= new ClubCardPackageData(); var cardPkgData = cardPkg.GetClubCardPkgByID(list[0].ClubCardPackageID); cardPkgData.PackageStatus = (int)CardSPackageStatus.Unavailable; cardPkg.EditClubCardPkg(cardPkgData); } tx.Commit(); } catch { tx.Rollback(); throw new Exception("会员套餐消费失败"); } return strBatchNo; }