store_id)) { if (IS_POST) { $res = array( 'status' => 0, 'msg' => '您无权访问该接口', ); $this->ajaxReturn($res); } else { session(null); echo ''; exit; } } $StoreConfigModel = new StoreConfigModel(); $this->token = $StoreConfigModel->getFindField(array('store_id' => $this->store_id), 'cn_token'); if (I('post.cp_code')) { $this->cpCode = I('post.cp_code'); } } /** * 基本设置页面 */ public function set() { if (!C('CN_APP_KEY') || !C('CN_APP_SECRET')) { echo '系统未开启电子面单功能,敬请期待'; } else { $authorized = empty($this->token) ? 'false' : 'true';//判断是否授权菜鸟物流云 $StoreShippingAddressModel = D('StoreShippingAddress'); $map = array( 'store_id' => $this->store_id, 'state' => 1, ); $defaultInfo = $StoreShippingAddressModel->getFind($map);//获取门店默认发货地址 if (empty($defaultInfo)) { $defaultInfo = array( 'cp_code' => '', // varchar(50) DEFAULT NULL COMMENT '物流编码', 'branch_code' => '', // varchar(20) DEFAULT NULL COMMENT '网点code', 'branch_name' => '', // varchar(50) DEFAULT NULL COMMENT '网点名称', 'province' => '', // varchar(50) DEFAULT NULL COMMENT '省', 'city' => '', // varchar(50) DEFAULT NULL COMMENT '市', 'district' => '', // varchar(50) DEFAULT NULL COMMENT '区', 'town' => '', // varchar(255) DEFAULT NULL COMMENT '街道、镇', 'detail' => '', // varchar(255) DEFAULT NULL COMMENT '详细地址', 'template_url' => '', // varchar(255) DEFAULT NULL COMMENT '面单模板地址', 'template_type' => '', // varchar(255) DEFAULT NULL COMMENT '面单模板类型', 'name' => '', // varchar(50) DEFAULT NULL COMMENT '发货人姓名', 'mobile' => '', // varchar(11) DEFAULT NULL COMMENT '发货人手机', 'phone' => '', // varchar(20) DEFAULT NULL COMMENT '发货人固定电话', ); } $this->assign('defaultInfo', json_encode($defaultInfo)); $this->assign('authorized', $authorized); $this->display(); } } /** * 设置默认发货信息 */ public function saveDefault() { $cp_code = I('post.cp_code'); // varchar(50) DEFAULT NULL COMMENT '物流编码', $branch_code = I('post.branch_code'); // varchar(20) DEFAULT NULL COMMENT '网点code', $branch_name = I('post.branch_name'); // varchar(50) DEFAULT NULL COMMENT '网点名称', $province = I('post.province'); // varchar(50) DEFAULT NULL COMMENT '省', $city = I('post.city'); // varchar(50) DEFAULT NULL COMMENT '市', $district = I('post.district'); // varchar(50) DEFAULT NULL COMMENT '区', $town = I('post.town'); // varchar(255) DEFAULT NULL COMMENT '街道、镇', $detail = I('post.detail'); // varchar(255) DEFAULT NULL COMMENT '详细地址', $template_url = I('post.template_url'); // varchar(255) DEFAULT NULL COMMENT '面单模板地址', $template_type = I('post.template_type'); // varchar(255) DEFAULT NULL COMMENT '面单模板类型', $name = I('post.name'); // varchar(50) DEFAULT NULL COMMENT '发货人姓名', $mobile = I('post.mobile'); // varchar(11) DEFAULT NULL COMMENT '发货人手机', $phone = I('post.phone'); // varchar(20) DEFAULT NULL COMMENT '发货人固定电话', $addItem = array( 'store_id' => $this->store_id, 'state' => 1, 'add_time' => time(), 'cp_code' => $cp_code, 'branch_code' => $branch_code, 'branch_name' => $branch_name, 'province' => $province, 'city' => $city, 'district' => $district, 'town' => $town, 'detail' => $detail, 'template_url' => $template_url, 'template_type' => $template_type, 'name' => $name, 'mobile' => $mobile, 'phone' => $phone, ); $StoreShippingAddressModel = D('StoreShippingAddress'); $map = array( 'store_id' => $this->store_id, 'state' => 1, ); $StoreShippingAddressModel->updateOrder($map, array('state' => 0));//把之前的改为删除状态 $add = $StoreShippingAddressModel->addOrder($addItem); if ($add) { //操作日志记录 $source = 0;//请求来源: 0pc系统 1小助手 $type = 4;//平台:1合伙人端 2代理商端 3商户端 4门店端 $request_data = json_encode($_POST);//请求参数 json数据 $desc = '设置-保存默认发货信息';//操作行为描述 action_log($source, $type, $request_data, $desc); $res['status'] = 1; $res['msg'] = '保存成功'; } else { $res['status'] = 0; $res['msg'] = '保存失败,请重试'; } $this->ajaxReturn($res); } /** * 获取商家信息 */ public function getMerInfo() { $CNLogistics = new \Addons\Api\CNLogistics($this->token, $this->cpCode); $res = $CNLogistics->getMerInfo(); $this->ajaxReturn($res); } /** * 获取云打印标准面单 */ public function getTemplates() { if (empty($this->cpCode)) { $res['status'] = 0; $res['msg'] = '请传入物流编号'; $this->ajaxReturn($res); } $CNLogistics = new \Addons\Api\CNLogistics($this->token, $this->cpCode); $res = $CNLogistics->getStandardTemplates();//获取云打印标准面单 if ($res['status'] == 1) { $res['data'] = $res['data'][0]['standardTemplateDOs']; } $this->ajaxReturn($res); } /** * 获取授权链接 */ public function getAuthCode() { $key = 'auth.store: ' . $this->store_id; $key = substr(md5($key), 8, 16); S($key, $this->store_id, 300); $appKey = C('CN_APP_KEY'); $ext = 'type/2:id/' . $key;//type==2代表门店授权 1商户授权(预留) $redirect_url = getServerUrl() . '/index.php/cn_auth_callback'; $auth_url = "https://lcp.cloud.cainiao.com/permission/isv/grantpage_tb.do?isvAppKey={$appKey}&ext={$ext}&redirectUrl={$redirect_url}"; $res['status'] = 1; $res['msg'] = '获取成功'; $res['auth_url'] = $auth_url; $this->ajaxReturn($res); } /** * 大转盘需要改 * 发货页面 */ public function send_goods() { $cnLogisticsState = 'true'; if (!C('CN_APP_KEY') || !C('CN_APP_SECRET')) { $cnLogisticsState = 'false'; } $kd100State = 'true'; // if (!C('KD100_CUSTOMER') || !C('KD100_KEY')) { // $kd100State = 'false'; // } $id = I('get.id'); $BillModel = D('RetailBillOrder'); $OnlineModel = D('RetailBillOnline'); $map = array( 'b.' . $BillModel::ID => $id, 'b.' . $BillModel::TYPE => 1, 'b.' . $BillModel::ORDER_TYPE => array('in', '1,3'), 'b.' . $BillModel::REFUND_STATUS => array('in', '0,5'), 'o.' . $OnlineModel::PICKUP_TYPE => array('in', '2,3'), 'o.' . $OnlineModel::DELIVERY_TYPE => 1, 'o.' . $OnlineModel::STATUS => 1, ); $fields = array( 'b.' . $BillModel::ID, 'b.' . $BillModel::ORDER_NO, 'o.' . $OnlineModel::USER_NAME, 'o.' . $OnlineModel::USER_PHONE, 'o.' . $OnlineModel::USER_ADDRESS, ); $bill_order = $BillModel->getOrderLinkFind($map, $fields); if (!empty($bill_order)) { $StoreShippingAddressModel = D('StoreShippingAddress'); $map = array( 'store_id' => $this->store_id, 'state' => 1, ); $default_sender = $StoreShippingAddressModel->getFind($map);//获取门店默认发货地址 $default_sender['goods_name'] = ''; $default_sender['goods_count'] = ''; $default_sender['goods_weight'] = ''; $default_sender['goods_volume'] = ''; $authorized = empty($this->token) ? 'false' : 'true';//判断是否授权菜鸟物流云 $bill = array( 'id' => $id, 'order_no' => $bill_order[$BillModel::ORDER_NO], 'receiving_name' => $bill_order[$OnlineModel::USER_NAME], 'receiving_phone' => $bill_order[$OnlineModel::USER_PHONE], 'receiving_address' => $bill_order[$OnlineModel::USER_ADDRESS], ); $this->assign('bill', json_encode($bill)); $this->assign('authorized', $authorized); $this->assign('default_sender', $default_sender ? json_encode($default_sender) : json_encode(array())); $this->assign('cnLogisticsState', $cnLogisticsState); $this->assign('kd100State', $kd100State); $this->display(); } else { echo '未查询到该订单或订单已发货'; } } /** * 获取物流公司列表 */ public function getExpress() { $page = I('post.page') ? I('post.page') : 1; $keyword = I('post.keyword'); $limit = 20; if (!empty($keyword)) { $map = array( 'kd_name' => array('like', "%{$keyword}%"), ); $list = M('express')->where($map)->page($page, $limit)->order('id asc')->select(); } else { $list = M('express')->page($page, $limit)->order('id asc')->select(); } if (!empty($list)) { $res['data'] = $list; $res['status'] = 1; $res['msg'] = '获取成功'; } else { $res['status'] = 0; $res['msg'] = '暂无数据'; } $this->ajaxReturn($res); } /** * 大转盘需要改 * 提交直接填写订单号发货信息 */ public function directSetOrderNo() { $bill_id = I('post.bill_id'); $express_no = I('post.express_no'); $express_name = I('post.express_name'); $express_code = I('post.express_code'); if (empty($bill_id) || empty($express_no) || empty($express_name) || empty($express_code)) { $res['status'] = 0; $res['msg'] = '请完善发货信息'; $this->ajaxReturn($res); } $BillModel = D('RetailBillOrder'); $OnlineModel = D('RetailBillOnline'); $map = array( 'b.' . $BillModel::ID => $bill_id, 'b.' . $BillModel::TYPE => 1, 'b.' . $BillModel::ORDER_TYPE => array('in', '1,3'), 'b.' . $BillModel::REFUND_STATUS => array('in', '0,5'), 'o.' . $OnlineModel::PICKUP_TYPE => array('in', '2,3'), 'o.' . $OnlineModel::DELIVERY_TYPE => 1, 'o.' . $OnlineModel::STATUS => 1, ); $bill_order = $BillModel->getOrderLinkFind($map); if (empty($bill_order)) { $res['status'] = 0; $res['msg'] = '未查询到该订单或订单已发货'; $this->ajaxReturn($res); } $item = array( 'type' => 2, 'express_no' => $express_no, 'express_name' => $express_name, 'express_code' => $express_code, 'bill_id' => $bill_id, 'merchant_id' => $this->merchant_id, 'store_id' => $this->store_id, 'uid' => $bill_order[$BillModel::UID], 'bill_order' => $bill_order, 'platform_type' => $this->role_info['platform_type'] ? $this->role_info['platform_type'] : 1 ); $res = A('Api/Express')->toSendGoods($item); $this->ajaxReturn($res); } /** * 大转盘需要改 * 电子面单取号 */ public function getExpressCode() { $bill_id = I('post.bill_id'); $mobile = I('post.mobile'); $phone = I('post.phone'); $name = I('post.name'); $goods_name = I('post.goods_name'); $goods_count = I('post.goods_count'); $goods_weight = I('post.goods_weight'); $goods_volume = I('post.goods_volume'); $express_code = I('post.express_code'); $express_name = I('post.express_name'); if (empty($name)) { $res['status'] = 0; $res['msg'] = '请填写发货人姓名'; $this->ajaxReturn($res); } if (empty($mobile) && empty($phone)) { $res['status'] = 0; $res['msg'] = '发货人手机号和固定电话不能同时为空'; $this->ajaxReturn($res); } if (empty($goods_name)) { $res['status'] = 0; $res['msg'] = '请填写物品名称'; $this->ajaxReturn($res); } if (empty($goods_count)) { $res['status'] = 0; $res['msg'] = '请填写物品数量'; $this->ajaxReturn($res); } if (empty($goods_weight)) { $res['status'] = 0; $res['msg'] = '请填写物品重量'; $this->ajaxReturn($res); } if (empty($goods_volume)) { $res['status'] = 0; $res['msg'] = '请填写物品体积'; $this->ajaxReturn($res); } if (empty($express_code)) { $res['status'] = 0; $res['msg'] = '请选择物流公司'; $this->ajaxReturn($res); } $StoreShippingAddressModel = D('StoreShippingAddress'); $map = array( 'store_id' => $this->store_id, 'state' => 1, ); $defaultInfo = $StoreShippingAddressModel->getFind($map);//获取门店默认发货地址 if (empty($defaultInfo)) { $res['status'] = 0; $res['msg'] = '门店未设置发货地址,请先设置发货地址'; $this->ajaxReturn($res); } $BillModel = D('RetailBillOrder'); $OnlineModel = D('RetailBillOnline'); $map = array( 'b.' . $BillModel::ID => $bill_id, 'b.' . $BillModel::TYPE => 1, 'b.' . $BillModel::ORDER_TYPE => array('in', '1,3'), 'b.' . $BillModel::REFUND_STATUS => array('in', '0,5'), 'o.' . $OnlineModel::PICKUP_TYPE => array('in', '2,3'), 'o.' . $OnlineModel::DELIVERY_TYPE => 1, 'o.' . $OnlineModel::STATUS => array('eq', 1), ); $fields = array( 'b.' . $BillModel::ID, 'b.' . $BillModel::ORDER_NO, 'b.' . $BillModel::REFUND_NO, 'b.' . $BillModel::ORDER_TYPE, 'b.' . $BillModel::UID, 'o.' . $OnlineModel::USER_NAME, 'o.' . $OnlineModel::USER_PHONE, 'o.' . $OnlineModel::USER_ADDRESS, 'b.third_order', ); $bill_order = $BillModel->getOrderLinkFind($map, $fields); $order_no = $bill_order[$BillModel::ORDER_NO]; //发货人信息 $sender = array( 'city' => $defaultInfo['city'],//城市 'detail' => $defaultInfo['detail'],//详细地址 'district' => $defaultInfo['district'],//区县 'province' => $defaultInfo['province'],//省 'town' => $defaultInfo['town'],//街道 'mobile' => $mobile,//手机号码(手机号和固定电话不能同时为空) 'name' => $name,//姓名 'phone' => $phone,//固定电话(手机号和固定电话不能同时为空) 'goods_name' => $goods_name,//物品名称 'goods_count' => $goods_count,//物品数量 'goods_weight' => $goods_weight,//物品重量 'goods_volume' => $goods_volume,//物品重量 'template_url' => $defaultInfo['template_url'],//物品重量 'user_id' => $this->store_id,//物品重量 ); //收货人信息 $address = $bill_order[$OnlineModel::USER_ADDRESS]; $direct = array('北京', '天津', '上海', '重庆');//直辖市 $temp = explode('省', $address); if (count($temp) >= 2) { $address = $temp[1];//去除省份 $province = in_array($temp[0], $direct) ? $temp[0] : ($temp[0] . '省'); } $temp = explode('市', $address); if (in_array($temp[0], $direct)) { $province = $temp[0]; } $city = $temp[0] . '市'; $address = str_replace($city, '', $address);//去除市 $temp = explode('区', $address); $district = $temp[0] . '区'; $detail = str_replace($district, '', $address);//去除区 $recipient = array( 'province' => $province,//省 'city' => $city,//城市 'district' => $district,//区县 'detail' => $detail,//详细地址 'town' => '',//街道 'mobile' => $bill_order[$OnlineModel::USER_PHONE],//手机号码(手机号和固定电话不能同时为空) 'name' => $bill_order[$OnlineModel::USER_NAME],//姓名 'phone' => '',//固定电话(手机号和固定电话不能同时为空) ); // exit; $addItem = array( 'store_id' => $this->store_id,//'门店id', 'cp_code' => $this->cpCode,//'物流公司编码', 'branch_code' => $defaultInfo['branch_code'],//'网点code', 'branch_name' => $defaultInfo['branch_name'],//'网点名称', 'sender_name' => $sender['name'],//'发货人姓名', 'sender_mobile' => $sender['mobile'],//'发货人手机', 'sender_phone' => $sender['phone'],//'发货人固定电话', 'sender_address' => $sender['province'] . $sender['city'] . $sender['district'] . $sender['town'] . $sender['detail'],//'发货地址', 'goods_name' => $sender['goods_name'],//'商品名称', 'goods_count' => $sender['goods_count'],//'商品数量', 'goods_weight' => $sender['goods_weight'],//'商品重量 单位g', 'goods_volume' => $sender['goods_volume'],//'商品体积 单位ml', 'recipient_name' => $recipient['name'],//'收件人姓名', 'recipient_mobile' => $recipient['mobile'],//'收件人手机号', 'recipient_phone' => $recipient['phone'],//'收件人固定电话', 'recipient_address' => $bill_order[$OnlineModel::USER_ADDRESS],//'收件人地址', 'template_url' => $sender['template_url'],//'面单模板地址', 'status' => 1,//'1正常 0取消', 'state' => 0,//'1正常 0删除', 'add_time' => time(),//'创建时间', ); $CNLogisticsOrderModel = D('CNLogisticsOrder'); $logistics_id = $CNLogisticsOrderModel->addOrder($addItem); if ($logistics_id) { $CNLogistics = new \Addons\Api\CNLogistics($this->token, $this->cpCode); $res = $CNLogistics->getExpressCode($sender, $recipient, $order_no); if ($res['status'] == 1) { $upItem = array( 'waybill_code' => $res['waybillCloudPrintResponseList'][0]['waybillCode'],//'电子面单号', 'print_data' => $res['waybillCloudPrintResponseList'][0]['printData'],//'面单模板打印数据', 'status' => 1,//'1正常 0取消', 'state' => 1,//'1正常 0删除', ); $CNLogisticsOrderModel->updateOrder(array('id' => $logistics_id), $upItem); $item = array( 'type' => 1, 'express_no' => $upItem['waybill_code'], 'express_name' => $express_name, 'express_code' => $express_code, 'bill_id' => $bill_id, 'merchant_id' => $this->merchant_id, 'store_id' => $this->store_id, 'logistics_id' => $logistics_id, 'uid' => $bill_order[$BillModel::UID], 'bill_order' => $bill_order, 'platform_type' => $this->role_info['platform_type'] ? $this->role_info['platform_type'] : 1 ); $res = A('Api/Express')->toSendGoods($item); $res['status'] == 1 && $res['msg'] = '取号成功,请前往“设置->电子面单->面单列表打印电子面单”'; } } else { $res['status'] = 0; $res['msg'] = '系统发生错误'; } $this->ajaxReturn($res); } /** * 大转盘需要改 * 查看物流页面 */ public function see_logistics() { // if (!C('KD100_CUSTOMER') || !C('KD100_KEY')) { // echo '系统未开启快递100查询物流功能,敬请期待'; // exit; // } $id = I('get.id'); $res = A('Api/Express')->getExpressInfo($id); // if ($res['status'] == 1) { $BillModel = D('RetailBillOrder'); $OnlineModel = D('RetailBillOnline'); $map = array( 'b.' . $BillModel::ID => $id, 'b.' . $BillModel::TYPE => 1, 'b.' . $BillModel::ORDER_TYPE => 1, 'b.' . $BillModel::REFUND_STATUS => 0, 'o.' . $OnlineModel::PICKUP_TYPE => array('in', '2,3'), 'o.' . $OnlineModel::DELIVERY_TYPE => 4, 'o.' . $OnlineModel::STATUS => array('neq', 1), ); $bill_order = $BillModel->getOrderLinkFind($map); $res['data']['order_no'] = $bill_order[$BillModel::ORDER_NO];; $res['data']['receiving_name'] = $bill_order[$OnlineModel::USER_NAME]; $res['data']['receiving_phone'] = $bill_order[$OnlineModel::USER_PHONE]; $res['data']['receiving_address'] = $bill_order[$OnlineModel::USER_ADDRESS]; $this->assign('logistics', json_encode($res['data'])); $this->display(); // } else { // echo $res['msg']; // } } public function expressNoSave() { $post = I("post."); $param = [ 'id',//主键id 'expressNo',//物流单号 'expressName',//物流名称 'expressCode',//快递公司编码 ]; foreach ($param as $value) { $isData = array_key_exists($value, $post); if ($isData === false) { $message = "缺少参数 '" . $value . "'"; $res = callBack(statusCode()['error'], $message); $this->ajaxReturn($res); } } if ($post['id'] == '' || $post['expressNo'] == '' || $post['expressName'] == '' || $post['expressCode'] == '') { $res = callBack(statusCode()['error'], '物流单号不能为空'); $this->ajaxReturn($res); } $expressNo = trim($post['expressNo']); //验证快递单号,长度不超过30位的数字和字母 if (!preg_match('/^[_0-9a-zA-Z]{1,30}$/i', $expressNo)) { $res = callBack(statusCode()['error'], '请输入长度不超过30位的规范快递单号'); $this->ajaxReturn($res); } $where = [ 'bill_id' => $post['id'], 'order_type' => 1,//order_type为1时 关联订单bill_order表id ]; $save = [ 'express_no' => $expressNo, 'express_name' => $post['expressName'], 'express_code' => $post['expressCode'], ]; $expressOrderModel = new ExpressOrderModel(); $data = $expressOrderModel->updateOrder($where, $save); if ($data === false) { $res = callBack(statusCode()['error'], '失败'); } else { $res = callBack(statusCode()['success'], '成功'); } $this->ajaxReturn($res); } /** * 直接填写token */ public function setToken() { $token = I('post.token'); $StoreConfigModel = D('StoreConfig'); $map = array('store_id' => $this->store_id); $item = array( 'cn_token' => $token, ); $old = $StoreConfigModel->getFind($map); if (empty($old)) { $item['store_id'] = $this->store_id; $update = $StoreConfigModel->addOrder($item); } else if ($token == $old['cn_token']) { $update = true; } else { $update = $StoreConfigModel->updateOrder($map, $item); } if ($update) { //操作日志记录 $source = 0;//请求来源: 0pc系统 1小助手 $type = 4;//平台:1合伙人端 2代理商端 3商户端 4门店端 $request_data = json_encode($_POST);//请求参数 json数据 $desc = '设置-重新填写token';//操作行为描述 action_log($source, $type, $request_data, $desc); $res['status'] = 1; $res['msg'] = '保存成功'; } else { $res['status'] = 0; $res['msg'] = '保存失败'; } $this->ajaxReturn($res); } /** * 电子面单列表 */ public function order() { if (!C('CN_APP_KEY') || !C('CN_APP_SECRET')) { echo '系统未开启电子面单功能,敬请期待'; } else { $arr = array( 'printFaceSheet' => '/index.php/Retail/Express/printFaceSheet', 'cancelExpress' => '/index.php/Retail/Express/cancelExpress', ); $authArr = checkFunction($arr); $this->assign('authArr', $authArr); $this->display(); } } /** * 获取电子面单列表 */ public function getExpressList() { $waybill_code = I('post.waybill_code'); $express_type = I('post.express_type'); $time = I('post.time'); $CNLogisticsOrderModel = D('CNLogisticsOrder'); $map = array( 'state' => 1, 'store_id' => $this->store_id, ); if (!empty($waybill_code)) { $map['waybill_code'] = $waybill_code; } if (!empty($express_type)) { $map['status'] = $express_type == 1 ? 1 : 0; } if (!empty($time)) { $start_time = strtotime($time[0]); $end_time = strtotime($time[1]); $map['add_time'] = array('between', array($start_time, $end_time)); } $fields = array( 'id',// 'id', 'cp_code',// '物流公司编码', 'branch_code',// '网点code', 'branch_name',// '网点名称', 'sender_name',// '发货人姓名', 'sender_mobile',// '发货人手机', 'sender_phone',// '发货人固定电话', 'sender_address',// '发货地址', 'goods_name',// '商品名称', 'goods_count',// '商品数量', 'goods_weight',// '商品重量 单位g', 'goods_volume',// '商品体积 单位ml', 'recipient_name',// '收件人姓名', 'recipient_mobile',//'收件人手机号', 'recipient_phone',// '收件人固定电话', 'recipient_address',// '收件人地址', 'waybill_code',//'电子面单号', 'status',// '1正常 0取消', 'add_time',// '创建时间', 'cancel_time',// '取消时间', ); $list = $CNLogisticsOrderModel->getSelect($map, $fields); $res['status'] = 1; if (!empty($list)) { foreach ($list as &$value) { $value['add_time'] = date('Y-m-d H:i:s', $value['add_time']); if (!empty($value['cancel_time'])) { $value['cancel_time'] = date('Y-m-d H:i:s', $value['cancel_time']); } } $res['msg'] = '获取成功'; } else { $res['msg'] = '暂无数据'; } $res['data'] = $list; $this->ajaxReturn($res); } /** * 电子面单取消 */ public function cancelExpress() { $id = I('post.id');//电子面单id if (empty($id)) { $res['status'] = 0; $res['msg'] = '请选择要取消的电子面单'; $this->ajaxReturn($res); } $CNLogisticsOrderModel = D('CNLogisticsOrder'); $map = array( 'state' => 1, 'store_id' => $this->store_id, 'id' => $id, ); $order = $CNLogisticsOrderModel->getFind($map); if (empty($order)) { $res['status'] = 0; $res['msg'] = '您要取消的面单不存在,请确认参数'; $this->ajaxReturn($res); } $CNLogistics = new \Addons\Api\CNLogistics($this->token, $order['cp_code']); $res = $CNLogistics->cancelExpress($order['waybill_code']); if ($res['status'] == 1) { if ($res['success'] == 'true' && $res['discardResult'] == 'true') { $updateItem = array( 'status' => 0, ); $CNLogisticsOrderModel->updateOrder($map, $updateItem); $this->cancelOrder($id); //操作日志记录 $source = 0;//请求来源: 0pc系统 1小助手 $type = 4;//平台:1合伙人端 2代理商端 3商户端 4门店端 $request_data = json_encode($_POST);//请求参数 json数据 $desc = '面单列表-取消面单';//操作行为描述 action_log($source, $type, $request_data, $desc); $res['msg'] = '取消成功'; } else { $res['status'] = 0; $res['msg'] = $res['errorMsg'] ? $res['errorMsg'] : '取消失败'; } } else { $res['status'] = 0; $res['msg'] = $res['errorMsg'] ? $res['errorMsg'] : '取消失败'; } $this->ajaxReturn($res); } /** * 取下电子免单订单修改 * $param $id 电子免单id */ protected function cancelOrder($id) { $bill_id = D("ExpressOrder")->getFindField(array('logistics_id' => $id), "bill_id"); $order_no = D("RetailBillOrder")->getFindField(array('id' => $bill_id), "order_no"); $parameter = array( 'order_no' => $order_no, 'merchant_id' => $this->merchant_id, 'store_id' => $this->store_id ); $res = A("Api/Delivery")->cancelDelivery($parameter); return $res; } /** * 获取打印面单参数 */ public function printFaceSheet() { $id = I('post.id');//电子面单id if (empty($id)) { $res['status'] = 0; $res['msg'] = '请选择要打印的电子面单'; $this->ajaxReturn($res); } $CNLogisticsOrderModel = D('CNLogisticsOrder'); $map = array( 'state' => 1, 'store_id' => $this->store_id, 'id' => $id, ); $fields = array( 'id', 'store_id', 'template_url', 'cp_code', 'print_data', 'waybill_code', ); $order = $CNLogisticsOrderModel->getFind($map, $fields); if (!empty($order)) { $res['data'] = $order; $res['status'] = 1; $res['msg'] = '获取成功'; } else { $res['status'] = 0; $res['msg'] = '您要打印的面单不存在,请确认参数'; } $this->ajaxReturn($res); } /** * 删除电子面单记录 */ public function delExpress() { $id = I('post.id');//电子面单id if (empty($id)) { $res['status'] = 0; $res['msg'] = '请选择要删除的电子面单'; $this->ajaxReturn($res); } $CNLogisticsOrderModel = D('CNLogisticsOrder'); $map = array( 'state' => 1, 'store_id' => $this->store_id, 'id' => $id, ); $order = $CNLogisticsOrderModel->getFind($map); if (!empty($order)) { if ($order['status'] != 1) { $update = array( 'state' => 0 ); $CNLogisticsOrderModel->updateOrder($map, $update); //操作日志记录 $source = 0;//请求来源: 0pc系统 1小助手 $type = 4;//平台:1合伙人端 2代理商端 3商户端 4门店端 $request_data = json_encode($_POST);//请求参数 json数据 $desc = '面单列表-删除';//操作行为描述 action_log($source, $type, $request_data, $desc); $res['status'] = 1; $res['msg'] = '删除成功'; } else { $res['status'] = 0; $res['msg'] = '操作有误:只能删除已取消的记录'; } } else { $res['status'] = 0; $res['msg'] = '您要删除的面单不存在,请确认参数'; } $this->ajaxReturn($res); } //商品信息 public function orderInfo() { $data = I('post.'); $SellClass = new Sell(); $result = $SellClass->sellList($data); $this->ajaxReturn($result); } //串号商品查询 public function searchSerial() { $data = I('post.'); $data['user_type'] = 4; $data['merchant_id'] = $this->merchant_id; $data['store_id'] = $this->store_id; $SerialClass = new SerialNumberGoods(); $result = $SerialClass->searchWarehouseSerial($data); $this->ajaxReturn($result); } //配送前确认商品信息confirmDistributionGoods public function confirmDistributionGoods() { $data = I('post.'); $data['merchant_id'] = $this->merchant_id; $data['store_id'] = $this->store_id; $data['type'] = 1; $SellClass = new Sell(); $result = $SellClass->confirmSellGoods($data); $this->ajaxReturn($result); } }