文件
mashangyoujiu/Application/Common/Model/RetailPrinterModel.class.php

199 行
9.0 KiB
PHP
可执行文件

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<?php
namespace Common\Model;
use Think\Model;
//[1.4.98]
/**
* 打印机设置表 2019-6-27
* Class RetailPrinterModel
* @package Common\Model
*/
class RetailPrinterModel extends BaseModel
{
const ID = 'id'; //int(11) NOT NULL AUTO_INCREMENT,
const STATUS = 'status'; //tinyint(2) DEFAULT '2' COMMENT '打印机状态:2起用 1不启用',
const API_NAME = 'api_name'; //varchar(255) DEFAULT NULL COMMENT '飞蛾打印机:后台管理账号;易联云打印机:开发者创建的应用id',
const API_KEY = 'api_key'; //varchar(255) DEFAULT NULL COMMENT '飞鹅云打印机:管理员接口密钥;易联云:应用密钥',
const PRINTER_NAME = 'printer_name';//varchar(32) DEFAULT NULL COMMENT '打印机名称',
const PRINTER_TYPE = 'printer_type';//varchar(64) DEFAULT NULL COMMENT '打印机类型 1:飞鹅云打印机 2:易联云打印机',
const PRINTER_SN = 'printer_sn';//varchar(100) NOT NULL COMMENT '打印机编号',
const PRINTER_KEY = 'printer_key';//varchar(100) NOT NULL COMMENT '打印机密钥',
const IS_PAGING = 'ispaging'; //tinyint(2) DEFAULT '2' COMMENT '是否分页打印 1:开启 2:关闭',
const PAGES = 'pages'; //int(11) DEFAULT NULL COMMENT '开启分页打印时 每页打印的条数',
const LABEL_ID = 'printer_labelid';//varchar(255) DEFAULT NULL COMMENT '打印标签 1:所有 2:指定',
const PRINT_TYPE = 'print_type';//tinyint(2) DEFAULT NULL COMMENT '打印类型:1整单打印 2:分单打印',
const ADD_TIME = 'addtime'; //varchar(15) DEFAULT NULL COMMENT '添加时间',
const STORE_ID = 'storeid'; //int(11) DEFAULT NULL COMMENT '门店id',
const MERCHANT_ID = 'merchantid';//int(11) DEFAULT NULL COMMENT '商户id',
const TITLE = 'title'; //varchar(128) DEFAULT NULL COMMENT '标题',
const FOOTER = 'footer'; //varchar(128) DEFAULT NULL COMMENT '底部',
const ONLINE_STATUS = 'online_status';//tinyint(1) DEFAULT '2' COMMENT '线上小程序1关闭 2开启',
const LINE_STATUS = 'register'; //tinyint(1) DEFAULT '1' COMMENT '收银机打印1关闭 2开启',
const INVENTORY_STATUS = 'inventory_status'; //tinyint(1)
/**
* 下单成功打印小票验证
* @param $parameter
* @return mixed
*/
public function verifyInfo($parameter)
{
$store_id = $parameter['store_id'];
$bill_id = $parameter['bill_id'];
if (!$store_id || !$bill_id) {
$res = array('status' => 0, 'msg' => '缺少参数,请刷新重试');
return $res;
}
$map = array(
$this::STORE_ID => $store_id,
$this::STATUS => 2
);
$print_set = $this->getSelect($map);//查询该门店是否配置打印机或已开启打印机
if (empty($print_set)) {
$res = array('status' => 0, 'msg' => '暂无可用打印机,请查看后台');
return $res;
}
$res = array(
'status' => 1,
'msg' => '查询打印机成功',
'data' => array(
'print_set' => $print_set
)
);
return $res;
}
/**
* 获取打印信息
* @param $parameter
* @return mixed
*/
public function getPrintInfo($parameter)
{
$BillModel = D('RetailBillOrder');
$SellModel = D('RetailSell');
$store_id = $parameter['store_id'];
$bill_id = $parameter['bill_id'];
$store_name = D('RetailStore')->getFindField(array('id' => $store_id), 'storetag'); //门店名称
$map = array(
$BillModel::ID => strval($bill_id),
$BillModel::STORE_ID => $store_id,
);
$bill_order = $BillModel->getFind($map);//查询要打印的订单详情
if (empty($bill_order)) {
$res = array('status' => 0, 'msg' => '订单不存在');
return $res;
}
$vip_info = array();
if (!empty($bill_order[$BillModel::VID])) {
$VipModel = D('RetailVip');
$vip_info = $VipModel->getFind(array($VipModel::ID => $bill_order[$BillModel::VID]));
}
$type = $bill_order[$BillModel::TYPE];
$bill_online = array();
if ($type == 1) {//商城
$BillOnlineModel = D('RetailBillOnline');
$bill_online = $BillOnlineModel->getFind(array($BillOnlineModel::BILL_ID => $bill_id));
$address_info['phone'] = $bill_online[$BillOnlineModel::USER_PHONE];
$address_info['name'] = $bill_online[$BillOnlineModel::USER_NAME];
if ($bill_online[$BillOnlineModel::PICKUP_TYPE] == 2 || $bill_online[$BillOnlineModel::PICKUP_TYPE] == 3) {
//配送
$address_info['address'] = $bill_online[$BillOnlineModel::USER_ADDRESS];
} else {
$address_info['address'] = "自提";
}
switch ($bill_online['pickup_type']) {
case 1:
$bill_online['pickup_name'] = "自提";
break;
case 2:
$bill_online['pickup_name'] = "商家配送";
break;
case 3:
$bill_online['pickup_name'] = "快递发货";
break;
default:
$bill_online['pickup_name'] = "不详";
break;
}
switch ($bill_online['order_genre']) {
case 4:
//预售活动
$advance_order = D("RetailBillAdvance")->getFind(array('bill_id' => $bill_order['id']));
if ($advance_order['advance_type'] == 2) {
//定金+尾款
$advance_order['all_arrive_price'] = $advance_order['all_arrive_price'] ? $advance_order['all_arrive_price'] : ''; //定金抵现
$advance_order['earnest_pay_time'] = date('Y-m-d H:i:s', $advance_order['earnest_pay_time']); //定金支付时间
$advance_order['tail_price'] = round($bill_order['all_money'] - $advance_order['all_earnest_price'], 2); //尾款
}
if ($advance_order['state'] == 2) {
$trade_date = D("RetailPayOrder")->getFindField(array('id' => $advance_order['tail_pay_order_id']), "trade_date");
$advance_order['tail_time'] = date('Y-m-d H:i:s', $trade_date);
}
break;
}
} else {
$address_info = array();
}
$map = array(
's.' . $SellModel::BILL_ID => $bill_id,
);
$sell_goods = $SellModel->getSelectAndGoods($map, 's.*,g.label_id');
$bill_order['before_money'] = 0;
foreach ($sell_goods as &$val) {
if ($val['goods_gifts_id']) {
$val['goods_name'] = '[赠]' . $val['goods_name'];
}
$val['unit_price'] = $val['price'];
$val['before_money'] = round($val['unit_price'] * $val['num'], 2);
$bill_order['before_money'] += $val['before_money'];
}
$BillDisModel = D('RetailBillDiscount');
$bill_discount = $BillDisModel->getFind(array($BillDisModel::BILL_ID => $bill_id));
if ($type == 1 && $bill_online['order_genre'] == 4) {
$pay_list = D("RetailBillAdvance")->payMode($advance_order);
} else {
//支付方式列表
$pay_list = getPayTypeList($bill_order[$BillModel::PAY_TYPE], $bill_order[$BillModel::ALL_MONEY], $bill_order[$BillModel::ID]);
}
$cashier_name = ''; //收银员姓名
if (!empty($bill_order[$BillModel::CASHIER_ID])) {
$CashierModel = D('RetailCashier');
$cashier_name = $CashierModel->getFindField(array($CashierModel::ID => $bill_order[$BillModel::CASHIER_ID]), $CashierModel::NAME);
}
$guide_name = '';//导购员姓名
if (!empty($bill_order[$BillModel::GUIDE_ID])) {
$GuideModel = D('RetailGuide');
$guide_name = $GuideModel->getFindField(array($GuideModel::ID => $bill_order[$BillModel::GUIDE_ID]), $GuideModel::NAME);
}
$print_info = array(
'store_name' => $store_name,
'bill_order' => $bill_order,
'pay_list' => $pay_list,
'address_info' => $address_info,
'bill_online' => $bill_online,
'bill_discount' => $bill_discount,
'vip_info' => $vip_info,
'guide_name' => $guide_name,
'cashier_name' => $cashier_name,
);
if ($type == 1 && $bill_online['order_genre'] == 4) {
//线上预售活动订单信息
$print_info['advance_order'] = $advance_order;
}
$res = array(
'status' => 1,
'msg' => '查询成功',
'data' => array(
'print_info' => $print_info,
'type' => $type,
'sell_goods' => $sell_goods
)
);
return $res;
}
}