diff --git a/app/admin/controller/Order.php b/app/admin/controller/Order.php index 4d36d2f..deaa2a5 100755 --- a/app/admin/controller/Order.php +++ b/app/admin/controller/Order.php @@ -19,7 +19,7 @@ use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use PhpOffice\PhpSpreadsheet\Style\Alignment; use PhpOffice\PhpSpreadsheet\Style\Font; use PhpOffice\PhpSpreadsheet\IOFactory; - + class Order extends Base @@ -646,7 +646,7 @@ class Order extends Base // 清理内存 unset($data); gc_collect_cycles(); - + $page++; } @@ -894,11 +894,11 @@ class Order extends Base } else { $str_addtime = 0; } - + $field = '*'; $order = 'id desc'; $data = OrderModel::getList($whe, $field, $order, $this->page); - + // 获取对应的订单回调验证信息 $order_nums = array_column($data['list'], 'order_num'); $notify_info = []; @@ -908,26 +908,26 @@ class Order extends Base ->where('status', 2) // 回调失败的记录 ->select() ->toArray(); - + foreach ($notify_list as $notify) { $notify_info[$notify['order_no']] = $notify; } } - + foreach ($data['list'] as &$value) { $user_info = User::field('nickname,headimg,mobile,uid')->where(['id' => $value['user_id']])->find(); $value['nickname'] = $user_info['nickname']; $value['headimg'] = $user_info['headimg']; $value['mobile'] = $user_info['mobile']; $value['uid'] = $user_info['uid'] ?: $value['user_id']; - + // 标记回调验证失败的订单 $value['notify_failed'] = isset($notify_info[$value['order_num']]) ? 1 : 0; if ($value['notify_failed']) { $value['notify_info'] = $notify_info[$value['order_num']]; } } - + View::assign('list', $data['list']); View::assign('count', $data['count']); View::assign('page', $data['page']); @@ -945,22 +945,22 @@ class Order extends Base { $id = request()->param('id/d', 0); $send_num = request()->param('send_num', ''); - + // 查找商品记录 $orderItem = OrderList::where('id', '=', $id) ->where('send_num', '=', $send_num) ->find(); - + if (!$orderItem) { return $this->renderError('商品不存在或参数错误'); } - + // 获取订单信息 $orderInfo = OrderListSend::where('send_num', '=', $send_num)->find(); if (!$orderInfo) { return $this->renderError('订单不存在'); } - + Db::startTrans(); try { // 更新商品状态 @@ -969,17 +969,17 @@ class Order extends Base $orderItem->choice_time = 0; $orderItem->fh_status = 0; $orderItem->save(); - + // 检查订单中是否还有其他商品 $remainingItems = OrderList::where('send_num', '=', $send_num)->count(); - + // 如果没有其他商品,取消整个订单 if ($remainingItems <= 1) { // 1表示当前要删除的商品 // 如果订单有运费且已支付,需要处理退款 if ($orderInfo['freight'] > 0 && $orderInfo['status'] > 0) { $wxServer = new \app\common\server\WechatRefund($this->app); $refund_res = $wxServer->OrderRefund($orderInfo); - + // 记录退款 Db::name('profit_pay')->insert([ 'user_id' => $orderInfo['user_id'], @@ -990,7 +990,7 @@ class Order extends Base 'addtime' => time(), ]); } - + // 更新订单状态为取消 OrderListSend::where('id', '=', $orderInfo['id'])->update([ 'status' => 4, @@ -1003,7 +1003,7 @@ class Order extends Base 'count' => $remainingItems - 1 // 减去当前要删除的商品 ]); } - + Db::commit(); return $this->renderSuccess('商品已成功从订单中删除'); } catch (\Exception $e) { @@ -1019,7 +1019,7 @@ class Order extends Base { return View::fetch('Order/order_list'); } - + /** * 获取订单列表数据 */ @@ -1037,14 +1037,14 @@ class Order extends Base 'istest' => input('istest', '0'), 'u_status' => input('u_status', '1') ]; - + $result = $this->getOrderDataSource($params); - + // 格式化数据 foreach ($result['list'] as &$item) { $item = $this->formatOrderData($item); } - + return json([ 'code' => 0, 'msg' => '获取成功', @@ -1064,7 +1064,7 @@ class Order extends Base // 格式化时间 $addtime = date('Y-m-d H:i:s', $item['addtime']); $pay_time = $item['pay_time'] ? date('Y-m-d H:i:s', $item['pay_time']) : ''; - + // 支付状态格式化 switch ($item['status']) { case 0: @@ -1079,7 +1079,7 @@ class Order extends Base default: $status_text = '未知状态'; } - + // 支付类型格式化 - 根据订单号前缀判断 $order_prefix = substr($item['order_num'], 3, 3); switch ($order_prefix) { @@ -1102,7 +1102,7 @@ class Order extends Base $item['mobile'], $item['goods_title'], $item['goods_price'], - $item['num'], + $item['prize_num'], $item['order_zhe_total'], $item['price'], $item['use_money'], @@ -1122,7 +1122,7 @@ class Order extends Base $item['pay_time'] = $pay_time; $item['status_text'] = $status_text; $item['pay_type_text'] = $pay_type_text; - + return $item; } @@ -1148,12 +1148,28 @@ class Order extends Base // 设置表头 $headers = [ - '订单ID', '订单号', '用户UID', '用户昵称', '手机号', - '商品标题', '商品价格', '购买数量', '订单金额', - 'RMB支付', '钻石支付', 'UU币支付', '达达券支付', '优惠券抵扣', - '抽奖数量', '出货金额', '支付状态', '支付类型', '购买时间', '支付时间' + '订单ID', + '订单号', + '用户UID', + '用户昵称', + '手机号', + '商品标题', + '商品价格', + '购买数量', + '订单金额', + 'RMB支付', + '钻石支付', + 'UU币支付', + '达达券支付', + '优惠券抵扣', + '抽奖数量', + '出货金额', + '支付状态', + '支付类型', + '购买时间', + '支付时间' ]; - + // 写入表头 foreach ($headers as $col => $header) { $sheet->setCellValueByColumnAndRow($col + 1, 1, $header); @@ -1191,7 +1207,7 @@ class Order extends Base // 清理内存 unset($data); gc_collect_cycles(); - + $page++; } @@ -1224,9 +1240,9 @@ class Order extends Base $u_status = $params['u_status'] ?? '1'; $page = $params['page'] ?? 1; $limit = $params['limit'] ?? 10; - + $where = []; - + // 转换时间格式 if ($start_time) { $start_time = strtotime($start_time); @@ -1234,20 +1250,20 @@ class Order extends Base if ($end_time) { $end_time = strtotime($end_time); } - + if ($user_id) { $user_id = $this->convertUidToUserId($user_id); $where[] = ['o.user_id', '=', $user_id]; } - + if ($mobile) { - $where[] = ['u.mobile', 'like', '%'.$mobile.'%']; + $where[] = ['u.mobile', 'like', '%' . $mobile . '%']; } - + if ($order_num) { - $where[] = ['o.order_num', 'like', '%'.$order_num.'%']; + $where[] = ['o.order_num', 'like', '%' . $order_num . '%']; } - + if ($status !== '') { $where[] = ['o.status', '=', $status]; } @@ -1261,7 +1277,7 @@ class Order extends Base if ($u_status !== '') { $where[] = ['u.status', '=', $u_status]; } - + if ($start_time && $end_time) { $where[] = ['o.addtime', 'between', [$start_time, $end_time]]; } else if ($start_time) { @@ -1269,7 +1285,7 @@ class Order extends Base } else if ($end_time) { $where[] = ['o.addtime', '<=', $end_time]; } - + $query = Db::table('order') ->alias('o') ->join('user u', 'o.user_id = u.id') @@ -1283,14 +1299,14 @@ class Order extends Base END as sc_money,u.status u_status,u.istest,u.uid') ->where($where) ->order('o.id desc'); - + if ($isExport) { return $query; } - + $count = $query->count(); $list = $query->page($page, $limit)->select()->toArray(); - + return [ 'count' => $count, 'list' => $list