You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
ymww_backend/application/admin/controller/Order.php

185 lines
6.8 KiB

<?php
namespace app\admin\controller;
use app\common\controller\Backend;
use app\admin\model\order\Detail;
use think\Db;
use think\Config;
use app\common\service\UserService;
use app\admin\model\Goods;
use app\admin\model\Order as OrderModel;
/**
*
*
* @icon fa fa-circle-o
*/
class Order extends Backend
{
/**
* Order模型对象
* @var \app\admin\model\Order
*/
protected $model = null;
protected $relationSearch = true;
public function _initialize()
{
parent::_initialize();
$this->model = new \app\admin\model\Order;
$this->assignconfig('statusList', $this->model->getStatusList());
$this->view->assign("statusList", $this->model->getStatusList());
$this->view->assign("logisticsCompanyList", $this->model->getLogisticsCompanyList());
}
/**
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
*/
public function index(){
//设置过滤方法
$this->request->filter(['strip_tags', 'trim']);
if ($this->request->isAjax()) {
//如果发送的来源是Selectpage,则转发到Selectpage
if ($this->request->request('keyField')) {
return $this->selectpage();
}
list($where, $sort, $order, $offset, $limit) = $this->buildparams($this->searchFields, $this->relationSearch);
$list = $this->model
->with(['user','user1','warehouse','detail'])
->where($where)
->order($sort, $order)
->paginate($limit);
$site = Config::get("site");
foreach ($list as $k => &$v) {
$v['detail']['goods_image'] = cdnurl($v['detail']['goods_image'], true);
$v['createtime_text'] = date("Y-m-d H:i:s", $v['createtime']);
$v['status_text'] = $this->model->getStatusList()[$v['status']] ?? "";
$user = Db::name('user')->where('id', $v['buyer_id'])->field('pid')->find();
$piduser = Db::name('user')->where('id', $user['pid'] ?? 0)->field('id,nickname')->find();
$commission = bcmul($v['order_amount'], $site['primary_distribution'] * 0.01, 2);
$v['tuiguang'] = $piduser ? $piduser['nickname']."(".$commission.")" : "";
}
$single = Db::name('order')->alias('order')
->join('warehouse warehouse', 'order.warehouse_id = warehouse.id','left')
->join('user user', 'user.id = order.buyer_id', 'left')
->join('user user1', 'user1.id = order.seller_id', 'left')
->join('order_detail detail', 'detail.order_id = order.id', 'left')
->field("count(order.id) as order_count,sum(order.order_amount) as order_amount,sum(order.coupon_price) as coupon_price,sum(detail.dikou_price) as dikou_price,count(distinct order.buyer_id) as user_count")
->where($where)
->find();
// var_dump($single);
// exit;
$order_amount = $single['order_amount'] ?? 0;
$coupon_price = $single['coupon_price'] ?? 0;
$order_count = $single['order_count'] ?? 0;
$user_count = $single['user_count'] ?? 0;
$dikou_price = $single['dikou_price'] ?? 0;
// $info = Db::name('order')->alias('order')
// ->field("count(order.id) as order_count,createtime,buyer_id")
// // ->where("order_count",1)
// //->whereTime('createtime', 'today')
// ->group("buyer_id")
// ->order('createtime desc')
// ->select();
// var_dump($info);
// exit();
$new_user_count = $single['new_user_count'] ?? 0;
$result = array(
"total" => $list->total(),
"rows" => $list->items(),
"extend" => [
'order_amount' => bcdiv($order_amount, 1, 2),
'coupon_price' => bcdiv($coupon_price, 1, 2),
'dikou_price' => bcdiv($dikou_price, 1, 2),
'order_count' => $order_count,
'user_count' => $user_count,
'new_user_count' => $new_user_count,
]
);
return json($result);
}
return $this->view->fetch();
}
/**
* 编辑
* @internal
*/
public function send($ids = NULL,$type = null)
{
$row = $this->model->get($ids);
// var_dump($row);
// exit;
if (!$row)
$this->error(__('No Results were found'));
if ($this->request->isPost()){
$params = $this->request->post("row/a");
$params['send_time'] = time();
$params['status'] = 5;
$ret = $this->model->update($params, ['id'=>$ids]);
if(!$ret){
$this->error(__('Operation failed'));
}
return $this->success();
}
$arr = $row->toArray();
$this->view->assign("row", $arr);
$this->view->assign("type", $type);
return $this->view->fetch();
}
public function cancel($ids = NULL){
$row = $this->model->get($ids);
// var_dump($row);
// exit;
if (!$row)
$this->error(__('No Results were found'));
if ($this->request->isPost()){
$params = $this->request->post("row/a");
$info = OrderModel::where('id', $ids)->update(['status' => -1,'cancel_time' => time()]);
if ($info === false) {
$this->error("取消失败");
}
$detail = Detail::where("order_id", $ids)->find();
if (!$detail)
$this->error(__('No Results were found'));
//上架商品
Goods::where('id', $detail['goods_id'])->update(['status' => 'normal', "updatetime" => time()]);
//分佣给买家上级
$site = Config::get("site");
$commission = bcmul($row->order_amount, $site['primary_distribution'] * 0.01, 2);
$user = Db::name('user')->where('id', $row->buyer_id)->find();
$obj = new UserService();
$ret = $obj->userCommission(1, $user, $row->order_sn, -$commission);
if(!$ret){
$this->error(__('Operation failed'));
}
return $this->success();
}
}
}