model = model('Chapterendrecommend');
$this->view->assign("statusList", $this->model->getStatusList());
}
/**
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个方法
* 因此在当前控制器中可不用编写增删改查的代码,如果需要自己控制这部分逻辑
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
*/
/**
* 查看
*/
public function index()
{
//设置过滤方法
$this->request->filter(['strip_tags']);
if ($this->request->isAjax())
{
//如果发送的来源是Selectpage,则转发到Selectpage
if ($this->request->request('pkey_name'))
{
return $this->selectpage();
}
list($where, $sort, $order, $offset, $limit) = $this->buildparams('', true);
$total = $this->model
->join('book', 'book.id=chapter_end_recommend.book_id')
->where($where)
->order($sort, $order)
->count();
$list = $this->model
->join('book', 'book.id=chapter_end_recommend.book_id')
->field(['chapter_end_recommend.*','book.cansee','book.state'])
->where($where)
->order($sort, $order)
->limit($offset, $limit)
->select();
$book_ids = array_column($list, 'book_id');
$book_ids = array_merge($book_ids, array_column($list, 'relation_book_id'));
$books = BookService::instance()->getBookModel()->getBooksInfo($book_ids);
foreach($list as $index=>$item){
if (array_key_exists($item['book_id'], $books)) {
$list[$index]['book_name'] = $books[$item['book_id']]['name'];
} else {
$list[$index]['book_name'] = '';
}
if (array_key_exists($item['relation_book_id'], $books)) {
$list[$index]['relation_book_name'] = $books[$item['relation_book_id']]['name'];
} else {
$list[$index]['relation_book_name'] = '';
}
}
$result = array("total" => $total, "rows" => $list);
return json($result);
}
return $this->view->fetch();
}
/**
* 添加
*/
public function add()
{
if ($this->request->isPost())
{
$params = $this->request->post("row/a");
if ($params)
{
/*
* 已经弃用,如果为了兼容老版可取消注释
foreach ($params as $k => &$v)
{
$v = is_array($v) ? implode(',', $v) : $v;
}
*/
if ($this->dataLimit)
{
$params[$this->dataLimitField] = $this->auth->id;
}
try
{
//是否采用模型验证
if ($this->modelValidate)
{
$name = basename(str_replace('\\', '/', get_class($this->model)));
$validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : true) : $this->modelValidate;
$this->model->validate($validate);
}
if ($params['recommend'] == '
') {
$params['recommend'] = '';
}
if ($params['book_id'] == $params['relation_book_id']) {
$this->error('书籍与关联书籍不可重复');
}
$result = $this->model->allowField(true)->save($params);
if ($result !== false)
{
$this->success();
}
else
{
$this->error($this->model->getError());
}
}
catch (\think\exception\PDOException $e)
{
$this->error($e->getMessage());
}
}
$this->error(__('Parameter %s can not be empty', ''));
}
return $this->view->fetch();
}
/**
* 编辑
*/
public function edit($ids = NULL)
{
$row = $this->model->get($ids);
if (!$row)
$this->error(__('No Results were found'));
$adminIds = $this->getDataLimitAdminIds();
if (is_array($adminIds))
{
if (!in_array($row[$this->dataLimitField], $adminIds))
{
$this->error(__('You have no permission'));
}
}
if ($this->request->isPost())
{
$params = $this->request->post("row/a");
if ($params)
{
/*
* 已经弃用,如果为了兼容老版可取消注释
foreach ($params as $k => &$v)
{
$v = is_array($v) ? implode(',', $v) : $v;
}
*/
try
{
//是否采用模型验证
if ($this->modelValidate)
{
$name = basename(str_replace('\\', '/', get_class($this->model)));
$validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : true) : $this->modelValidate;
$row->validate($validate);
}
if ($params['book_id'] == $params['relation_book_id']) {
$this->error('书籍与关联书籍不可重复');
}
if ($params['recommend'] == '
') {
$params['recommend'] = '';
}
$result = $row->allowField(true)->save($params);
if ($result !== false)
{
$cacheKey = CacheConstants::getChapterEndRecommendIds($params['book_id']);
Redis::instance()->del($cacheKey);
$this->success();
}
else
{
$this->error($row->getError());
}
}
catch (\think\exception\PDOException $e)
{
$this->error($e->getMessage());
}
}
$this->error(__('Parameter %s can not be empty', ''));
}
$this->view->assign("row", $row);
return $this->view->fetch();
}
/**
* 删除
*/
public function del($ids = "")
{
if ($ids)
{
$pk = $this->model->getPk();
$adminIds = $this->getDataLimitAdminIds();
if (is_array($adminIds))
{
$count = $this->model->where($this->dataLimitField, 'in', $adminIds);
}
$list = $this->model->where($pk, 'in', $ids)->select();
$count = 0;
foreach ($list as $k => $v)
{
$cacheKey = CacheConstants::getChapterEndRecommendIds($v['book_id']);
Redis::instance()->del($cacheKey);
$count += $v->delete();
}
if ($count)
{
$this->success();
}
else
{
$this->error(__('No rows were deleted'));
}
}
$this->error(__('Parameter %s can not be empty', 'ids'));
}
}