model = new LevelModel(); // 确保默认等级存在 $this->ensureDefaultLevel(); } /** * 查看 */ public function index() { if (!$this->request->isAjax()) { return $this->view->fetch(); } list($where, $sort, $order, $offset, $limit) = $this->buildparams(); $list = $this->model ->where($where) ->order($sort, $order) ->paginate($limit); $result = array("total" => $list->total(), "rows" => $list->items()); return json($result); } /** * 确保默认等级存在 */ private function ensureDefaultLevel() { $defaultLevel = $this->model->where('level', 1)->find(); if (!$defaultLevel) { $data = [ 'name' => '默认等级', 'level' => 1, 'commission_rules' => json_encode([ 'commission_1' => '0.00', 'commission_2' => '0.00', 'commission_3' => '0.00' ]), 'upgrade_type' => 0, 'upgrade_rules' => json_encode([]) ]; $this->model->save($data); } } /** * 添加 */ public function add() { if (!$this->request->isAjax()) { return $this->view->fetch(); } $params = $this->request->post("row/a"); if (empty($params)) { $this->error(__('Parameter %s can not be empty', 'row')); } // 只保留允许的字段 $params = array_intersect_key($params, array_flip(['level', 'name', 'image', 'commission_rules'])); // 处理JSON字段 if (isset($params['commission_rules']) && is_array($params['commission_rules'])) { $params['commission_rules'] = json_encode($params['commission_rules']); } // 设置默认值 $params['upgrade_type'] = 0; $params['upgrade_rules'] = null; $this->model->save($params); $this->success('保存成功', null, $this->model); } /** * 编辑 * * @param $id */ public function edit($ids = null) { $row = $this->model->where('level', $ids)->find(); if (!$row) { $this->error(__('No Results were found')); } if (!$this->request->isAjax()) { // 解析commission_rules JSON数据供编辑页面使用 if ($row['commission_rules']) { if (is_string($row['commission_rules'])) { // 如果是字符串,则解码 $commission_rules = json_decode($row['commission_rules'], true); if ($commission_rules) { $row['commission_rules'] = $commission_rules; } } elseif (is_array($row['commission_rules'])) { // 如果已经是数组,直接使用 // commission_rules 已经是数组了,无需处理 } } $this->view->assign("row", $row); return $this->view->fetch('add'); } $params = $this->request->post("row/a"); if (empty($params)) { $this->error(__('Parameter %s can not be empty', 'row')); } // 只保留允许的字段 $params = array_intersect_key($params, array_flip(['level', 'name', 'image', 'commission_rules'])); // 如果是编辑1级(默认等级),不允许修改level字段 if ($row['level'] == 1) { unset($params['level']); // 移除level参数,保持原值 } // 处理JSON字段 if (isset($params['commission_rules']) && is_array($params['commission_rules'])) { $params['commission_rules'] = json_encode($params['commission_rules']); } $result = $this->model->where('level', $ids)->update($params); if ($result) { $this->success('更新成功', null, $result); } else { $this->error('更新失败'); } } /** * 详情 * * @param $id * @return \think\Response */ public function detail($id) { $detail = $this->model->get($id); if (!$detail) { $this->error(__('No Results were found')); } $this->success('等级详情', null, $detail); } /** * 删除 * * @param $id * @return \think\Response */ public function delete($id) { if (empty($id)) { $this->error(__('Parameter %s can not be empty', 'id')); } $result = Db::transaction(function () use ($id) { return $this->model->where('level', $id)->delete(); }); if ($result) { $this->success('删除成功', null, $result); } else { $this->error(__('No rows were deleted')); } } // 选择分销商等级 public function select() { if (!$this->request->isAjax()) { return $this->view->fetch(); } $data = $this->model->order('level', 'asc')->field('level, name, image, commission_rules')->select(); // 解码JSON字段 foreach ($data as &$item) { if (!empty($item['commission_rules'])) { $item['commission_rules'] = json_decode($item['commission_rules'], true); } } $this->success('选择等级', null, $data); } }