This commit is contained in:
youda 2025-05-18 13:14:22 +08:00
parent 2f5ca0b30f
commit 432e799fdd

View File

@ -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