Exemplo n.º 1
0
        private OpResult UpdateMemberIntegral(string memberId, decimal integral)
        {
            var member = MembersService.Find(o => o.MemberId == memberId);

            if (member != null)
            {
                member.UsableIntegral = member.UsableIntegral + integral;
                return(MembersService.Update(member));
            }
            return(OpResult.Fail("该会员不存在!"));
        }
Exemplo n.º 2
0
        private OpResult VeriMemberIntegral(string memberId, decimal useIntegral)
        {
            var member = MembersService.Find(o => o.MemberId == memberId);

            if (member == null)
            {
                return(OpResult.Fail("该会员不存在!"));
            }
            if (member.UsableIntegral < useIntegral)
            {
                return(OpResult.Fail("会员积分不足!"));
            }
            return(OpResult.Success());
        }
Exemplo n.º 3
0
        public object GetMemberIntegralByCardSN([FromBody] MemberIntegralRequest requestParams)
        {
            if (string.IsNullOrEmpty(requestParams.CardSN))
            {
                throw new MessageException("参数信息不完整!");
            }
            var memberCardInfo = MembershipCardService.Find(o => o.CardSN == requestParams.CardSN && o.CompanyId == requestParams.CID);

            if (memberCardInfo == null)
            {
                throw new MessageException("会员卡不存在!");
            }
            if (memberCardInfo.State != 1)
            {
                var err = string.Empty;
                switch (memberCardInfo.State)
                {
                case 0:
                    err = "未激活";
                    break;

                case 2:
                    err = "已挂失";
                    break;

                case 3:
                    err = "已作废";
                    break;

                case 4:
                    err = "已退卡";
                    break;

                default:
                    err = "状态异常";
                    break;
                }
                throw new MessageException("该会员卡" + err);
            }
            var member = MembersService.Find(o => o.MemberId == memberCardInfo.MemberId);

            return(new { member.UsableIntegral, memberCardInfo.CardSN, memberCardInfo.MemberId });
        }
Exemplo n.º 4
0
        public StoredValueCardRechargeResult StoredValueCardRecharge(int type, string cardNo, decimal amount)
        {
            var info = Pharos.Logic.ApiData.Pos.User.Salesclerk.GetMachineInfo(StoreId, MachineSN, CompanyId, DeviceSn);

            if (info == null)
            {
                throw new PosException("无法获取操作员信息!");
            }
            var cardState = "正常";

            if (amount > 0)
            {
                //判断最低充值
                var checkData = (from a in MembershipCardService.CurrentRepository.Entities
                                 where a.CardSN == cardNo && a.CompanyId == CompanyId
                                 join b in CardInfoService.CurrentRepository.Entities
                                 on a.CardTypeId equals b.CardTypeId
                                 select new
                {
                    a,
                    b.MinRecharge,
                    b.CardType
                }).FirstOrDefault();
                if (checkData == null)
                {
                    throw new PosException("无法找到对应卡类型信息!");
                }
                if (checkData.a.State != 1)
                {
                    switch (checkData.a.State)
                    {
                    case 0:
                        cardState = "未激活";
                        break;

                    case 2:
                        cardState = "已挂失";
                        break;

                    case 3:
                        cardState = "已作废";
                        break;

                    case 4:
                        cardState = "已退卡";
                        break;
                    }
                    throw new PosException(string.Format("充值失败,该卡{0}!", cardState));
                }
                if (!checkData.CardType.Contains("1"))
                {
                    throw new PosException(string.Format("非储值卡不允许{0}!", type == 1 ? "充值" : "反结算"));
                }
                if (checkData.MinRecharge > amount && type == 1)
                {
                    throw new PosException("充值失败,该卡最低充值 " + checkData.MinRecharge.ToString("N2") + "元!");
                }
            }
            var     beforeAmount = 0m;
            Members member       = null;
            //更新会员卡金额、积分信息
            var membershipCard = MembershipCardService.CurrentRepository.Entities.Where(o => o.CardSN == cardNo && o.CompanyId == CompanyId).FirstOrDefault();

            if (membershipCard != null)
            {
                member = MembersService.Find(o => o.CompanyId == CompanyId && o.MemberId == membershipCard.MemberId);
                switch (membershipCard.State)
                {
                case 0:
                    cardState = "未激活";
                    break;

                case 2:
                    cardState = "已挂失";
                    break;

                case 3:
                    cardState = "已作废";
                    break;

                case 4:
                    cardState = "已退卡";
                    break;
                }
                beforeAmount = membershipCard.Balance;
                if (amount > 0 && type == 1)
                {
                    membershipCard.ReChargeTotal += amount;
                    membershipCard.Balance       += amount;
                }
                else if (amount > 0 && type == 2)
                {
                    if (membershipCard.Balance < amount)
                    {
                        throw new PosException("反结算失败,卡内余额小于反结算金额!");
                    }
                    membershipCard.ReChargeTotal -= amount;
                    membershipCard.Balance       -= amount;
                }
            }
            else
            {
                throw new PosException("未能找到储值卡信息!");
            }

            var result = new StoredValueCardRechargeResult()
            {
                Amount = amount, StateInfo = cardState, balance = membershipCard.Balance, CardNo = cardNo, Name = member == null ? "" : member.RealName
            };

            if (amount > 0)
            {
                var entity = new MemberRecharge()
                {
                    CompanyId      = CompanyId,
                    CreateDT       = DateTime.Now,
                    CreateUID      = info.CashierUid,
                    RechargeSN     = DateTime.Now.ToString("yyyyMMddHHmmss"),
                    BeforeAmount   = beforeAmount,
                    AfterAmount    = type == 1 ? beforeAmount + amount : beforeAmount - amount,
                    CardId         = cardNo,
                    Type           = (short)type,
                    RechargeAmount = amount,
                    MachineSN      = MachineSN,
                    StoreId        = StoreId,
                    IsTest         = IsSalesclerkTest,
                    Memo           = type == 1 ? "门店POS收银台充值!" : "门店POS收银台卡反结算!",
                    Number         = 1
                };
                MemberRechargeService.Add(entity);
                if (type == 1)
                {
                    RedisManager.Publish("RechargeCompleted", new RechargeCompletedEvent()
                    {
                        CompanyId      = CompanyId,
                        MemberId       = membershipCard.MemberId,
                        ReceiveAmount  = amount,
                        SourceRecordId = entity.Id.ToString(),
                        OperatorUid    = info.CashierUid
                    });
                }
            }
            return(result);
        }