model = new OrderModel(); // 配置订单和用户信息展示 $this->assignconfig('commission_order_status_types', [ '-2' => __('已扣除'), '-1' => __('已取消'), '0' => __('不计入'), '1' => __('已计入') ]); $this->assignconfig('commission_reward_status_types', [ '-2' => __('已退回'), '-1' => __('已取消'), '0' => __('未结算'), '1' => __('已结算') ]); $this->assignconfig('commission_order_user_display_config', [ 'showAvatar' => true, 'avatarSize' => 40, 'showMobile' => true, 'showId' => true, 'defaultAvatarUrl' => '/assets/img/avatar.png' ]); } /** * 查看 */ public function index() { if (!$this->request->isAjax()) { return $this->view->fetch(); } //如果发送的来源是 Selectpage,则转发到 Selectpage if ($this->request->request('keyField')) { return $this->selectpage(); } [$where, $sort, $order, $offset, $limit] = $this->buildparams(); $list = $this->model ->with(['buyer', 'agent', 'order', 'rewards.agent', 'order_item']) ->where($where) ->order($sort, $order) ->paginate($limit); $listArray = $list->toArray(); // 统计数据 - 基于当前查询条件 $count = [ 'total' => $listArray['total'], 'total_amount' => 0, 'total_commission' => 0, 'total_commission_cancel' => 0, 'total_commission_accounted' => 0, 'total_commission_back' => 0, 'total_commission_pending' => 0 ]; // 获取所有符合条件的订单用于统计 $orders = $this->model->with(['rewards'])->where($where)->select(); collection($orders)->each(function ($order) use (&$count) { $count['total_amount'] += $order['amount']; foreach ($order['rewards'] as $reward) { $count['total_commission'] += $reward['commission']; switch ($reward['status']) { case RewardModel::COMMISSION_REWARD_STATUS_ACCOUNTED: $count['total_commission_accounted'] += $reward['commission']; break; case RewardModel::COMMISSION_REWARD_STATUS_BACK: $count['total_commission_back'] += $reward['commission']; break; case RewardModel::COMMISSION_REWARD_STATUS_PENDING: $count['total_commission_pending'] += $reward['commission']; break; case RewardModel::COMMISSION_REWARD_STATUS_CANCEL: $count['total_commission_cancel'] += $reward['commission']; break; } } }); $result = [ 'total' => $listArray['total'], 'rows' => $listArray['data'], 'extend' => ['count' => $count] ]; return json($result); } /** * 结算佣金 * * @return Response */ public function confirm() { $params = $this->request->only(['commission_reward_id', 'commission_order_id']); try { Db::transaction(function () use ($params) { $rewardService = new RewardService('admin'); if (isset($params['commission_reward_id'])) { return $rewardService->runCommissionReward($params['commission_reward_id']); } elseif (isset($params['commission_order_id'])) { return $rewardService->runCommissionRewardByOrder($params['commission_order_id']); } }); } catch (HttpResponseException $e) { $data = $e->getResponse()->getData(); $message = $data ? ($data['msg'] ?? '') : $e->getMessage(); $this->error($message); } catch (\Exception $e) { $this->error($e->getMessage()); } $this->success('操作成功'); } /** * 取消结算 * * @return Response */ public function cancel() { $params = $this->request->only(['commission_reward_id', 'commission_order_id']); try { Db::transaction(function () use ($params) { $rewardService = new RewardService('admin'); if (isset($params['commission_reward_id'])) { return $rewardService->cancelCommissionReward($params['commission_reward_id']); } elseif (isset($params['commission_order_id'])) { return $rewardService->backCommissionRewardByOrder($params['commission_order_id']); } }); } catch (HttpResponseException $e) { $data = $e->getResponse()->getData(); $message = $data ? ($data['msg'] ?? '') : $e->getMessage(); $this->error($message); } catch (\Exception $e) { $this->error($e->getMessage()); } $this->success('操作成功'); } /** * 退回已结算佣金 */ public function back() { $params = $this->request->only(['commission_reward_id', 'commission_order_id', 'deduct_order_money']); try { Db::transaction(function () use ($params) { $rewardService = new RewardService('admin'); if (isset($params['commission_reward_id'])) { return $rewardService->backCommissionReward($params['commission_reward_id']); } elseif (isset($params['commission_order_id'])) { return $rewardService->backCommissionRewardByOrder($params['commission_order_id'], $params['deduct_order_money']); } }); } catch (HttpResponseException $e) { $data = $e->getResponse()->getData(); $message = $data ? ($data['msg'] ?? '') : $e->getMessage(); $this->error($message); } catch (\Exception $e) { $this->error($e->getMessage()); } $this->success('操作成功'); } /** * 修改待结算佣金 */ public function edit($id = null) { $params = $this->request->only(['commission_reward_id', 'commission']); $reward = RewardModel::get($params['commission_reward_id']); if (!$reward) { $this->error(__('No Results were found')); } $reward->commission = $params['commission']; $result = $reward->save(); if ($result) { $this->success('操作成功'); } $this->error('操作失败'); } /** * 导出(需要根据实际Export类来实现) */ public function export() { // 获取查询条件 [$where] = $this->buildparams(); // 数据总条数 $total = $this->model->where($where)->count(); if ($total <= 0) { $this->error('导出数据为空'); } // TODO: 实现具体的导出逻辑 // 这里需要根据实际的Export类来实现 $this->error('导出功能待实现'); } }