Ejemplo n.º 1
0
        /// <summary>
        /// 绑定
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public ExecuteResult <CardInfoResponse> Binding(BindingRequest request)
        {
            //1.当前用户是否绑定过该卡
            //2.该卡是否被绑定过
            //3.验证是否可以绑定
            // 3.1 集团验证
            //4.入库
            //5.查询积点

            if (request == null || request.AuthUser == null)
            {
                return(new ExecuteResult <CardInfoResponse>(null)
                {
                    StatusCode = StatusCode.ClientError, Message = "参数错误"
                });
            }

            var entity = _cardRepository.GetItemByCard(request.CardNo, CardType.YintaiMemberCard, DataStatus.Normal);

            if (entity != null)
            {
                if (entity.User_Id != request.AuthUser.Id)
                {
                    return(new ExecuteResult <CardInfoResponse>(null)
                    {
                        StatusCode = StatusCode.ClientError, Message = "该会员卡已经被绑定"
                    });
                }

                return(new ExecuteResult <CardInfoResponse>(null)
                {
                    StatusCode = StatusCode.ClientError, Message = "您已经绑定过该会员卡"
                });
            }

            var result = _groupCardService.GetInfo(new GroupCardInfoRequest
            {
                CardNo = request.CardNo,
                Passwd = request.Password
            });

            if (result.RetType == GroupCardRetType.Ok)
            {
                using (var ts = new TransactionScope())
                {
                    //入库
                    var e = _cardRepository.Insert(new CardEntity
                    {
                        CardNo      = request.CardNo,
                        CardProfile = JsonExtension.ToJson_(new CardProfile
                        {
                            Lvl  = result.Lvl,
                            Type = result.Type
                        }),
                        CreatedDate = DateTime.Now,
                        CreatedUser = request.AuthUser.Id,
                        Status      = (int)DataStatus.Normal,
                        Type        = (int)CardType.YintaiMemberCard,
                        UpdatedDate = DateTime.Now,
                        UpdatedUser = request.AuthUser.Id,
                        User_Id     = request.AuthUser.Id
                    });
                    //成功后
                    _userService.SetCardBinder(e.User_Id, true);

                    ts.Complete();
                }

                return(GetInfo(new GetCardInfoRequest
                {
                    AuthUser = request.AuthUser,
                    CardNo = request.CardNo,
                    Client_Version = request.Client_Version,
                    Method = request.Method,
                    Token = request.Token
                }, "恭喜您绑定会员卡成功"));
            }

            return(new ExecuteResult <CardInfoResponse>(null)
            {
                StatusCode = StatusCode.ClientError, Message = "会员卡号或密码错"
            });
        }