Kaynağa Gözat

完成了交易记录功能

zhangyang 5 yıl önce
ebeveyn
işleme
2868ba3581

+ 13 - 0
bin/Win32/Debug/zhipuzi_pay_plugin/skin/jiaoyijilu_item.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<Window> 
+	<ListContainerElement name="jiaoyijilu_item" height="40"> 
+		<HorizontalLayout> 
+			<Label name="jiaoyijilu_item_time" width="180" align="center"/> 
+			<Label name="jiaoyijilu_item_value" width="120" align="center"/> 
+			<Label name="jiaoyijilu_item_paytype" width="120" align="center"/>
+			<Label name="jiaoyijilu_item_status" width="120" align="center"/> 
+			<Label name="jiaoyijilu_item_orderno" align="center"/> 
+		</HorizontalLayout> 
+	</ListContainerElement> 
+</Window>

+ 37 - 0
bin/Win32/Debug/zhipuzi_pay_plugin/skin/jiaoyijilu_wnd.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Window size="800,600" caption="0,0,0,44" roundcorner="4,4">
+	<Font id="0" name="微软雅黑" size="16"/>
+	<Font id="1" name="微软雅黑" size="40"/>
+	<Font id="2" name="微软雅黑" size="18"/>
+	<Font id="3" name="微软雅黑" size="32"/>
+	<VerticalLayout bkimage="shoukuan_bkg.png">
+		<HorizontalLayout name="jiaoyijilu_title_bkg" height="44" bkcolor="0xFF3CB371">
+			<Label name="jiaoyijilu_title" text="交易记录" height="44" align="center" valign="center" padding="0,0,0,0" textcolor="#FFFFFFFF" font="2"/>
+			<Button name="jiaoyijilu_closebtn" padding="0,13,15,0" width="16" height="16" tooltip="关闭" normalimage="file='close_normal.png'" hotimage="file='close_hover.png'" pushedimage="file='close_normal.png'"/>
+		</HorizontalLayout>
+		<HorizontalLayout height="60">
+			<Datetime name="jiaoyijilu_time_start" width="180" bordersize="1" bordercolor="#FF000000" height="36" padding="10,10,0,0"></Datetime>
+			<Label text="至" width="30" padding="10,0,0,0"></Label>
+			<Datetime name="jiaoyijilu_time_end" width="180" bordersize="1" bordercolor="#FF000000" height="36" padding="10,10,0,0"></Datetime>
+			<Button name="jiaoyijilu_query" width="80" height="38" padding="30,10,0,0" text="查询" textcolor="#FFFFFFFF" normalimage="file='Btn_Red.png' corner='5,5,5,5'" hotimage="file='Btn_Red_Hover.png' corner='5,5,5,5'" pushedimage="file='Btn_Red_Click.png' corner='5,5,5,5'"/>
+			<Control></Control>
+		</HorizontalLayout>
+		<VerticalLayout>
+			<HorizontalLayout>
+				<List name="jiaoyijilu_list" itemlinecolor="#FF000000" vscroll="true" >
+					<ListHeader bkcolor="#FFF3F3F5" height="36"/>
+					<ListHeaderItem text="支付时间" enabled="false" dragable="false" width="180" />
+					<ListHeaderItem text="金额" enabled="false" dragable="false" width="120" />
+					<ListHeaderItem text="支付方式" enabled="false" dragable="false" width="120" />
+					<ListHeaderItem text="状态" enabled="false" dragable="false" width="120" />
+					<ListHeaderItem text="订单号" enabled="false" dragable="false" />
+				</List>  
+			</HorizontalLayout>
+		</VerticalLayout>
+		<HorizontalLayout height="60">
+			<Button name="jiaoyijilu_list_last" width="70" height="36" padding="20,4,0,0" text="上一页" normalimage="file='Btn_White.png' corner='5,5,5,5'" hotimage="file='Btn_White_Hover.png' corner='5,5,5,5'" pushedimage="file='Btn_White_Click.png' corner='5,5,5,5'" />
+			<Button name="jiaoyijilu_list_next" width="70" height="36" padding="20,4,0,0" text="下一页" normalimage="file='Btn_White.png' corner='5,5,5,5'" hotimage="file='Btn_White_Hover.png' corner='5,5,5,5'" pushedimage="file='Btn_White_Click.png' corner='5,5,5,5'" />
+			<Label name="jiaoyijilu_list_page" text="第1页" width="150" height="36" padding="20,4,0,0" />
+		</HorizontalLayout>
+	</VerticalLayout>
+</Window>

