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.
299 lines
12 KiB
299 lines
12 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());
|
|
$this->view->assign("orderTypeList", ['买单',"卖单"]);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* 默认生成的控制器所继承的父类中有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','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.user_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();
|
|
}
|
|
public function add()
|
|
{
|
|
if ($this->request->isPost()) {
|
|
$params = $this->request->post("row/a");
|
|
if ($params) {
|
|
$order_sn = "ZH".date("YmdHis").rand(1000,9999);
|
|
//创建订单
|
|
$orderData = [
|
|
"order_type" => 1,
|
|
"add_type" => 1,
|
|
"user_id" => $params['user_id'],
|
|
"sell_order_id" => 0,
|
|
"buyer_id" => 0,
|
|
"seller_id" => $params['user_id'],
|
|
"order_sn" => $order_sn,
|
|
"warehouse_id" => $params['warehouse_id'],
|
|
"order_amount" => $params['pay_amount'],
|
|
"pay_amount" => $params['pay_amount'],
|
|
"actual_amount" => $params['pay_amount'],
|
|
"coupon_price" => 0,
|
|
"coupon_id" => 0,
|
|
"status" => $params['status'],
|
|
];
|
|
$order = OrderModel::create($orderData);
|
|
if ($order === false) {
|
|
$this->error("下单失败");
|
|
}
|
|
$goods = Goods::where('id', $params['goods_id'])->find();
|
|
$orderDetail = [
|
|
"order_id" => $order->id,
|
|
"buyer_id" => 0,
|
|
"seller_id" => $params['user_id'],
|
|
"goods_id" => $params['goods_id'],
|
|
"goods_name" => $goods['name'],
|
|
"goods_image" => $goods['image'],
|
|
"goods_price" => $params['pay_amount'],
|
|
"num" => 1,
|
|
];
|
|
$ret = Detail::create($orderDetail);
|
|
if ($ret === false) {
|
|
$this->error("下单失败");
|
|
}
|
|
Goods::where('id', $params['goods_id'])->update(['owner_id' => $params['user_id'],'status'=>'normal','price' => $params['pay_amount']]);
|
|
$this->success();
|
|
|
|
}
|
|
$this->error(__('Parameter %s can not be empty', ''));
|
|
}
|
|
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();
|
|
}
|
|
}
|
|
public function split($ids = NULL){
|
|
$row = $this->model->get($ids);
|
|
$detail = Detail::where("order_id", $row->id)->find();
|
|
// var_dump($row);
|
|
// exit;
|
|
if (!$row)
|
|
$this->error(__('No Results were found'));
|
|
if ($this->request->isPost()){
|
|
$params = $this->request->post("row/a");
|
|
$datajson = json_decode($params['datajson'], true);
|
|
foreach ($datajson as $value) {
|
|
$order_sn = "ZH".date("YmdHis").rand(1000,9999);
|
|
//创建订单
|
|
$orderData = [
|
|
"order_type" => 1,
|
|
"user_id" => $params['user_id'],
|
|
"sell_order_id" => 0,
|
|
"buyer_id" => 0,
|
|
"seller_id" => $params['user_id'],
|
|
"order_sn" => $order_sn,
|
|
"warehouse_id" => $row->warehouse_id,
|
|
"order_amount" => $value['price'],
|
|
"pay_amount" => $value['price'],
|
|
"coupon_price" => 0,
|
|
"coupon_id" => 0,
|
|
"status" => 3,
|
|
];
|
|
$order = OrderModel::create($orderData);
|
|
if ($order === false) {
|
|
$this->error("下单失败");
|
|
}
|
|
$goods = Goods::where('id', $value['goods_id'])->find();
|
|
$orderDetail = [
|
|
"order_id" => $order->id,
|
|
"buyer_id" => 0,
|
|
"seller_id" => $params['user_id'],
|
|
"goods_id" => $value['goods_id'],
|
|
"goods_name" => $goods['name'],
|
|
"goods_image" => $goods['image'],
|
|
"goods_price" => $value['price'],
|
|
"num" => 1,
|
|
];
|
|
$ret = Detail::create($orderDetail);
|
|
if ($ret === false) {
|
|
$this->error("下单失败");
|
|
}
|
|
Goods::where('id', $value['goods_id'])->update(['owner_id' => $params['user_id'],'status'=>'normal','price' => $value['price']]);
|
|
}
|
|
//当前商品置为闲置商品
|
|
Goods::where('id', $params['goods_id'])->update(['owner_id' => 0,'status'=>'hidden','price' => 0]);
|
|
$ret = $this->model->update(['status' => 6, "updatetime" => time()], ['id'=>$ids]);
|
|
if ($ret === false) {
|
|
$this->error("下单失败");
|
|
}
|
|
return $this->success();
|
|
}
|
|
$arr = $row->toArray();
|
|
$arr['goods_id'] = $detail['goods_id'];
|
|
// echo "<pre>";
|
|
// print_r($arr);
|
|
// exit();
|
|
$this->view->assign("row", $arr);
|
|
return $this->view->fetch();
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|