| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- #include "../pch/pch.h"
- #include "CMessagePush.h"
- #include "../tool/CPosPrinter.h"
- CMessagePush::~CMessagePush()
- {
- }
- void CMessagePush::Start()
- {
- m_is_work = true;
- m_nStopNum = 0;
- //处理打印
- std::thread(&CMessagePush::HandlePrinter, this).detach();
- }
- void CMessagePush::Stop()
- {
- m_is_work = false;
- }
- void CMessagePush::AddPinter(std::string out_order_no, int print_type)
- {
- m_printer_mutex.lock();
- ShouyinPinterInfo newPrinter;
- newPrinter.out_order_no = out_order_no;
- newPrinter.print_type = print_type;
- m_printer_queue.push(newPrinter);
- m_printer_mutex.unlock();
- }
- void CMessagePush::HandlePrinter()
- {
- while(m_is_work)
- {
- m_printer_mutex.lock();
- if(m_printer_queue.empty())
- {
- m_printer_mutex.unlock();
- CSystem::my_sleep(1);
- continue;
- }
- ShouyinPinterInfo printerInfo = m_printer_queue.front();
- std::string out_order_no = printerInfo.out_order_no;
- int print_type = printerInfo.print_type;
- m_printer_queue.pop();
- m_printer_mutex.unlock();
-
- if(print_type == 1)
- {
- //支付成功订单
- CShouyinOrder order;
- bool ret = order.InitData(out_order_no);
- CPosPrinter printer;
- printer.PrintZhifu(order);
- }
- else if (print_type == 2)
- {
- //退款成功订单
- CShouyinOrder order;
- bool ret = order.InitData(out_order_no);
- CPosPrinter printer;
- printer.PrintTuikuan(order);
- }
- else
- {
- //打印测试的订单
- CPosPrinter printer;
- printer.PrintTest();
-
- }
- }
- AddStopNum();
- }
- void CMessagePush::AddStopNum()
- {
- m_nStopNumMutex.lock();
- m_nStopNum++;
- m_nStopNumMutex.unlock();
- if(m_nStopNum == 1)
- {
- //确认所有子线程都退出了,再删除自己
- delete this;
- }
- }
|