/// <summary> /// 核销优惠劵 /// </summary> /// <param name="pRequest"></param> /// <returns></returns> private string BestowCoupon(string pRequest) { RespData respData = new RespData(); try { var reqObj = pRequest.DeserializeJSONTo <reqConunbondata>(); if (string.IsNullOrEmpty(reqObj.userId)) { respData.ResultCode = "103"; respData.Message = "登陆用户不能为空"; } if (string.IsNullOrEmpty(reqObj.Parameters.doorID)) { respData.ResultCode = "103"; respData.Message = "此APP版本无法核销,请升级到新版本。"; return(respData.ToJSON()); } var loggingSessionInfo = Default.GetBSLoggingSession(reqObj.customerId, reqObj.userId); var couponUseBll = new CouponUseBLL(loggingSessionInfo); //优惠券使用BLL实例化 var vcmBll = new VipCouponMappingBLL(loggingSessionInfo); //优惠券BLL实例化 var couponTypeBll = new CouponTypeBLL(loggingSessionInfo); //优惠券类型 var mappingBll = new CouponTypeUnitMappingBLL(loggingSessionInfo); //优惠券和门店映射 //var vcmEntity = new VipCouponMappingEntity(); CouponBLL bll = new CouponBLL(loggingSessionInfo); //判断是否有权限核销优惠券 CouponEntity couponEntity = null; if (!string.IsNullOrEmpty(reqObj.Parameters.couponCode)) { CouponEntity[] couponEntityArray = bll.QueryByEntity(new CouponEntity() { CouponCode = reqObj.Parameters.couponCode, CustomerID = reqObj.customerId }, null); if (couponEntityArray.Length != 0) { couponEntity = couponEntityArray[0]; } } else { couponEntity = bll.GetByID(reqObj.Parameters.cuponID); } if (couponEntity != null) { List <IWhereCondition> wheresOrderNo = new List <IWhereCondition>(); wheresOrderNo.Add(new EqualsCondition() { FieldName = "CouponID", Value = couponEntity.CouponID }); var resultCouponVipID = vcmBll.Query(wheresOrderNo.ToArray(), null); var couponTypeInfo = couponTypeBll.GetByID(couponEntity.CouponTypeID); if (couponTypeInfo != null) { if (couponTypeInfo.SuitableForStore == 2)//下面的doorid传的是门店的id,如果等于1所有门店都能用,如果等于3所有分销商都能用 { var couponTypeUnitMapping = mappingBll.QueryByEntity(new CouponTypeUnitMappingEntity() { CouponTypeID = new Guid(couponEntity.CouponTypeID.ToString()), ObjectID = reqObj.Parameters.doorID }, null).FirstOrDefault(); if (couponTypeUnitMapping == null) { respData.ResultCode = "104"; respData.Message = "请到指定门店/分销商使用"; return(respData.ToJSON()); } } if (couponTypeInfo.SuitableForStore == 3)//下面的doorid传的是门店的id,如果等于1所有门店都能用,如果等于3所有分销商都能用 { //doorid必须是获取,分销商如果没数据,就报错。 RetailTraderBLL _RetailTraderBLL = new RetailTraderBLL(loggingSessionInfo); RetailTraderEntity en = _RetailTraderBLL.GetByID(reqObj.Parameters.doorID); if (en == null) { respData.ResultCode = "104"; respData.Message = "请到指定分销商使用"; return(respData.ToJSON()); } } if (couponTypeInfo.SuitableForStore == 1)//下面的doorid传的是门店的id,如果等于1所有门店都能用,如果等于3所有分销商都能用 { //doorid必须是获取,门店如果没有数据,就报错。 TUnitBLL _TUnitBLL = new TUnitBLL(loggingSessionInfo); TUnitEntity en = _TUnitBLL.GetByID(reqObj.Parameters.doorID); if (en == null) { respData.ResultCode = "104"; respData.Message = "请到指定门店使用"; return(respData.ToJSON()); } } int res = bll.BestowCoupon(couponEntity.CouponID, reqObj.Parameters.doorID); if (res > 0) //如果没有影响一行,所以Coupon表里这条记录的status=1了,不能被使用了。 { InoutService server = new InoutService(loggingSessionInfo); var tran = server.GetTran(); using (tran.Connection)//事务 { #region 优惠券使用记录 var couponUseEntity = new CouponUseEntity() { CouponID = couponEntity.CouponID, VipID = resultCouponVipID.Length == 0 ? "" : resultCouponVipID[0].VIPID, UnitID = reqObj.Parameters.doorID, //OrderID = orderEntity.OrderID.ToString(), //CreateBy = reqObj.userId, Comment = "核销电子券", CustomerID = reqObj.customerId }; couponUseBll.Create(couponUseEntity);//生成优惠券使用记录 #endregion //#region 修改优惠券数量 2016-06-03 使用了redis不用在这里更新数量 //couponTypeInfo.IsVoucher = couponTypeInfo.IsVoucher == null ? 1 : couponTypeInfo.IsVoucher + 1; //couponTypeBll.Update(couponTypeInfo, tran); //#endregion respData.ResultCode = "200"; respData.Message = "优惠劵使用成功"; tran.Commit(); } } else { respData.ResultCode = "103"; respData.Message = "优惠劵已使用"; } } } else { respData.ResultCode = "104"; respData.Message = "没有找到对应券。"; return(respData.ToJSON()); } } catch (Exception) { respData.ResultCode = "103"; respData.Message = "数据库操作失败"; } return(respData.ToJSON()); }
protected override EmptyResponseData ProcessRequest(DTO.Base.APIRequest <SetCouponRP> pRequest) { var rd = new EmptyResponseData(); var para = pRequest.Parameters; var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; var couponTypeBLL = new CouponTypeBLL(loggingSessionInfo); var couponBLL = new CouponBLL(loggingSessionInfo); var couponTypeUnitMappingBLL = new CouponTypeUnitMappingBLL(loggingSessionInfo); CouponTypeItemMappingBLL bllCouponTypeItemMapping = new CouponTypeItemMappingBLL(loggingSessionInfo); CouponTypeItemMappingEntity entityCouponTypeItemMapping = null; var redisCouponBLL = new JIT.CPOS.BS.BLL.RedisOperationBLL.Coupon.RedisCouponBLL(); if (couponTypeBLL.ExistsCouponTypeName(para.CouponTypeName, loggingSessionInfo.ClientID) > 0) { throw new APIException(-1, "优惠券名称不可重复!"); } var pTran = couponTypeBLL.GetTran();//事务 using (pTran.Connection) { try { CouponTypeEntity couponTypeEntity = null; //保存券产品表 if (string.IsNullOrEmpty(para.CouponTypeID))//生成优惠券 { couponTypeEntity = new CouponTypeEntity(); couponTypeEntity.CouponTypeName = para.CouponTypeName; couponTypeEntity.CouponTypeDesc = para.CouponTypeDesc; couponTypeEntity.CouponCategory = para.CouponCategory; couponTypeEntity.ParValue = para.ParValue; couponTypeEntity.IsVoucher = 0; couponTypeEntity.UsableRange = para.UsableRange; if (para.BeginTime != DateTime.MinValue) { couponTypeEntity.BeginTime = para.BeginTime; } if (para.EndTime != DateTime.MinValue) { para.EndTime = para.EndTime.AddHours(23).AddMinutes(59).AddSeconds(59); couponTypeEntity.EndTime = para.EndTime; } couponTypeEntity.ServiceLife = para.ServiceLife; couponTypeEntity.ConditionValue = para.ConditionValue; couponTypeEntity.SuitableForStore = para.SuitableForStore; couponTypeEntity.CustomerId = loggingSessionInfo.ClientID; couponTypeEntity.IsNotLimitQty = para.IsNotLimitQty; if (para.IsNotLimitQty != null && para.IsNotLimitQty == 1) { couponTypeEntity.IssuedQty = 1000; } else { couponTypeEntity.IssuedQty = para.IssuedQty; } couponTypeEntity.IsRepeatable = 0; couponTypeEntity.IsMixable = 0; couponTypeEntity.ValidPeriod = 0; couponTypeEntity.CouponTypeID = couponTypeBLL.CreateReturnID(couponTypeEntity, pTran); redisCouponBLL.RedisSetSingleCoupon(new CC_Coupon() { CustomerId = couponTypeEntity.CustomerId, CouponTypeId = couponTypeEntity.CouponTypeID.ToString(), CouponTypeDesc = couponTypeEntity.CouponTypeDesc, CouponTypeName = couponTypeEntity.CouponTypeName, BeginTime = couponTypeEntity.BeginTime.ToString(), EndTime = couponTypeEntity.EndTime.ToString(), ServiceLife = couponTypeEntity.ServiceLife ?? 0, CouponLenth = couponTypeEntity.IssuedQty ?? 0, CouponCategory = couponTypeEntity.CouponCategory }); //保存适用门店 if (para.SuitableForStore == 2) { CouponTypeUnitMappingEntity mapping = null; foreach (var obj in para.ObjectIDList) { mapping = new CouponTypeUnitMappingEntity() { CouponTypeID = couponTypeEntity.CouponTypeID, ObjectID = obj.ObjectID, CustomerID = loggingSessionInfo.ClientID }; couponTypeUnitMappingBLL.Create(mapping, pTran); } } if (!string.IsNullOrEmpty(para.BindType) && para.BindTypeIdList != null) { foreach (var objId in para.BindTypeIdList) { entityCouponTypeItemMapping = new CouponTypeItemMappingEntity() { CouponTypeID = couponTypeEntity.CouponTypeID, BindType = para.BindType, ObjectId = objId.ObjectID }; bllCouponTypeItemMapping.Create(entityCouponTypeItemMapping); } } } else//追加优惠券 { couponTypeEntity = couponTypeBLL.GetByID(para.CouponTypeID); couponTypeEntity.IssuedQty += para.IssuedQty; couponTypeBLL.Update(couponTypeEntity); redisCouponBLL.RedisSetSingleCoupon(new CC_Coupon() { CustomerId = couponTypeEntity.CustomerId, CouponTypeId = couponTypeEntity.CouponTypeID.ToString(), CouponTypeDesc = couponTypeEntity.CouponTypeDesc, CouponTypeName = couponTypeEntity.CouponTypeName, BeginTime = couponTypeEntity.BeginTime.ToString(), EndTime = couponTypeEntity.EndTime.ToString(), ServiceLife = couponTypeEntity.ServiceLife ?? 0, CouponLenth = para.IssuedQty, CouponCategory = couponTypeEntity.CouponCategory }); } pTran.Commit();//提交事物 //批量生成券 //if (couponTypeEntity != null) //{ // Hashtable htCouponInfo = new Hashtable(); // htCouponInfo["CouponTypeID"] = couponTypeEntity.CouponTypeID; // htCouponInfo["CouponName"] = couponTypeEntity.CouponTypeName; // htCouponInfo["CouponDesc"] = couponTypeEntity.CouponTypeDesc; // if (couponTypeEntity.BeginTime != DateTime.MinValue) // htCouponInfo["BeginTime"] = couponTypeEntity.BeginTime; // else // htCouponInfo["BeginTime"] = null; // if (couponTypeEntity.EndTime != DateTime.MinValue) // htCouponInfo["EndTime"] = couponTypeEntity.EndTime; // else // htCouponInfo["EndTime"] = null; // htCouponInfo["IssuedQty"] = para.IssuedQty; // couponBLL.GenerateCoupon(htCouponInfo); //} } catch (Exception ex) { pTran.Rollback(); throw new APIException(ex.Message); } } return(rd); }