+ 0 - 2
zhipuzi_pay_plugin/network/CZhipuziHttpClient.cpp

@@ -139,7 +139,6 @@ bool CZhipuziHttpClient::Request(std::string url, std::map<string, string> param
     params["nonce"] = nonce;
     params["timestamp"] = timestamp;
     params["url"] = m_client.m_yewu_url + url;
-	params["machinecode"] = "a68ceb1719803c2b";
 
     //计算签名
     std::string postString;
@@ -210,7 +209,6 @@ bool CZhipuziHttpClient::RequestNew(std::string url, std::map<string, string> pa
 	std::string open_secret = "kMDNjjid91ydo#!9DH1";
 
 	//先添加默认参数,用于计算签名
-	params["machinecode"] = "a68ceb1719803c2b";
 	params["username"] = CLewaimaiString::UrlEncode(m_client.m_username);
 	params["password"] = md5(m_client.m_password);
 	params["lwm_appid"] = lwm_appid;

+ 55 - 0
zhipuzi_pay_plugin/tool/CLewaimaiTime.cpp

@@ -51,6 +51,18 @@ string CLewaimaiTime::DatetimeToString(time_t time)
 	sprintf(dayStr, "%d", day);                // 日。
 	sprintf(hourStr, "%d", hour);              // 时。
 	sprintf(minuteStr, "%d", minute);          // 分。
+	if (monthStr[1] == '\0')                  // 如果月份为一位,如5,则需要转换字符串为两位,如05。
+	{
+		monthStr[2] = '\0';
+		monthStr[1] = monthStr[0];
+		monthStr[0] = '0';
+	}
+	if (dayStr[1] == '\0')                  // 如果天数为一位,如5,则需要转换字符串为两位,如05。
+	{
+		dayStr[2] = '\0';
+		dayStr[1] = dayStr[0];
+		dayStr[0] = '0';
+	}
 	if (hourStr[1] == '\0')                  // 如果小时为一位,如5,则需要转换字符串为两位,如05。
 	{
 		hourStr[2] = '\0';
@@ -99,6 +111,18 @@ string CLewaimaiTime::DatetimeToDateString(time_t time)
 	sprintf(dayStr, "%d", day);                // 日。
 	sprintf(hourStr, "%d", hour);              // 时。
 	sprintf(minuteStr, "%d", minute);          // 分。
+	if (monthStr[1] == '\0')                  // 如果月份为一位,如5,则需要转换字符串为两位,如05。
+	{
+		monthStr[2] = '\0';
+		monthStr[1] = monthStr[0];
+		monthStr[0] = '0';
+	}
+	if (dayStr[1] == '\0')                  // 如果天数为一位,如5,则需要转换字符串为两位,如05。
+	{
+		dayStr[2] = '\0';
+		dayStr[1] = dayStr[0];
+		dayStr[0] = '0';
+	}
 	if (hourStr[1] == '\0')                  // 如果小时为一位,如5,则需要转换字符串为两位,如05。
 	{
 		hourStr[2] = '\0';
@@ -139,6 +163,37 @@ string CLewaimaiTime::DatetimeToHourString(time_t time)
 	return to_string(hour);
 }
 
+SYSTEMTIME CLewaimaiTime::Time_tToSystemTime(time_t t)
+{
+	tm temptm = *localtime(&t);
+	SYSTEMTIME st = { 1900 + temptm.tm_year,
+					  1 + temptm.tm_mon,
+					  temptm.tm_wday,
+					  temptm.tm_mday,
+					  temptm.tm_hour,
+					  temptm.tm_min,
+					  temptm.tm_sec,
+					  0
+	};
+	return st;
+}
+
+time_t CLewaimaiTime::SystemTimeToTime_t(const SYSTEMTIME& st)
+{
+	tm temptm = { st.wSecond,
+				  st.wMinute,
+				  st.wHour,
+				  st.wDay,
+				  st.wMonth - 1,
+				  st.wYear - 1900,
+				  st.wDayOfWeek,
+				  0,
+				  0
+	};
+
+	return mktime(&temptm);
+}
+
 #ifdef _WIN32
 std::chrono::steady_clock::time_point CLewaimaiTime::getTimeStamp()
 {

+ 3 - 0
zhipuzi_pay_plugin/tool/CLewaimaiTime.h

@@ -17,6 +17,9 @@ public:
 	//将time转换成小时数
 	static string DatetimeToHourString(time_t time);
 
+	static SYSTEMTIME Time_tToSystemTime(time_t t);
+	static time_t SystemTimeToTime_t(const SYSTEMTIME& st);
+
 #ifdef _WIN32
 	static std::chrono::steady_clock::time_point getTimeStamp();
 	static float getTimeDiff(std::chrono::steady_clock::time_point start, std::chrono::steady_clock::time_point end);

+ 387 - 0
zhipuzi_pay_plugin/wnd/CJiaoyijiluWnd.cpp

@@ -0,0 +1,387 @@
+#include "../pch/pch.h"
+#include "CJiaoyijiluWnd.h"
+
+#include "../control/ControlEx.h"
+#include "../tool/CComHelper.h"
+
+#include "CValueWnd.h"
+
+#include "../helper/CBitmapHelper.h"
+
+void CJiaoyijiluWnd::Init()
+{
+	::SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
+
+	//处理时间问题
+	time_t now = time(NULL);
+	time_t start = now - 60 * 60 * 24 * 6;
+
+	SYSTEMTIME syDataStart = CLewaimaiTime::Time_tToSystemTime(start);
+
+	CDateTimeUI* pDateStart = static_cast<CDateTimeUI*>(m_pm.FindControl(_T("jiaoyijilu_time_start")));
+	pDateStart->SetTime(&syDataStart);
+	pDateStart->UpdateText();
+
+	std::string s_start = CLewaimaiTime::DatetimeToDateString(start);
+	pDateStart->SetText(CLewaimaiString::UTF8ToUnicode(s_start).c_str());
+
+	StartQuery();
+
+	//启动一个线程,刷新列表内容
+	std::thread(&CJiaoyijiluWnd::StartRefreshWork, this).detach();
+}
+
+LRESULT CJiaoyijiluWnd::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+{
+	LONG styleValue = ::GetWindowLong(*this, GWL_STYLE);
+	styleValue &= ~WS_CAPTION;
+	::SetWindowLong(*this, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
+
+	// 把自己的窗口句柄与窗口绘制管理器挂接在一起
+	m_pm.Init(m_hWnd);
+	m_pm.AddPreMessageFilter(this);
+
+	//页面内有自定义控件的,必须要加这2个
+	CDialogBuilder builder;
+	CDialogBuilderCallbackEx cb;
+
+	CControlUI* pRoot = builder.Create(_T("jiaoyijilu_wnd.xml"), (UINT)0, &cb, &m_pm);
+	ASSERT(pRoot && "Failed to parse XML");
+
+	// 把这些控件绘制到本窗口上
+	m_pm.AttachDialog(pRoot);
+
+	// 把自己加入到CPaintManagerUI的m_aNotifiers数组中,用于处理Notify函数
+	m_pm.AddNotifier(this);
+
+	Init();
+
+	return 0;
+}
+
+LRESULT CJiaoyijiluWnd::OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+{
+	POINT pt;
+	pt.x = GET_X_LPARAM(lParam);
+	pt.y = GET_Y_LPARAM(lParam);
+	::ScreenToClient(*this, &pt);
+
+	RECT rcClient;
+	::GetClientRect(*this, &rcClient);
+
+	RECT rcCaption = m_pm.GetCaptionRect();
+	if (pt.x >= rcClient.left + rcCaption.left && pt.x < rcClient.right - rcCaption.right \
+		&& pt.y >= rcCaption.top && pt.y < rcCaption.bottom)
+	{
+		CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(pt));
+		if (pControl && _tcscmp(pControl->GetClass(), DUI_CTR_BUTTON) != 0)
+		{
+			return HTCAPTION;
+		}
+	}
+
+	return HTCLIENT;
+}
+
+LRESULT CJiaoyijiluWnd::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+{
+	SIZE szRoundCorner = m_pm.GetRoundCorner();
+	if (!::IsIconic(*this) && (szRoundCorner.cx != 0 || szRoundCorner.cy != 0))
+	{
+		CDuiRect rcWnd;
+		::GetWindowRect(*this, &rcWnd);
+		rcWnd.Offset(-rcWnd.left, -rcWnd.top);
+		rcWnd.right++;
+		rcWnd.bottom++;
+		HRGN hRgn = ::CreateRoundRectRgn(rcWnd.left, rcWnd.top, rcWnd.right, rcWnd.bottom, szRoundCorner.cx, szRoundCorner.cy);
+		::SetWindowRgn(*this, hRgn, TRUE);
+		::DeleteObject(hRgn);
+	}
+
+	bHandled = FALSE;
+	return 0;
+}
+
+LRESULT CJiaoyijiluWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+	LRESULT lRes = 0;
+	BOOL bHandled = TRUE;
+	switch (uMsg)
+	{
+	case WM_CREATE:
+		lRes = OnCreate(uMsg, wParam, lParam, bHandled);
+		break;
+	case WM_NCACTIVATE:
+		lRes = OnNcActivate(uMsg, wParam, lParam, bHandled);
+		break;
+	case WM_NCCALCSIZE:
+		lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled);
+		break;
+	case WM_NCPAINT:
+		lRes = OnNcPaint(uMsg, wParam, lParam, bHandled);
+		break;
+	case WM_NCHITTEST:
+		lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled);
+		break;
+	case WM_SIZE:
+		lRes = OnSize(uMsg, wParam, lParam, bHandled);
+		break;
+	default:
+		bHandled = FALSE;
+	}
+	if (bHandled)
+	{
+		return lRes;
+	}
+	if (m_pm.MessageHandler(uMsg, wParam, lParam, lRes))
+	{
+		return lRes;
+	}
+	return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
+}
+
+LRESULT CJiaoyijiluWnd::MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, bool& bHandled)
+{
+	
+	return false;
+}
+
+
+void CJiaoyijiluWnd::Notify(TNotifyUI& msg)
+{
+	if (msg.sType == _T("windowinit"))
+	{
+		OnPrepare();
+	}
+
+	else if (msg.sType == _T("click"))
+	{
+		HandleClickMsg(msg);
+	}
+
+	else if (msg.sType == _T("selectchanged"))
+	{
+		HandleSelectChangeMsg(msg);
+	}
+
+	else if (msg.sType == _T("itemclick"))
+	{
+
+	}
+	else if (msg.sType == _T("itemactivate"))
+	{
+
+	}
+	else if (msg.sType == _T("itemselect"))
+	{
+		HandleItemSelectMsg(msg);
+	}
+	else if (msg.sType == _T("setfocus"))
+	{
+		if (msg.pSender->GetName() == L"kuaijiejian_setting_jiesuan_edit")
+		{
+			SetFocus(m_hWnd);
+		}
+	}
+}
+
+void CJiaoyijiluWnd::HandleClickMsg(TNotifyUI& msg)
+{
+	DuiLib::CDuiString senderName = msg.pSender->GetName();
+
+	if (senderName == _T("jiaoyijilu_closebtn"))
+	{
+		Close(IDCANCEL);
+		return;
+	}
+	else if (senderName == L"jiaoyijilu_list_last")
+	{
+		m_curpage--;
+
+		this->StartRefreshWork();
+	}
+	else if (senderName == L"jiaoyijilu_list_next")
+	{
+		m_curpage++;
+		this->StartRefreshWork();
+	}
+	else if (senderName == L"jiaoyijilu_query")
+	{
+		this->StartQuery();
+	}
+}
+
+void CJiaoyijiluWnd::HandleSelectChangeMsg(TNotifyUI& msg)
+{
+	CDuiString name = msg.pSender->GetName();
+
+	
+}
+void CJiaoyijiluWnd::HandleItemSelectMsg(TNotifyUI& msg)
+{
+	CDuiString name = msg.pSender->GetName();
+}
+
+void CJiaoyijiluWnd::StartQuery()
+{
+	CDateTimeUI* pDateStart = static_cast<CDateTimeUI*>(m_pm.FindControl(_T("jiaoyijilu_time_start")));
+	SYSTEMTIME syDataStart = pDateStart->GetTime();	
+
+	syDataStart.wHour = 0;
+	syDataStart.wMinute = 0;
+	syDataStart.wSecond = 0;
+	syDataStart.wMilliseconds = 0;
+
+	CDateTimeUI* pDateEnd = static_cast<CDateTimeUI*>(m_pm.FindControl(_T("jiaoyijilu_time_end")));
+	SYSTEMTIME syDataEnd = pDateEnd->GetTime();
+
+	syDataEnd.wHour = 23;
+	syDataEnd.wMinute = 59;
+	syDataEnd.wSecond = 59;
+	syDataEnd.wMilliseconds = 999;
+
+	time_t start_time = CLewaimaiTime::SystemTimeToTime_t(syDataStart);
+	time_t end_time = CLewaimaiTime::SystemTimeToTime_t(syDataEnd);
+
+	std::string s_start = CLewaimaiTime::DatetimeToString(start_time);
+	std::string s_end = CLewaimaiTime::DatetimeToString(end_time);
+
+	if (end_time - start_time > 60*60*24*7)
+	{
+		//起始时间不能大于7天
+		MessageBox(GetHWND(), L"选择的时间段不能超过7天", L"提示", MB_OK);
+		return;
+	}
+
+	if (end_time - start_time < 0)
+	{
+		MessageBox(GetHWND(), L"结束时间不能小于起始时间", L"提示", MB_OK);
+		return;
+	}
+
+	//更新时间
+	m_start_time = s_start;
+	m_end_time = s_end;
+
+	StartRefreshWork();
+}
+
+/*
+ *网络请求获取历史订单数据,并且刷新显示
+ **/
+void CJiaoyijiluWnd::StartRefreshWork()
+{
+	std::map<string, string> params;
+
+	int offset = 10;
+
+	params["page"] = to_string(m_curpage);
+	params["offset"] = to_string(offset);
+	params["start_time"] = m_start_time;
+	params["end_time"] = m_end_time;
+
+	std::string response;
+
+	std::string url = "/saomashoukuan/getlist";
+	CZhipuziHttpClient::Request(url.c_str(), params, response);
+
+	rapidjson::Document document;
+	document.Parse(response.c_str());
+
+	LOG_INFO(response.c_str());
+
+	if (document.HasParseError())
+	{
+		LOG_INFO("parse response error!");
+		return;
+	}
+
+	if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
+	{
+		LOG_INFO("json error!");
+		return;
+	}
+
+	rapidjson::Value& v_errcode = document["errcode"];
+	int errcode = v_errcode.GetInt();
+	if (errcode != 0)
+	{
+		LOG_INFO("response failed! message:" << document["errmsg"].GetString());
+		wstring errmsg = CLewaimaiString::UTF8ToUnicode(document["errmsg"].GetString());
+		MessageBox(GetHWND(), errmsg.c_str(), L"提示", MB_OK);
+		return;
+	}
+
+	rapidjson::Value& data = document["data"];
+
+	std::string total_num = data["total_num"].GetString();
+	m_totalNum = atoi(total_num.c_str());
+
+	CListUI* pJiaoyijiluList = static_cast<CListUI*>(m_pm.FindControl(_T("jiaoyijilu_list")));
+	pJiaoyijiluList->RemoveAll();
+
+	rapidjson::Value& rows = data["rows"];
+	for (rapidjson::SizeType i = 0; i < rows.Size(); ++i)
+	{
+		rapidjson::Value& v_row_i = rows[i];
+
+		//把最后一个厨房打印机取出来
+		CDialogBuilder builder;
+		CListContainerElementUI* pEle = static_cast<CListContainerElementUI*>(builder.Create(_T("jiaoyijilu_item.xml"), (UINT)0, NULL, &m_pm));
+
+		CLabelUI* pTime = static_cast<CLabelUI*>(pEle->FindSubControl(_T("jiaoyijilu_item_time")));
+		pTime->SetText(CLewaimaiString::UTF8ToUnicode(v_row_i["complete_time"].GetString()).c_str());
+
+		CLabelUI* pValue = static_cast<CLabelUI*>(pEle->FindSubControl(_T("jiaoyijilu_item_value")));
+		pValue->SetText(CLewaimaiString::UTF8ToUnicode(v_row_i["value"].GetString()).c_str());
+
+		CLabelUI* pType = static_cast<CLabelUI*>(pEle->FindSubControl(_T("jiaoyijilu_item_paytype")));
+		pType->SetText(CLewaimaiString::UTF8ToUnicode(v_row_i["zhifu_type"].GetString()).c_str());
+
+		CLabelUI* pStatus = static_cast<CLabelUI*>(pEle->FindSubControl(_T("jiaoyijilu_item_status")));
+		pStatus->SetText(CLewaimaiString::UTF8ToUnicode(v_row_i["status"].GetString()).c_str());
+
+		CLabelUI* pOrderno = static_cast<CLabelUI*>(pEle->FindSubControl(_T("jiaoyijilu_item_orderno")));
+		pOrderno->SetText(CLewaimaiString::UTF8ToUnicode(v_row_i["out_trade_no"].GetString()).c_str());
+
+		pEle->AddCustomAttribute(L"id", L"1");
+
+		pJiaoyijiluList->Add(pEle);
+	}
+
+	//更新页码状态提示
+	m_totalpage = (int)(m_totalNum / offset) + 1;
+
+	CButtonUI* pLast = static_cast<CButtonUI*>(m_pm.FindControl(_T("jiaoyijilu_list_last")));
+	CButtonUI* pNext = static_cast<CButtonUI*>(m_pm.FindControl(_T("jiaoyijilu_list_next")));
+
+	if (m_curpage < 1)
+	{
+		m_curpage = 1;
+	}
+	if (m_curpage == 1)
+	{
+		pLast->SetEnabled(false);
+	}
+	else if (m_curpage > 1)
+	{
+		pLast->SetEnabled(true);
+	}
+
+	if (m_curpage > m_totalpage)
+	{
+		m_curpage = m_totalpage;
+	}
+	if (m_curpage == m_totalpage)
+	{
+		pNext->SetEnabled(false);
+	}
+	else if (m_curpage < m_totalpage)
+	{
+		pNext->SetEnabled(true);
+	}
+
+	CLabelUI* pPageNum = static_cast<CLabelUI*>(m_pm.FindControl(_T("jiaoyijilu_list_page")));
+	wstring pageinfo = _T("第") + CLewaimaiString::ANSIToUnicode(to_string(m_curpage)) + _T("页/共") + CLewaimaiString::ANSIToUnicode(to_string(m_totalpage)) + _T("页");
+	pPageNum->SetText(pageinfo.c_str());
+}

