Files
2021-04-18 18:51:51 +08:00

407 lines
16 KiB
PHP

<?php
namespace Admin\Controller;
use Think\Controller;
class OrderController extends AdminController{
public function __construct() {
parent::__construct();
$this->table = D("ShopOrder");
$this->status_name = array("未支付",'已支付');
$this->delivery_status_name = array("未发货",'已发货');
$this->distribution_mode=str2arr( C("shop.distribution_mode"),"\r\n",":");
//系统查询哪些超时付款,超时未收货自动做相关操作
$this->table->autoReceipt();
$this->table->autoCancelOrder();
//
}
public function index(){
//下单时间
$start_time = I("get.start_time");
$end_time = I("get.end_time");
if($start_time || $end_time){
$start_time = strtotime($start_time ? $start_time : 0);
$end_time = strtotime(($end_time ? $end_time : date("Y-m-d"))."23:59:59");
$where["addtime"] = array(array("EGT",$start_time),array("ELT",$end_time));
}
//指定字段搜索
$keywords=I("get.keywords");
if($keywords){
$keytype=I("get.keytype");
if($keytype=="order_num"){
$where["order_num"] =$keywords;
}
elseif($keytype=="mobile"){
$where["member_id"] =M("member")->where(array("mobile"=>$keywords))->getField("member_id");
}
elseif($keytype=="member_id"){
$where["member_id"] =M("member")->where(array("member_id"=>$keywords))->getField("member_id");
}
}
//订单状态
$this->status_code=I("get.status_code");
if($this->status_code){
if($this->status_code==101){
$where["status_code"]=array("in","101,111");
}else{
$where["status_code"]=$this->status_code;
}
}
//不同状态下的订单统计
$this->readyPayCount=$this->table->where(array(
"status_code"=>array("in","101,111"),
))->count();
$this->readyDeliveryCount=$this->table->where(array(
"status_code"=>102,
))->count();
$this->readyReceiptCount=$this->table->where(array(
"status_code"=>103,
))->count();
$this->ReceiptCount=$this->table->where(array(
"status_code"=>104,
))->count();
$listRows=C("display.admin_shownum");//每页显示多少条
$total=$this->table->where($where)->count();
$page = new \Think\Page($total,$listRows);
$data=$this->table->relation(true)->where($where)->group("order_id")->order("order_id desc")->limit($page->firstRow,$page->listRows)->select();
$this->assign("listpage", $page->show());
$this->data = $data;
$this->display();
}
public function detail($order_id){
$this->r = $this->table->relation(true)->find($order_id);
$this->pagetitle="订单详情";
$this->display();
}
//商品发货列表
public function goods_delivery(){
$is_delivery=I("is_delivery");
//已发货
if($is_delivery){
$where["is_delivery"]=1;
}else{
$where["status_code"]=102;
}
//订单号
$order_num=I("get.order_num");
if($order_num){
$where["order_num"]=$order_num;
}
//不同状态下的数量
//待发货
$this->readyDeliveryCount=$this->table->where(array(
"status_code"=>102,
))->count();
//已发货
$this->hasDeliveryCount=$this->table->where(array(
"is_delivery"=>1,
))->count();
$listRows=C("display.admin_shownum");//每页显示多少条
$total=$this->table->where($where)->count();
$page = new \Think\Page($total, $listRows);
$data = $this->table->relation("shop_order_address")->where($where)->order("order_id desc")->limit($page->firstRow, $page->listRows)->select();
$listpage = $page->show();
$this->assign("listpage", $listpage);
$this->data = $data;
$this->display();
}
//商品发货
public function goods_delivery_add(){
if(IS_POST){
$order_id = I("post.order_id");
$order=$this->table->find($order_id);
$express_company_code = I("post.express_company_code");
$express_company_num = I("post.express_company_num");
if(!$order){$this->error("订单不存在");}
if(!$express_company_code){$this->error("请选择物流公司");}
if(!$express_company_num){$this->error("请输入物流单号");}
if(I("post.invoice_as")){
$shop_order_invoice_address=array(
"express_company_code"=>$express_company_code,
"express_company_num"=>$express_company_num,
);
}
$delivery_time=$order["delivery_time"]?$order["delivery_time"]:time();
$data=array(
"order_id"=>$order_id,
"delivery_time"=>$delivery_time,
"is_delivery"=>1,
"shop_order_address"=>array(
"express_company_code"=>$express_company_code,
"express_company_num"=>$express_company_num,
),
"shop_order_invoice_address"=>$shop_order_invoice_address,
);
$this->table->relation(true)->save($data);
$this->table->setOrderState($order_id);//改状态
//写日志
$this->table->log($order_id,"商品发货");
$this->success();
}else{
$order_id = I("order_id");
$this->data = $this->table->relation(true)->find($order_id);
$this->display();
}
}
//发票发货列表
public function invoice_delivery(){
$is_delivery=I("is_delivery");
//已发货查询条件
$is_where="db_shop_order_invoice_address.express_company_num is not null and is_delivery=1";
//未发货查询条件
$not_where="db_shop_order_invoice_address.express_company_num is null and status_code=102";
//已发货
if($is_delivery){
$where=$is_where;
}else{
$where=$not_where;
}
//订单号
$order_num=I("get.order_num");
if($order_num){
$where.=" and order_num=".$order_num;
}
//不同状态下的数量
//待发货
$this->readyDeliveryCount=$this->table->join("db_shop_order_invoice_address on db_shop_order_invoice_address.order_id=db_shop_order.order_id")->where($not_where)->count();
//已发货
$this->hasDeliveryCount=$this->table->join("db_shop_order_invoice_address on db_shop_order_invoice_address.order_id=db_shop_order.order_id")->where($is_where)->count();
$listRows=C("display.admin_shownum");//每页显示多少条
$total=$this->table->join("db_shop_order_invoice_address on db_shop_order_invoice_address.order_id=db_shop_order.order_id")->where($where)->count();
$page = new \Think\Page($total, $listRows);
$data = $this->table->relation("shop_order_invoice_address")->join("db_shop_order_invoice_address on db_shop_order_invoice_address.order_id=db_shop_order.order_id")->where($where)->order("db_shop_order.order_id desc")->limit($page->firstRow, $page->listRows)->select();
$listpage = $page->show();
$this->assign("listpage", $listpage);
$this->data = $data;
$this->display();
}
//发票发货
public function invoice_delivery_add(){
if(IS_POST){
$order_id = I("post.order_id");
$express_company_code = I("post.express_company_code");
$express_company_num = I("post.express_company_num");
if(!$order_id){$this->error("缺少订单号");}
if(!$express_company_code){$this->error("请选择物流公司");}
if(!$express_company_num){$this->error("请输入物流单号");}
$data=array(
"order_id"=>$order_id,
"is_delivery"=>1,
"shop_order_invoice_address"=>array(
"express_company_code"=>$express_company_code,
"express_company_num"=>$express_company_num,
),
);
$this->table->relation(true)->save($data);
$this->table->setOrderState($order_id);//改状态
//写日志
$this->table->log($order_id,"发票邮寄");
$this->success();
}else{
$order_id = I("order_id");
$this->data = $this->table->relation("shop_order_invoice_address")->find($order_id);
$this->display();
}
}
//修改订单价格
public function editor_price(){
if(IS_POST){
$order_id = I("post.order_id");
$new_money = I("post.new_money","intval",0);
if(!$new_money){
$this->error("请输入正确的价格");
}
$new_money= number_format($new_money,2, '.', '');
$where["order_id"]=$order_id;
$order=$this->table->where($where)->find();
if(!$order){
$this->error("订单不存在");
}
//只有待付款状态下才可以改价
if($order[status_code]!=101&&$order[status_code]!=111){
$this->error("当前的订单状态不允许改价");
}
$this->table->save(array(
"order_id"=>$order_id,
"pay_money"=>$new_money,
));
//写日志
$this->table->log($order_id,"后台用户[".session("user_name")."]修改价格,原价:{$order[pay_money]},修改后:{$new_money}");
$this->success();
}else{
$order_id = I("get.order_id");
$this->r=$this->table->find($order_id);
$this->pagetitle="修改价格";
$this->display();
}
}
//线下付款-确认
public function isBankPay(){
$order_id = I("get.order_id");
$where["order_id"]=$order_id;
$order=$this->table->where($where)->find();
if(!$order){
$this->error("订单不存在");
}
if($order[status_code]!=111){
$this->error("当前操作不充许");
}
$this->table->save(array(
"order_id"=>$order_id,
"is_pay"=>1,
));
//改状态
$this->table->setOrderState($order_id);//改状态
//写日志
$this->table->log($order_id,"后台用户[".session("user_name")."]确认客户已付款");
$this->success();
}
//订单日志
public function log($order_id){
$this->data=M("shop_order_log")->where(array(
"order_id"=>$order_id
))->order("addtime asc")->select();
$this->pagetitle="订单日志";
$this->display();
}
//删除订单2(针对对公转账的订单删除)
public function delete2(){
$order_id = I("get.order_id");
$where["order_id"]=$order_id;
$order=$this->table->where($where)->find();
if(!$order){
$this->error("订单不存在");
}
if($order[status_code]!=111){
$this->error("订单状态不允许删除");
}
//调用模型里的删除订单
$this->table->deleteOrder($order_id);
$this->success("删除成功");
}
//删除订单
public function delete(){
$order_id = I("get.order_id");
$where["order_id"]=$order_id;
$order=$this->table->where($where)->find();
if(!$order){
$this->error("订单不存在");
}
if($order[status_code]!=201){
$this->error("订单状态不允许删除");
}
//调用模型里的删除订单
$this->table->deleteOrder($order_id);
$this->success("删除成功");
}
//快递
public function kuaidi($com,$num){
$kuaidi=new \Model\KuaidiModel($com, $num);
$kuaidi_result=$kuaidi->getKuaidi();
if(!$kuaidi_result){
$this->error($kuaidi->getError());
}else{
$this->data=$kuaidi_result;
$this->pagetitle="物流查询";
$this->display();
}
}
//退款订单列表
public function refundOrder(){
//订单状态
$this->status_code=I("get.status_code");
if($this->status_code){
$where["status_code"]=$this->status_code;
}
//订单号
$order_num=I("get.order_num");
if($order_num){
$where["order_num"]=$order_num;
}
//不同状态下的数量
//待处理的
$this->readCount=$this->table->where(array(
"status_code"=>301,
))->count();
//同意的
$this->agreeCount=$this->table->where(array(
"status_code"=>302,
))->count();
//不同意的
$this->disagreeCount=$this->table->where(array(
"status_code"=>311,
))->count();
//已发货
$listRows=C("display.admin_shownum");//每页显示多少条
$total=$this->table->join("db_shop_order_refund on db_shop_order_refund.order_id=db_shop_order.order_id")->where($where)->count();
$page = new \Think\Page($total, $listRows);
$data = $this->table->relation("member")->join("db_shop_order_refund on db_shop_order_refund.order_id=db_shop_order.order_id")->where($where)->order("db_shop_order.order_id desc")->limit($page->firstRow, $page->listRows)->select();
$listpage = $page->show();
$this->assign("listpage", $listpage);
$this->data = $data;
$this->display();
}
//同意退款
public function agree_refund($order_id){
$where["order_id"]=$order_id;
$order=$this->table->where($where)->find();
if(!$order){
$this->error("订单不存在");
}
if($order[status_code]!=301){
$this->error("订单状态不允许删除");
}
//查询shop_order_payment表是否有付款数据
$payment=M("shop_order_payment")->find($order_id);
//线上支付
if($payment){
//支付宝原路返款
if($payment["paytype"]=="alipay"){
$result=$this->table->alipayRefund($payment);
if(!$result){
$this->error("退款失败,支付宝返回错误提示:".$this->table->getError());
}
$log_content="后台用户[".session("user_name")."]同意客户退款,并且已通过支付宝原路退款!";
}
//修改退款表
M("shop_order_refund")->save(array(
"order_id"=>$order_id,
"is_rerund_agree"=>1,
"is_back_money"=>1,
));
//线下支付
}else{
//修改退款表
M("shop_order_refund")->save(array(
"order_id"=>$order_id,
"is_rerund_agree"=>1,
));
$log_content="后台用户[".session("user_name")."]同意客户退款,用户通过线下付款的,需要人工退还款项!";
}
//改状态
$this->table->setOrderState($order_id);//改状态
//写日志
$this->table->log($order_id,$log_content);
$this->success("操作成功");
}
//不同意退款
public function disagree_refund($order_id){
$where["order_id"]=$order_id;
$order=$this->table->where($where)->find();
if(!$order){
$this->error("订单不存在");
}
if($order[status_code]!=301){
$this->error("订单状态不允许删除");
}
M("shop_order_refund")->save(array(
"order_id"=>$order_id,
"is_rerund_disagree"=>1,
));
//改状态
$this->table->setOrderState($order_id);//改状态
//写日志
$this->table->log($order_id,"后台用户[".session("user_name")."]不同意客户退款");
$this->success("操作成功");
}
}