You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

353 lines
12 KiB
C#

using DevComponents.DotNetBar.Controls;
using DevComponents.DotNetBar.SuperGrid;
using POS.Language.Language;
using POSV.Bean;
using POSV.Card;
using POSV.Utils;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Windows.Forms;
namespace POSV.Member
{
public partial class CardMessageForm : BusinessForm
{
public string cardNo = null;
public CardMessageForm()
{
InitializeComponent();
this.controlBox.Text = LangProxy.ToLang( "会员卡信息查询");
this.controlBox.ShowApplicationVersion = false;
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (this.DesignMode) return;
this.Focus();
this.txtInput.Focus();
this.txtInput.SelectAll();
this.ActiveControl = this.txtInput;
}
private void OnCloseTouchClick(object sender, EventArgs e)
{
//先关闭父窗体
if (this.Owner != null)
{
this.Owner.Close();
}
//再关闭当前窗体
this.Close();
}
private void OnControlBoxKeyboardClick(object sender, EventArgs e)
{
try
{
KeyboardType keyboardType = KeyboardType.;
Type type = this.ActiveControl.GetType();
PropertyInfo pinfo = type.GetProperty("Keyboard");
if (pinfo != null)
{
keyboardType = (KeyboardType)pinfo.GetValue(this.ActiveControl, null);
}
var keyboard = Application.OpenForms["VirtualKeyboard"];
if (keyboard == null)
{
keyboard = new VirtualKeyboard(keyboardType);
}
((VirtualKeyboard)keyboard).ShowVirtualKeyboard(this, keyboardType);
}
catch (Exception ex)
{
LOGGER.Error(ex, "打开屏幕键盘异常");
}
}
private void OnFinishedClick(object sender, EventArgs e)
{
SearchMessage();
}
public void SearchMessage() {
var isVerify = InputVerify();
if (isVerify)
{
var voucherNo = this.txtInput.Text;
//智能识别刷卡方式
var way = CardUtils.JudgeCardWay(Global.Instance.Worker.TenantId, voucherNo);
if (way == MemberCardNoType.)
{
this.ShowMessage(this.lblInfo,LangProxy.ToLang("无法识别的卡号,请确认"), true);
return;
}
switch (way)
{
case MemberCardNoType.:
{
CardInfoMessage("mobile");
}
break;
case MemberCardNoType.:
{
CardInfoMessage("scanCode");
}
break;
case MemberCardNoType.:
{
CardInfoMessage("cardNo");
}
break;
case MemberCardNoType.:
{
CardInfoMessage("surfaceNo");
}
break;
}
}
}
/// <summary>
/// 输入是否验证通过
/// </summary>
private bool InputVerify()
{
if (string.IsNullOrEmpty(this.txtInput.Text.Trim()))
{
ShowMessage(this.lblInfo, LangProxy.ToLang("请输入卡号信息"), false);
return false;
}
return true;
}
/// <summary>
/// 会员卡信息
/// </summary>
private bool CardInfoMessage(string property)
{
bool result = false;
try
{
var request = new MemberInfoQueryRequest();
request.Property = property;
request.Keyword = this.txtInput.Text.Trim();
request.ShopNo = Global.Instance.Authc.StoreNo;
request.PosNo = Global.Instance.Authc.PosNo;
request.WorkerNo = Global.Instance.Worker.No;
var response = CardUtils.MemberInfoQuery(request);
//成功
if (response.Item1)
{
result = true;
ShowMessage(this.lblInfo, response.Item2, false);
MemberInfoQueryResponse memberInfoQueryResponse = response.Item3;
lblMemerName.Text = memberInfoQueryResponse.Name;
lblMemeberMobile.Text = memberInfoQueryResponse.Mobile;
lblLinkPhone.Text = memberInfoQueryResponse.LinkPhone;
switch (memberInfoQueryResponse.Sex) {
case 0:
lblSex.Text = LangProxy.ToLang("女");
break;
case 1:
lblSex.Text = LangProxy.ToLang("男");
break;
default:
lblSex.Text = LangProxy.ToLang("保密");
break;
}
lblBirthday.Text = memberInfoQueryResponse.Birthday;
lblDescription.Text = memberInfoQueryResponse.Description;
List<MemberCard> list = memberInfoQueryResponse.CardList;
foreach (MemberCard memberCard in list) {
switch (memberCard.Status)
{
case 1:
memberCard.CardStatus = LangProxy.ToLang("正常");
break;
case 2:
memberCard.CardStatus = LangProxy.ToLang("预售");
break;
case 3:
memberCard.CardStatus = LangProxy.ToLang("挂失");
break;
case 4:
memberCard.CardStatus = LangProxy.ToLang("冻结");
break;
case 5:
memberCard.CardStatus = LangProxy.ToLang("销户");
break;
default:
memberCard.CardStatus = LangProxy.ToLang("未知");
break;
}
}
cardListTable.PrimaryGrid.DataSource = list;
//卡券
var couponRes = CardUtils.QueryElecCoupon(property, this.txtInput.Text.Trim(), "0", 1);
if (couponRes.Item1)
{
//var couponList = couponRes.Item3.Select(x => new { couponType = CardUtils.MemberCouponTypeTrans2Name(x.CardType), title = x.Title, discount = CardUtils.MemberCouponDiscountDesc(x), validDate = CardUtils.MemberCouponValidDateDesc(x.BeginTimestamp, x.EndTimestamp) }).ToArray();
//couponPanel.PrimaryGrid.DataSource = couponList;
}
else
{
couponPanel.PrimaryGrid.DataSource = null;
}
}
else
{
result = false;
lblMemerName.Text = "";
lblMemeberMobile.Text = "";
lblLinkPhone.Text = "";
lblSex.Text = "";
lblBirthday.Text = "";
lblDescription.Text = "";
List<MemberCard> list = new List<MemberCard>();
cardListTable.PrimaryGrid.DataSource = list;
couponPanel.PrimaryGrid.DataSource = null;
ShowMessage(this.lblInfo, response.Item2, true);
}
}
catch (Exception ex)
{
result = false;
ShowMessage(this.lblInfo, LangProxy.ToLang("会员卡信息查询异常"), true);
LOGGER.Error(ex, "会员卡信息查询异常");
}
return result;
}
private void btn_exit_Click(object sender, EventArgs e)
{
//先关闭父窗体
if (this.Owner != null)
{
this.Owner.Close();
}
//再关闭当前窗体
this.Close();
}
private void OnReadCardClick(object sender, EventArgs e)
{
var result = CardOperateUtils.Instance.ReadCardNo();
if (result.Item1)
{
this.txtInput.Text = result.Item2;
//读卡成功,模拟回车事件
InputSimulatorUtils.SendKey(KeyCodes.Map["return"]);
}
else
{
result = CardOperateUtilsOther.Instance.ReadCardNo();
if (result.Item1)
{
this.txtInput.Text = result.Item2;
//读卡成功,模拟回车事件
InputSimulatorUtils.SendKey(KeyCodes.Map["return"]);
}
else
{
this.ShowMessage(lblInfo, result.Item2);
}
}
}
private void OnTicketRowActivated(object sender, DevComponents.DotNetBar.SuperGrid.GridRowActivatedEventArgs e)
{
//卡号
cardNo = null;
GridPanel grid = e.GridPanel;
if (e.NewActiveRow != null)
{
//先清除其他表数据
GridRow row = e.NewActiveRow as GridRow;
grid.SetSelected(e.NewActiveRow, false);
grid.SetActiveRow(e.NewActiveRow);
cardNo = row.Cells["cardNo"].Value.ToString();
}
}
private void BtnMiss(object sender, EventArgs e)
{
if (cardNo == null)
{
this.ShowToastNotify(this, LangProxy.ToLang("请选择要操作的卡号"));
return;
}
//打开提示界面
var form = new CardMissForm(cardNo);
form.OnResultClick += Form_OnResultClick;
form.ShowDialog();
}
private void Form_OnResultClick(object sender, NotifyEventArgs e)
{
this.ShowToastNotify(this, LangProxy.ToLang("操作成功"));
SearchMessage();
}
/// <summary>
/// 绑定微信会员
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnBindWmember(object sender, EventArgs e)
{
try
{
var request = new WeixinBindCardRequest();
request.CardNo = cardNo;
request.ShopNo = Global.Instance.Authc.StoreNo;
request.PosNo = Global.Instance.Authc.PosNo;
request.WorkerNo = Global.Instance.Worker.No;
request.SourceSign = "pos";
var response = CardUtils.WeixinBindCard(request);
//成功
if (response.Item1)
{
ShowMessage(this.lblInfo, LangProxy.ToLang(response.Item2), false);
//打开二维码生成界面
var form = new WeixinBindCardForm(response.Item3.Data.BindUrl);
form.ShowDialog();
}
else
{
ShowMessage(this.lblInfo, LangProxy.ToLang(response.Item2), true);
}
}
catch (Exception ex)
{
ShowMessage(this.lblInfo, LangProxy.ToLang("卡密码修改异常"), true);
LOGGER.Error(ex, "卡密码修改异常");
}
}
}
}