+ 94 - 0
zhipuzi_pay_plugin/wnd/CJiaoyijiluWnd.h

@@ -0,0 +1,94 @@
+#pragma once
+
+#include "../helper/WndHelper.h"
+
+#include "CDingweiWnd.h"
+
+class CValueWnd;
+
+class CJiaoyijiluWnd : public CWindowWnd, public INotifyUI, public IMessageFilterUI
+{
+public:
+	CJiaoyijiluWnd(CValueWnd* value)
+	{
+		m_valueWnd = value;
+	}
+
+	LPCTSTR GetWindowClassName() const
+	{
+		return _T("UIJiaoyijiluFrame");
+	};
+
+	UINT GetClassStyle() const
+	{
+		return UI_CLASSSTYLE_DIALOG;
+	};
+
+	void OnFinalMessage(HWND /*hWnd*/)
+	{
+		//WindowImplBase::OnFinalMessage(hWnd);
+		m_pm.RemovePreMessageFilter(this);
+		delete this;
+	};
+
+	void Init();
+
+	void OnPrepare()
+	{
+
+	}
+
+	void Notify(TNotifyUI& msg);
+
+	void HandleClickMsg(TNotifyUI& msg);
+	void HandleSelectChangeMsg(TNotifyUI& msg);
+	void HandleItemSelectMsg(TNotifyUI& msg);
+
+	LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+
+	LRESULT OnNcActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+	{
+		if (::IsIconic(*this))
+		{
+			bHandled = FALSE;
+		}
+		return (wParam == 0) ? TRUE : FALSE;
+	}
+
+	LRESULT OnNcCalcSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+	{
+		return 0;
+	}
+
+	LRESULT OnNcPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+	{
+		return 0;
+	}
+
+	LRESULT OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+
+	LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+
+	LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
+
+	LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, bool& bHandled);
+
+	void StartQuery();
+
+	void StartRefreshWork();
+
+public:
+	CPaintManagerUI m_pm;
+
+private:
+	CValueWnd* m_valueWnd;
+
+	int m_totalpage = 0;
+	int m_curpage = 1;
+
+	int m_totalNum = 0;
+
+	std::string m_start_time;
+	std::string m_end_time;
+};
+

