model = new CommissionGoodsModel(); $this->goodsModel = new GoodsModel(); } public function index() { if (!$this->request->isAjax()) { return $this->view->fetch(); } $data = $this->goodsModel->sheepFilter()->with('commission_goods')->paginate($this->request->param('list_rows', 10)); $this->success('分销商品列表', null, $data); } /** * 详情 * * @param $id */ public function detail($id) { $goodsList = collection(GoodsModel::with(['commission_goods'])->whereIn('id', $id)->select())->each(function ($goods) { $goods->skus = $goods->skus; $goods->sku_prices = $goods->sku_prices; }); $config = sheep_config('shop.commission'); $defaultPartnerRules = \addons\shopro\service\partner\PartnerConfig::defaultRules(); $roleNames = \addons\shopro\service\partner\PartnerConfig::roleNames(); $levels = \app\admin\model\shopro\commission\Level::order('level asc')->select(); $this->success('分销商品详情', null, [ 'goods' => $goodsList, 'config' => $config, 'default_partner_rules' => $defaultPartnerRules, 'role_names' => $roleNames, 'levels' => $levels, ]); } /** * 设置计奖规则/佣金(支持批量) * * @param $id */ public function edit($id = null) { if (!$this->request->isAjax()) { return $this->view->fetch(); } // 接受全部参数 $params = $this->request->only(['status', 'self_rules', 'commission_order_status', 'commission_config', 'commission_rules']); if (empty($id)) { $id = $this->request->param('id', ''); } if (empty($id)) { $this->error('缺少必要参数: id'); } // 状态规范化 if (isset($params['status'])) { $params['status'] = intval($params['status']) === 1 ? 1 : 0; } if (isset($params['commission_order_status'])) { $params['commission_order_status'] = intval($params['commission_order_status']) === 0 ? 0 : 1; } if (isset($params['self_rules'])) { $params['self_rules'] = intval($params['self_rules']); } // 针对 commission_rules 防御性处理 if (isset($params['commission_rules'])) { if (is_string($params['commission_rules'])) { $decoded = json_decode($params['commission_rules'], true); if (json_last_error() === JSON_ERROR_NONE && is_array($decoded)) { $params['commission_rules'] = $decoded; } } } $result = Db::transaction(function () use ($id, $params) { $count = 0; $ids = explode(',', (string)$id); foreach ($ids as $goods_id) { $goods_id = intval($goods_id); if ($goods_id <= 0) { continue; } if ($row = $this->model->get($goods_id)) { $row->save($params); } else { $model = new CommissionGoodsModel(); $saveData = $params; $saveData['goods_id'] = $goods_id; $model->save($saveData); } $count++; } return $count; }); if ($result) { $this->success('更新成功', null, $result); } else { $this->error('更新失败'); } } }