diff --git a/application/admin/controller/Order.php b/application/admin/controller/Order.php index 44510ea..8f805c4 100755 --- a/application/admin/controller/Order.php +++ b/application/admin/controller/Order.php @@ -6,6 +6,10 @@ 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; + /** * * @@ -67,7 +71,7 @@ class Order extends Backend ->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,count(distinct order.buyer_id) as user_count") + ->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); @@ -76,6 +80,18 @@ class Order extends Backend $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(), @@ -83,8 +99,10 @@ class Order extends Backend "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, ] ); @@ -123,5 +141,45 @@ class Order extends Backend $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(); + } + } + + + + + + + + + + } diff --git a/application/admin/view/order/index.html b/application/admin/view/order/index.html index 6913840..d0a6e4d 100755 --- a/application/admin/view/order/index.html +++ b/application/admin/view/order/index.html @@ -17,7 +17,9 @@ 订单数:0 订单金额:0 优惠金额:0 + 佣金抵扣金额:0 购买人数:0 + 新购人数:0 diff --git a/application/api/controller/Order.php b/application/api/controller/Order.php index a25cbb8..8193951 100755 --- a/application/api/controller/Order.php +++ b/application/api/controller/Order.php @@ -41,7 +41,7 @@ class Order extends Api $this->success('succ'); } $time = time(); - foreach ($list as $key => $value) { + foreach ($list as $key => &$value) { if ($value['id'] != $user['warehouse_id']) { unset($list[$key]); @@ -52,7 +52,10 @@ class Order extends Api if ($user['pid'] > 0) { $value['is_allow_access'] = 1; } - + if (in_array($user['id'], [61])) { + $value['status'] ='normal'; + $value['is_allow_access'] = 1; + } } $this->success('succ', array_values($list)); @@ -239,6 +242,7 @@ class Order extends Api $num = $this->request->post("num", 1); $coupon_id = $this->request->post("coupon_id", 0); $user_id = $this->auth->id; + $user = $this->auth->getUserinfo(); $address = Address::where('id', $address_id)->where('user_id', $user_id)->find(); if (!$address) { $this->error("收货地址不存在"); @@ -247,11 +251,19 @@ class Order extends Api if (!$goods) { $this->error("商品不存在"); } + $warehouse = Warehouse::where('id', $goods['warehouse_id'])->find(); + $this->getBuyTime($warehouse, $user); + if (time() < strtotime($warehouse['start'])) { + $this->error("抢购时间还没到!"); + } + if (time() > strtotime($warehouse['end'])) { + $this->error("抢购时间已结束!"); + } + //exit(); $order_amount = $goods['price'] * $num; $coupon_price = 0; - - + $pay_amount = $order_amount - $coupon_price; $order_sn = "ZH".date("YmdHis").rand(1000,9999); //创建订单 @@ -301,6 +313,9 @@ class Order extends Api $obj->userCommission(0, $this->auth->getUserinfo(), $order_sn, $commission); //更新商品状态为下架 Goods::where('id', $goods_id)->update(['status' => 'hidden', "updatetime" => time()]); + + + $this->success("succ"); } /** @@ -317,7 +332,7 @@ class Order extends Api if ($status != "") { $where['status'] = ['in', explode(",", $status)]; } else { - $where['status'] = ['in', [0,1,3,4,5,6]]; + $where['status'] = ['in', [0,1,3,4,5]]; } $list = OrderModel::where('seller_id', $user_id)->where($where)->order('id', 'desc')->paginate($this->request->param('list_rows', $limit))->each(function ($item, $key){ $order_goods = Detail::where('order_id', $item['id'])->select(); @@ -348,7 +363,7 @@ class Order extends Api if ($status != "") { $where['status'] = ['in', explode(",", $status)]; } else { - $where['status'] = ['in', [0,1,2,3,4,5,6,7]]; + $where['status'] = ['in', [0,1,2,3,4,5,7]]; } $list = OrderModel::where('buyer_id', $user_id)->where($where)->order('id', 'desc')->paginate($this->request->param('list_rows', $limit))->each(function ($item, $key){ $order_goods = Detail::where('order_id', $item['id'])->select(); @@ -441,11 +456,24 @@ class Order extends Api $this->error("订单不存在"); } $upData = ['updatetime' => time()]; - if ($pay_voucher) { + if ($status == 1) { $upData['pay_voucher'] = $pay_voucher; $upData['pay_time'] = time(); $upData['pay_method'] = $pay_method; $upData['status'] = $status; + + $detail = Detail::where("order_id", $id)->find(); + //更新该商品的最后一个已上架的订单为已完成 + $single = Db::name('order')->alias('order') + ->join('order_detail detail', 'detail.order_id = order.id', 'left') + ->field("order.id") + ->where("goods_id", $detail['goods_id']) + ->where("status", 7) + ->order("order.id desc") + ->find(); + if ($single) { + OrderModel::where('id', $single['id'])->update(['status' => 6, "updatetime" =>time()]); + } } else { $upData['status'] = $status; } @@ -475,9 +503,11 @@ class Order extends Api $user_id = $user['id']; $goods = Detail::where('order_id', $order_id)->find(); - if (!$goods) { + $order = OrderModel::where("id", $order_id)->where('status', 2)->find(); + if (!$goods || !$order) { $this->error("订单不存在"); } + //商品是否上架 $goods_info = Goods::where('id', $goods['goods_id'])->where('status', 'hidden')->find(); if (!$goods_info) { @@ -512,8 +542,8 @@ class Order extends Api $this->error("优惠卷已过期"); } $coupon_price = $coupon['amount'] ?? 0; - OrderModel::where("id", $order_id)->update(['coupon_id' => $coupon_id, 'coupon_price' => $coupon_price]); } + OrderModel::where("id", $order_id)->update(['coupon_id' => $coupon_id, 'coupon_price' => $coupon_price]); $pay_sn = "NO".date("YmdHis").rand(1000,9999); $fee = bcmul($order_amount, Config::get("site.entrustment_ratio") * 0.01, 2); $pay_amount = $fee - $coupon_price; @@ -543,6 +573,7 @@ class Order extends Api // var_dump($order_data); // var_dump($params); // exit(); + //是否使用佣金 if ($use_commission) { if ($pay_amount < $user['available_commission_amount']) { $order_data['pay_source'] = 0;//佣金支付 @@ -585,6 +616,17 @@ class Order extends Api Detail::where("order_id", $order_id)->update(['commission_price' => $goods_price, "fee" => $fee, "dikou_price" => $user['available_commission_amount']]); } + } else { + //写微信支付 + $order_data['pay_source'] = 1;//微信支付 + $order_data['out_trade_no'] = $pay_sn;//微信支付 + $order_data['pay_amount'] = $pay_amount; + Db::name("pay_record")->insert($order_data); + //修改微信支付信息 + $params['amount'] = $order_data['pay_amount']; + $params['orderid'] = $pay_sn; + + Detail::where("order_id", $order_id)->update(['commission_price' => $goods_price, "fee" => $fee, "dikou_price" => 0]); } //$params['amount'] = 0.01; try { diff --git a/application/api/controller/User.php b/application/api/controller/User.php index a5e3e0e..6c3abe8 100755 --- a/application/api/controller/User.php +++ b/application/api/controller/User.php @@ -542,8 +542,8 @@ class User extends Api $user_ids = array_column($users, "id"); $data = [ - 'total_fans_order_amount' => order::whereIn('buyer_id', $user_ids)->whereIn('status', [0,1,2,3,4,5])->count(), - 'today_fans_order_num' => order::whereIn('buyer_id', $user_ids)->whereIn('status', [0,1,2,3,4,5])->sum('order_amount'), + 'total_fans_order_amount' => order::whereIn('buyer_id', $user_ids)->whereIn('status', [0,1,2,3,4,5,6,7])->sum('order_amount'), + 'today_fans_order_num' => order::whereIn('buyer_id', $user_ids)->whereIn('status', [0,1,2,3,4,5,6,7])->count(), ]; $this->success("succ", $data); } @@ -558,7 +558,7 @@ class User extends Api $users = UserModel::where('pid', $this->auth->id)->select(); $user_ids = array_column($users, "id"); - $list = order::whereIn('buyer_id', $user_ids)->whereIn('status', [0,1,2,3,4,5])->order('id', 'desc')->paginate($this->request->param('list_rows', $limit))->each(function ($item, $key){ + $list = order::whereIn('buyer_id', $user_ids)->whereIn('status', [0,1,2,3,4,5,6,7])->order('id', 'desc')->paginate($this->request->param('list_rows', $limit))->each(function ($item, $key){ $order_goods = Detail::where('order_id', $item['id'])->select(); if ($order_goods) { foreach ($order_goods as $key => $value) { diff --git a/public/assets/js/backend/order.js b/public/assets/js/backend/order.js index 597f009..d78958f 100755 --- a/public/assets/js/backend/order.js +++ b/public/assets/js/backend/order.js @@ -21,8 +21,10 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin $("#order_count").text(data.extend.order_count); $("#order_amount").text(data.extend.order_amount); $("#coupon_price").text(data.extend.coupon_price); + $("#dikou_price").text(data.extend.dikou_price); $("#user_count").text(data.extend.user_count); + $("#new_user_count").text(data.extend.new_user_count); }); // 初始化表格 @@ -63,6 +65,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin _html += '
' + row.user.mobile; return _html; }, operate:false}, + {field: 'user.nickname', title: __('联系人'),operate:"LIKE",sortable:true}, {field: 'user', title: __('状态/下单时间/支付时间'),operate:'LIKE', align: 'left', formatter: function (value, row) { var _html = ' '; _html += '
' + row.status_text; @@ -99,6 +102,21 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin // {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} {field: 'operate', title: __('Operate'), table: table,events: Table.api.events.operate, buttons:[ + { + name:'cancel', + text:'取消订单', + title:'取消订单', + classname: 'btn btn-xs btn-info btn-ajax', + icon: 'fa fa-check', + url: 'order/cancel', + visible:function(row){ + if (row.status == 0) { + return true; + } + return false; + }, + refresh:true + }, { name:'split', text:'发货',