79 行
2.5 KiB
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, '.', '') : '';
|
|
}
|
|
}
|
|
}
|