/// <summary>
 /// 获取会员卡信息 0:数据库操作失败, 1:成功, 2:会员卡号或者密码错误
 /// </summary>
 public int GetVIPCard(string cardNo, string password, out VIPCard card)
 {
     int result = 0;
     try
     {
         _daoManager.OpenConnection();
         //加密的密码
         string str = string.Empty;
         string saltedPassword = _vipCardDao.GetCardPassword(cardNo);
         if (!string.IsNullOrEmpty(saltedPassword))
         {
             int index = saltedPassword.IndexOf(Delim);
             string salt = saltedPassword.Substring(0, index);
             str = salt + Delim + PasswordCryptographer.SaltPassword(password, salt);
         }
         card = _vipCardDao.GetVIPCard(cardNo, str);
         result = card == null ? 2 : 1;
     }
     catch (Exception exception)
     {
         card = null;
         LogHelper.GetInstance().Error(string.Format("[GetVIPCard]参数:cardNo_{0}", cardNo), exception);
     }
     finally
     {
         _daoManager.CloseConnection();
     }
     return result;
 }
 public VIPCard GetVIPCard(string cardNo, string password)
 {
     VIPCard card = new VIPCard();
     card.CardNo = cardNo;
     card.Password = password;
     return ExecuteQueryForObject("GetVIPCardInfo", card) as VIPCard;
 }
        /// <summary>
        /// 获取会员卡信息 0:数据库操作失败, 1:成功, 2:会员卡号或者密码错误
        /// </summary>
        public int SearchVIPCard(string cardNo, string password, out VIPCard card)
        {
            const int cByte = ParamFieldLength.PACKAGE_HEAD + ParamFieldLength.CARD_NO + ParamFieldLength.CARD_PASSWORD;
            byte[] sendByte = new byte[cByte];
            int byteOffset = 0;
            Array.Copy(BitConverter.GetBytes((int)Command.ID_GET_VIPCARD), sendByte, BasicTypeLength.INT32);
            byteOffset = BasicTypeLength.INT32;
            Array.Copy(BitConverter.GetBytes(cByte), 0, sendByte, byteOffset, BasicTypeLength.INT32);
            byteOffset += BasicTypeLength.INT32;

            byte[] tempByte = null;
            //cardNo
            tempByte = Encoding.UTF8.GetBytes(cardNo);
            Array.Copy(tempByte, 0, sendByte, byteOffset, tempByte.Length);
            byteOffset += ParamFieldLength.CARD_NO;
            //password
            tempByte = Encoding.UTF8.GetBytes(password);
            Array.Copy(tempByte, 0, sendByte, byteOffset, tempByte.Length);
            byteOffset += ParamFieldLength.CARD_PASSWORD;

            int result = 0;
            card = null;
            using (SocketClient socket = new SocketClient(ConstantValuePool.BizSettingConfig.IPAddress, ConstantValuePool.BizSettingConfig.Port))
            {
                Byte[] receiveData = null;
                Int32 operCode = socket.SendReceive(sendByte, out receiveData);
                if (operCode == (int)RET_VALUE.SUCCEEDED)
                {
                    string strReceive = Encoding.UTF8.GetString(receiveData, ParamFieldLength.PACKAGE_HEAD, receiveData.Length - ParamFieldLength.PACKAGE_HEAD);
                    card = JsonConvert.DeserializeObject<VIPCard>(strReceive);
                    result = 1;
                }
                else if (operCode == (int)RET_VALUE.ERROR_AUTHENTICATION)
                {
                    result = 2;
                }
                else
                {
                    result = 0;
                }
                socket.Close();
            }
            return result;
        }
 private void txtVIPCardNo_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.KeyValue == 13)
     {
         _card = null;
         Feature.FormNumericKeypad keyForm = new Feature.FormNumericKeypad(false);
         keyForm.DisplayText = "请输入密码";
         keyForm.IsPassword = true;
         keyForm.ShowDialog();
         if (!string.IsNullOrEmpty(keyForm.KeypadValue))
         {
             string cardNo = txtVIPCardNo.Text.Trim();
             string cardPassword = keyForm.KeypadValue;
             VIPCard card;
             int result = VIPCardService.GetInstance().SearchVIPCard(cardNo, cardPassword, out card);
             if (card != null && result == 1)
             {
                 if (card.Status == 0)
                 {
                     MessageBox.Show("该卡未开通,请先开卡!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                     return;
                 }
                 txtName.Text = card.Name;
                 txtBalance.Text = card.Balance.ToString("f2");
                 txtIntegral.Text = card.Integral.ToString();
                 txtDiscount.Text = ((1M - card.DiscountRate) * 10M).ToString("f2") + "折";
                 txtTelephone.Text = card.Telephone;
                 txtAddress.Text = card.Address;
                 if (card.Status == 1)
                 {
                     txtCardStatus.Text = "启用";
                 }
                 if (card.Status == 2)
                 {
                     txtCardStatus.Text = "锁卡";
                 }
                 if (card.Status == 3)
                 {
                     txtCardStatus.Text = "挂失";
                 }
                 if (card.Status == 4)
                 {
                     txtCardStatus.Text = "作废";
                 }
                 txtOpenCardTime.Text = card.OpenCardTime.ToString("yyyy-MM-dd HH:mm:ss");
                 if (card.LastConsumeTime != null)
                 {
                     txtLastConsumeTime.Text = Convert.ToDateTime(card.LastConsumeTime).ToString("yyyy-MM-dd HH:mm:ss");
                 }
                 _cardNo = cardNo;
                 _cardPassword = cardPassword;
                 _card = card;
                 if (card.Balance == 0M)
                 {
                     btnConsume.Enabled = false;
                     btnConsume.BackColor = ConstantValuePool.DisabledColor;
                 }
                 else
                 {
                     btnConsume.Enabled = true;
                     btnConsume.BackColor = btnConsume.DisplayColor;
                 }
             }
             else if (result == 2)
             {
                 txtVIPCardNo.Text = string.Empty;
                 txtName.Text = string.Empty;
                 txtBalance.Text = string.Empty;
                 txtIntegral.Text = string.Empty;
                 txtDiscount.Text = string.Empty;
                 txtTelephone.Text = string.Empty;
                 txtAddress.Text = string.Empty;
                 txtCardStatus.Text = string.Empty;
                 txtOpenCardTime.Text = string.Empty;
                 txtLastConsumeTime.Text = string.Empty;
                 MessageBox.Show("您输入的会员卡号或者密码错误!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
             }
             else
             {
                 txtVIPCardNo.Text = string.Empty;
                 txtName.Text = string.Empty;
                 txtBalance.Text = string.Empty;
                 txtIntegral.Text = string.Empty;
                 txtDiscount.Text = string.Empty;
                 txtTelephone.Text = string.Empty;
                 txtAddress.Text = string.Empty;
                 txtCardStatus.Text = string.Empty;
                 txtOpenCardTime.Text = string.Empty;
                 txtLastConsumeTime.Text = string.Empty;
                 MessageBox.Show("服务器出现错误,请重新操作!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
             }
         }
     }
 }