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.
185 lines
6.8 KiB
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();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|