199 行
9.0 KiB
PHP
可执行文件
199 行
9.0 KiB
PHP
可执行文件
<?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;
|
||
}
|
||
} |