123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- <?php
- namespace app\admin\controller\commission;
- use app\common\controller\Backend;
- use app\common\model\commission\Level as LevelModel;
- use think\Db;
- class Level extends Backend
- {
- protected $noNeedRight = ['select'];
- protected $model = null;
-
- /**
- * 快速搜索时执行查找的字段
- */
- protected $searchFields = 'level,name';
-
- /**
- * 是否是关联查询
- */
- protected $relationSearch = false;
- public function _initialize()
- {
- parent::_initialize();
- $this->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);
- }
- }
|