1、合作商余额查询
2、分油账户司机可用额度
This commit is contained in:
@@ -21,6 +21,7 @@ use think\facade\Request;
|
||||
use app\common\model\Goods as GoodsModel;
|
||||
use app\common\model\Order as OrderModel;
|
||||
use app\common\service\Order as OrderService;
|
||||
use app\common\service\QytOil;
|
||||
use app\common\service\Message as MessageService;
|
||||
use app\common\service\order\Refund as RefundService;
|
||||
use app\common\enum\order\OrderStatus as OrderStatusEnum;
|
||||
@@ -121,6 +122,8 @@ class Order extends OrderModel
|
||||
})
|
||||
->order(['order.create_time' => 'desc'])
|
||||
->paginate(10);
|
||||
// 给每个油券商品行挂上对应的企油通发放单(后台订单页的企油通列与操作按钮用)
|
||||
$this->setQytData($list);
|
||||
// 获取数据列表
|
||||
return [
|
||||
'list' => $list,
|
||||
@@ -128,6 +131,55 @@ class Order extends OrderModel
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 给订单商品行挂上企油通发放单数据(字段名 qyt)
|
||||
*
|
||||
* 小程序订单在支付成功后由 MallOil::create 为每个油券商品行建了一条
|
||||
* yoshop_partners_order(source='mall',mall_order_goods_id 指回商品行),
|
||||
* 企油通的发放/加油/退款/发票全挂在那张表上。后台订单页要展示这些信息、
|
||||
* 并复用 /partners.order/* 的操作接口,所以这里按商品行把发放单带出来。
|
||||
*
|
||||
* @param \think\Paginator|\think\Collection $list
|
||||
*/
|
||||
public function setQytData($list): void
|
||||
{
|
||||
$goodsIds = [];
|
||||
foreach ($list as $order) {
|
||||
foreach ($order['goods'] as $goods) {
|
||||
$goodsIds[] = (int)$goods['order_goods_id'];
|
||||
}
|
||||
}
|
||||
if (!$goodsIds) {
|
||||
return;
|
||||
}
|
||||
$rows = Db::name('partners_order')
|
||||
->where('source', '=', 'mall')
|
||||
->whereIn('mall_order_goods_id', $goodsIds)
|
||||
->select()->toArray();
|
||||
$map = [];
|
||||
foreach ($rows as $row) {
|
||||
// 身份证号脱敏(后台展示层)
|
||||
$row['id_card_mask'] = QytOil::maskIdCard((string)$row['id_card']);
|
||||
unset($row['id_card']);
|
||||
// 前端用的是严格相等(item.oil_status_zsy !== 2),这里显式转型,
|
||||
// 不依赖 PDO 是否把 int 列取成字符串
|
||||
foreach (['order_id', 'oil_status', 'oil_status_zsy', 'use_status', 'refund_status',
|
||||
'used_num', 'oil_callback', 'use_callback', 'qyt_enterprise_id',
|
||||
'mall_order_id', 'mall_order_goods_id', 'user_id'] as $k) {
|
||||
$row[$k] = (int)$row[$k];
|
||||
}
|
||||
// 剩余可退金额 = 发放金额 - 已加油 - 已退款
|
||||
$row['remain_amount'] = number_format(max(0, (float)$row['total_price']
|
||||
- (float)$row['used_amount'] - (float)$row['refund_amount']), 2, '.', '');
|
||||
$map[(int)$row['mall_order_goods_id']] = $row;
|
||||
}
|
||||
foreach ($list as $order) {
|
||||
foreach ($order['goods'] as $goods) {
|
||||
$goods['qyt'] = $map[(int)$goods['order_goods_id']] ?? null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 订单列表(全部)
|
||||
@@ -173,6 +225,8 @@ class Order extends OrderModel
|
||||
'pay_status' => -1, // 支付状态
|
||||
'oil_status' => -1, // 分油状态
|
||||
'use_status' => -1, // 使用状态
|
||||
'oil_status_zsy' => -1, // 企油通发放态 0未提交 1发放中 2成功 3失败
|
||||
'refund_status' => -1, // 退款状态 0未退款 1退款中 2已退款 3退款失败 4待人工确认
|
||||
'deliveryType' => -1, // 配送方式
|
||||
'betweenTime' => [], // 起止时间
|
||||
'userId' => 0, // 会员ID
|
||||
@@ -233,6 +287,22 @@ class Order extends OrderModel
|
||||
->column('order_id'); // 获取所有符合条件的 order_id 数组
|
||||
$filter[] = ['order.order_id', 'in', $subQuery];
|
||||
}
|
||||
// 企油通发放态(挂在 partners_order 上,按 mall_order_id 反查)
|
||||
if($params['oil_status_zsy'] > -1){
|
||||
$subQuery = Db::name('partners_order')
|
||||
->where('source', '=', 'mall')
|
||||
->where('oil_status_zsy', '=', (int)$params['oil_status_zsy'])
|
||||
->column('mall_order_id');
|
||||
$filter[] = ['order.order_id', 'in', $subQuery];
|
||||
}
|
||||
// 退款状态(同上)
|
||||
if($params['refund_status'] > -1){
|
||||
$subQuery = Db::name('partners_order')
|
||||
->where('source', '=', 'mall')
|
||||
->where('refund_status', '=', (int)$params['refund_status'])
|
||||
->column('mall_order_id');
|
||||
$filter[] = ['order.order_id', 'in', $subQuery];
|
||||
}
|
||||
// 配送方式
|
||||
$params['deliveryType'] > -1 && $filter[] = ['delivery_type', '=', (int)$params['deliveryType']];
|
||||
// 用户id
|
||||
|
||||
Reference in New Issue
Block a user