protected override GetVIPCardRD ProcessRequest(DTO.Base.APIRequest <GetVIPCardRP> pRequest) { GetVIPCardRD Data = new GetVIPCardRD(); var rd = new GetVIPCardListRD(); var para = pRequest.Parameters; var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; #region 业务对象 //会员卡 var VipCardBLL = new VipCardBLL(loggingSessionInfo); //会员 var VipBLL = new VipBLL(loggingSessionInfo); //卡状态变更记录 var VipCardStatusChangeLogBLL = new VipCardStatusChangeLogBLL(loggingSessionInfo); //卡与Vip关系 var VipCardVipMappingBLL = new VipCardVipMappingBLL(loggingSessionInfo); //门店 var unitBll = new t_unitBLL(loggingSessionInfo); //员工 var UserBLL = new T_UserBLL(loggingSessionInfo); //卡类型 var SysVipCardTypeBLL = new SysVipCardTypeBLL(loggingSessionInfo); //商户配置 var CustomerBasicSettingBLL = new CustomerBasicSettingBLL(loggingSessionInfo); //积分 var VipIntegralBLL = new VipIntegralBLL(loggingSessionInfo); #endregion #region 会员卡 VipCardEntity resultData = null; if (!string.IsNullOrWhiteSpace(para.VipID)) { //会员编号获取详情 VipCardVipMappingEntity m_VipMappingData = VipCardVipMappingBLL.QueryByEntity(new VipCardVipMappingEntity() { VIPID = para.VipID }, null).FirstOrDefault(); if (m_VipMappingData != null && !string.IsNullOrWhiteSpace(m_VipMappingData.VipCardID)) { resultData = VipCardBLL.GetByID(para.VipCardID); } } else { if (!string.IsNullOrWhiteSpace(para.VipCardID)) { //卡ID获取详情 resultData = VipCardBLL.GetByID(para.VipCardID); } else { //刷卡获取详情 List <IWhereCondition> complexCondition = new List <IWhereCondition> { }; if (!string.IsNullOrEmpty(para.VipCardISN)) { complexCondition.Add(new DirectCondition("VipCardCode='" + para.VipCardISN + "' or VipCardISN='" + para.VipCardISN.ToString() + "' ")); } resultData = VipCardBLL.Query(complexCondition.ToArray(), null).FirstOrDefault(); } } //try //{ // if (resultData == null) // throw new APIException("该卡不存在!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS }; //} //catch (APIException apiEx) //{ // throw new APIException(apiEx.ErrorCode, apiEx.Message); //} #endregion #region 卡关系 VipCardVipMappingEntity VipCardVipMappingData = null; if (resultData != null) { VipCardVipMappingData = VipCardVipMappingBLL.QueryByEntity(new VipCardVipMappingEntity() { VipCardID = resultData.VipCardID }, null).FirstOrDefault(); } //else //{ // return Data; //} #endregion #region 门店 t_unitEntity unidData = null; if (resultData != null && !string.IsNullOrWhiteSpace(resultData.MembershipUnit)) { unidData = unitBll.GetByID(resultData.MembershipUnit); } #endregion #region 会员,积分 VipEntity VipData = null; VipIntegralEntity IntegralData = null; //string VIPID = VipCardVipMappingData == null ? "" : VipCardVipMappingData.VIPID; string VIPID = para.VipID; if (!string.IsNullOrWhiteSpace(VIPID)) { VipData = VipBLL.NewGetByID(VIPID); //IntegralData = VipIntegralBLL.GetByID(VIPID); IntegralData = VipIntegralBLL.QueryByEntity(new VipIntegralEntity() { VipID = VipData.VIPID, VipCardCode = VipData.VipCode }, null).FirstOrDefault(); } #endregion #region 员工 T_UserEntity UserData = null; if (resultData != null && !string.IsNullOrWhiteSpace(resultData.CreateBy)) { UserData = UserBLL.GetByID(resultData.CreateBy); } #endregion #region 响应对象赋值 if (resultData != null) { //卡 Data.VipCardID = resultData.VipCardID; Data.VipCardCode = resultData.VipCardCode; Data.VipCardISN = resultData.VipCardISN; Data.CraeteUserName = UserData == null ? "" : UserData.user_name; Data.VipCardStatusId = resultData.VipCardStatusId.Value; Data.MembershipTime = resultData.MembershipTime == null ? "" : resultData.MembershipTime.Value.ToString("yyyy-MM-dd"); Data.MembershipUnitName = unidData == null ? "" : unidData.unit_name; //Data.TotalAmount = resultData.RechargeTotalAmount == null ? 0 : resultData.RechargeTotalAmount.Value; //Data.BalanceAmount = resultData.BalanceAmount == null ? 0 : resultData.BalanceAmount.Value; Data.BeginDate = resultData.BeginDate; Data.EndDate = "永久有效"; Data.SalesUserName = resultData.SalesUserName == null ? "" : resultData.SalesUserName; #region 卡类型名称 SysVipCardTypeEntity SysVipCardTypeData = SysVipCardTypeBLL.GetByID(resultData.VipCardTypeID); Data.VipCardName = SysVipCardTypeData == null ? "" : SysVipCardTypeData.VipCardTypeName; #endregion #region 状态变更记录列表 var VipCardStatusChangeLogArray = VipCardStatusChangeLogBLL.Query (new IWhereCondition[] { new EqualsCondition() { FieldName = "VipCardID", Value = resultData.VipCardID } }, new OrderBy[] { new OrderBy() { FieldName = "CreateTime", Direction = OrderByDirections.Desc } }).ToList(); //转换业务对象 Data.StatusLogList = (from t in VipCardStatusChangeLogArray select new VipCardStatusChangeLog() { CreateTime = t.CreateTime.Value.ToString("yyyy-MM-dd"), UnitName = t.UnitName == null ? "" : t.UnitName, Action = t.Action == null ? "" : t.Action, ChangeReason = t.Reason == null ? "" : t.Reason, Remark = t.Remark == null ? "" : t.Remark, CreateBy = t.CreateByName, ImageUrl = t.PicUrl == null ? "" : t.PicUrl }).ToList(); #endregion } #region 会员 if (VipData != null) { Data.VipID = VipData.VIPID; Data.VipCode = VipData.VipCode; if (Data.VipCardCode == null) { Data.VipCardCode = VipData.VipCode; } if (!string.IsNullOrWhiteSpace(VipData.VipRealName)) { Data.VipName = VipData.VipRealName; } else { Data.VipName = VipData.VipName ?? ""; } Data.Phone = VipData.Phone; Data.Birthday = VipData.Birthday == null ? "" : VipData.Birthday; Data.Gender = VipData.Gender ?? 0; //Data.Integration = VipData.Integration == null ? 0 : VipData.Integration.Value; //会员创建人姓名 T_UserEntity VipUserData = null; if (resultData != null && !string.IsNullOrWhiteSpace(resultData.CreateBy)) { VipUserData = UserBLL.GetByID(resultData.CreateBy); } Data.VipCreateByName = VipUserData == null ? "" : VipUserData.user_name; Data.IDNumber = VipData.IDNumber == null ? "" : VipData.IDNumber; #region 会员生日是否可修改字段赋值 //Col22 字段赋值 ////CustomerBasicSettingEntity SettingData = CustomerBasicSettingBLL.QueryByEntity(new CustomerBasicSettingEntity() { SettingCode = "FSR_NotTwoUpdateVipBirthday" }, null).FirstOrDefault(); ////if (SettingData != null) Data.Col22 = VipData.Col22 == null ? "Y" : VipData.Col22; #endregion } #endregion #region 积分 if (IntegralData != null) { Data.Integration = IntegralData.ValidIntegral != null ? IntegralData.ValidIntegral.Value : 0; Data.CumulativeIntegral = IntegralData.CumulativeIntegral != null ? IntegralData.CumulativeIntegral.Value : 0; } #endregion #region 余额和返现 var vipAmountBLL = new VipAmountBLL(loggingSessionInfo); var vipAmountInfo = vipAmountBLL.QueryByEntity(new VipAmountEntity() { VipId = VipData.VIPID, VipCardCode = VipData.VipCode }, null).FirstOrDefault(); if (vipAmountInfo != null) { Data.TotalAmount = vipAmountInfo.TotalAmount == null ? 0 : vipAmountInfo.TotalAmount.Value; Data.BalanceAmount = vipAmountInfo.EndAmount == null ? 0 : vipAmountInfo.EndAmount.Value; Data.ValidReturnAmount = vipAmountInfo.ValidReturnAmount == null ? 0 : vipAmountInfo.ValidReturnAmount.Value; Data.TotalReturnAmount = vipAmountInfo.TotalReturnAmount == null ? 0 : vipAmountInfo.TotalReturnAmount.Value; } #endregion #endregion return(Data); }
/// <summary> /// /// </summary> public string LockVipCardInfoData() { var service = new VipCardBLL(CurrentUserInfo); var vipCardStatusChangeLogBLL = new VipCardStatusChangeLogBLL(CurrentUserInfo); string content = string.Empty; string key = string.Empty; if (Request("VipCardID") != null && Request("VipCardID") != string.Empty) { key = Request("VipCardID").ToString().Trim(); } string Lock = string.Empty; if (Request("Lock") != null && Request("Lock") != string.Empty) { Lock = Request("Lock").ToString().Trim(); } string UnitID = string.Empty; if (Request("UnitID") != null && Request("UnitID") != string.Empty) { UnitID = Request("UnitID").ToString().Trim(); } string VipCardStatusId = string.Empty; if (Request("VipCardStatusId") != null && Request("VipCardStatusId") != string.Empty) { VipCardStatusId = Request("VipCardStatusId").ToString().Trim(); } VipCardEntity data = service.GetByID(key); int? vipCardStatusId = data.VipCardStatusId; if (Lock == "1") { vipCardStatusId = 5; if (VipCardStatusId.Length > 0) { vipCardStatusId = int.Parse(VipCardStatusId); } } service.Update(new VipCardEntity() { VipCardID = key, VipCardStatusId = vipCardStatusId }, null); vipCardStatusChangeLogBLL.Create(new VipCardStatusChangeLogEntity() { LogID = Utils.NewGuid(), VipCardID = key, VipCardStatusID = vipCardStatusId, OldStatusID = data.VipCardStatusId, UnitID = UnitID }); content = data.ToJSON(); return(content); }
protected override SetVipCardRD ProcessRequest(DTO.Base.APIRequest <OpenVipCardRP> pRequest) { var rd = new SetVipCardRD(); var para = pRequest.Parameters; var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; //登录状态信息 var vipBLL = new VipBLL(loggingSessionInfo); //会员业务对象实例化 var vipTagsMappingBLL = new VipTagsMappingBLL(loggingSessionInfo); //会员和标签关系业务对象实例化 var vipCardBLL = new VipCardBLL(loggingSessionInfo); //会员卡业务对象实例化 var vipCardVipMappingBLL = new VipCardVipMappingBLL(loggingSessionInfo); //会员和会员卡关系业务对象实例化 var vipCardStatusChangeLogBLL = new VipCardStatusChangeLogBLL(loggingSessionInfo); //会员卡状态变更业务对象实例化 var vipAddressBLL = new VipAddressBLL(loggingSessionInfo); //会员地址信息业务对象实例化 var pTran = vipCardBLL.GetTran(); //事务 using (pTran.Connection) { try { //创建会员信息 var vipEntity = new VipEntity() { VIPID = Guid.NewGuid().ToString().Replace("-", ""), VipName = para.VipName, VipRealName = para.VipName, //VipCode = "Vip" + vipBLL.GetNewVipCode(loggingSessionInfo.ClientID), //获取会员编号 VipCode = para.VipCardCode, //会员卡号 CouponInfo = loggingSessionInfo.CurrentUserRole.UnitId, //原会集店字段 MembershipStore = loggingSessionInfo.CurrentUserRole.UnitId, //新增的会集店字段 Phone = para.Phone, Birthday = para.Birthday, Gender = para.Gender, Email = para.Email, Col18 = para.IDCard, //身份证 Status = 2, //已注册状态 VipSourceId = "20", //来源开卡 ClientID = loggingSessionInfo.ClientID }; vipBLL.Create(vipEntity, pTran); //保存年龄段标签 var vipTagsMappingEntity = new VipTagsMappingEntity() { MappingId = Guid.NewGuid().ToString().Replace("-", ""), VipId = vipEntity.VIPID, TagsId = para.TagsID }; vipTagsMappingBLL.Create(vipTagsMappingEntity, pTran); //保存会员地址信息 //var vipAddressEntity = new VipAddressEntity() //{ // VIPID = vipEntity.VIPID, // LinkMan = para.VipName, // LinkTel = para.Phone, // CityID = para.CityID, // Address = para.Address, // IsDefault = 1 //}; //vipAddressBLL.Create(vipAddressEntity, pTran); //更新会员卡信息 var vipCardEntity = vipCardBLL.GetByID(para.VipCardID); if (vipCardEntity != null) { #region 返回卡ID rd.VipCardID = vipCardEntity.VipCardID; #endregion //vipCardEntity.VipCardStatusId = 1; if (!string.IsNullOrEmpty(vipCardEntity.MembershipUnit)) { throw new APIException("此会员卡已绑定会员") { ErrorCode = ERROR_CODES.INVALID_BUSINESS } } ; if (vipCardEntity.VipCardStatusId > 0) { throw new APIException("此会员卡状态异常") { ErrorCode = ERROR_CODES.INVALID_BUSINESS } } ; vipCardEntity.MembershipTime = DateTime.Now; vipCardEntity.MembershipUnit = loggingSessionInfo.CurrentUserRole.UnitId; vipCardEntity.IsGift = para.IsGift; //vipCardEntity.SalesUserId = para.SalesUserId; vipCardEntity.SalesUserName = para.SalesUserName; //用户输入名称,后期需要根据姓名查找用户ID,更新到SalesUserId vipCardEntity.CreateBy = loggingSessionInfo.UserID; //开卡人,即入会员工 vipCardBLL.Update(vipCardEntity, pTran); } else { throw new APIException("查不到此会员卡") { ErrorCode = ERROR_CODES.INVALID_BUSINESS } }; //新增会员卡操作状态信息 var vipCardStatusChangeLogEntity = new VipCardStatusChangeLogEntity() { LogID = Guid.NewGuid().ToString().Replace("-", ""), VipCardStatusID = vipCardEntity.VipCardStatusId, VipCardID = para.VipCardID, Action = "开卡", //Reason = "", UnitID = loggingSessionInfo.CurrentUserRole.UnitId, CustomerID = loggingSessionInfo.ClientID }; vipCardStatusChangeLogBLL.Create(vipCardStatusChangeLogEntity, pTran); //绑定会员卡和会员 var vipCardVipMappingEntity = new VipCardVipMappingEntity() { MappingID = Guid.NewGuid().ToString().Replace("-", ""), VIPID = vipEntity.VIPID, VipCardID = para.VipCardID, CustomerID = loggingSessionInfo.ClientID }; vipCardVipMappingBLL.Create(vipCardVipMappingEntity, pTran); pTran.Commit(); //提交事物 } catch (APIException apiEx) { pTran.Rollback();//回滚事物 throw new APIException(apiEx.ErrorCode, apiEx.Message); } catch (Exception ex) { pTran.Rollback();//回滚事物 throw new Exception(ex.Message); } } return(rd); }
protected override SetVipCardRD ProcessRequest(DTO.Base.APIRequest <SetVipCardRP> pRequest) { var rd = new SetVipCardRD(); var para = pRequest.Parameters; var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; #region 业务对象 //会员卡 var VipCardBLL = new VipCardBLL(loggingSessionInfo); //余额变动记录 var VipCardBalanceChangeBLL = new VipCardBalanceChangeBLL(loggingSessionInfo); //卡状态变更记录 var VipCardStatusChangeLogBLL = new VipCardStatusChangeLogBLL(loggingSessionInfo); //卡关系 var VipCardVipMappingBLL = new VipCardVipMappingBLL(loggingSessionInfo); //图片 var objectImagesBLL = new ObjectImagesBLL(loggingSessionInfo); //会员 var VipBLL = new VipBLL(loggingSessionInfo); var vipCardTransLogBLL = new VipCardTransLogBLL(loggingSessionInfo); //丰收日交易记录对象示例化 var unitBLL = new TUnitBLL(loggingSessionInfo); //门店业务对象 //事务 var pTran = VipCardBLL.GetTran(); #endregion using (pTran.Connection) { try { if (string.IsNullOrWhiteSpace(para.VipCardID) || para.OperationType <= 0) { throw new APIException("卡ID或者操作类型参数不合法!") { ErrorCode = ERROR_CODES.INVALID_REQUEST_LACK_REQUEST_PARAMETER }; } //定位当前卡业务对象 VipCardEntity changeEntity = VipCardBLL.GetByID(para.VipCardID); if (changeEntity == null) { throw new APIException("当前卡信息对象为NULL!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS }; } #region 返回卡ID rd.VipCardID = changeEntity.VipCardID; #endregion changeEntity.RechargeTotalAmount = changeEntity.RechargeTotalAmount ?? 0; changeEntity.BalanceAmount = changeEntity.BalanceAmount ?? 0; string OldVipCardCode = changeEntity.VipCardCode ?? ""; //原卡号 string NewVipCardCode = ""; //新卡号,获取新卡赋值 decimal OldMoney = changeEntity.BalanceAmount.Value; //原卡当前余额 decimal NewMoney = changeEntity.BalanceAmount.Value + para.BalanceMoney; //原卡当余额+调整金额 //原卡会员映射关系 VipCardVipMappingEntity OldVipCardVipMappingData = VipCardVipMappingBLL.QueryByEntity(new VipCardVipMappingEntity() { VipCardID = para.VipCardID }, null).FirstOrDefault(); if (OldVipCardVipMappingData == null) { throw new APIException("原卡会员关系映射对象为NULL!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS }; } //门店Entity var UnitData = unitBLL.GetByID(loggingSessionInfo.CurrentUserRole.UnitId); //会员 VipEntity VipData = VipBLL.GetByID(OldVipCardVipMappingData.VIPID); #region 卡状态记录对象 VipCardStatusChangeLogEntity AddVCStatusEntity = new VipCardStatusChangeLogEntity(); AddVCStatusEntity.LogID = System.Guid.NewGuid().ToString(); AddVCStatusEntity.VipCardID = para.VipCardID; AddVCStatusEntity.Reason = para.ChangeReason; AddVCStatusEntity.OldStatusID = changeEntity.VipCardStatusId; AddVCStatusEntity.CustomerID = loggingSessionInfo.ClientID; AddVCStatusEntity.Remark = para.Remark; AddVCStatusEntity.UnitID = loggingSessionInfo.CurrentUserRole.UnitId; #endregion #region 新卡 VipCardEntity NewChangeVipCardData = new VipCardEntity(); if (!string.IsNullOrWhiteSpace(para.NewCardCode)) { //查询参数 List <IWhereCondition> complexCondition = new List <IWhereCondition> { }; if (!string.IsNullOrEmpty(para.NewCardCode)) { complexCondition.Add(new DirectCondition("VipCardCode='" + para.NewCardCode + "' or VipCardISN='" + para.NewCardCode.ToString() + "' ")); } //新卡对象 NewChangeVipCardData = VipCardBLL.Query(complexCondition.ToArray(), null).FirstOrDefault(); if (NewChangeVipCardData == null) { throw new APIException("新卡不存在!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS }; } //新卡号赋值 NewVipCardCode = NewChangeVipCardData.VipCardCode ?? ""; //新卡数据赋值 NewChangeVipCardData.VipCardGradeID = changeEntity.VipCardGradeID; NewChangeVipCardData.BatchNo = changeEntity.BatchNo; NewChangeVipCardData.BeginDate = changeEntity.BeginDate; NewChangeVipCardData.EndDate = changeEntity.EndDate; NewChangeVipCardData.TotalAmount = changeEntity.TotalAmount == null ? 0 : changeEntity.TotalAmount.Value; NewChangeVipCardData.BalanceAmount = changeEntity.BalanceAmount == null ? 0 : changeEntity.BalanceAmount.Value; NewChangeVipCardData.BalancePoints = changeEntity.BalancePoints == null ? 0 : changeEntity.BalancePoints.Value; NewChangeVipCardData.BalanceBonus = changeEntity.BalanceBonus == null ? 0 : changeEntity.BalanceBonus.Value; NewChangeVipCardData.CumulativeBonus = changeEntity.CumulativeBonus == null ? 0 : changeEntity.CumulativeBonus.Value; NewChangeVipCardData.PurchaseTotalAmount = changeEntity.PurchaseTotalAmount == null ? 0 : changeEntity.PurchaseTotalAmount.Value; NewChangeVipCardData.PurchaseTotalCount = changeEntity.PurchaseTotalCount == null ? 0 : changeEntity.PurchaseTotalCount.Value; NewChangeVipCardData.CheckCode = changeEntity.CheckCode; NewChangeVipCardData.SingleTransLimit = changeEntity.SingleTransLimit == null ? 0 : changeEntity.SingleTransLimit.Value; NewChangeVipCardData.IsOverrunValid = changeEntity.IsOverrunValid == null ? 0 : changeEntity.IsOverrunValid.Value; NewChangeVipCardData.RechargeTotalAmount = changeEntity.RechargeTotalAmount == null ? 0 : changeEntity.RechargeTotalAmount.Value; NewChangeVipCardData.LastSalesTime = changeEntity.LastSalesTime; NewChangeVipCardData.IsGift = changeEntity.IsGift == null ? 0 : changeEntity.IsGift.Value; NewChangeVipCardData.SalesAmount = changeEntity.SalesAmount; NewChangeVipCardData.SalesUserId = changeEntity.SalesUserId; NewChangeVipCardData.CustomerID = changeEntity.CustomerID; NewChangeVipCardData.MembershipTime = changeEntity.MembershipTime; NewChangeVipCardData.SalesUserName = changeEntity.SalesUserName == null ? "" : changeEntity.SalesUserName; NewChangeVipCardData.CreateBy = changeEntity.CreateBy; } #endregion switch (para.OperationType) { case 1: #region 调整卡余额 //卡更新 //卡内总金额 if (para.BalanceMoney > 0) { changeEntity.RechargeTotalAmount += para.BalanceMoney; if (changeEntity.RechargeTotalAmount < 0) { throw new APIException("调整后的余额小于0!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS }; } } //changeEntity.BalanceAmount = changeEntity.BalanceAmount ?? 0; // changeEntity.BalanceAmount = NewMoney; //执行更新 VipCardBLL.Update(changeEntity, pTran); //新增余额变动记录 VipCardBalanceChangeEntity AddEntity = new VipCardBalanceChangeEntity(); AddEntity.ChangeID = System.Guid.NewGuid().ToString(); AddEntity.VipCardCode = changeEntity.VipCardCode; AddEntity.ChangeAmount = para.BalanceMoney; //变动前卡内余额 AddEntity.ChangeBeforeBalance = OldMoney; //变动后卡内余额 AddEntity.ChangeAfterBalance = NewMoney; AddEntity.ChangeReason = para.ChangeReason; AddEntity.Status = 1; AddEntity.Remark = para.Remark; AddEntity.CustomerID = loggingSessionInfo.ClientID; AddEntity.UnitID = loggingSessionInfo.CurrentUserRole.UnitId; //执行新增 VipCardBalanceChangeBLL.Create(AddEntity, pTran); //增加图片上传 if (!string.IsNullOrEmpty(para.ImageUrl)) { var objectImagesEntity = new ObjectImagesEntity() { ImageId = Guid.NewGuid().ToString(), ObjectId = AddEntity.ChangeID, ImageURL = para.ImageUrl }; objectImagesBLL.Create(objectImagesEntity, pTran); } #region 充值记录 //读取最近一次积分变更记录 List <OrderBy> lstOrder = new List <OrderBy> { }; //排序参数 lstOrder.Add(new OrderBy() { FieldName = "TransTime", Direction = OrderByDirections.Desc }); var transLogInfo = vipCardTransLogBLL.QueryByEntity(new VipCardTransLogEntity() { VipCardCode = changeEntity.VipCardCode, TransType = "C" }, lstOrder.ToArray()).FirstOrDefault(); //期末积分 int newValue = transLogInfo != null ? (transLogInfo.NewValue ?? 0) : 0; var vipCardTransLogEntity = new VipCardTransLogEntity() { VipCardCode = VipData == null ? "" : VipData.VipCode, UnitCode = UnitData == null ? "" : UnitData.UnitCode, TransContent = "余额", TransType = "C", TransTime = DateTime.Now, TransAmount = para.BalanceMoney, LastValue = newValue, //期初金额 NewValue = Convert.ToInt32(para.BalanceMoney) + newValue, //期末金额 CustomerID = loggingSessionInfo.ClientID }; vipCardTransLogBLL.Create(vipCardTransLogEntity, pTran); #endregion #endregion break; case 2: #region 卡升级 //卡类型升级 if (para.VipCardTypeId != 0) { VipCardVipMappingBLL.updateVipCardByType(VipData.VIPID, para.VipCardTypeId, para.ChangeReason, para.Remark, VipData.VipCode, pTran); } //卡号升级 else { #region 原卡 #region 更新原卡 changeEntity.VipCardStatusId = 3; //当前月,累计金额清0 //changeEntity.BalanceAmount = 0; //changeEntity.TotalAmount = 0; VipCardBLL.Update(changeEntity, pTran); //执行 #endregion #region 新增原卡状态记录 AddVCStatusEntity.VipCardStatusID = 3; AddVCStatusEntity.Action = "卡升级"; AddVCStatusEntity.Remark += "已升级为:" + NewChangeVipCardData.VipCardCode; VipCardStatusChangeLogBLL.Create(AddVCStatusEntity, pTran); //执行 #endregion #region 新增原卡余额变动记录 //if (OldMoney > 0) //{ // VipCardBalanceChangeEntity AddOldCardBalanceData = new VipCardBalanceChangeEntity(); // AddOldCardBalanceData.ChangeID = System.Guid.NewGuid().ToString(); // AddOldCardBalanceData.VipCardCode = changeEntity.VipCardCode; // AddOldCardBalanceData.ChangeAmount = -OldMoney; // //变动前卡内余额 // AddOldCardBalanceData.ChangeBeforeBalance = OldMoney; // //变动后卡内余额 // AddOldCardBalanceData.ChangeAfterBalance = 0; // AddOldCardBalanceData.ChangeReason = para.ChangeReason; // AddOldCardBalanceData.Status = 1; // AddOldCardBalanceData.Remark = para.Remark; // AddOldCardBalanceData.CustomerID = loggingSessionInfo.ClientID; // AddOldCardBalanceData.UnitID = loggingSessionInfo.CurrentUserRole.UnitId; // VipCardBalanceChangeBLL.Create(AddOldCardBalanceData, pTran);//执行 // //增加图片上传 // if (!string.IsNullOrEmpty(para.ImageUrl)) // { // var objectImagesEntity = new ObjectImagesEntity() // { // ImageId = Guid.NewGuid().ToString(), // ObjectId = AddOldCardBalanceData.ChangeID, // ImageURL = para.ImageUrl // }; // objectImagesBLL.Create(objectImagesEntity, pTran); // } //} #endregion #endregion #region 新卡 VipData.VipCode = para.NewCardCode; VipBLL.Update(VipData, pTran); #region 更新新卡 if (!string.IsNullOrEmpty(NewChangeVipCardData.MembershipUnit)) { throw new APIException("该会员卡已绑定会员!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS } } ; if (NewChangeVipCardData.VipCardStatusId != 0) { throw new APIException("该会员卡已激活!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS } } ; if (NewChangeVipCardData.VipCardTypeID.Value == changeEntity.VipCardTypeID.Value) { throw new APIException("该卡号与原卡等级相同,请更换卡号后重新尝试!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS } } ; #region 返回新卡卡ID rd.VipCardID = NewChangeVipCardData.VipCardID; #endregion NewChangeVipCardData.MembershipUnit = changeEntity.MembershipUnit; NewChangeVipCardData.VipCardStatusId = 1; VipCardBLL.Update(NewChangeVipCardData, pTran); //执行 #endregion #region 新增新卡卡关系 VipCardVipMappingEntity AddVipCardVipMappingData = new VipCardVipMappingEntity(); AddVipCardVipMappingData.MappingID = System.Guid.NewGuid().ToString(); AddVipCardVipMappingData.VIPID = OldVipCardVipMappingData.VIPID; AddVipCardVipMappingData.VipCardID = NewChangeVipCardData.VipCardID; AddVipCardVipMappingData.CustomerID = loggingSessionInfo.ClientID; VipCardVipMappingBLL.Create(AddVipCardVipMappingData, pTran); //执行 #endregion #region 更新会员编号 //VipEntity SJ_VipData = VipBLL.GetByID(OldVipCardVipMappingData.VIPID); //if (VipData == null) // throw new APIException("会员不存在!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS }; //VipData.VipCode = NewChangeVipCardData.VipCardCode; //VipBLL.Update(VipData, pTran);//执行 #endregion #region 新增新卡状态记录 //新增新卡状态记录 VipCardStatusChangeLogEntity AddNewVCStatusEntity = new VipCardStatusChangeLogEntity(); AddNewVCStatusEntity.LogID = System.Guid.NewGuid().ToString(); AddNewVCStatusEntity.VipCardID = NewChangeVipCardData.VipCardID; AddNewVCStatusEntity.VipCardStatusID = 1; AddNewVCStatusEntity.Reason = para.ChangeReason; AddNewVCStatusEntity.OldStatusID = 0; AddNewVCStatusEntity.CustomerID = loggingSessionInfo.ClientID; AddNewVCStatusEntity.Action = "卡升级"; AddNewVCStatusEntity.Remark = para.Remark + "由旧卡:" + changeEntity.VipCardCode + "升级"; AddNewVCStatusEntity.UnitID = loggingSessionInfo.CurrentUserRole.UnitId; VipCardStatusChangeLogBLL.Create(AddNewVCStatusEntity, pTran); //执行 #endregion #region 新增新卡余额记录 //新增余额记录 //if (OldMoney > 0) //{ // VipCardBalanceChangeEntity AddNewCardBalanceData = new VipCardBalanceChangeEntity(); // AddNewCardBalanceData.ChangeID = System.Guid.NewGuid().ToString(); // AddNewCardBalanceData.VipCardCode = NewChangeVipCardData.VipCardCode; // AddNewCardBalanceData.ChangeAmount = OldMoney; // //变动前卡内余额 // AddNewCardBalanceData.ChangeBeforeBalance = 0; // //变动后卡内余额 // AddNewCardBalanceData.ChangeAfterBalance = NewChangeVipCardData.BalanceAmount == null ? 0 : NewChangeVipCardData.BalanceAmount.Value; // AddNewCardBalanceData.ChangeReason = para.ChangeReason; // AddNewCardBalanceData.Status = 1; // AddNewCardBalanceData.Remark = para.Remark; // AddNewCardBalanceData.CustomerID = loggingSessionInfo.ClientID; // VipCardBalanceChangeBLL.Create(AddNewCardBalanceData, pTran);//执行 // //增加图片上传 // if (!string.IsNullOrEmpty(para.ImageUrl)) // { // var objectImagesEntity = new ObjectImagesEntity() // { // ImageId = Guid.NewGuid().ToString(), // ObjectId = AddNewCardBalanceData.ChangeID, // ImageURL = para.ImageUrl // }; // objectImagesBLL.Create(objectImagesEntity, pTran); // } //} #endregion #endregion } #endregion break; case 3: #region 挂失 changeEntity.VipCardStatusId = 4; //执行更新 VipCardBLL.Update(changeEntity, pTran); //执行 AddVCStatusEntity.VipCardStatusID = 4; AddVCStatusEntity.PicUrl = para.ImageUrl; AddVCStatusEntity.Action = "挂失"; VipCardStatusChangeLogBLL.Create(AddVCStatusEntity, pTran); #endregion break; case 4: #region 冻结 changeEntity.VipCardStatusId = 2; //执行更新 VipCardBLL.Update(changeEntity, pTran); //执行新增 AddVCStatusEntity.VipCardStatusID = 2; AddVCStatusEntity.Action = "冻结"; VipCardStatusChangeLogBLL.Create(AddVCStatusEntity, pTran); #endregion break; case 5: #region 转卡 #region 原卡 #region 更新原卡 changeEntity.VipCardStatusId = 3; //当前月,累计金额清0 changeEntity.BalanceAmount = 0; changeEntity.TotalAmount = 0; VipCardBLL.Update(changeEntity, pTran); //执行 #endregion #region 新增原卡状态记录 AddVCStatusEntity.VipCardStatusID = 3; AddVCStatusEntity.Action = "转卡"; AddVCStatusEntity.Remark += "已转移为:" + NewChangeVipCardData.VipCardCode; VipCardStatusChangeLogBLL.Create(AddVCStatusEntity, pTran); //执行 #endregion #region 新增原卡余额变动记录 if (OldMoney > 0) { VipCardBalanceChangeEntity AddOldZKCardBalanceData = new VipCardBalanceChangeEntity(); AddOldZKCardBalanceData.ChangeID = System.Guid.NewGuid().ToString(); AddOldZKCardBalanceData.VipCardCode = changeEntity.VipCardCode; AddOldZKCardBalanceData.ChangeAmount = -OldMoney; //变动前卡内余额 AddOldZKCardBalanceData.ChangeBeforeBalance = OldMoney; //变动后卡内余额 AddOldZKCardBalanceData.ChangeAfterBalance = 0; AddOldZKCardBalanceData.ChangeReason = para.ChangeReason; AddOldZKCardBalanceData.Status = 1; AddOldZKCardBalanceData.Remark = para.Remark; AddOldZKCardBalanceData.CustomerID = loggingSessionInfo.ClientID; AddOldZKCardBalanceData.UnitID = loggingSessionInfo.CurrentUserRole.UnitId; VipCardBalanceChangeBLL.Create(AddOldZKCardBalanceData, pTran); //执行 //增加图片上传 if (!string.IsNullOrEmpty(para.ImageUrl)) { var objectImagesEntity = new ObjectImagesEntity() { ImageId = Guid.NewGuid().ToString(), ObjectId = AddOldZKCardBalanceData.ChangeID, ImageURL = para.ImageUrl }; objectImagesBLL.Create(objectImagesEntity, pTran); } } #endregion #endregion #region 新卡 #region 更新新卡 if (!string.IsNullOrEmpty(NewChangeVipCardData.MembershipUnit)) { throw new APIException("该会员卡已绑定会员!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS } } ; if (NewChangeVipCardData.VipCardStatusId != 0) { throw new APIException("该会员卡已激活!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS } } ; if (NewChangeVipCardData.VipCardTypeID.Value != changeEntity.VipCardTypeID.Value) { throw new APIException("该卡号与原卡等级不同,请更换卡号后重新尝试!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS } } ; #region 返回新卡卡ID rd.VipCardID = NewChangeVipCardData.VipCardID; #endregion NewChangeVipCardData.MembershipUnit = changeEntity.MembershipUnit; NewChangeVipCardData.VipCardStatusId = 1; VipCardBLL.Update(NewChangeVipCardData, pTran); //执行 #endregion #region 新增新卡卡关系 VipCardVipMappingEntity AddZKVipCardVipMappingData = new VipCardVipMappingEntity(); AddZKVipCardVipMappingData.MappingID = System.Guid.NewGuid().ToString(); AddZKVipCardVipMappingData.VIPID = OldVipCardVipMappingData.VIPID; AddZKVipCardVipMappingData.VipCardID = NewChangeVipCardData.VipCardID; AddZKVipCardVipMappingData.CustomerID = loggingSessionInfo.ClientID; VipCardVipMappingBLL.Create(AddZKVipCardVipMappingData, pTran); //执行 #endregion #region 更新会员编号 //VipEntity ZK_VipData = VipBLL.GetByID(OldVipCardVipMappingData.VIPID); if (VipData == null) { throw new APIException("会员不存在!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS } } ; VipData.VipCode = NewChangeVipCardData.VipCardCode; VipBLL.Update(VipData, pTran); //执行 #endregion #region 新增新卡状态记录 VipCardStatusChangeLogEntity AddNewZKVCStatusEntity = new VipCardStatusChangeLogEntity(); AddNewZKVCStatusEntity.LogID = System.Guid.NewGuid().ToString(); AddNewZKVCStatusEntity.VipCardID = NewChangeVipCardData.VipCardID; AddNewZKVCStatusEntity.VipCardStatusID = 1; AddNewZKVCStatusEntity.Reason = para.ChangeReason; AddNewZKVCStatusEntity.OldStatusID = 0; AddNewZKVCStatusEntity.CustomerID = loggingSessionInfo.ClientID; AddNewZKVCStatusEntity.Action = "转卡"; AddNewZKVCStatusEntity.Remark = para.Remark + para.Remark + "由旧卡:" + changeEntity.VipCardCode + "转移"; AddNewZKVCStatusEntity.UnitID = loggingSessionInfo.CurrentUserRole.UnitId; VipCardStatusChangeLogBLL.Create(AddNewZKVCStatusEntity, pTran); //执行 #endregion #region 新增新卡余额记录 if (OldMoney > 0) { VipCardBalanceChangeEntity AddNewZKCardBalanceData = new VipCardBalanceChangeEntity(); AddNewZKCardBalanceData.ChangeID = System.Guid.NewGuid().ToString(); AddNewZKCardBalanceData.VipCardCode = NewChangeVipCardData.VipCardCode; AddNewZKCardBalanceData.ChangeAmount = OldMoney; //变动前卡内余额 AddNewZKCardBalanceData.ChangeBeforeBalance = 0; //变动后卡内余额 AddNewZKCardBalanceData.ChangeAfterBalance = NewChangeVipCardData.BalanceAmount == null ? 0 : NewChangeVipCardData.BalanceAmount.Value; AddNewZKCardBalanceData.ChangeReason = para.ChangeReason; AddNewZKCardBalanceData.Status = 1; AddNewZKCardBalanceData.Remark = para.Remark; AddNewZKCardBalanceData.CustomerID = loggingSessionInfo.ClientID; AddNewZKCardBalanceData.UnitID = loggingSessionInfo.CurrentUserRole.UnitId; VipCardBalanceChangeBLL.Create(AddNewZKCardBalanceData, pTran); //执行 //增加图片上传 if (!string.IsNullOrEmpty(para.ImageUrl)) { var objectImagesEntity = new ObjectImagesEntity() { ImageId = Guid.NewGuid().ToString(), ObjectId = AddNewZKCardBalanceData.ChangeID, ImageURL = para.ImageUrl }; objectImagesBLL.Create(objectImagesEntity, pTran); } } #endregion #endregion #endregion break; case 6: #region 解挂 changeEntity.VipCardStatusId = 1; //执行更新 VipCardBLL.Update(changeEntity, pTran); //执行新增 AddVCStatusEntity.VipCardStatusID = 1; AddVCStatusEntity.Action = "解挂"; VipCardStatusChangeLogBLL.Create(AddVCStatusEntity, pTran); #endregion break; case 7: #region 解冻 changeEntity.VipCardStatusId = 1; //执行更新 VipCardBLL.Update(changeEntity, pTran); //执行新增 AddVCStatusEntity.VipCardStatusID = 1; AddVCStatusEntity.Action = "解冻"; VipCardStatusChangeLogBLL.Create(AddVCStatusEntity, pTran); #endregion break; case 8: #region 作废 changeEntity.VipCardStatusId = 3; //执行更新 VipCardBLL.Update(changeEntity, pTran); //执行新增 AddVCStatusEntity.VipCardStatusID = 3; AddVCStatusEntity.Action = "作废"; VipCardStatusChangeLogBLL.Create(AddVCStatusEntity, pTran); #endregion break; case 9: #region 唤醒 changeEntity.VipCardStatusId = 1; //执行更新 VipCardBLL.Update(changeEntity, pTran); //执行新增 AddVCStatusEntity.VipCardStatusID = 1; AddVCStatusEntity.Action = "唤醒"; VipCardStatusChangeLogBLL.Create(AddVCStatusEntity, pTran); #endregion break; case 10: #region 激活 changeEntity.VipCardStatusId = 1; //执行更新 VipCardBLL.Update(changeEntity, pTran); //执行新增 AddVCStatusEntity.VipCardStatusID = 1; AddVCStatusEntity.Action = "激活"; VipCardStatusChangeLogBLL.Create(AddVCStatusEntity, pTran); #endregion break; default: throw new APIException("当前操作类型不匹配!") { ErrorCode = ERROR_CODES.INVALID_REQUEST_LACK_REQUEST_PARAMETER }; break; } ; pTran.Commit(); #region 卡升级,转卡操作转移消费记录表 if ((para.OperationType == 2 || para.OperationType == 5) && string.IsNullOrEmpty(para.VipCardTypeId.ToString())) //卡类型升级不执行此操作 { string StrSql = string.Format("update VipCardTransLog set VipCardCode='{0}',OldVipCardCode='{1}' where VipCardCode='{1}'", NewVipCardCode, OldVipCardCode); vipCardTransLogBLL.UpdateVipCardTransLog(StrSql);//执行 } #endregion var eventService = new EventService(); var vipMsg = new EventContract { Operation = OptEnum.Update, EntityType = EntityTypeEnum.Vip, Id = VipData.VIPID }; eventService.PublishMsg(vipMsg); } catch (APIException apiEx) { pTran.Rollback();//回滚事物 throw new APIException(apiEx.ErrorCode, apiEx.Message); } catch (Exception ex) { pTran.Rollback();//回滚事务 throw new APIException(ex.Message); } } return(rd); }
//<summary> //Pos订单入库 //</summary> //<param name="pRequest"></param> //<returns></returns> protected override SetPosOrderRD ProcessRequest(APIRequest <SetPosOrderRP> pRequest) { //请求参数 var rp = pRequest.Parameters; //返回参数 var rd = new SetPosOrderRD(); //订单 var inoutBll = new T_InoutBLL(CurrentUserInfo); var inoutDetail = new T_Inout_DetailBLL(CurrentUserInfo); //商品 var itemCategoryBll = new T_Item_CategoryBLL(CurrentUserInfo); var itemBll = new T_ItemBLL(CurrentUserInfo); var porpBll = new T_PropBLL(CurrentUserInfo); var itemSkuPropBll = new T_ItemSkuPropBLL(CurrentUserInfo); var skuBll = new T_SkuBLL(CurrentUserInfo); var skuPriceBll = new T_Sku_PriceBLL(CurrentUserInfo); var skuProperty = new T_Sku_PropertyBLL(CurrentUserInfo); //获取会员信息 var vipBll = new VipBLL(CurrentUserInfo); var vipInfo = vipBll.GetByID(pRequest.UserID); var vipCardVipMappingBll = new VipCardVipMappingBLL(CurrentUserInfo); var vipCardBll = new VipCardBLL(CurrentUserInfo); var vipCardVipMappingEntity = vipCardVipMappingBll.QueryByEntity(new VipCardVipMappingEntity() { VIPID = vipInfo.VIPID, CustomerID = CurrentUserInfo.ClientID }, null).FirstOrDefault(); string VipCardTypeID = ""; //卡类型Id if (vipCardVipMappingEntity != null) { var vipCardEntity = vipCardBll.GetByID(vipCardVipMappingEntity.VipCardID); VipCardTypeID = vipCardEntity.VipCardTypeID.ToString(); } //员工 var userBll = new T_UserBLL(CurrentUserInfo); //获取门店信息 var unitBll = new t_unitBLL(CurrentUserInfo); t_unitEntity unitInfo = null; if (!string.IsNullOrEmpty(rp.UnitCode)) { unitInfo = unitBll.QueryByEntity(new t_unitEntity() { unit_code = rp.UnitCode, customer_id = CurrentUserInfo.ClientID }, null).FirstOrDefault(); if (unitInfo == null) { throw new APIException("请在正念商户后台录入相应门店") { ErrorCode = 100 }; } } else { throw new APIException("缺少请求参数:门店编码") { ErrorCode = 102 }; } //获取员工信息 T_UserEntity userEntity = null; if (!string.IsNullOrEmpty(rp.MobliePhone)) { userEntity = userBll.QueryByEntity(new T_UserEntity() { user_telephone = rp.MobliePhone, customer_id = CurrentUserInfo.ClientID }, null).FirstOrDefault(); //没有员工,新增默认员工(店员APP) if (userEntity == null) { var roleBll = new T_RoleBLL(CurrentUserInfo); var roleEntity = roleBll.QueryByEntity(new T_RoleEntity() { role_code = "clerkAPP", customer_id = CurrentUserInfo.ClientID }, null).FirstOrDefault(); if (roleEntity == null) { throw new APIException("请在正念商户后台录入相应角色") { ErrorCode = 100 }; } userEntity = new T_UserEntity(); userEntity.user_telephone = rp.MobliePhone; userEntity.user_code = rp.UserCode; userEntity.user_name = rp.UserCode; userEntity.user_birthday = rp.Birthday; userEntity.user_email = rp.EmailAddress; userEntity.user_address = rp.Address; userEntity.user_postcode = rp.Zip; userBll.AddUser(ref userEntity, unitInfo, roleEntity); } } else { throw new APIException("缺少请求参数:员工手机号") { ErrorCode = 102 }; } //获取会员折扣 var sysVipCardGradeBLL = new SysVipCardGradeBLL(CurrentUserInfo); decimal vipDiscount = sysVipCardGradeBLL.GetVipDiscount() * 10; //订单号 string orderId = BaseService.NewGuidPub(); T_InoutEntity tInoutEntity = new T_InoutEntity(); tInoutEntity.order_id = orderId; tInoutEntity.order_no = rp.OrderNo; //拼接ItemCodes //StringBuilder ItemCodes = new StringBuilder(); //for (int j = 0; j < pRequest.Parameters.OrderDetailList.Count(); j++) //{ // if (j != 0) // { // ItemCodes.Append(","); // } // ItemCodes.Append(string.Format("{0}", pRequest.Parameters.OrderDetailList[j].ItemCode)); //} ////通过itemCodes取出商品价格 //SkuPriceService skuPriceService = new SkuPriceService(CurrentUserInfo); //List<SkuPrice> skuPriceList = skuPriceService.GetPriceListByItemCodes(ItemCodes.ToString(), CurrentUserInfo.ClientID); //if(skuPriceList.Count == 0) //{ // throw new APIException("未找到商品") { ErrorCode = 100 }; //} //订单总金额 decimal totalAmount = rp.TotalAmount; //订单实付金额 decimal ActualAmount = rp.DiscountAmount; //订单折扣后金额 decimal DiscountAmount = rp.DiscountAmount; //订单明细显示顺序 int i = 1; //商品价格重新计算 foreach (var item in pRequest.Parameters.OrderDetailList) { T_ItemEntity itemEntity = null; //商品 T_SkuEntity skuEntity = null; //sku if (!string.IsNullOrEmpty(item.ItemCode)) { itemEntity = itemBll.QueryByEntity(new T_ItemEntity() { item_code = item.ItemCode, CustomerId = CurrentUserInfo.ClientID }, null).FirstOrDefault(); if (itemEntity == null) { if (string.IsNullOrEmpty(item.ItemCategoryCode)) { throw new APIException("缺少参数:商品类别名称") { ErrorCode = 200 }; } itemEntity = new T_ItemEntity(); itemEntity.item_code = item.ItemCode; itemEntity.item_name = item.ItemName; itemBll.AddItem(itemEntity, out skuEntity, item.ItemCategoryName, item.ItemCategoryCode, item.SkuOriginPrice, item.SkuSalesPrice); } else { skuEntity = skuBll.QueryByEntity(new T_SkuEntity() { item_id = itemEntity.item_id }, null).FirstOrDefault(); } } else { throw new APIException("缺少参数:商品编码") { ErrorCode = 300 }; } //订单明细相关处理 T_Inout_DetailBLL inoutDetailBll = new T_Inout_DetailBLL(CurrentUserInfo); T_Inout_DetailEntity inoutDetailEntity = new T_Inout_DetailEntity() { order_detail_id = BaseService.NewGuidPub(), order_id = orderId, //订单Id sku_id = skuEntity.sku_id, //skuId unit_id = unitInfo.unit_id, //门店Id order_qty = item.Qty, //订单qty enter_qty = item.Qty, //实际qty enter_price = item.price, //折扣价 enter_amount = item.price * item.Qty, //折扣价 std_price = item.price, //原价 discount_rate = vipDiscount, //折扣 retail_price = item.price * item.Qty, //零售价 retail_amount = item.price * item.Qty, //零售价 order_detail_status = "1", display_index = i, if_flag = 0 }; inoutDetailBll.Create(inoutDetailEntity); i++; } //优惠券使用 if (!string.IsNullOrEmpty(rp.CouponId)) { #region 判断优惠券是否是该会员的 var vipcouponMappingBll = new VipCouponMappingBLL(CurrentUserInfo); var vipcouponmappingList = vipcouponMappingBll.QueryByEntity(new VipCouponMappingEntity() { VIPID = pRequest.UserID, CouponID = rp.CouponId }, null); if (vipcouponmappingList == null || vipcouponmappingList.Length == 0) { throw new APIException("此张优惠券不是该会员的") { ErrorCode = 103 }; } #endregion #region 判断优惠券是否有效 var couponBll = new CouponBLL(CurrentUserInfo); var couponEntity = couponBll.GetByID(rp.CouponId); if (couponEntity == null) { throw new APIException("无效的优惠券") { ErrorCode = 103 }; } if (couponEntity.Status == 1) { throw new APIException("优惠券已使用") { ErrorCode = 103 }; } if (couponEntity.EndDate < DateTime.Now) { throw new APIException("优惠券已过期") { ErrorCode = 103 }; } var couponTypeBll = new CouponTypeBLL(CurrentUserInfo); var couponTypeEntity = couponTypeBll.GetByID(couponEntity.CouponTypeID); if (couponTypeEntity == null) { throw new APIException("无效的优惠券类型") { ErrorCode = 103 }; } #endregion #region 优惠券核销 var couponUseBll = new CouponUseBLL(CurrentUserInfo); var couponUseEntity = new CouponUseEntity() { CouponUseID = Guid.NewGuid(), CouponID = rp.CouponId, VipID = pRequest.UserID, UnitID = unitInfo.unit_id, OrderID = orderId, Comment = "商城使用电子券", CustomerID = pRequest.CustomerID, CreateBy = pRequest.UserID, CreateTime = DateTime.Now, LastUpdateBy = pRequest.UserID, LastUpdateTime = DateTime.Now, IsDelete = 0 }; couponUseBll.Create(couponUseEntity); #endregion #region 更新CouponType数量 var conponTypeBll = new CouponTypeBLL(CurrentUserInfo); var conponTypeEntity = conponTypeBll.QueryByEntity(new CouponTypeEntity() { CouponTypeID = new Guid(couponEntity.CouponTypeID), CustomerId = pRequest.CustomerID }, null).FirstOrDefault(); conponTypeEntity.IsVoucher += 1; conponTypeBll.Update(conponTypeEntity); #endregion #region 更新优惠券状态 couponEntity.Status = 1; couponBll.Update(couponEntity); #endregion ActualAmount -= couponTypeEntity.ParValue ?? 0; } #region 使用积分 //使用积分 if (rp.IntegralFlag == 1) { var vipIntegralBll = new VipIntegralBLL(CurrentUserInfo); string sourceId = "20"; //积分抵扣 var IntegralDetail = new VipIntegralDetailEntity() { Integral = -Convert.ToInt32(rp.Integral), IntegralSourceID = sourceId, ObjectId = orderId }; if (IntegralDetail.Integral != 0) { //变动前积分 string OldIntegral = (vipInfo.Integration ?? 0).ToString(); //变动积分 string ChangeIntegral = (IntegralDetail.Integral ?? 0).ToString(); var vipIntegralDetailId = vipIntegralBll.AddIntegral(ref vipInfo, unitInfo, IntegralDetail, CurrentUserInfo); //发送微信积分变动通知模板消息 if (!string.IsNullOrWhiteSpace(vipIntegralDetailId)) { var CommonBLL = new CommonBLL(); CommonBLL.PointsChangeMessage(OldIntegral, vipInfo, ChangeIntegral, vipInfo.WeiXinUserId, CurrentUserInfo); } } tInoutEntity.pay_points = rp.Integral; tInoutEntity.receive_points = rp.Integral; ActualAmount -= rp.IntegralAmount; } #endregion #region 余额和返现修改 var vipAmountBll = new VipAmountBLL(CurrentUserInfo); var vipAmountDetailBll = new VipAmountDetailBLL(CurrentUserInfo); var vipAmountEntity = vipAmountBll.QueryByEntity(new VipAmountEntity() { VipId = pRequest.UserID, VipCardCode = vipInfo.VipCode }, null).FirstOrDefault(); if (vipAmountEntity != null) { //判断该会员账户是否被冻结 if (vipAmountEntity.IsLocking == 1) { throw new APIException("账户已被冻结,请先解冻") { ErrorCode = 103 } } ; //判断该会员的账户余额是否大于本次使用的余额 if (vipAmountEntity.EndAmount < rp.EndAmount) { throw new APIException(string.Format("账户余额不足,当前余额为【{0}】", vipAmountEntity.EndAmount)) { ErrorCode = 103 } } ; } //使用余额 if (rp.EndAmountFlag == 1) { var detailInfo = new VipAmountDetailEntity() { Amount = -rp.EndAmount, AmountSourceId = "1", ObjectId = orderId }; var vipAmountDetailId = vipAmountBll.AddVipAmount(vipInfo, unitInfo, ref vipAmountEntity, detailInfo, CurrentUserInfo); if (!string.IsNullOrWhiteSpace(vipAmountDetailId)) {//发送微信账户余额变动模板消息 var CommonBLL = new CommonBLL(); CommonBLL.BalanceChangedMessage(tInoutEntity.order_no, vipAmountEntity, detailInfo, vipInfo.WeiXinUserId, vipInfo.VIPID, CurrentUserInfo); } tInoutEntity.Field3 = rp.EndAmount.ToString(); } #endregion //订单主表更新 tInoutEntity.VipCardCode = vipInfo.VipCardCode;//会员卡号 tInoutEntity.order_reason_id = "2F6891A2194A4BBAB6F17B4C99A6C6F5"; tInoutEntity.order_type_id = "1F0A100C42484454BAEA211D4C14B80F"; tInoutEntity.warehouse_id = "67bb4c12785c42d4912aff7d34606592"; tInoutEntity.data_from_id = ""; tInoutEntity.red_flag = "1"; tInoutEntity.order_date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //订单时间 tInoutEntity.create_unit_id = unitInfo.unit_id; //门店 tInoutEntity.unit_id = unitInfo.unit_id; //门店 tInoutEntity.sales_unit_id = unitInfo.unit_id; //门店 tInoutEntity.purchase_unit_id = unitInfo.unit_id; tInoutEntity.sales_user = userEntity.user_id; tInoutEntity.total_amount = totalAmount; //订单金额 tInoutEntity.discount_rate = vipDiscount; //会员折扣 tInoutEntity.actual_amount = ActualAmount; //实付金额 tInoutEntity.total_qty = rp.qty; tInoutEntity.total_retail = totalAmount; //订单金额 tInoutEntity.vip_no = vipInfo.VIPID; tInoutEntity.Field6 = vipInfo.Phone; tInoutEntity.Field14 = vipInfo.VipName; tInoutEntity.Field17 = VipCardTypeID; tInoutEntity.Field12 = DiscountAmount.ToString(); tInoutEntity.Field11 = "知行易"; tInoutEntity.customer_id = CurrentUserInfo.ClientID; tInoutEntity.Field1 = "1"; //支付完成 tInoutEntity.Field7 = "700"; //已完成 tInoutEntity.status = "700"; //已完成 tInoutEntity.status_desc = "已完成"; tInoutEntity.Field10 = "已完成"; rd.Amount = ActualAmount - rp.EndAmount; inoutBll.Create(tInoutEntity); //订单奖励 new SendOrderRewardMsgBLL().OrderReward(tInoutEntity, this.CurrentUserInfo, null);//存入到缓存 rd.orderId = orderId; return(rd); } } }