Createdata.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\controller\Base;
  4. use app\admin\controller\Index as Ic;
  5. use think\Db;
  6. use think\Request;
  7. use think\facade\Env;
  8. use think\facade\Config;
  9. class Createdata extends Base
  10. {
  11. protected $config;
  12. protected $c;
  13. protected $n;
  14. protected $no;
  15. protected $num;
  16. protected $nums;
  17. protected function initialize()
  18. {
  19. parent::initialize();
  20. $this->config = Db::name('system')->where('id',1)->find();
  21. $this->c = new Ic();
  22. $this->c->clear();
  23. Config::set('template.view_path','template/');
  24. Config::set([
  25. '__HOMEST__' => '/template/home_temp/'.$this->config['home_temp'].'/',
  26. ],'template.tpl_replace_string');
  27. $this->n = 0;
  28. $this->no = 0;
  29. $this->num = 0;
  30. $this->nums = 0;
  31. }
  32. public function index(){
  33. $category = Db::name('category')->select()->toArray();
  34. foreach($category as $k=>$vss){
  35. $category[$k]['id'] = $vss['id'];
  36. $category[$k]['value'] = $vss['id'];
  37. $category[$k]['title'] = $vss['title'];
  38. $category[$k]['name'] = $vss['title'];
  39. }
  40. $category = json_encode($category,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
  41. $mod = Db::name('model')->field('id,name')->select()->toArray();
  42. foreach($mod as $ke=>$vs){
  43. $mod[$ke]['id'] = $vs['id'];
  44. $mod[$ke]['value'] = $vs['id'];
  45. }
  46. $mod = json_encode($mod,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
  47. $matlist = setallmat('10','create_time desc');
  48. return $this -> view -> fetch('index',['cate'=>$category,'model'=>$mod,'matlist'=>$matlist]);
  49. }
  50. /*
  51. 生成内容
  52. */
  53. public function createmater(Request $request){
  54. if(request()->isAjax()){
  55. $data = $request->param();
  56. $matter = [];
  57. if(!empty($data)){
  58. /*
  59. 按照模型生成
  60. */
  61. if(isset($data['mod']) && $data['mod'] == 1){
  62. if(!empty($data['mods']) || is_string($data['mods'])){
  63. $tab = Db::name('model')->where('id','in',$data['mods'])->field('tablename')->select()->toArray();
  64. if(empty($tab)){
  65. return jsonmsg(0,'当前没有可操作数据');
  66. }else{
  67. foreach($tab as $val){
  68. $mat = Db::name($val['tablename'])->alias('a')->join($val['tablename']."_data b","b.aid=a.id")->field('a.*,b.browse,b.likes,b.comment_t')->where(['a.status'=>0,'a.price'=>1,'a.matpattern'=>2,'a.delete_time'=>NULL])->select()->toArray();
  69. if(!empty($mat)){
  70. $matter[] = $mat;
  71. }
  72. }
  73. if(empty($matter)){
  74. return jsonmsg(0,'当前没有可操作数据');
  75. }
  76. }
  77. }else{
  78. return jsonmsg(0,'错误的数据');
  79. }
  80. }else if(isset($data['mid']) && $data['mid'] == 1){
  81. /*
  82. 按照栏目生成
  83. */
  84. if(!empty($data['mids']) || is_string($data['mids'])){
  85. $tab = Db::name('model')->field('tablename')->select()->toArray();
  86. if(empty($tab)){
  87. return jsonmsg(0,'当前没有可操作数据');
  88. }else{
  89. foreach($tab as $val){
  90. $mat = Db::name($val['tablename'])->alias('a')->join($val['tablename']."_data b","b.aid=a.id")->field('a.*,b.browse,b.likes,b.comment_t')->where(['a.mid'=>$data['mids'],'a.status'=>0,'a.price'=>1,'a.matpattern'=>2,'a.delete_time'=>NULL])->select()->toArray();
  91. if(!empty($mat)){
  92. $matter[] = $mat;
  93. }
  94. }
  95. if(empty($matter)){
  96. return jsonmsg(0,'当前没有可操作数据');
  97. }
  98. }
  99. }
  100. }else if(isset($data['checkmat']) && $data['checkmat'] == 1){
  101. /*
  102. 按照内容id生成
  103. */
  104. if(!empty($data['checkmats']) || is_string($data['checkmats'])){
  105. $tab = Db::name('model')->field('tablename')->select()->toArray();
  106. if(empty($tab)){
  107. return jsonmsg(0,'当前没有可操作数据');
  108. }else{
  109. foreach($tab as $val){
  110. $mat = Db::name($val['tablename'])->alias('a')->join($val['tablename']."_data b","b.aid=a.id")->field('a.*,b.browse,b.likes,b.comment_t')->where('a.id','in',$data['checkmats'])->where(['a.status'=>0,'a.price'=>1,'a.matpattern'=>2,'a.delete_time'=>NULL])->select()->toArray();
  111. if(!empty($mat)){
  112. $matter[] = $mat;
  113. }
  114. }
  115. if(empty($matter)){
  116. return jsonmsg(0,'当前没有可操作数据');
  117. }
  118. }
  119. }
  120. }else if(isset($data['all']) && $data['all'] == 1){
  121. /*
  122. 生成全部
  123. */
  124. $tab = Db::name('model')->field('tablename')->select()->toArray();
  125. if(empty($tab)){
  126. return jsonmsg(0,'当前没有可操作数据');
  127. }else{
  128. foreach($tab as $val){
  129. $mat = Db::name($val['tablename'])->alias('a')->join($val['tablename']."_data b","b.aid=a.id")->field('a.*,b.browse,b.likes,b.comment_t')->where(['a.status'=>0,'a.price'=>1,'a.matpattern'=>2,'a.delete_time'=>NULL])->select()->toArray();
  130. if(!empty($mat)){
  131. $matter[] = $mat;
  132. }
  133. }
  134. if(empty($matter)){
  135. return jsonmsg(0,'当前没有可操作数据');
  136. }
  137. }
  138. }else{
  139. return jsonmsg(0,'请选择正确生成方式');
  140. }
  141. $matter = ary3_ary2($matter);
  142. if(!empty($matter)){
  143. foreach($matter as $key=>$v){
  144. $cate = Db::name('category')->find($v['mid']);
  145. if($cate['patternlist'] == 2 || $v['matpattern'] == 2){
  146. $tb = Db::name('model')->find($cate['modid']);
  147. $matter[$key]['tabname'] = $tb['id'];
  148. $matter[$key]['catitle'] = $cate['title'];
  149. $catinfo['id'] = $cate['id'];
  150. $catinfo['pid'] = $cate['pid'];
  151. $member = "";
  152. if($v["isadmin"] == 0){
  153. if($v['uid'] > 0 || $v['uid'] !== null){
  154. $member = Db::name("member")
  155. ->alias("a")
  156. ->join("member_data b","b.uid=a.id")
  157. ->where("a.id",$v['uid'])
  158. ->fieldRaw("a.name,a.photo,a.email,a.intro,a.home_count,b.comment,b.le_word,b.attention,b.fans,b.contribute")
  159. ->find();
  160. if($member){
  161. $matter[$key]['autro'] = $member['intro'];
  162. $matter[$key]['auhct'] = $member['home_count'];
  163. }
  164. $matter[$key]['autro'] = "游客投稿";
  165. $matter[$key]['auhct'] = "**";
  166. }
  167. $matter[$key]['autro'] = "游客投稿";
  168. $matter[$key]['auhct'] = "**";
  169. }elseif($v["isadmin"] == 1){
  170. $member = Db::name("admin")
  171. ->alias("a")
  172. ->join("admin_data b","b.uid=a.id")
  173. ->where("a.id",$v['uid'])
  174. ->fieldRaw("a.name,a.photo,a.email,b.comment,b.le_word,b.attention,b.fans,b.contribute")
  175. ->find();
  176. $matter[$key]['autro'] = $member['name'];
  177. $matter[$key]['auhct'] = "999+";
  178. }
  179. if(!empty($member)){
  180. $matter[$key]['auname'] = $member['name'];
  181. $matter[$key]['aupot'] = $member['photo'];
  182. $matter[$key]['aueml'] = $member['email'];
  183. $matter[$key]['aucom'] = $member['comment'];
  184. $matter[$key]['aulrd'] = $member['le_word'];
  185. $matter[$key]['auaton'] = $member['attention'];
  186. $matter[$key]['aufans'] = $member['fans'];
  187. $matter[$key]['auctbe'] = $member['contribute'];
  188. }else{
  189. $matter[$key]['auname'] = "未知";
  190. $matter[$key]['aupot'] = "未知";
  191. $matter[$key]['aueml'] = "未知";
  192. $matter[$key]['aucom'] = "未知";
  193. $matter[$key]['aulrd'] = "未知";
  194. $matter[$key]['auaton'] = "未知";
  195. $matter[$key]['aufans'] = "未知";
  196. $matter[$key]['auctbe'] = "未知";
  197. }
  198. /****处理下载地址****/
  199. $field = Db::name("modfiel")->where(["modid"=>$matter[$key]['tabname'],"forms"=>"down"])->field("field,forms")->find();
  200. if(!empty($field)){
  201. $patch = "";
  202. if(!empty($v[$field["field"]])){
  203. $patch = explode(',',$v[$field["field"]]);
  204. $patch = array_chunk($patch,2);
  205. $matter[$key][$field["field"]] = $patch;
  206. foreach($matter[$key][$field["field"]] as $ke=>$val){
  207. $matter[$key][$field["field"]][$ke]['0'] = $val['0'];
  208. $matter[$key][$field["field"]][$ke]['ptname'] = $val['0'];
  209. unset($matter[$key][$field["field"]][$ke]['0']);
  210. $matter[$key][$field["field"]][$ke]['1'] = $val['1'];
  211. $matter[$key][$field["field"]][$ke]['pturl'] = $val['1'];
  212. unset($matter[$key][$field["field"]][$ke]['1']);
  213. }
  214. }
  215. }
  216. /****处理下载地址完毕****/
  217. /****内容基本参数改写完毕****/
  218. $prices = ["1"=>"免费","2"=>"付费"];
  219. $matter[$key]["price"] = $prices[$v["price"]];
  220. $matter[$key]['isprice'] = 1;
  221. $html = $this->fetch(Env::get('root_path') . 'template/home_temp/' . $this->config["home_temp"] . '/' . $cate['conttemp'] . '.html',['matcont'=>$matter[$this->n],'catinfo'=>$catinfo])->getContent();
  222. $html = str_replace('__HOMEST__','/template/home_temp/'.$this->config['home_temp'].'/',$html);
  223. $html = str_replace('/admin.php/index','',$html);
  224. $filewhere = Env::get('root_path').$cate['thiswhere'];
  225. if($cate['pid'] != 0){
  226. $wheres = $this->foreachwhere($cate["pid"]);
  227. if($wheres){
  228. $filewhere = Env::get('root_path').$wheres.'/'.$cate['thiswhere'];
  229. }
  230. }
  231. if(!is_dir($filewhere)){
  232. @mkdir($filewhere);
  233. }
  234. $filename = $this->filenamesrule($cate['filenamesrule'],$v['id'],$cate['thiswhere']);
  235. $filename = $filename.$cate['filenames'];
  236. $res = file_put_contents($filewhere.'/'.$filename,$html);
  237. if($res){
  238. $this->num++;
  239. }else{
  240. $this->nums++;
  241. }
  242. $this->n++;
  243. }else{
  244. $this->no++;
  245. }
  246. }
  247. return jsonmsg(1,'生成成功['.$this->num.']个,失败['.$this->nums.']个,不是静态模式['.$this->no.']个');
  248. }else{
  249. return jsonmsg(0,'当前没有可操作数据');
  250. }
  251. }else{
  252. return jsonmsg(0,'数据空');
  253. }
  254. }
  255. return jsonmsg(0,'错误的请求方式');
  256. }
  257. /*
  258. 生成栏目
  259. */
  260. public function createlist(Request $request){
  261. if(request()->isAjax()){
  262. $data = $request->param();
  263. if(!empty($data)){
  264. if(isset($data['mod']) && $data['mod'] == 1){
  265. /*
  266. 按照模型生成
  267. */
  268. if(!empty($data['mods']) || is_string($data['mods'])){
  269. $cate = Db::name('category')->where('modid','in',$data['mods'])->select()->toArray();
  270. if(empty($cate)){
  271. return jsonmsg(0,'当前没有可操作数据');
  272. }
  273. }else{
  274. return jsonmsg(0,'错误的数据');
  275. }
  276. }else if(isset($data['mid']) && $data['mid'] == 1){
  277. /*
  278. 按照栏目id生成
  279. */
  280. if(!empty($data['mids']) || is_string($data['mids'])){
  281. $cate = Db::name('category')->where('id','in',$data['mids'])->select()->toArray();
  282. if(empty($cate)){
  283. return jsonmsg(0,'当前没有可操作数据');
  284. }
  285. }else{
  286. return jsonmsg(0,'错误的数据');
  287. }
  288. }else if(isset($data['all']) && $data['all'] == 1){
  289. /*
  290. 生成全部
  291. */
  292. $cate = Db::name('category')->select()->toArray();
  293. if(empty($cate)){
  294. return jsonmsg(0,'当前没有可操作数据');
  295. }
  296. }else{
  297. return jsonmsg(0,'请选择正确生成方式');
  298. }
  299. if(!empty($cate)){
  300. foreach($cate as $key=>$v){
  301. if($v['patternlist'] == 2){
  302. $html = $this->fetch(Env::get('root_path') . 'template/home_temp/' . $this->config["home_temp"] . '/' . $v['listtemp'] . '.html',['catinfo'=>$cate[$this->n]])->getContent();
  303. $html = str_replace('__HOMEST__','/template/home_temp/'.$this->config['home_temp'].'/',$html);
  304. $html = str_replace('/admin.php/index','',$html);
  305. $filewhere = Env::get('root_path').$v['thiswhere'];
  306. if($v['pid'] != 0){
  307. $wheres = $this->foreachwhere($v["pid"]);
  308. if($wheres){
  309. $filewhere = Env::get('root_path').$wheres.'/'.$v['thiswhere'];
  310. }
  311. }
  312. if(!is_dir($filewhere)){
  313. @mkdir($filewhere);
  314. }
  315. $res = file_put_contents($filewhere.'/index.html',$html);
  316. if($res){
  317. $this->num++;
  318. }else{
  319. $this->nums++;
  320. }
  321. $this->n++;
  322. }else{
  323. $this->no++;
  324. }
  325. }
  326. return jsonmsg(1,'生成成功['.$this->num.']个,失败['.$this->nums.']个,不是静态模式['.$this->no.']个');
  327. }else{
  328. return jsonmsg(0,'当前没有可操作数据');
  329. }
  330. }else{
  331. return jsonmsg(0,'数据空');
  332. }
  333. }
  334. return jsonmsg(0,'错误的请求方式');
  335. }
  336. }