文件
Henglianshutong/addons/shopro/controller/commission/Order.php

79 行
2.5 KiB
PHP

<?php
namespace addons\shopro\controller\commission;
use think\Request;
use app\admin\model\shopro\commission\Order as OrderModel;
use app\admin\model\shopro\partner\Reward as PartnerReward;
use addons\shopro\service\partner\PartnerConfig;
class Order extends Commission
{
protected $noNeedLogin = [];
protected $noNeedRight = ['*'];
// 分销动态
public function index()
{
$agentId = $this->service->user->id;
$type = $this->request->param('type', "all");
if (!in_array($type, ['all', 'back', 'cancel', 'yes'])) {
$this->error("");
}
$query = OrderModel
::where('agent_id', $agentId)
->with([
'buyer' => function ($query) {
return $query->field(['avatar', 'nickname']);
},
'order',
'rewards' => function ($query) use ($agentId) {
return $query->where('agent_id', $agentId);
},
'order_item'
])
->order('id desc');
if ($type !== 'all') {
$query->$type();
}
$data = $query->paginate($this->request->param('list_rows', 10));
$this->attachPartnerAmount($data, $agentId);
$this->success("", $data);
}
protected function attachPartnerAmount($data, $agentId)
{
$orderIds = [];
foreach ($data as $row) {
if (!empty($row->order_id)) {
$orderIds[] = intval($row->order_id);
}
}
$sums = [];
if ($orderIds) {
try {
$rows = PartnerReward::where('user_id', $agentId)
->whereIn('order_id', $orderIds)
->where('status', 1)
->whereIn('reward_type', PartnerConfig::instantTypes())
->field('order_id, sum(amount) as partner_amount')
->group('order_id')
->select();
foreach ($rows as $row) {
$sums[intval($row['order_id'])] = $row['partner_amount'];
}
} catch (\Exception $e) {
$sums = [];
}
}
foreach ($data as $row) {
$amount = $sums[intval($row->order_id)] ?? 0;
$row->partner_amount = $amount > 0 ? number_format($amount, 2, '.', '') : '';
}
}
}