+ 4 - 0
zhipuzi_pay_plugin/wnd/CMenuWnd.cpp

@@ -47,6 +47,10 @@ void CMenuWnd::Notify(TNotifyUI& msg)
 		{
 			m_valueWnd->ShowTuikuan();
 		}
+		else if (name == L"value_menu_jiaoyijilu")
+		{
+			m_valueWnd->ShowJiaoyijilu();
+		}
 	}
 }
 

+ 36 - 0
zhipuzi_pay_plugin/wnd/CValueWnd.cpp

@@ -738,6 +738,42 @@ void CValueWnd::ShowSystemSetting()
 	}
 }
 
+void CValueWnd::ShowJiaoyijilu()
+{
+	//先隐藏目录
+	pMenu->ShowWindow(false);
+
+	//然后判断和显示系统设置
+	if (m_is_show_jiaoyijilu == true)
+	{
+		return;
+	}
+
+	CJiaoyijiluWnd* pJiaoyijiluFrame = new CJiaoyijiluWnd(this);
+	m_jiaoyijiluWnd = pJiaoyijiluFrame;
+
+	if (pJiaoyijiluFrame != NULL)
+	{
+		m_is_show_jiaoyijilu = true;
+
+		pJiaoyijiluFrame->Create(NULL, _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
+		pJiaoyijiluFrame->SetIcon(IDI_ICON_DUILIB);
+		pJiaoyijiluFrame->CenterWindow();
+		UINT ret = pJiaoyijiluFrame->ShowModal();
+
+		m_is_show_jiaoyijilu = false;
+
+		if (ret == IDOK)
+		{
+
+		}
+		else if (ret == IDCANCEL)
+		{
+
+		}
+	}
+}
+
 void CValueWnd::UpdateKexian(const char* data, int length)
 {
     std::string new_data = data;

+ 9 - 0
zhipuzi_pay_plugin/wnd/CValueWnd.h

@@ -5,6 +5,7 @@
 
 #include "CMenuWnd.h"
 #include "CSystemSettingWnd.h"
+#include "CJiaoyijiluWnd.h"
 #include "CDingweiInfoWnd.h"
 #include "COcrWnd.h"
 
@@ -74,8 +75,12 @@ public:
 	//处理热键
 	LRESULT OnHotKey(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
 
+	//显示设置页面
 	void ShowSystemSetting();
 
+	//显示交易记录页面
+	void ShowJiaoyijilu();
+
 	void Init();
 
 	void TopMostWnd();
@@ -133,6 +138,10 @@ private:
 	bool m_is_show_setting = false;
 	CSystemSettingWnd* m_settingWnd;
 
+	//交易记录窗口是否已经显示
+	bool m_is_show_jiaoyijilu = false;
+	CJiaoyijiluWnd* m_jiaoyijiluWnd;
+
 	//默认监听的模式
 	int m_nWatchType = -1;
 

+ 1 - 0
zhipuzi_pay_plugin/zhipuzi_pay_plugin.cpp

@@ -14,6 +14,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
 	{
 		return -1;
 	}
+
     //初始化日志
     CLewaimaiLog log;
     log.Init();

+ 2 - 0
zhipuzi_pay_plugin/zhipuzi_pay_plugin.vcxproj

@@ -223,6 +223,7 @@ copy $(ProjectDir)conf\ $(SolutionDir)bin\$(Platform)\$(Configuration)\conf\</Co
     </PostBuildEvent>
   </ItemDefinitionGroup>
   <ItemGroup>
+    <ClInclude Include="wnd\CJiaoyijiluWnd.h" />
     <ClInclude Include="control\CMenuItemUI.h" />
     <ClInclude Include="wnd\CTuikuanWnd.h" />
     <ClInclude Include="helper\CSpeech.h" />
@@ -268,6 +269,7 @@ copy $(ProjectDir)conf\ $(SolutionDir)bin\$(Platform)\$(Configuration)\conf\</Co
     <ClInclude Include="control\OrderListUI.h" />
   </ItemGroup>
   <ItemGroup>
+    <ClCompile Include="wnd\CJiaoyijiluWnd.cpp" />
     <ClCompile Include="control\CMenuItemUI.cpp" />
     <ClCompile Include="wnd\CTuikuanWnd.cpp" />
     <ClCompile Include="helper\CSpeech.cpp" />

+ 6 - 0
zhipuzi_pay_plugin/zhipuzi_pay_plugin.vcxproj.filters

@@ -144,6 +144,9 @@
     <ClInclude Include="wnd\CTuikuanWnd.h">
       <Filter>头文件</Filter>
     </ClInclude>
+    <ClInclude Include="wnd\CJiaoyijiluWnd.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="pch\pch.cpp">
@@ -266,6 +269,9 @@
     <ClCompile Include="wnd\CTuikuanWnd.cpp">
       <Filter>源文件</Filter>
     </ClCompile>
+    <ClCompile Include="wnd\CJiaoyijiluWnd.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <Image Include="resource\zhipuzi.ico">