1597 lines
68 KiB
PHP
1597 lines
68 KiB
PHP
<?php
|
||
/**
|
||
* tpshop
|
||
* ============================================================================
|
||
* 版权所有 2015-2027 深圳搜豹网络科技有限公司,并保留所有权利。
|
||
* 网站地址: http://www.tp-shop.cn
|
||
* ----------------------------------------------------------------------------
|
||
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
|
||
* 不允许对程序代码以任何形式任何目的的再发布。
|
||
* 采用最新Thinkphp5助手函数特性实现单字母函数M D U等简写方式
|
||
* ============================================================================
|
||
* Author: 当燃
|
||
* Date: 2015-09-09
|
||
*/
|
||
namespace app\admin\controller;
|
||
use app\admin\logic\RefundLogic;
|
||
use app\admin\logic\KdniaoLogic;
|
||
use app\common\logic\PlaceOrder;
|
||
use app\common\model\Order as OrderModel;
|
||
use app\common\logic\Pay;
|
||
use app\common\model\OrderGoods;
|
||
use app\common\logic\OrderLogic;
|
||
use app\common\logic\MessageFactory;
|
||
use app\common\model\ReturnGoods;
|
||
use app\common\util\TpshopException;
|
||
use think\AjaxPage;
|
||
use think\Page;
|
||
use think\Db;
|
||
|
||
class Order extends Base {
|
||
public $order_status;
|
||
public $pay_status;
|
||
public $shipping_status;
|
||
/**
|
||
* 初始化操作
|
||
*/
|
||
public function _initialize() {
|
||
parent::_initialize();
|
||
C('TOKEN_ON',false); // 关闭表单令牌验证
|
||
$this->order_status = C('ORDER_STATUS');
|
||
$this->pay_status = C('PAY_STATUS');
|
||
$this->shipping_status = C('SHIPPING_STATUS');
|
||
// 订单 支付 发货状态
|
||
$this->assign('order_status',$this->order_status);
|
||
$this->assign('pay_status',$this->pay_status);
|
||
$this->assign('shipping_status',$this->shipping_status);
|
||
}
|
||
|
||
/**
|
||
*订单首页
|
||
*/
|
||
public function index(){
|
||
return $this->fetch();
|
||
}
|
||
|
||
/**
|
||
* Ajax首页
|
||
*/
|
||
public function ajaxindex(){
|
||
$begin = $this->begin;
|
||
$end = $this->end;
|
||
// 搜索条件
|
||
$condition = array('shop_id'=>0);
|
||
$keyType = I("key_type");
|
||
$keywords = I('keywords','','trim');
|
||
|
||
$consignee = ($keyType && $keyType == 'consignee') ? $keywords : I('consignee','','trim');
|
||
$consignee ? $condition['consignee'] = trim($consignee) : false;
|
||
|
||
if($begin && $end){
|
||
$condition['add_time'] = array('between',"$begin,$end");
|
||
}
|
||
$condition['prom_type'] = array('lt',5);
|
||
$order_sn = ($keyType && $keyType == 'order_sn') ? $keywords : I('order_sn') ;
|
||
$order_sn ? $condition['order_sn'] = trim($order_sn) : false;
|
||
|
||
I('order_status') != '' ? $condition['order_status'] = I('order_status') : false;
|
||
I('pay_status') != '' ? $condition['pay_status'] = I('pay_status') : false;
|
||
//I('pay_code') != '' ? $condition['pay_code'] = I('pay_code') : false;
|
||
if(I('pay_code')){
|
||
switch (I('pay_code')){
|
||
case '余额支付':
|
||
$condition['pay_name'] = I('pay_code');
|
||
break;
|
||
case '积分兑换':
|
||
$condition['pay_name'] = I('pay_code');
|
||
break;
|
||
case 'alipay':
|
||
$condition['pay_code'] = ['in',['alipay','alipayMobile']];
|
||
break;
|
||
case 'weixin':
|
||
$condition['pay_code'] = ['in',['weixin','weixinH5','miniAppPay']];
|
||
break;
|
||
case '其他方式':
|
||
$condition['pay_name'] = '';
|
||
$condition['pay_code'] = '';
|
||
break;
|
||
default:
|
||
$condition['pay_code'] = I('pay_code');
|
||
break;
|
||
}
|
||
}
|
||
|
||
I('shipping_status') != '' ? $condition['shipping_status'] = I('shipping_status') : false;
|
||
I('user_id') ? $condition['user_id'] = trim(I('user_id')) : false;
|
||
$sort_order = I('order_by','DESC').' '.I('sort');
|
||
$count = Db::name('order')->where($condition)->count();
|
||
$Page = new AjaxPage($count,20);
|
||
$show = $Page->show();
|
||
$orderList = Db::name('order')->where($condition)->limit($Page->firstRow,$Page->listRows)->order($sort_order)->select();
|
||
$this->assign('orderList',$orderList);
|
||
$this->assign('page',$show);// 赋值分页输出
|
||
$this->assign('pager',$Page);
|
||
return $this->fetch();
|
||
}
|
||
|
||
/**
|
||
* 虚拟订单列表
|
||
* @return mixed
|
||
*/
|
||
public function virtual_list(){
|
||
return $this->fetch();
|
||
}
|
||
public function ajaxVirtualList(){
|
||
$pay_status = I('pay_status');
|
||
$keyType = I("key_type");
|
||
$keywords = I('keywords','','trim');
|
||
$condition=['add_time'=>['between',"$this->begin,$this->end"],'prom_type'=>5];
|
||
$pay_status !='' ? $condition['pay_status'] = $pay_status : false;
|
||
if(I('pay_code')){
|
||
switch (I('pay_code')){
|
||
case '余额支付':
|
||
$condition['pay_name'] = I('pay_code');
|
||
break;
|
||
case 'alipay':
|
||
$condition['pay_code'] = ['in',['alipay','alipayMobile']];
|
||
break;
|
||
case 'weixin':
|
||
$condition['pay_code'] = ['in',['weixin','weixinH5','miniAppPay']];
|
||
break;
|
||
case '其他方式':
|
||
$condition['pay_name'] = '';
|
||
$condition['pay_code'] = '';
|
||
break;
|
||
default:
|
||
$condition['pay_code'] = I('pay_code');
|
||
break;
|
||
}
|
||
}
|
||
|
||
if(!empty($keywords)){
|
||
$keyType == 'mobile' ? $condition['mobile'] = $keywords : false;
|
||
$keyType == 'order_sn' ? $condition['order_sn'] = $keywords: false;
|
||
}
|
||
// halt($condition);
|
||
$count = Db::name('order')->where($condition)->count();
|
||
$Page = new AjaxPage($count,20);
|
||
$orderList = Db::name('order')->where($condition)->limit($Page->firstRow,$Page->listRows)->order('order_id desc')->select();
|
||
$this->assign('orderList',$orderList);
|
||
$this->assign('pager',$Page);
|
||
$this->assign('total_count',$count);
|
||
return $this->fetch();
|
||
}
|
||
|
||
// 虚拟订单
|
||
public function virtual_info(){
|
||
// header("Content-type: text/html; charset=utf-8");
|
||
//exit("请联系TPshop官网客服购买高级版支持此功能");
|
||
|
||
|
||
//查询订单
|
||
$pay_status = I('pay_status');
|
||
$keyType = I("key_type");
|
||
$keywords = I('keywords','','trim');
|
||
$condition=['add_time'=>['between',"$this->begin,$this->end"],'prom_type'=>5];
|
||
$pay_status !='' ? $condition['pay_status'] = $pay_status : false;
|
||
if(I('pay_code')){
|
||
switch (I('pay_code')){
|
||
case '余额支付':
|
||
$condition['pay_name'] = I('pay_code');
|
||
break;
|
||
case 'alipay':
|
||
$condition['pay_code'] = ['in',['alipay','alipayMobile']];
|
||
break;
|
||
case 'weixin':
|
||
$condition['pay_code'] = ['in',['weixin','weixinH5','miniAppPay']];
|
||
break;
|
||
case '其他方式':
|
||
$condition['pay_name'] = '';
|
||
$condition['pay_code'] = '';
|
||
break;
|
||
default:
|
||
$condition['pay_code'] = I('pay_code');
|
||
break;
|
||
}
|
||
}
|
||
|
||
if(!empty($keywords)){
|
||
$keyType == 'mobile' ? $condition['mobile'] = $keywords : false;
|
||
$keyType == 'order_sn' ? $condition['order_sn'] = $keywords: false;
|
||
}
|
||
$order = Db::name('order')->where($condition)->order('order_id desc')->find();
|
||
$this->assign('order',$order);
|
||
// $this->assign('pager',$Page);
|
||
// $this->assign('total_count',$count);
|
||
|
||
|
||
//print_r($order);die();
|
||
|
||
|
||
|
||
return $this->fetch();
|
||
}
|
||
|
||
public function virtual_cancel(){
|
||
$order_id = I('order_id/d');
|
||
if(IS_POST){
|
||
$admin_note = I('admin_note');
|
||
$order = M('order')->where(array('order_id'=>$order_id))->find();
|
||
if($order){
|
||
$r = M('order')->where(array('order_id'=>$order_id))->save(array('order_status'=>3,'admin_note'=>$admin_note));
|
||
if($r){
|
||
$commonOrder = new \app\common\logic\Order();
|
||
$commonOrder->setOrderById($order_id);
|
||
$commonOrder->orderActionLog('取消订单',$admin_note,$this->admin_id);
|
||
$this->ajaxReturn(array('status'=>1,'msg'=>'操作成功'));
|
||
}else{
|
||
$this->ajaxReturn(array('status'=>-1,'msg'=>'操作失败'));
|
||
}
|
||
}else{
|
||
$this->ajaxReturn(array('status'=>-1,'msg'=>'订单不存在'));
|
||
}
|
||
}
|
||
$order = M('order')->where(array('order_id'=>$order_id))->find();
|
||
$this->assign('order',$order);
|
||
return $this->fetch();
|
||
}
|
||
|
||
public function verify_code(){
|
||
if(IS_POST){
|
||
$vr_code = trim(I('vr_code'));
|
||
if (!preg_match('/^[a-zA-Z0-9]{15,18}$/',$vr_code)) {
|
||
$this->ajaxReturn(['status'=>0,'msg' => '兑换码格式错误,请重新输入']);
|
||
}
|
||
$vr_code_info = M('vr_order_code')->where(array('vr_code'=>$vr_code))->find();
|
||
$order = M('order')->where(['order_id'=>$vr_code_info['order_id']])->field('order_status,order_sn,user_note,user_id')->find();
|
||
if($order['order_status'] >2){
|
||
$this->ajaxReturn(['status'=>0,'msg' => '兑换码对应订单状态不符合要求']);
|
||
}
|
||
if(empty($vr_code_info)){
|
||
$this->ajaxReturn(['status'=>0,'msg' => '该兑换码不存在']);
|
||
}
|
||
if ($vr_code_info['vr_state'] == '1') {
|
||
$this->ajaxReturn(['status'=>0,'msg' => '该兑换码已被使用']);
|
||
}
|
||
if ($vr_code_info['vr_indate'] < time()) {
|
||
$this->ajaxReturn(['status'=>0,'msg'=>'该兑换码已过期,使用截止日期为: '.date('Y-m-d H:i:s',$vr_code_info['vr_indate'])]);
|
||
}
|
||
if ($vr_code_info['refund_lock'] > 0) {//退款锁定状态:0为正常,1为锁定(待审核),2为同意
|
||
$this->ajaxReturn(['status'=>0,'msg'=> '该兑换码已申请退款,不能使用']);
|
||
}
|
||
$update['vr_state'] = 1;
|
||
$update['vr_usetime'] = time();
|
||
M('vr_order_code')->where(array('vr_code'=>$vr_code))->save($update);
|
||
//检查订单是否完成
|
||
$condition = array();
|
||
$condition['vr_state'] = 0;
|
||
$condition['refund_lock'] = array('in',array(0,1));
|
||
$condition['order_id'] = $vr_code_info['order_id'];
|
||
$condition['vr_indate'] = array('gt',time());
|
||
$vr_order = M('vr_order_code')->where($condition)->select();
|
||
if(empty($vr_order)){
|
||
$data['order_status'] = 2; //此处不能直接为4,不然前台不能评论
|
||
$data['shipping_status'] = 1; //此处不能直接为4,不然前台不能评论
|
||
$data['confirm_time'] = time();
|
||
M('order')->where(['order_id'=>$vr_code_info['order_id']])->save($data);
|
||
M('order_goods')->where(['order_id'=>$vr_code_info['order_id']])->save(['is_send'=>1]); //把订单状态改为已收货
|
||
}
|
||
$order_goods = M('order_goods')->where(['order_id'=>$vr_code_info['order_id']])->find();
|
||
if($order_goods){
|
||
if(empty($vr_order)){
|
||
// 商品待评价提醒
|
||
$goods = M('goods')->where(["goods_id" => $order_goods['goods_id']])->field('original_img')->find();
|
||
$send_data = [
|
||
'message_title' => '商品待评价',
|
||
'message_content' => $order_goods['goods_name'],
|
||
'img_uri' => $goods['original_img'],
|
||
'order_sn' => $order_goods['rec_id'],
|
||
'order_id' => $vr_code_info['order_id'],
|
||
'mmt_code' => 'evaluate_logistics',
|
||
'type' => 4,
|
||
'users' => [$order['user_id']],
|
||
'category' => 2,
|
||
'message_val' => []
|
||
];
|
||
$messageFactory = new \app\common\logic\MessageFactory();
|
||
$messageLogic = $messageFactory->makeModule($send_data);
|
||
$messageLogic->sendMessage();
|
||
}
|
||
$result = [
|
||
'vr_code'=>$vr_code,
|
||
'order_goods'=>$order_goods,
|
||
'order'=>$order,
|
||
'goods_image'=>goods_thum_images($order_goods['goods_id'],240,240),
|
||
];
|
||
$this->ajaxReturn(['status'=>1,'msg'=>'兑换成功','result'=>$result]);
|
||
}else{
|
||
$this->ajaxReturn(['status'=>0,'msg'=>'虚拟订单商品不存在']);
|
||
}
|
||
}
|
||
return $this->fetch();
|
||
}
|
||
/**
|
||
* 虚拟订单临时支付方法,以后要删除
|
||
*/
|
||
public function generateVirtualCode(){
|
||
$order_id = I('order_id/d');
|
||
|
||
|
||
// 获取操作表
|
||
$order = M('order')->where(array('order_id'=>$order_id))->find();
|
||
|
||
|
||
|
||
//print_r($order);die();
|
||
|
||
update_pay_status($order['order_sn'], ['admin_id'=>session('admin_id'),'note'=>'订单付款成功']);
|
||
$vr_order_code = Db::name('vr_order_code')->where('order_id',$order_id)->find();
|
||
if(!empty($vr_order_code)){
|
||
$this->success('成功生成兑换码', U('Order/virtual_info',['order_id'=>$order_id]), 1);
|
||
}else{
|
||
$this->error('生成兑换码失败', U('Order/virtual_info',['order_id'=>$order_id]), 1);
|
||
}
|
||
}
|
||
/**
|
||
* ajax 发货订单列表
|
||
*/
|
||
public function ajaxdelivery(){
|
||
$condition = array();
|
||
I('consignee') ? $condition['consignee'] = trim(I('consignee')) : false;
|
||
I('order_sn') != '' ? $condition['order_sn'] = trim(I('order_sn')) : false;
|
||
$shipping_status = I('shipping_status');
|
||
$condition['shipping_status'] = empty($shipping_status) ? array('neq',1) : $shipping_status;
|
||
$condition['order_status'] = array('in','1,2,4');
|
||
$condition['prom_type'] = ['neq',5];
|
||
$count = M('order')->where($condition)->count();
|
||
$Page = new AjaxPage($count,10);
|
||
//搜索条件下 分页赋值
|
||
foreach($condition as $key=>$val) {
|
||
if(!is_array($val)){
|
||
$Page->parameter[$key] = urlencode($val);
|
||
}
|
||
}
|
||
$show = $Page->show();
|
||
if($shipping_status)
|
||
$orderList = M('order')->where($condition)->limit($Page->firstRow.','.$Page->listRows)->field("*,IF(shipping_name='','无需物流',shipping_name) as shipping_name")->order('add_time DESC')->select();
|
||
else
|
||
$orderList = M('order')->where($condition)->limit($Page->firstRow.','.$Page->listRows)->order('add_time DESC')->select();
|
||
$this->assign('orderList',$orderList);
|
||
$this->assign('page',$show);// 赋值分页输出
|
||
$this->assign('pager',$Page);
|
||
return $this->fetch();
|
||
}
|
||
|
||
public function refund_order_list(){
|
||
I('consignee') ? $condition['consignee'] = trim(I('consignee')) : false;
|
||
I('order_sn') != '' ? $condition['order_sn'] = trim(I('order_sn')) : false;
|
||
I('mobile') != '' ? $condition['mobile'] = trim(I('mobile')) : false;
|
||
$prom_type = input('prom_type');
|
||
if($prom_type){
|
||
$condition['prom_type'] = $prom_type;
|
||
}
|
||
$condition['shipping_status'] = 0;
|
||
$condition['order_status'] = 3;
|
||
$condition['pay_status'] = array('gt',0);
|
||
$count = M('order')->where($condition)->count();
|
||
$Page = new Page($count,10);
|
||
$show = $Page->show();
|
||
$orderList = M('order')->where($condition)->limit($Page->firstRow.','.$Page->listRows)->order('add_time DESC')->select();
|
||
$this->assign('orderList',$orderList);
|
||
$this->assign('page',$show);// 赋值分页输出
|
||
$this->assign('pager',$Page);
|
||
return $this->fetch();
|
||
}
|
||
|
||
public function refund_order_info($order_id){
|
||
$orderModel = new OrderModel();
|
||
$orderObj = $orderModel::get(['order_id'=>$order_id]);
|
||
$order =$orderObj->append(['full_address','orderGoods'])->toArray();
|
||
$this->assign('order',$order);
|
||
return $this->fetch();
|
||
}
|
||
|
||
/**
|
||
* 取消订单退款
|
||
* @throws \think\Exception
|
||
*/
|
||
public function refund_order(){
|
||
$data = I('post.');
|
||
$orderModel = new OrderModel();
|
||
$order = $orderModel::get(['order_id'=>$data['order_id']]);
|
||
if(!$order){
|
||
$this->error('订单不存在或参数错误');
|
||
}
|
||
if($data['pay_status'] == 3){
|
||
$messageFactory = new \app\common\logic\MessageFactory();
|
||
$messageLogic = $messageFactory->makeModule(['category' => 2]);
|
||
|
||
|
||
$refundLogic = new RefundLogic();
|
||
if($data['refund_type'] == 1){
|
||
//取消订单退款退余额
|
||
if($refundLogic->updateRefundOrder($order,1)){
|
||
$messageLogic->sendRefundNotice($data['order_id'],$order['order_amount']);
|
||
$this->success('成功退款到账户余额');
|
||
}else{
|
||
$this->error('退款失败');
|
||
}
|
||
}
|
||
if($data['refund_type']== 0){
|
||
//取消订单支付原路退回
|
||
$pay_code_arr = ['weixin'/*PC+公众号微信支付*/ , 'alipay'/*APP,PC支付宝支付*/ , 'alipayMobile'/*手机支付宝支付*/ , 'miniAppPay'/*小程序微信支付*/ , 'appWeixinPay'/*APP微信支付*/];
|
||
if(in_array($order['pay_code'] , $pay_code_arr)){
|
||
header("Content-type: text/html; charset=utf-8");
|
||
exit("请联系TPshop官网客服购买高级版支持此功能");
|
||
}else{
|
||
$this->error('该订单支付方式不支持在线退回');
|
||
}
|
||
}
|
||
}else{
|
||
M('order')->where(array('order_id'=>$order['order_id']))->save($data);
|
||
$this->success('拒绝退款操作成功');
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 订单详情
|
||
* @return mixed
|
||
*/
|
||
public function detail(){
|
||
$order_id = input('order_id', 0);
|
||
$orderModel = new OrderModel();
|
||
$order = $orderModel::get(['order_id'=>$order_id]);
|
||
if(empty($order)){
|
||
$this->error('订单不存在或已被删除');
|
||
}
|
||
$this->assign('order', $order);
|
||
return $this->fetch();
|
||
}
|
||
|
||
/**
|
||
* 获取订单操作记录
|
||
*/
|
||
public function getOrderAction(){
|
||
$order_id = input('order_id/d',0);
|
||
$order_id <= 0 && $this->ajaxReturn(['status'=>1,'msg'=>'参数错误!!']);
|
||
$orderModel = new OrderModel();
|
||
$orderObj = $orderModel::get(['order_id'=>$order_id]);
|
||
$order = $orderObj->toArray();
|
||
// 获取操作记录
|
||
$action_log = Db::name('order_action')->where(['order_id'=>$order_id])->order('log_time desc')->select();
|
||
$admins = M("admin")->getField("admin_id , user_name", true);
|
||
$user = M("users")->field('user_id,nickname')->where(['user_id'=>$order['user_id']])->find();
|
||
//查找用户昵称
|
||
foreach ($action_log as $k => $v){
|
||
if ($v['action_user'] == 0){
|
||
$action_log["$k"]['action_user_name'] = '用户:'.$user['nickname'];
|
||
}else{
|
||
$action_log["$k"]['action_user_name'] = '管理员:'.$admins[$v['action_user']];
|
||
}
|
||
$action_log["$k"]["log_time"] = date('Y-m-d H:i:s',$v['log_time']);
|
||
$action_log["$k"]["order_status"] = $this->order_status[$v['order_status']];
|
||
$action_log["$k"]["pay_status"] = $this->pay_status[$v['pay_status']];
|
||
$action_log["$k"]["shipping_status"] = $this->shipping_status[$v['shipping_status']];
|
||
}
|
||
$this->ajaxReturn(['status'=>1,'msg'=>'参数错误!!','data'=>$action_log]);
|
||
}
|
||
|
||
/**
|
||
* 拆分订单
|
||
*/
|
||
public function split_order(){
|
||
$order_id = I('order_id');
|
||
$orderModel = new OrderModel();
|
||
$orderObj = $orderModel::get(['order_id'=>$order_id]);
|
||
$order =$orderObj->append(['full_address','orderGoods'])->toArray();
|
||
if($order['pay_status'] == 0){
|
||
$this->error('未支付订单不允许拆分');
|
||
exit;
|
||
}
|
||
if($order['shipping_status'] != 0){
|
||
$this->error('已发货订单不允许编辑');
|
||
exit;
|
||
}
|
||
$orderGoods = $order['orderGoods'];
|
||
if($orderGoods){
|
||
$orderGoods = collection($orderGoods)->toArray();
|
||
}
|
||
if(IS_POST){
|
||
//################################先处理原单剩余商品和原订单信息
|
||
$old_goods = I('old_goods/a');
|
||
foreach ($orderGoods as $val){
|
||
$all_goods[$val['rec_id']] = $val;//所有商品信息
|
||
}
|
||
|
||
|
||
//################################新单处理
|
||
for($i=1;$i<20;$i++){
|
||
$temp = $this->request->param($i.'_old_goods/a');
|
||
if(!empty($temp)){
|
||
$split_goods[] = $temp;
|
||
}
|
||
}
|
||
|
||
foreach ($split_goods as $key=>$vrr){
|
||
foreach ($vrr as $k=>$v){
|
||
$all_goods[$k]['goods_num'] = $v;
|
||
$brr[$key][] = $all_goods[$k];
|
||
}
|
||
}
|
||
|
||
$user_money = $order['user_money'] / $order['total_amount'];
|
||
$integral = $order['integral'] / $order['total_amount'];
|
||
$order_amount = $order['order_amount'] / $order['total_amount'];
|
||
$split_user_money = 0;// 累计
|
||
$split_integral = 0;
|
||
$split_order_amount = 0;
|
||
|
||
foreach($brr as $k=>$goods){
|
||
$newPay = new Pay();
|
||
try{
|
||
$newPay->setUserId($order['user_id']);
|
||
$newPay->payGoodsList($goods);
|
||
$newPay->delivery($order['district']);
|
||
$newPay->orderPromotion();
|
||
} catch (TpshopException $t) {
|
||
$error = $t->getErrorArr();
|
||
$this->error($error['msg']);
|
||
}
|
||
$new_order = $order;
|
||
$new_order['order_sn'] = date('YmdHis').mt_rand(1000,9999);
|
||
$new_order['parent_sn'] = $order['order_sn'];
|
||
//修改订单费用
|
||
$new_order['goods_price'] = $newPay->getGoodsPrice(); // 商品总价
|
||
$new_order['total_amount'] = $newPay->getTotalAmount(); // 订单总价
|
||
// if($order['pay_name'] == '余额支付'){
|
||
//修改拆分订单余额展示
|
||
// $new_order['user_money'] = $newPay->getTotalAmount();
|
||
$new_order['user_money'] = floor(($user_money * $newPay->getTotalAmount())*100)/100;//向下取整保留2位小数点
|
||
// }else{
|
||
// $new_order['order_amount'] = $newPay->getOrderAmount(); // 应付金额
|
||
$new_order['order_amount'] = floor(($order_amount * $newPay->getTotalAmount())*100)/100;//向下取整保留2位小数点
|
||
// }
|
||
$new_order['integral'] = floor(($integral * $newPay->getTotalAmount())*100)/100;//向下取整保留2位小数点
|
||
//前面按订单总比例拆分,剩余全部给最后一个订单
|
||
if($k == count($brr)-1){
|
||
$new_order['user_money'] = $order['user_money']-$split_user_money;
|
||
$new_order['integral'] = $order['integral']-$split_integral;
|
||
$new_order['order_amount'] = $order['order_amount']-$split_order_amount;
|
||
}else{
|
||
$split_user_money += $new_order['user_money'];
|
||
$split_integral += $new_order['integral'];
|
||
$split_order_amount += $new_order['order_amount'];
|
||
}
|
||
if($order['integral'] > 0 ){
|
||
$new_order['integral_money'] = $new_order['integral']/($order['integral']/$order['integral_money']);
|
||
}
|
||
$new_order['add_time'] = time();
|
||
unset($new_order['order_id']);
|
||
$new_order_id = DB::name('order')->insertGetId($new_order);//插入订单表
|
||
foreach ($goods as $vv){
|
||
$vv['order_id'] = $new_order_id;
|
||
unset($vv['rec_id']);
|
||
$nid = M('order_goods')->add($vv);//插入订单商品表
|
||
}
|
||
}
|
||
//拆分订单后删除原父订单信息
|
||
$orderObj->delete();
|
||
DB::name('order_goods')->where(['order_id'=>$order_id])->delete();
|
||
|
||
//################################新单处理结束
|
||
$this->success('操作成功',U('Admin/Order/index'));
|
||
exit;
|
||
}
|
||
|
||
foreach ($orderGoods as $val){
|
||
$brr[$val['rec_id']] = array('goods_num'=>$val['goods_num'],'goods_name'=>getSubstr($val['goods_name'], 0, 35).$val['spec_key_name']);
|
||
}
|
||
$this->assign('order',$order);
|
||
$this->assign('goods_num_arr',json_encode($brr));
|
||
$this->assign('orderGoods',$orderGoods);
|
||
return $this->fetch();
|
||
}
|
||
|
||
/**
|
||
* 价钱修改
|
||
*/
|
||
public function editprice($order_id){
|
||
$orderModel = new OrderModel();
|
||
$orderObj = $orderModel::get(['order_id'=>$order_id]);
|
||
$order = $orderObj->toArray();
|
||
$this->editable($order);
|
||
if(IS_POST){
|
||
$admin_id = session('admin_id');
|
||
if(empty($admin_id)){
|
||
$this->error('非法操作');
|
||
exit;
|
||
}
|
||
$update['discount'] = I('post.discount');
|
||
$update['shipping_price'] = I('post.shipping_price');
|
||
if($update['shipping_price'] < 0){
|
||
$this->error('运费不能小于0');
|
||
exit;
|
||
}
|
||
//total_amount-->goods_price
|
||
$update['order_amount'] = $order['goods_price']+$update['shipping_price']-$update['discount']-$order['user_money']-$order['integral_money']-$order['coupon_price']-$order['order_prom_amount'];
|
||
$row = M('order')->where(array('order_id'=>$order_id))->save($update);
|
||
if(!$row){
|
||
$this->success('没有更新数据',U('Admin/Order/editprice',array('order_id'=>$order_id)));
|
||
}else{
|
||
$this->success('操作成功',U('Admin/Order/detail',array('order_id'=>$order_id)));
|
||
}
|
||
exit;
|
||
}
|
||
$this->assign('order',$order);
|
||
return $this->fetch();
|
||
}
|
||
|
||
/**
|
||
* 订单删除
|
||
* @param int $id 订单id
|
||
*/
|
||
public function delete_order(){
|
||
$order_id = I('post.order_id/d',0);
|
||
$order = new \app\common\logic\Order($order_id);
|
||
$order->setOrderById($order_id);
|
||
try{
|
||
$order->adminDelOrder();
|
||
$this->ajaxReturn(['status' => 1, 'msg' => '删除成功']);
|
||
}catch (TpshopException $t){
|
||
$error = $t->getErrorArr();
|
||
$this->ajaxReturn($error);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 订单取消付款
|
||
* @param $order_id
|
||
* @return mixed
|
||
*/
|
||
public function pay_cancel($order_id){
|
||
if(I('remark')){
|
||
$data = I('post.');
|
||
$note = array('退款到用户余额','已通过其他方式退款','不处理,误操作项');
|
||
if($data['refundType'] == 0 && $data['amount']>0){
|
||
accountLog($data['user_id'], $data['amount'], 0, '退款到用户余额');
|
||
|
||
// 退款消息
|
||
$messageFactory = new MessageFactory();
|
||
$messageLogic = $messageFactory->makeModule(['category' => 2]);
|
||
$messageLogic->sendRefundNotice($data['order_id'],$data['amount']);
|
||
|
||
}
|
||
$orderLogic = new OrderLogic();
|
||
$orderLogic->orderProcessHandle($data['order_id'],'pay_cancel');
|
||
$commonOrder = new \app\common\logic\Order();
|
||
$commonOrder->setOrderById($data['order_id']);
|
||
$d = $commonOrder->orderActionLog($data['remark'].':'.$note[$data['refundType']],'支付取消',$this->admin_id);
|
||
if($d){
|
||
exit("<script>window.parent.pay_callback(1);</script>");
|
||
}else{
|
||
exit("<script>window.parent.pay_callback(0);</script>");
|
||
}
|
||
}else{
|
||
$order = M('order')->where("order_id=$order_id")->find();
|
||
$this->assign('order',$order);
|
||
return $this->fetch();
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 订单打印
|
||
* @param string $id
|
||
* @return mixed
|
||
*/
|
||
public function order_print($id=''){
|
||
if($id){
|
||
$order_id = $id;
|
||
}else{
|
||
$order_id = I('order_id');
|
||
}
|
||
$orderModel = new OrderModel();
|
||
$orderObj = $orderModel::get(['order_id'=>$order_id]);
|
||
$order =$orderObj->append(['full_address','orderGoods','delivery_method'])->toArray();
|
||
// halt($order['orderGoods']);
|
||
$order['province'] = getRegionName($order['province']);
|
||
$order['city'] = getRegionName($order['city']);
|
||
$order['district'] = getRegionName($order['district']);
|
||
$order['full_address'] = $order['province'].' '.$order['city'].' '.$order['district'].' '. $order['address'];
|
||
if($id){
|
||
return $order;
|
||
}else{
|
||
$shop = tpCache('shop_info');
|
||
$area_list = Db::name('region')->where('id', 'IN', [$shop['province'], $shop['city'], $shop['district']])->order('level asc')->select();
|
||
$shop['address'] =$area_list[0]['name'].' '.$area_list[1]['name'].' '.$area_list[2]['name'].' '.$shop['address'];
|
||
$this->assign('order',$order);
|
||
$this->assign('shop',$shop);
|
||
$template = I('template','picking');
|
||
return $this->fetch($template);
|
||
}
|
||
}
|
||
|
||
/**
|
||
*批量打印发货单
|
||
*/
|
||
public function delivery_print(){
|
||
$ids =input('print_ids');
|
||
$order_ids=trim($ids,',');
|
||
$orderModel= new OrderModel();
|
||
$orderObj = $orderModel->whereIn('order_id',$order_ids)->select();
|
||
if ($orderObj){
|
||
$order = collection($orderObj)->append(['orderGoods','full_address'])->toArray();
|
||
}
|
||
$shop = tpCache('shop_info');
|
||
$this->assign('order',$order);
|
||
$this->assign('shop',$shop);
|
||
$template = I('template','print');
|
||
return $this->fetch($template);
|
||
}
|
||
|
||
/**
|
||
* 快递单打印
|
||
*/
|
||
public function shipping_print($id=''){
|
||
if($id){
|
||
$order_id = $id;
|
||
}else{
|
||
$order_id = I('get.order_id');
|
||
}
|
||
$orderModel = new OrderModel();
|
||
$orderObj = $orderModel::get(['order_id'=>$order_id]);
|
||
$order =$orderObj->append(['full_address'])->toArray();
|
||
//查询是否存在订单及物流
|
||
$shipping = Db::name('shipping')->where('shipping_code',$order['shipping_code'])->find();
|
||
if(!$shipping){
|
||
$this->error('快递公司不存在');
|
||
}
|
||
if(empty($shipping['template_html'])){
|
||
$this->error('请设置'.$shipping['shipping_name'].'打印模板');
|
||
}
|
||
$shop = tpCache('shop_info');//获取网站信息
|
||
$shop['province'] = empty($shop['province']) ? '' : getRegionName($shop['province']);
|
||
$shop['city'] = empty($shop['city']) ? '' : getRegionName($shop['city']);
|
||
$shop['district'] = empty($shop['district']) ? '' : getRegionName($shop['district']);
|
||
|
||
$order['province'] = getRegionName($order['province']);
|
||
$order['city'] = getRegionName($order['city']);
|
||
$order['district'] = getRegionName($order['district']);
|
||
$template_var = array("发货点-名称", "发货点-联系人", "发货点-电话", "发货点-省份", "发货点-城市",
|
||
"发货点-区县", "发货点-手机", "发货点-详细地址", "收件人-姓名", "收件人-手机", "收件人-电话",
|
||
"收件人-省份", "收件人-城市", "收件人-区县", "收件人-邮编", "收件人-详细地址", "时间-年", "时间-月",
|
||
"时间-日","时间-当前日期","订单-订单号", "订单-备注","订单-配送费用");
|
||
$content_var = array($shop['store_name'],$shop['contact'],$shop['phone'],$shop['province'],$shop['city'],
|
||
$shop['district'],$shop['phone'],$shop['address'],$order['consignee'],$order['mobile'],$order['phone'],
|
||
$order['province'],$order['city'],$order['district'],$order['zipcode'],$order['address'],date('Y'),date('M'),
|
||
date('d'),date('Y-m-d'),$order['order_sn'],$order['admin_note'],$order['shipping_price'],
|
||
);
|
||
$shipping['template_html_replace'] = str_replace($template_var, $content_var, $shipping['template_html']);
|
||
if($id){
|
||
return $shipping;
|
||
}else{
|
||
$shippings[0]=$shipping;
|
||
$this->assign('shipping',$shippings);
|
||
return $this->fetch("print_express");
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
*批量打印快递单
|
||
*/
|
||
public function shipping_print_batch(){
|
||
$ids=I('post.ids3');
|
||
$ids=substr($ids,0,-1);
|
||
$ids=explode(',', $ids);
|
||
if(!is_numeric($ids[0])){
|
||
unset($ids[0]);
|
||
}
|
||
|
||
$shippings=array();
|
||
foreach ($ids as $k => $v) {
|
||
$shippings[$k]=$this->shipping_print($v);
|
||
}
|
||
$this->assign('shipping',$shippings);
|
||
return $this->fetch("print_express");
|
||
}
|
||
|
||
/**
|
||
* 生成发货单
|
||
*/
|
||
public function deliveryHandle(){
|
||
$orderLogic = new OrderLogic();
|
||
$data = I('post.');
|
||
$res = $orderLogic->deliveryHandle($data);
|
||
if($res['status'] == 1){
|
||
if($data['send_type'] == 2 && !empty($res['printhtml'])){
|
||
$this->assign('printhtml',$res['printhtml']);
|
||
return $this->fetch('print_online');
|
||
}
|
||
$this->success('操作成功',U('Admin/Order/delivery_info',array('order_id'=>$data['order_id'])));
|
||
}else{
|
||
$this->error($res['msg'],U('Admin/Order/delivery_info',array('order_id'=>$data['order_id'])));
|
||
}
|
||
}
|
||
|
||
public function delivery_info($id=''){
|
||
if($id){
|
||
$order_id=$id;
|
||
}else{
|
||
$order_id = I('order_id');
|
||
}
|
||
|
||
$orderGoodsMdel = new OrderGoods();
|
||
$orderModel = new OrderModel();
|
||
$orderObj = $orderModel->where(['order_id'=>$order_id])->find();
|
||
$order =$orderObj->append(['full_address'])->toArray();
|
||
$orderGoods = $orderGoodsMdel::all(['order_id'=>$order_id,'is_send'=>['lt',2]]);
|
||
if($id){
|
||
if(!$orderGoods){
|
||
$this->error('所选订单有商品已完成退货或换货');//已经完成售后的不能再发货
|
||
}
|
||
}else{
|
||
if(!$orderGoods){
|
||
$this->error('此订单商品已完成退货或换货');//已经完成售后的不能再发货
|
||
}
|
||
}
|
||
|
||
if($id){
|
||
$order['orderGoods']=$orderGoods;
|
||
$order['goods_num']=count($orderGoods);
|
||
return $order;
|
||
}else{
|
||
$delivery_record = M('delivery_doc')->alias('d')->join('__ADMIN__ a','a.admin_id = d.admin_id')->where('d.order_id='.$order_id)->select();
|
||
if($delivery_record){
|
||
$order['invoice_no'] = $delivery_record[count($delivery_record)-1]['invoice_no'];
|
||
}
|
||
$this->assign('order',$order);
|
||
$this->assign('orderGoods',$orderGoods);
|
||
$this->assign('delivery_record',$delivery_record);//发货记录
|
||
$shipping_list = Db::name('shipping')->field('shipping_name,shipping_code')->where('')->select();
|
||
$this->assign('shipping_list',$shipping_list);
|
||
$express_switch = tpCache('express.express_switch');
|
||
$this->assign('express_switch',$express_switch);
|
||
return $this->fetch();
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 发货单列表
|
||
*/
|
||
public function delivery_list(){
|
||
return $this->fetch();
|
||
}
|
||
|
||
/**
|
||
*批量发货
|
||
*/
|
||
public function delivery_batch(){
|
||
header("Content-type: text/html; charset=utf-8");
|
||
exit("请联系TPshop官网客服购买高级版支持此功能");
|
||
}
|
||
|
||
/**
|
||
*批量发货处理
|
||
*/
|
||
public function delivery_batch_handle(){
|
||
header("Content-type: text/html; charset=utf-8");
|
||
exit("请联系TPshop官网客服购买高级版支持此功能");
|
||
}
|
||
|
||
/**
|
||
* 删除某个退换货申请
|
||
*/
|
||
public function return_del(){
|
||
$id = I('get.id');
|
||
M('return_goods')->where("id = $id")->delete();
|
||
$this->success('成功删除!');
|
||
}
|
||
|
||
/**
|
||
* 退换货操作
|
||
*/
|
||
public function return_info()
|
||
{
|
||
$return_id = I('id');
|
||
$return_goods = M('return_goods')->where(['id'=> $return_id])->find();
|
||
!$return_goods && $this->error('非法操作!');
|
||
$user = M('users')->where(['user_id' => $return_goods['user_id']])->find();
|
||
$order = M('order')->where(array('order_id'=>$return_goods['order_id']))->find();
|
||
$order['goods'] = M('order_goods')->where(['rec_id' => $return_goods['rec_id']])->find();
|
||
$return_goods['delivery'] = unserialize($return_goods['delivery']); //订单的物流信息,服务类型为换货会显示
|
||
$return_goods['seller_delivery'] = unserialize($return_goods['seller_delivery']); //订单的物流信息,服务类型为换货会显示
|
||
if($return_goods['imgs']) $return_goods['imgs'] = explode(',', $return_goods['imgs']);
|
||
$this->assign('id',$return_id); // 用户
|
||
$this->assign('user',$user); // 用户
|
||
$this->assign('return_goods',$return_goods);// 退换货
|
||
$this->assign('order',$order);//退货订单信息
|
||
$this->assign('return_type',C('RETURN_TYPE'));//退货订单信息
|
||
$this->assign('refund_status',C('REFUND_STATUS'));
|
||
return $this->fetch();
|
||
}
|
||
|
||
/**
|
||
*修改退货状态
|
||
*/
|
||
public function checkReturniInfo()
|
||
{
|
||
$orderLogic = new OrderLogic();
|
||
$post_data = I('post.');
|
||
$return_goods = Db::name('return_goods')->where(['id'=>$post_data['id']])->find();
|
||
!$return_goods && $this->ajaxReturn(['status'=>-1,'msg'=>'非法操作!']);
|
||
$type_msg = C('RETURN_TYPE');
|
||
$status_msg = C('REFUND_STATUS');
|
||
switch ($post_data['status']){
|
||
case -1 :$post_data['checktime'] = time();break;
|
||
case 1 :$post_data['checktime'] = time();break;
|
||
case 3 :$post_data['receivetime'] = time();break; //卖家收货时间
|
||
default;
|
||
}
|
||
if($return_goods['type'] > 0 && $post_data['status'] == 4){
|
||
$post_data['seller_delivery']['express_time'] = date('Y-m-d H:i:s');
|
||
$post_data['seller_delivery'] = serialize($post_data['seller_delivery']); //换货的物流信息
|
||
Db::name('order_goods')->where(['rec_id'=>$return_goods['rec_id']])->save(['is_send'=>2]);
|
||
}
|
||
$note ="退换货:{$type_msg[$return_goods['type']]}, 状态:{$status_msg[$post_data['status']]},处理备注:{$post_data['remark']}";
|
||
$result = M('return_goods')->where(['id'=>$post_data['id']])->save($post_data);
|
||
if($result && $post_data['status']==1 && $return_goods['type']!=2)
|
||
{
|
||
//审核通过才更改订单商品状态,进行退货,退款时要改对应商品修改库存
|
||
$order = OrderModel::get($return_goods['order_id']);
|
||
$commonOrderLogic = new OrderLogic();
|
||
$commonOrderLogic->alterReturnGoodsInventory($order,$return_goods['rec_id']); //审核通过,恢复原来库存
|
||
if($return_goods['type'] < 2){
|
||
$orderLogic->disposereRurnOrderCoupon($return_goods); // 是退货可能要处理优惠券
|
||
// 退款提醒 改在 refund_balance或refund_back方法进行提醒
|
||
//$messageFactory = new \app\common\logic\MessageFactory();
|
||
//$messageLogic = $messageFactory->makeModule(['category' => 2]);
|
||
// 发退款消息
|
||
//$messageLogic->sendRefundNotice($return_goods['order_id'], $return_goods['refund_money'] + $return_goods['refund_deposit']);
|
||
}
|
||
}
|
||
$commonOrder = new \app\common\logic\Order();
|
||
$commonOrder->setOrderById($return_goods['order_id']);
|
||
$commonOrder->orderActionLog($note,'退换货',$this->admin_id);
|
||
$this->ajaxReturn(['status'=>1,'msg'=>'修改成功','url'=>'']);
|
||
}
|
||
|
||
//售后退款原路退回
|
||
public function refund_back(){
|
||
$return_id = I('id');
|
||
$refund_deposit = I('refund_deposit/d',0);
|
||
$refund_money = I('refund_money/d',0);
|
||
$refund_integral = I('refund_integral/d',0);
|
||
$refundLogic = new RefundLogic();
|
||
$refundLogic->setRefundDeposit($refund_deposit);
|
||
$refundLogic->setRrefundMoney($refund_money);
|
||
$refundLogic->setRrefundIntegral($refund_integral);
|
||
$return_goods = M('return_goods')->where("id= $return_id")->find();
|
||
$rec_goods = M('order_goods')->where(array('order_id'=>$return_goods['order_id'],'goods_id'=>$return_goods['goods_id']))->find();
|
||
$order = M('order')->where(array('order_id'=>$rec_goods['order_id']))->find();
|
||
if($order['pay_code'] == 'weixin' || $order['pay_code'] == 'miniAppPay' || $order['pay_code'] == 'appWeixinPay'
|
||
|| $order['pay_code'] == 'alipay' || $order['pay_code'] == 'alipayMobile'){
|
||
// 退款提醒
|
||
$messageFactory = new \app\common\logic\MessageFactory();
|
||
$messageLogic = $messageFactory->makeModule(['category' => 2]);
|
||
|
||
$orderLogic = new OrderLogic();
|
||
$return_goods['refund_money'] = $orderLogic->getRefundGoodsMoney($return_goods);
|
||
if($order['pay_code'] == 'weixin' || $order['pay_code'] == 'miniAppPay' || $order['pay_code'] == 'appWeixinPay'){
|
||
include_once PLUGIN_PATH."payment/weixin/weixin.class.php";
|
||
$payment_obj = new \weixin($order['pay_code']);
|
||
$data = array('transaction_id'=>$order['transaction_id'],'total_fee'=>$order['order_amount'],'refund_fee'=>$return_goods['refund_money']);
|
||
$result = $payment_obj->payment_refund($data);
|
||
if($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS'){
|
||
$refundLogic->updateRefundGoods($return_goods['rec_id']);//订单商品售后退款
|
||
$this->ajaxReturn(['status'=>1,'msg'=>'退款成功','url'=>U("Admin/Order/return_list")]);
|
||
// 发退款消息
|
||
$messageLogic->sendRefundNotice($return_goods['order_id'], $return_goods['refund_money']);
|
||
}else{
|
||
$this->ajaxReturn(['status'=>-1,'msg'=>'退款失败'.$result['return_msg']]);
|
||
}
|
||
}else{
|
||
include_once PLUGIN_PATH."payment/alipay/alipay.class.php";
|
||
$payment_obj = new \alipay();
|
||
$detail_data = $order['transaction_id'].'^'.$return_goods['refund_money'].'^'.'用户申请订单退款';
|
||
$data = array('batch_no'=>date('YmdHi').$rec_goods['rec_id'],'batch_num'=>1,'detail_data'=>$detail_data);
|
||
$payment_obj->payment_refund($data);
|
||
// 发退款消息
|
||
$messageLogic->sendRefundNotice($return_goods['order_id'], $return_goods['refund_money']);
|
||
}
|
||
}else{
|
||
$this->ajaxReturn(['status'=>-1,'msg'=>'该订单支付方式不支持在线退回']);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 退款到用户余额,余额+积分支付
|
||
* 有用三方金额支付的不走这个方法
|
||
*/
|
||
public function refund_balance(){
|
||
$rec_id = I('rec_id');
|
||
$refund_deposit = I('refund_deposit/f',0);
|
||
$refund_money = I('refund_money/f',0);
|
||
$refund_integral = I('refund_integral/f',0);
|
||
$return_goods = M('return_goods')->where(array('rec_id'=>$rec_id))->find();
|
||
if(empty($return_goods)) $this->ajaxReturn(['status'=>0,'msg'=>"参数有误"]);
|
||
$refundLogic = new RefundLogic();
|
||
$refundLogic->setRefundDeposit($refund_deposit);
|
||
$refundLogic->setRrefundMoney($refund_money);
|
||
$refundLogic->setRrefundIntegral($refund_integral);
|
||
$refundLogic->updateRefundGoods($rec_id,1);//售后商品退款
|
||
|
||
$messageFactory = new \app\common\logic\MessageFactory();
|
||
$messageLogic = $messageFactory->makeModule(['category' => 2]);
|
||
$messageLogic->sendRefundNotice($return_goods['order_id'], $refund_deposit + $refund_money);
|
||
|
||
$this->ajaxReturn(['status'=>1,'msg'=>"操作成功",'url'=>U("Admin/Order/return_list")]);
|
||
}
|
||
|
||
/**
|
||
* 管理员生成申请退货单
|
||
*/
|
||
public function add_return_goods()
|
||
{
|
||
$order_id = I('order_id');
|
||
$goods_id = I('goods_id');
|
||
|
||
$return_goods = M('return_goods')->where("order_id = $order_id and goods_id = $goods_id")->find();
|
||
if(!empty($return_goods))
|
||
{
|
||
$this->error('已经提交过退货申请!',U('Admin/Order/return_list'));
|
||
exit;
|
||
}
|
||
$order = M('order')->where("order_id = $order_id")->find();
|
||
|
||
$data['order_id'] = $order_id;
|
||
$data['order_sn'] = $order['order_sn'];
|
||
$data['goods_id'] = $goods_id;
|
||
$data['addtime'] = time();
|
||
$data['user_id'] = $order[user_id];
|
||
$data['remark'] = '管理员申请退换货'; // 问题描述
|
||
M('return_goods')->add($data);
|
||
$this->success('申请成功,现在去处理退货',U('Admin/Order/return_list'));
|
||
exit;
|
||
}
|
||
|
||
/**
|
||
* 订单操作
|
||
* @param $id
|
||
*/
|
||
public function order_action(){
|
||
$orderLogic = new OrderLogic();
|
||
$action = I('get.type');
|
||
$order_id = I('get.order_id');
|
||
if($action && $order_id){
|
||
if($action !=='pay'){
|
||
$convert_action= C('CONVERT_ACTION')["$action"];
|
||
$commonOrder = new \app\common\logic\Order();
|
||
$commonOrder->setOrderById($order_id);
|
||
$res = $commonOrder->orderActionLog(I('note'),$convert_action,$this->admin_id);
|
||
}
|
||
$a = $orderLogic->orderProcessHandle($order_id,$action,array('note'=>I('note'),'admin_id'=>0));
|
||
if($res !== false && $a !== false){
|
||
if ($action == 'remove') {
|
||
$this->ajaxReturn(['status' => 1, 'msg' => '操作成功', 'url' => U('Order/index')]);
|
||
}
|
||
$this->ajaxReturn(['status' => 1,'msg' => '操作成功','url' => U('Order/detail',array('order_id'=>$order_id))]);
|
||
}else{
|
||
if ($action == 'remove') {
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '操作失败', 'url' => U('Order/index')]);
|
||
}
|
||
$this->ajaxReturn(['status' => 0,'msg' => '操作失败','url' => U('Order/index')]);
|
||
}
|
||
}else{
|
||
$this->ajaxReturn(['status' => 0,'msg' => '参数错误','url' => U('Order/index')]);
|
||
}
|
||
}
|
||
|
||
public function order_log(){
|
||
$order_sn = I('order_sn');
|
||
$condition = array();
|
||
$begin = $this->begin;
|
||
$end = $this->end;
|
||
$condition['log_time'] = array('between',"$begin,$end");
|
||
if($order_sn){ //搜索订单号
|
||
$order_id_arr = Db::name('order')->where(['order_sn' => $order_sn])->getField('order_id',true);
|
||
$order_ids =implode(',',$order_id_arr);
|
||
$condition['order_id']=['in',$order_ids];
|
||
$this->assign('order_sn',$order_sn);
|
||
}
|
||
|
||
$admin_id = I('admin_id');
|
||
if($admin_id >0 ){
|
||
$condition['action_user'] = $admin_id;
|
||
}
|
||
$count = M('order_action')->where($condition)->count();
|
||
$Page = new Page($count,20);
|
||
|
||
foreach($condition as $key=>$val) {
|
||
$Page->parameter[$key] = urlencode($begin.'_'.$end);
|
||
}
|
||
$show = $Page->show();
|
||
$list = M('order_action')->where($condition)->order('action_id desc')->limit($Page->firstRow.','.$Page->listRows)->select();
|
||
|
||
//绑定订单类型是否虚拟,方便跳转对应订单详情
|
||
$order_id_array = array_unique(array_column($list,'order_id'));
|
||
$order_type_list = db('order')->where('order_id','in',$order_id_array)->field('order_id,prom_type')->select();
|
||
$new_arr = [];
|
||
foreach ($order_type_list as $k => $v){
|
||
$new_arr[$order_type_list[$k]['order_id']] = $v['prom_type'];
|
||
}
|
||
|
||
$orderIds = [];
|
||
foreach ($list as $k => $log) {
|
||
$list[$k]['prom_type'] = $new_arr[$log['order_id']];
|
||
if (!$log['action_user']) {
|
||
$orderIds[] = $log['order_id'];
|
||
}
|
||
}
|
||
if ($orderIds) {
|
||
$users = M("users")->alias('u')->join('__ORDER__ o', 'o.user_id = u.user_id')->getField('o.order_id,u.nickname');
|
||
}
|
||
$this->assign('users',$users);
|
||
$this->assign('list',$list);
|
||
$this->assign('pager',$Page);
|
||
$this->assign('page',$show);
|
||
$admin = M('admin')->getField('admin_id,user_name');
|
||
$this->assign('admin',$admin);
|
||
return $this->fetch();
|
||
}
|
||
|
||
/**
|
||
* 检测订单是否可以编辑
|
||
* @param $order
|
||
*/
|
||
private function editable($order){
|
||
if($order['shipping_status'] != 0){
|
||
$this->error('已发货订单不允许编辑');
|
||
exit;
|
||
}
|
||
return;
|
||
}
|
||
|
||
/**
|
||
* 导出订单
|
||
*/
|
||
public function export_order()
|
||
{
|
||
//搜索条件
|
||
$order_status = I('order_status','');
|
||
$order_ids = I('order_ids');
|
||
$prom_type = I('prom_type'); //订单类型
|
||
$keyType = I("key_type"); //查找类型
|
||
$keywords = I('keywords','','trim');
|
||
$where= ['add_time'=>['between',"$this->begin,$this->end"]];
|
||
if(!empty($keywords)){
|
||
$keyType == 'mobile' ? $where['mobile'] = $keywords : false;
|
||
$keyType == 'order_sn' ? $where['order_sn'] = $keywords: false;
|
||
$keyType == 'consignee' ? $where['consignee'] = $keywords: false;
|
||
}
|
||
$prom_type != '' ? $where['prom_type'] = $prom_type : $where['prom_type'] = ['lt',5];
|
||
if($order_status>-1 && $order_status != ''){
|
||
$where['order_status'] = $order_status;
|
||
}
|
||
if($order_ids){
|
||
$where['order_id'] = ['in', $order_ids];
|
||
}
|
||
if(I('pay_code')){
|
||
switch (I('pay_code')){
|
||
case '余额支付':
|
||
$where['pay_name'] = I('pay_code');
|
||
break;
|
||
case '积分兑换':
|
||
$where['pay_name'] = I('pay_code');
|
||
break;
|
||
case 'alipay':
|
||
$where['pay_code'] = ['in',['alipay','alipayMobile']];
|
||
break;
|
||
case 'weixin':
|
||
$where['pay_code'] = ['in',['weixin','weixinH5','miniAppPay']];
|
||
break;
|
||
case '其他方式':
|
||
$where['pay_name'] = '';
|
||
$where['pay_code'] = '';
|
||
break;
|
||
default:
|
||
$where['pay_code'] = I('pay_code');
|
||
break;
|
||
}
|
||
}
|
||
$orderList = Db::name('order')->field("*,FROM_UNIXTIME(add_time,'%Y-%m-%d') as create_time")->where($where)->order('order_id')->select();
|
||
$strTable ='<table width="500" border="1">';
|
||
$strTable .= '<tr>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;width:120px;">订单编号</td>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;" width="100">日期</td>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;" width="*">收货人</td>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;" width="*">收货地址</td>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;" width="*">电话</td>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;" width="*">订单金额</td>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;" width="*">实际支付</td>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;" width="*">支付方式</td>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;" width="*">支付状态</td>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;" width="*">发货状态</td>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;" width="*">商品数量</td>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;" width="*">商品信息</td>';
|
||
$strTable .= '</tr>';
|
||
if(is_array($orderList)){
|
||
$region = get_region_list();
|
||
foreach($orderList as $k=>$val){
|
||
$strTable .= '<tr>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;"> '.$val['order_sn'].'</td>';
|
||
$strTable .= '<td style="text-align:left;font-size:12px;">'.$val['create_time'].' </td>';
|
||
$strTable .= '<td style="text-align:left;font-size:12px;">'.$val['consignee'].'</td>';
|
||
$strTable .= '<td style="text-align:left;font-size:12px;">'."{$region[$val['province']]},{$region[$val['city']]},{$region[$val['district']]},{$region[$val['twon']]}{$val['address']}".' </td>';
|
||
$strTable .= '<td style="text-align:left;font-size:12px;">'.$val['mobile'].'</td>';
|
||
$strTable .= '<td style="text-align:left;font-size:12px;">'.$val['goods_price'].'</td>';
|
||
$strTable .= '<td style="text-align:left;font-size:12px;">'.$val['order_amount'].'</td>';
|
||
$strTable .= '<td style="text-align:left;font-size:12px;">'.$val['pay_name'].'</td>';
|
||
$strTable .= '<td style="text-align:left;font-size:12px;">'.$this->pay_status[$val['pay_status']].'</td>';
|
||
$strTable .= '<td style="text-align:left;font-size:12px;">'.$this->shipping_status[$val['shipping_status']].'</td>';
|
||
$orderGoods = D('order_goods')->where('order_id='.$val['order_id'])->select();
|
||
$strGoods="";
|
||
$goods_num = 0;
|
||
foreach($orderGoods as $goods){
|
||
$goods_num = $goods_num + $goods['goods_num'];
|
||
$strGoods .= "商品编号:".$goods['goods_sn']." 商品名称:".$goods['goods_name'];
|
||
if ($goods['spec_key_name'] != '') $strGoods .= " 规格:".$goods['spec_key_name'];
|
||
$strGoods .= "<br />";
|
||
}
|
||
unset($orderGoods);
|
||
$strTable .= '<td style="text-align:left;font-size:12px;">'.$goods_num.' </td>';
|
||
$strTable .= '<td style="text-align:left;font-size:12px;">'.$strGoods.' </td>';
|
||
$strTable .= '</tr>';
|
||
}
|
||
}
|
||
$strTable .='</table>';
|
||
unset($orderList);
|
||
downloadExcel($strTable,'order');
|
||
exit();
|
||
}
|
||
|
||
/**
|
||
* 退货单列表
|
||
*/
|
||
public function return_list(){
|
||
return $this->fetch();
|
||
}
|
||
|
||
/*
|
||
* ajax 退货订单列表
|
||
*/
|
||
public function ajax_return_list(){
|
||
// 搜索条件
|
||
$order_sn = trim(I('order_sn'));
|
||
$order_by = I('order_by','') ? I('order_by') : 'id';
|
||
$sort_order = I('sort_order') ? I('sort_order') : 'desc';
|
||
$status = I('status');
|
||
$where = [];
|
||
if($order_sn){
|
||
$where['order_sn'] =['like', '%'.$order_sn.'%'];
|
||
}
|
||
if($status != ''){
|
||
$where['status'] = $status;
|
||
}
|
||
$ReturnGoods = new ReturnGoods();
|
||
$count = $ReturnGoods->where($where)->count();
|
||
$Page = new AjaxPage($count,13);
|
||
$show = $Page->show();
|
||
$list = $ReturnGoods->where($where)->order("$order_by $sort_order")->limit("{$Page->firstRow},{$Page->listRows}")->select();
|
||
$state = C('REFUND_STATUS');
|
||
$return_type = C('RETURN_TYPE');
|
||
$this->assign('state',$state);
|
||
$this->assign('return_type',$return_type);
|
||
$this->assign('list',$list);
|
||
$this->assign('pager',$Page);
|
||
$this->assign('page',$show);// 赋值分页输出
|
||
return $this->fetch();
|
||
}
|
||
|
||
/**
|
||
* 添加订单
|
||
*/
|
||
public function add_order()
|
||
{
|
||
// 获取省份
|
||
$province = M('region')->where(array('parent_id'=>0,'level'=>1))->select();
|
||
$this->assign('province',$province);
|
||
return $this->fetch();
|
||
}
|
||
|
||
/**
|
||
* 提交添加订单
|
||
*/
|
||
public function addOrder(){
|
||
$user_id = I('user_id');// 用户id 可以为空
|
||
$admin_note = I('admin_note'); // 管理员备注
|
||
//收货信息
|
||
$user = Db::name('users')->where(['user_id'=>$user_id])->find();
|
||
$address['consignee'] = I('consignee');// 收货人
|
||
$address['province'] = I('province'); // 省份
|
||
$address['city'] = I('city'); // 城市
|
||
$address['district'] = I('district'); // 县
|
||
$address['address'] = I('address'); // 收货地址
|
||
$address['mobile'] = I('mobile'); // 手机
|
||
$address['zipcode'] = I('zipcode'); // 邮编
|
||
$address['email'] = $user['email']; // 邮编
|
||
$invoice_title = I('invoice_title');// 发票抬头
|
||
$taxpayer = I('taxpayer');// 纳税人识别号
|
||
if(!empty($taxpayer)){
|
||
$invoice_desc = "商品明细";// 发票内容
|
||
}
|
||
$goods_id_arr = I("goods_id/a");
|
||
$orderLogic = new OrderLogic();
|
||
$order_goods = $orderLogic->get_spec_goods($goods_id_arr);
|
||
$pay = new Pay();
|
||
try{
|
||
$pay->setUserId($user_id);
|
||
$pay->payGoodsList($order_goods);
|
||
$pay->delivery($address['district']);
|
||
$pay->orderPromotion();
|
||
} catch (TpshopException $t) {
|
||
$error = $t->getErrorArr();
|
||
$this->error($error['msg']);
|
||
}
|
||
$placeOrder = new PlaceOrder($pay);
|
||
$placeOrder->setUserAddress($address);
|
||
$placeOrder->setInvoiceTitle($invoice_title);
|
||
$placeOrder->setTaxpayer($taxpayer);
|
||
$placeOrder->setInvoiceDesc($invoice_desc);
|
||
$placeOrder->addNormalOrder();
|
||
$order = $placeOrder->getOrder();
|
||
if($order) {
|
||
M('order_action')->add([
|
||
'order_id' => $order['order_id'],
|
||
'action_user' => session('admin_id'),
|
||
'order_status' => 0, //待支付
|
||
'shipping_status' => 0, //待确认
|
||
'action_note' => $admin_note,
|
||
'status_desc' => '提交订单',
|
||
'log_time' => time()
|
||
]);
|
||
$this->success('添加订单成功',U("Admin/Order/detail",array('order_id'=>$order['order_id'])));
|
||
} else{
|
||
$this->error('添加失败');
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* 订单编辑
|
||
* @return mixed
|
||
*/
|
||
public function edit_order(){
|
||
$order_id = I('order_id');
|
||
$orderLogic = new OrderLogic();
|
||
$orderModel = new OrderModel();
|
||
$orderObj = $orderModel->where(['order_id'=>$order_id])->find();
|
||
$order =$orderObj->append(['full_address','orderGoods'])->toArray();
|
||
if($order['shipping_status'] != 0){
|
||
$this->error('已发货订单不允许编辑');
|
||
exit;
|
||
}
|
||
$orderGoods = $order['orderGoods'];
|
||
if(IS_POST)
|
||
{
|
||
$order['consignee'] = I('consignee');// 收货人
|
||
$order['province'] = I('province'); // 省份
|
||
$order['city'] = I('city'); // 城市
|
||
$order['district'] = I('district'); // 县
|
||
$order['address'] = I('address'); // 收货地址
|
||
$order['mobile'] = I('mobile'); // 手机
|
||
$order['invoice_title'] = I('invoice_title');// 发票
|
||
$order['taxpayer'] = I('taxpayer');// 纳税人识别号
|
||
$order['admin_note'] = I('admin_note'); // 管理员备注
|
||
$order['admin_note'] = I('admin_note'); //
|
||
$order['shipping_code'] = I('shipping');// 物流方式
|
||
$order['shipping_name'] = Db::name('shipping')->where('shipping_code',I('shipping'))->getField('shipping_name');
|
||
$order['pay_code'] = I('payment');// 支付方式
|
||
$order['pay_name'] = M('plugin')->where(array('status'=>1,'type'=>'payment','code'=>I('payment')))->getField('name');
|
||
$goods_id_arr = I("goods_id/a");
|
||
$new_goods = $old_goods_arr = array();
|
||
//################################订单添加商品
|
||
if($goods_id_arr){
|
||
$new_goods = $orderLogic->get_spec_goods($goods_id_arr);
|
||
foreach($new_goods as $key => $val)
|
||
{
|
||
$val['order_id'] = $order_id;
|
||
$val['final_price'] = $val['goods_price'];
|
||
$rec_id = M('order_goods')->add($val);//订单添加商品
|
||
if(!$rec_id)
|
||
$this->error('添加失败');
|
||
}
|
||
}
|
||
|
||
//################################订单修改删除商品
|
||
$old_goods = I('old_goods/a');
|
||
foreach ($orderGoods as $val){
|
||
if(empty($old_goods[$val['rec_id']])){
|
||
M('order_goods')->where("rec_id=".$val['rec_id'])->delete();//删除商品
|
||
}else{
|
||
//修改商品数量
|
||
if($old_goods[$val['rec_id']] != $val['goods_num']){
|
||
$val['goods_num'] = $old_goods[$val['rec_id']];
|
||
M('order_goods')->where("rec_id=".$val['rec_id'])->save(array('goods_num'=>$val['goods_num']));
|
||
}
|
||
$old_goods_arr[] = $val;
|
||
}
|
||
}
|
||
|
||
$goodsArr = array_merge($old_goods_arr,$new_goods);
|
||
$pay = new Pay();
|
||
try{
|
||
$pay->setUserId($order['user_id']);
|
||
$pay->payOrder($goodsArr);
|
||
$pay->delivery($order['district']);
|
||
$pay->orderPromotion();
|
||
} catch (TpshopException $t) {
|
||
$error = $t->getErrorArr();
|
||
$this->error($error['msg']);
|
||
}
|
||
//################################修改订单费用
|
||
$order['goods_price'] = $pay->getGoodsPrice(); // 商品总价
|
||
$order['shipping_price'] = $pay->getShippingPrice();//物流费
|
||
$order['order_amount'] = $pay->getOrderAmount(); // 应付金额
|
||
$order['total_amount'] = $pay->getTotalAmount(); // 订单总价
|
||
$o = M('order')->where('order_id='.$order_id)->save($order);
|
||
$commonOrder = new \app\common\logic\Order();
|
||
$commonOrder->setOrderById($order_id);
|
||
$l = $commonOrder->orderActionLog('修改订单','修改订单',$this->admin_id);//操作日志
|
||
if($o && $l){
|
||
$this->success('修改成功',U('Admin/Order/editprice',array('order_id'=>$order_id)));
|
||
}else{
|
||
$this->success('修改失败',U('Admin/Order/detail',array('order_id'=>$order_id)));
|
||
}
|
||
exit;
|
||
}
|
||
// 获取省份
|
||
$province = M('region')->where(array('parent_id'=>0,'level'=>1))->select();
|
||
//获取订单城市
|
||
$city = M('region')->where(array('parent_id'=>$order['province'],'level'=>2))->select();
|
||
//获取订单地区
|
||
$area = M('region')->where(array('parent_id'=>$order['city'],'level'=>3))->select();
|
||
//获取支付方式
|
||
$payment_where = ['status'=>1,'type'=>'payment'];
|
||
if($order['shop_id'] > 0){
|
||
//预售订单和抢购不支持货到付款
|
||
$payment_where['code'] = array('neq','cod');
|
||
}
|
||
$payment_list = M('plugin')->where($payment_where)->select();
|
||
//获取配送方式
|
||
$shipping_list = Db::name('shipping')->field('shipping_name,shipping_code')->where('')->select();
|
||
|
||
$this->assign('order',$order);
|
||
$this->assign('province',$province);
|
||
$this->assign('city',$city);
|
||
$this->assign('area',$area);
|
||
$this->assign('orderGoods',$orderGoods);
|
||
$this->assign('shipping_list',$shipping_list);
|
||
$this->assign('payment_list',$payment_list);
|
||
return $this->fetch();
|
||
}
|
||
|
||
/**
|
||
* 选择搜索商品
|
||
*/
|
||
public function search_goods()
|
||
{
|
||
$brandList = M("brand")->select();
|
||
$categoryList = M("goods_category")->select();
|
||
$this->assign('categoryList',$categoryList);
|
||
$this->assign('brandList',$brandList);
|
||
$where = 'exchange_integral = 0 and is_on_sale = 1 and is_virtual =' . I('is_virtual/d',0);//搜索条件
|
||
I('intro') && $where = "$where and ".I('intro')." = 1";
|
||
if(I('cat_id')){
|
||
$this->assign('cat_id',I('cat_id'));
|
||
$grandson_ids = getCatGrandson(I('cat_id'));
|
||
$where = " $where and cat_id in(". implode(',', $grandson_ids).") "; // 初始化搜索条件
|
||
|
||
}
|
||
if(I('brand_id')){
|
||
$this->assign('brand_id',I('brand_id'));
|
||
$where = "$where and brand_id = ".I('brand_id');
|
||
}
|
||
if(!empty($_REQUEST['keywords']))
|
||
{
|
||
$this->assign('keywords',I('keywords'));
|
||
$where = "$where and (goods_name like '%".I('keywords')."%' or keywords like '%".I('keywords')."%')" ;
|
||
}
|
||
$goods_count =M('goods')->where($where)->count();
|
||
$Page = new Page($goods_count,C('PAGESIZE'));
|
||
$goodsList = M('goods')->where($where)->order('goods_id DESC')->limit($Page->firstRow,$Page->listRows)->select();
|
||
|
||
foreach($goodsList as $key => $val)
|
||
{
|
||
$spec_goods = M('spec_goods_price')->where("goods_id = {$val['goods_id']}")->select();
|
||
$goodsList[$key]['spec_goods'] = $spec_goods;
|
||
}
|
||
if($goodsList){
|
||
//计算商品数量
|
||
foreach ($goodsList as $value){
|
||
if($value['spec_goods']){
|
||
$count += count($value['spec_goods']);
|
||
}else{
|
||
$count++;
|
||
}
|
||
}
|
||
$this->assign('totalSize',$count);
|
||
}
|
||
|
||
$this->assign('page',$Page->show());
|
||
$this->assign('goodsList',$goodsList);
|
||
return $this->fetch();
|
||
}
|
||
|
||
public function ajaxOrderNotice(){
|
||
$order_amount = M('order')->where("order_status=0 and (pay_status=1 or pay_code='cod')")->count();
|
||
echo $order_amount;
|
||
}
|
||
|
||
/**
|
||
* 删除订单日志
|
||
*/
|
||
public function delOrderLogo(){
|
||
$ids = I('ids');
|
||
empty($ids) && $this->ajaxReturn(['status' => -1,'msg' =>"非法操作!",'url' =>'']);
|
||
$order_ids = rtrim($ids,",");
|
||
$res = Db::name('order_action')->whereIn('order_id',$order_ids)->delete();
|
||
if($res !== false){
|
||
$this->ajaxReturn(['status' => 1,'msg' =>"删除成功!",'url' =>'']);
|
||
}else{
|
||
$this->ajaxReturn(['status' => -1,'msg' =>"删除失败",'url' =>'']);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 导出发货单中包含的发货商品
|
||
*/
|
||
public function exportDeliveryGoods()
|
||
{
|
||
$order_ids = I('ids4');
|
||
if(empty($order_ids)){
|
||
$this->error('没有选中订单', U('admin/order/delivery_list'));
|
||
}
|
||
$where['order_id'] = ['in', $order_ids];
|
||
$orderList = Db::name('order')->field('order_sn,order_id,total_amount')->where($where)->order('order_id')->select();
|
||
if(!$orderList){
|
||
$this->error('没找到相关订单信息', U('admin/order/delivery_list'));
|
||
}
|
||
$strTable ='<table width="500" border="1">';
|
||
$strTable .= '<tr>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;width:125px;">订单编号</td>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;" width="*">订单总价</td>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;" width="*">商品信息</td>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;" width="*">对应商品规格</td>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;" width="*">对应商品数量</td>';
|
||
$strTable .= '</tr>';
|
||
foreach($orderList as $k=>$val){
|
||
$strTable .= '<tr>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;"> '.$val['order_sn'].'</td>';
|
||
$strTable .= '<td style="text-align:center;font-size:12px;"> '.$val['total_amount'].'</td>';
|
||
$orderGoods = D('order_goods')->where('order_id='.$val['order_id'])->select();
|
||
$strGoods="";
|
||
$goods_num = '';
|
||
$spec_key_name = '';
|
||
foreach($orderGoods as $goods){
|
||
$goods_num .= ' '.$goods['goods_num'];
|
||
$goods_num .= "<br />";
|
||
$strGoods .= " 商品编号:".$goods['goods_sn']." 商品名称:".$goods['goods_name'];
|
||
$strGoods .= "<br />";
|
||
$spec_key_name .= " ".($goods['spec_key_name'] ?: '无' );
|
||
$spec_key_name .= "<br />";
|
||
}
|
||
unset($orderGoods);
|
||
$strTable .= '<td style="text-align:left;font-size:12px;">'.$strGoods.' </td>';
|
||
$strTable .= '<td style="text-align:left;font-size:12px;">'.$spec_key_name.' </td>';
|
||
$strTable .= '<td style="text-align:left;font-size:12px;">'.$goods_num.' </td>';
|
||
$strTable .= '</tr>';
|
||
}
|
||
|
||
$strTable .='</table>';
|
||
unset($orderList);
|
||
downloadExcel($strTable,'goods_list');
|
||
exit();
|
||
}
|
||
|
||
}
|