diff --git a/application/admin/controller/Blacklist.php b/application/admin/controller/Blacklist.php new file mode 100644 index 0000000..0dbc158 --- /dev/null +++ b/application/admin/controller/Blacklist.php @@ -0,0 +1,144 @@ +model = new \app\admin\model\Blacklist; + $this->view->assign("statusList", $this->model->getStatusList()); + } + + + + /** + * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法 + * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑 + * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改 + */ + + public function index() + { + //设置过滤方法 + $this->request->filter(['strip_tags', 'trim']); + if (false === $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 + ->where($where) + ->with(['user' => function($q){ + $q->field('id,nickname'); + }]) + ->order($sort, $order) + ->paginate($limit); + $result = ['total' => $list->total(), 'rows' => $list->items()]; + return json($result); + } + + public function add() + { + if (false === $this->request->isPost()) { + return $this->view->fetch(); + } + $params = $this->request->post('row/a'); + if (empty($params)) { + $this->error(__('Parameter %s can not be empty', '')); + } + $params = $this->preExcludeFields($params); + + if ($this->dataLimit && $this->dataLimitFieldAutoFill) { + $params[$this->dataLimitField] = $this->auth->id; + } + $result = false; + Db::startTrans(); + try { + //是否采用模型验证 + if ($this->modelValidate) { + $name = str_replace("\\model\\", "\\validate\\", get_class($this->model)); + $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate; + $this->model->validateFailException()->validate($validate); + } + + $params['status'] = 'active'; + $params['user_id'] = $this->auth->id; + $params['added_time'] = date('Y-m-d H:i:s'); + + $result = $this->model->allowField(true)->save($params); + Db::commit(); + } catch (ValidateException|PDOException|Exception $e) { + Db::rollback(); + $this->error($e->getMessage()); + } + if ($result === false) { + $this->error(__('No rows were inserted')); + } + $this->success(); + } + + public function edit($ids = null) + { + if (!$ids) { + if (request()->isPost()){ + $ids = input('id'); + if (!$ids){ + $this->error('缺少订单ID'); + } + }else{ + $this->error('缺少订单ID'); + } + } + + // 获取当前ID对应的订单信息 + $order = $this->model->get($ids); + if (!$order) { + $this->error('订单不存在'); + } + + // 判断是否为POST请求,进行更新操作 + if (request()->isPost()) { + // 获取表单提交的数据 + $data = input('post.row/a'); + + if ($data['status'] == 'removed'){ + $data['removed_time'] = date('Y-m-d H:i:s'); + }else{ + $data['removed_time'] = null; + } + + // 更新订单信息 + $order->save($data); + + // 返回成功信息 + $this->success('更新成功', 'index'); + } + // 将订单数据传递到视图 + $this->assign('row', $order); + + // 渲染编辑页面 + return $this->fetch(); + } +} diff --git a/application/admin/lang/zh-cn/blacklist.php b/application/admin/lang/zh-cn/blacklist.php new file mode 100644 index 0000000..7e68a93 --- /dev/null +++ b/application/admin/lang/zh-cn/blacklist.php @@ -0,0 +1,13 @@ + '账号', + 'Username' => '用户名', +// 'Username' => '用户名', + 'Added_time' => '加入时间', + 'Removed_time' => '移除时间', + 'Reason' => '原因', + 'Active' => '生效', + 'Removed' => '移除', + 'Remarks' => '备注' +]; diff --git a/application/admin/model/Blacklist.php b/application/admin/model/Blacklist.php new file mode 100644 index 0000000..341618d --- /dev/null +++ b/application/admin/model/Blacklist.php @@ -0,0 +1,54 @@ + __('Active'), 'removed' => __('Removed')]; + } + + + public function getStatusTextAttr($value, $data) + { + $value = $value ?: ($data['status'] ?? ''); + $list = $this->getStatusList(); + return $list[$value] ?? ''; + } + + + public function user(){ + return $this->belongsTo(Admin::class,'user_id'); + } + + + + +} diff --git a/application/admin/validate/Blacklist.php b/application/admin/validate/Blacklist.php new file mode 100644 index 0000000..c082dfb --- /dev/null +++ b/application/admin/validate/Blacklist.php @@ -0,0 +1,27 @@ + [], + 'edit' => [], + ]; + +} diff --git a/application/admin/view/blacklist/add.html b/application/admin/view/blacklist/add.html new file mode 100644 index 0000000..09765fb --- /dev/null +++ b/application/admin/view/blacklist/add.html @@ -0,0 +1,27 @@ +
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
diff --git a/application/admin/view/blacklist/edit.html b/application/admin/view/blacklist/edit.html new file mode 100644 index 0000000..6892123 --- /dev/null +++ b/application/admin/view/blacklist/edit.html @@ -0,0 +1,39 @@ +
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+ {foreach name="statusList" item="vo"} + + {/foreach} +
+ +
+
+
+ +
+ +
+
+ +
diff --git a/application/admin/view/blacklist/index.html b/application/admin/view/blacklist/index.html new file mode 100644 index 0000000..072af15 --- /dev/null +++ b/application/admin/view/blacklist/index.html @@ -0,0 +1,46 @@ +
+ +
+ {:build_heading(null,FALSE)} + +
+ + +
+
+
+
+
+ + {:__('Add')} + {:__('Edit')} + {:__('Delete')} + + + + + +
+ +
+
+
+ +
+
+
diff --git a/public/assets/js/backend/blacklist.js b/public/assets/js/backend/blacklist.js new file mode 100644 index 0000000..510cf20 --- /dev/null +++ b/public/assets/js/backend/blacklist.js @@ -0,0 +1,55 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'blacklist/index' + location.search, + add_url: 'blacklist/add', + edit_url: 'blacklist/edit', + del_url: 'blacklist/del', + multi_url: 'blacklist/multi', + import_url: 'blacklist/import', + table: 'blacklist', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'id', + columns: [ + [ + {checkbox: true}, + {field: 'id', title: __('Id')}, + {field: 'user.nickname', title: __('User_id')}, + {field: 'username', title: __('Username'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, + {field: 'added_time', title: __('Added_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime}, + {field: 'removed_time', title: __('Removed_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime}, + {field: 'status', title: __('Status'), searchList: {"active":__('Active'),"removed":__('Removed')}, formatter: Table.api.formatter.status}, + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + }, + api: { + bindevent: function () { + Form.api.bindevent($("form[role=form]")); + } + } + }; + return Controller; +});