又是我,这次遇到的问题是,突然发现以前的老书目录,源逻辑抓取有些问题,标题抓错了,但又原来的目录逻辑是只新增不更正,所以做一个新功能来强制更新目录。
代码如下:
application/admin/controller/Novel.php
... // 强制刷新 public function refreshIndex($id){ $id = array_unique((array)$this->request->param('id')); if ( empty($id) ) { $this->error('请选择要操作的数据!'); } $NovelChapter=model('NovelChapter'); $novel_update=false; $chapter=$NovelChapter->where([['novel_id','in',$id],['collect_id','<>',0]])->field('id,novel_id,collect_id,reurl,chapter')->select(); $chapter = $chapter->toArray(); foreach ($chapter as $key => $value) { $chapter_update=false; Db::name('novel_chapter')->where(['id'=>$value['id']])->update(['run_time'=>time()+Config::get('web.chapter_time_interval')*60]); $chapter_collect=Gather::get_chapter($value['collect_id'],$value['reurl']); if($chapter_collect){ if(!empty($value['chapter'])){ $chapter_db=[]; $value['chapter']=model('common/api')->decompress_chapter($value['chapter']); $value['chapter']=json_decode($value['chapter'],true); $chapter_db = array_combine(array_column($value['chapter'],'reurl'),array_keys($value['chapter'])); // 清空原来的章节 $value['chapter']=array(); } foreach ($chapter_collect as $k => $v){ $chapter_data=[]; if(isset($chapter_db[$v['url']])){ // 如果已有,保留keys $keys=$chapter_db[$v['url']]; }else{ $keys=uniqidReal(); } $chapter_data['title']=$v["title"]; $chapter_data['intro']=''; $chapter_data['update_time']=time(); $chapter_data['issued']=1; $chapter_data['word']=2000; $chapter_data['reurl']=$v["url"]; $chapter_data['auto']=2; $chapter_data['path']=$value['novel_id'].DIRECTORY_SEPARATOR.$keys.'.txt'; $value['chapter'][$keys]=$chapter_data; $chapter_update=true; $novel_update=true; $data_link[]=url('home/chapter/index',['id'=>$value['id'],'key'=>$keys],true,true); } if($chapter_update==true){ $chapter_data_last=end($value['chapter']); $updated=[ 'id'=>key($value['chapter']), 'title'=>$chapter_data_last['title'], 'update_time'=>$chapter_data_last['update_time'], 'count'=>count($value['chapter']) ]; $value['updated']=json_encode($updated); $value['chapter']=json_encode($value['chapter']); $value['chapter']=model('common/api')->compress_chapter($value['chapter']); $value['run_time']=time()+Config::get('web.chapter_time_interval_over')*60; Db::name('novel_chapter')->update($value); model('common/DataOperation')->after('add','chapter',$data_link); } } } if($novel_update==true){ Db::name('novel')->where(['id'=>$id])->update(['update_time'=>time()]); $this->success('操作成功!'); }else{ $this->error('操作失败'); } } ...
application/admin/view/novel/index.html
... // 菜单栏位置 <form class="layui-form" action="{:url('del')}" actionRefreshIndex="{:url('refreshIndex')}"> <div style="padding-bottom: 10px;"> <button class="layui-btn layui-btn-danger" lay-submit lay-filter="del" type="submit"><i class="layui-icon layui-icon-delete"></i> 删除</button> // 增加按钮 <button class="layui-btn layui-btn-warm" lay-submit lay-filter="refreshIndex" type="submit"><i class="layui-icon layui-icon-refresh-1"></i> 刷新目录</button> <button class="layui-btn" type="button" onclick="admin_show('添加','{:url('add')}',0,0,1)"><i class="layui-icon layui-icon-add-1"></i> 添加</button> <button class="layui-btn layui-btn-normal" type="button" open-select open-title="修改栏目" open-url="{:url('category')}" open-width="400" open-height="150"><i class="layui-icon layui-icon-more"></i> 栏目</button> </div> ... // layui的use代码里面,接着form.on('submit(search)')的代码块下面 form.on('submit(refreshIndex)', function(data){ layer.confirm('确认要刷新目录吗?',function(index){ var loadin_layer=layer.msg('刷新中,请稍后。', {icon: 16,shade: 0.3}); $.post($(data.form).attr('actionRefreshIndex'),data.field, function(data){ layer.close(loadin_layer); if(data.code){ layer.msg(data.msg, {icon: 1,shade: 0.3,time: 2000},function(layero, index){ location.reload(); }); } else { layer.msg(data.msg, {icon: 0}); } }, "json"); }); return false; }); ...
效果图:
选中书籍之后点击即可,支持多选
15216330461
发表于 2022-6-2
补丁补的狂雨作者都不用自己想了
评论列表
加载数据中...
xiaoshuo88
发表于 2022-6-2
15216330461
2022-6-2
补丁补的狂雨作者都不用自己想了
这次也是借助了作者的代码逻辑弄的,有些功能就个人需求,不一定合大众哈
评论列表
加载数据中...
sk0237
发表于 2022-6-16
xiaoshuo88
2022-6-2
这次也是借助了作者的代码逻辑弄的,有些功能就个人需求,不一定合大众哈
作者,代码我要如何使用啊?新手不是太懂
评论列表
加载数据中...
xiaoshuo88
发表于 2022-6-16
sk0237
2022-6-16
作者,代码我要如何使用啊?新手不是太懂
找到对应的文件然后修改,需要一定的php代码基础,不太建议无基础自己改,容易出问题,如果官方更新覆盖了就要重新改一次
不修改代码情况下也可以把书删除,重新从源站拉取回来,目录也会恢复正常
评论列表
加载数据中...
xixi
发表于 2022-11-20
为什么我按你这个改了之后,点刷新直接删除选中的小说了,不是刷新目录
评论列表
加载数据中...