Пример #1
0
        /// <summary>
        /// 创建优惠卷
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public ExecuteResult <PromotionInfoResponse> CreateCoupon(PromotionCouponCreateRequest request)
        {
            var str = _promotionService.Verification(request);

            if (!String.IsNullOrEmpty(str))
            {
                return(new ExecuteResult <PromotionInfoResponse>(null)
                {
                    StatusCode = StatusCode.ClientError, Message = str
                });
            }

            ExecuteResult <CouponCodeResponse> coupon = null;

            coupon = _couponDataService.CreateCoupon(new CouponCouponRequest
            {
                AuthUid        = request.AuthUid,
                SourceId       = request.PromotionId,
                SourceType     = (int)SourceType.Promotion,
                Token          = request.Token,
                AuthUser       = request.AuthUser,
                Method         = request.Method,
                Client_Version = request.Client_Version
            });

            if (!coupon.IsSuccess)
            {
                return(new ExecuteResult <PromotionInfoResponse>(null)
                {
                    Message = coupon.Message,
                    StatusCode = coupon.StatusCode
                });
            }

            var promotionEntity = _promotionRepository.GetItem(request.PromotionId);

            promotionEntity = _promotionRepository.SetCount(PromotionCountType.InvolvedCount, promotionEntity.Id, 1);

            var re = MappingManager.PromotionResponseMapping(promotionEntity);

            re.CouponCodeResponse = coupon.Data;

            re = IsR(re, request.AuthUser, request.AuthUser.Id);

            return(new ExecuteResult <PromotionInfoResponse> {
                Data = re
            });
        }
Пример #2
0
        public ExecuteResult <ProductInfoResponse> CreateCoupon(CreateCouponProductRequest request)
        {
            if (request == null)
            {
                return(new ExecuteResult <ProductInfoResponse>(null)
                {
                    StatusCode = StatusCode.ClientError, Message = "参数错误"
                });
            }
            var product = _productRepository.GetItem(request.ProductId);

            if (product == null)
            {
                return(new ExecuteResult <ProductInfoResponse>(null)
                {
                    StatusCode = StatusCode.ClientError, Message = "参数错误"
                });
            }

            //判断如果是v1.0版本 可以允许创建优惠券。

            ExecuteResult <CouponCodeResponse> coupon;

            if (request.Client_Version != "1.0")
            {
                if (request.PromotionId == null || request.PromotionId.Value < 1)
                {
                    //获取商品关联的活动
                    var promotionEntity = _promotionService.GetFristNormalForProductId(product.Id);
                    if (promotionEntity == null)
                    {
                        return(new ExecuteResult <ProductInfoResponse>(null)
                        {
                            StatusCode = StatusCode.ClientError, Message = "当前商品没有参加活动"
                        });
                    }

                    request.PromotionId = promotionEntity.Id;
                }
                else
                {
                    //判断
                    if (!_promotionService.Exists(request.PromotionId ?? 0, request.ProductId))
                    {
                        return(new ExecuteResult <ProductInfoResponse>(null)
                        {
                            StatusCode = StatusCode.ClientError, Message = "当前商品没有参加该活动"
                        });
                    }
                }

                var pr = _promotionDataService.CreateCoupon(new PromotionCouponCreateRequest
                {
                    AuthUid        = request.AuthUid,
                    AuthUser       = request.AuthUser,
                    Client_Version = request.Client_Version,
                    IsPass         = request.IsPass,
                    Method         = request.Method,
                    PromotionId    = request.PromotionId ?? 0,
                    Token          = request.Token
                });

                if (pr.IsSuccess && pr.Data != null && pr.Data.CouponCodeResponse != null)
                {
                    coupon = new ExecuteResult <CouponCodeResponse>(pr.Data.CouponCodeResponse);
                }
                else
                {
                    coupon = new ExecuteResult <CouponCodeResponse>(null)
                    {
                        Message = pr.Message, StatusCode = pr.StatusCode
                    };
                }
            }
            else
            {
                coupon = _couponDataService.CreateCoupon(new CouponCouponRequest
                {
                    AuthUid        = request.AuthUid,
                    SourceId       = product.Id,
                    SourceType     = (int)SourceType.Product,
                    Token          = request.Token,
                    AuthUser       = request.AuthUser,
                    Method         = request.Method,
                    Client_Version = request.Client_Version
                });
            }

            if (!coupon.IsSuccess)
            {
                return(new ExecuteResult <ProductInfoResponse>(null)
                {
                    Message = coupon.Message, StatusCode = coupon.StatusCode
                });
            }

            //+1
            product = _productRepository.SetCount(ProductCountType.InvolvedCount, product.Id, 1);

            var response = MappingManager.ProductInfoResponseMapping(product);

            response.CouponCodeResponse = coupon.Data;

            if (request.AuthUser != null)
            {
                response = IsR(response, request.AuthUser, product.Id);
            }

            return(new ExecuteResult <ProductInfoResponse>(response));
        }