<div style="background-color:#1e1f22;color:#bcbec4"><pre style="font-family:'JetBrains Mono',monospace;font-size:9.8pt;"><span style="color:#cf8e6d;">public function </span><span style="color:#6f737a;">export_ewm</span>()<br>{<br><br> <span style="color:#57aaf7;">set_time_limit</span>(<span style="color:#2aacb8;">0</span>);<br> <span style="color:#9876aa;">$search </span>= <span style="color:#9876aa;">$this</span>-><span style="color:#c77dbb;">request</span>-><span style="color:#57aaf7;">post</span>(<span style="color:#6aab73;">'search'</span>);<br> <span style="color:#9876aa;">$ids </span>= <span style="color:#9876aa;">$this</span>-><span style="color:#c77dbb;">request</span>-><span style="color:#57aaf7;">post</span>(<span style="color:#6aab73;">'ids'</span>);<br> <span style="color:#9876aa;">$filter </span>= <span style="color:#9876aa;">$this</span>-><span style="color:#c77dbb;">request</span>-><span style="color:#57aaf7;">post</span>(<span style="color:#6aab73;">'filter'</span>);<br> <span style="color:#9876aa;">$op </span>= <span style="color:#9876aa;">$this</span>-><span style="color:#c77dbb;">request</span>-><span style="color:#57aaf7;">post</span>(<span style="color:#6aab73;">'op'</span>);<br> <span style="color:#6f737a;">$columns </span>= <span style="color:#9876aa;">$this</span>-><span style="color:#c77dbb;">request</span>-><span style="color:#57aaf7;">post</span>(<span style="color:#6aab73;">'columns'</span>);<br><br> <span style="color:#9876aa;">$whereIds </span>= <span style="color:#9876aa;">$ids </span>== <span style="color:#6aab73;">'all' </span>? <span style="color:#6aab73;">'1=1' </span>: [<span style="color:#6aab73;">'deputy.id' </span>=> [<span style="color:#6aab73;">'in'</span>, <span style="color:#57aaf7;">explode</span>(<span style="color:#6aab73;">','</span>, <span style="color:#9876aa;">$ids</span>)]];<br> <span style="color:#9876aa;">$this</span>-><span style="color:#c77dbb;">request</span>-><span style="color:#57aaf7;">get</span>([<span style="color:#6aab73;">'search' </span>=> <span style="color:#9876aa;">$search</span>, <span style="color:#6aab73;">'ids' </span>=> <span style="color:#9876aa;">$ids</span>, <span style="color:#6aab73;">'filter' </span>=> <span style="color:#9876aa;">$filter</span>, <span style="color:#6aab73;">'op' </span>=> <span style="color:#9876aa;">$op</span>]);<br> <span style="color:#9876aa;">$this</span>-><span style="color:#c77dbb;">relationSearch</span>=<span style="color:#cf8e6d;">true</span>;<br> <span style="color:#cf8e6d;">list</span>(<span style="color:#9876aa;">$where</span>, <span style="color:#6f737a;">$sort</span>, <span style="color:#6f737a;">$order</span>, <span style="color:#6f737a;">$offset</span>, <span style="color:#6f737a;">$limit</span>) = <span style="color:#9876aa;">$this</span>-><span style="color:#57aaf7;">buildparams</span>();<br><br><br> <span style="color:#9876aa;">$protocol</span>=<span style="color:#9876aa;">$this</span>-><span style="color:#c77dbb;">request</span>-><span style="color:#57aaf7;">isSsl</span>()?<span style="color:#6aab73;">'https://' </span>: <span style="color:#6aab73;">'http://'</span>;<br> <span style="color:#6f737a;">$url </span>= <span style="color:#9876aa;">$protocol </span>. <span style="color:#9876aa;">$_SERVER</span>[<span style="color:#6aab73;">'HTTP_HOST'</span>].<span style="color:#6aab73;">'/index/index/res/unicode/'</span>;<br><br><br><br> <span style="color:#9876aa;">$list</span>=<span style="color:#9876aa;">$this</span>-><span style="color:#c77dbb;">model<br></span><span style="color:#c77dbb;"> </span>-><span style="color:#57aaf7;">where</span>(<span style="color:#9876aa;">$where</span>)-><span style="color:#57aaf7;">with</span>([<span style="color:#6aab73;">'county'</span>,<span style="color:#6aab73;">'street'</span>,<span style="color:#6aab73;">'station'</span>])<br> -><span style="color:#57aaf7;">where</span>(<span style="color:#9876aa;">$whereIds</span>)<br> -><span style="color:#57aaf7;">select</span>();<br> <span style="color:#cf8e6d;">if</span>(!<span style="color:#9876aa;">$list</span>){<br> <span style="color:#9876aa;">$this</span>-><span style="color:#57aaf7;">error</span>(<span style="color:#57aaf7;">__</span>(<span style="color:#6aab73;">'No rows were found'</span>));<br> }<br><br> <span style="color:#7a7e85;">/* 2. </span><span style="color:#7a7e85;font-family:'宋体',monospace;">指定中文目录名(可按需改成</span><span style="color:#7a7e85;"> POST </span><span style="color:#7a7e85;font-family:'宋体',monospace;">参数)</span><span style="color:#7a7e85;"> */<br></span><span style="color:#7a7e85;"> </span><span style="color:#9876aa;">$cnFolder </span>= <span style="color:#57aaf7;">date</span>(<span style="color:#6aab73;">'YmdHis'</span>).<span style="color:#57aaf7;">rand</span>(<span style="color:#2aacb8;">1000</span>,<span style="color:#2aacb8;">9999</span>); <span style="color:#7a7e85;">// </span><span style="color:#7a7e85;font-family:'宋体',monospace;">想叫啥写啥<br></span><span style="color:#7a7e85;font-family:'宋体',monospace;"> </span><span style="color:#9876aa;">$tmpDir </span>= <span style="color:#9876aa;font-style:italic;">ROOT_PATH </span>. <span style="color:#6aab73;">'/public/tmp/' </span>. <span style="color:#9876aa;">$cnFolder</span>; <span style="color:#7a7e85;">// </span><span style="color:#7a7e85;font-family:'宋体',monospace;">完整路径<br></span><span style="color:#7a7e85;font-family:'宋体',monospace;"> </span><span style="color:#cf8e6d;">if </span>(!<span style="color:#57aaf7;">is_dir</span>(<span style="color:#9876aa;">$tmpDir</span>) && !<span style="color:#57aaf7;">mkdir</span>(<span style="color:#9876aa;">$tmpDir</span>, <span style="color:#2aacb8;">0777</span>, <span style="color:#cf8e6d;">true</span>)) {<br> <span style="color:#cf8e6d;">exit</span>(<span style="color:#6aab73;">'</span><span style="color:#6aab73;font-family:'宋体',monospace;">创建临时目录失败,请检查权限或路径</span><span style="color:#6aab73;">'</span>);<br> }<br> <span style="color:#cf8e6d;">foreach </span>(<span style="color:#9876aa;">$list </span><span style="color:#cf8e6d;">as </span><span style="color:#6f737a;">$k</span>=><span style="color:#9876aa;">$v</span>){<br> <span style="color:#9876aa;">$qrCode </span>= <span style="color:#cf8e6d;">new </span>QrCode(<span style="color:#9876aa;">$this</span>-><span style="color:#c77dbb;">request</span>-><span style="color:#57aaf7;">domain</span>().<span style="color:#6aab73;">'/index/appeal/index?npc_deputy_id='</span>.<span style="color:#9876aa;">$v</span>[<span style="color:#6aab73;">"id"</span>]);<br> <span style="color:#9876aa;">$qrCode</span>-><span style="color:#57aaf7;">setSize</span>(<span style="color:#2aacb8;">300</span>)-><span style="color:#57aaf7;">setMargin</span>(<span style="color:#2aacb8;">0</span>);<br> <span style="color:#9876aa;">$writer </span>= <span style="color:#cf8e6d;">new </span>PngWriter();<br><br> <span style="color:#9876aa;">$png </span>= <span style="color:#9876aa;">$writer</span>-><span style="color:#57aaf7;">write</span>(<span style="color:#9876aa;">$qrCode</span>)-><span style="color:#57aaf7;">getString</span>();<br> <span style="color:#9876aa;">$mulu</span>=<span style="color:#9876aa;">$tmpDir </span>. <span style="color:#6aab73;">'/' </span>.<span style="color:#9876aa;">$v</span>[<span style="color:#6aab73;">'county'</span>][<span style="color:#6aab73;">'name'</span>].<span style="color:#6aab73;">'-'</span>.<span style="color:#9876aa;">$v</span>[<span style="color:#6aab73;">'street'</span>][<span style="color:#6aab73;">'name'</span>].<span style="color:#6aab73;">'-'</span>.<span style="color:#9876aa;">$v</span>[<span style="color:#6aab73;">'station'</span>][<span style="color:#6aab73;">'name'</span>];<br> <span style="color:#cf8e6d;">if </span>(!<span style="color:#57aaf7;">is_dir</span>(<span style="color:#9876aa;">$mulu</span>) && !<span style="color:#57aaf7;">mkdir</span>(<span style="color:#9876aa;">$mulu</span>, <span style="color:#2aacb8;">0777</span>, <span style="color:#cf8e6d;">true</span>)) {<br> <span style="color:#cf8e6d;">exit</span>(<span style="color:#6aab73;">'</span><span style="color:#6aab73;font-family:'宋体',monospace;">创建目录失败:</span><span style="color:#6aab73;">' </span>. <span style="color:#9876aa;">$mulu</span>);<br> }<br> <span style="color:#9876aa;">$safeName </span>= <span style="color:#57aaf7;">preg_replace</span>(<span style="color:#6aab73;">'/</span><span style="color:#6aab73;background-color:#293c40;">[\/</span><span style="color:#cf8e6d;background-color:#293c40;">\\\\</span><span style="color:#6aab73;background-color:#293c40;">:\*\?"<>|]</span><span style="color:#6aab73;">/u'</span>, <span style="color:#6aab73;">'_'</span>, <span style="color:#9876aa;">$v</span>[<span style="color:#6aab73;">'name'</span>]);<br> <span style="color:#57aaf7;">file_put_contents</span>(<span style="color:#9876aa;">$mulu </span>. <span style="color:#6aab73;">'/' </span>. <span style="color:#9876aa;">$v</span>[<span style="color:#6aab73;">'id'</span>] . <span style="color:#6aab73;">'.' </span>. <span style="color:#9876aa;">$safeName </span>. <span style="color:#6aab73;">'.png'</span>, <span style="color:#9876aa;">$png</span>);<br> }<br><br> <span style="color:#7a7e85;">/* 4. </span><span style="color:#7a7e85;font-family:'宋体',monospace;">打包(把中文目录整体打进去,解压后仍能看到中文目录)</span><span style="color:#7a7e85;"> */<br></span><span style="color:#7a7e85;"> </span><span style="color:#9876aa;">$zipFile </span>= <span style="color:#9876aa;font-style:italic;">ROOT_PATH </span>. <span style="color:#6aab73;">'/public/tmp/' </span>. <span style="color:#9876aa;">$cnFolder</span>. <span style="color:#6aab73;">'.zip'</span>;<br> <span style="color:#9876aa;">$zip </span>= <span style="color:#cf8e6d;">new </span><span style="color:#6f737a;">\</span>ZipArchive();<br> <span style="color:#cf8e6d;">if </span>(<span style="color:#9876aa;">$zip</span>-><span style="color:#57aaf7;">open</span>(<span style="color:#9876aa;">$zipFile</span>, <span style="color:#6f737a;">\</span>ZipArchive::<span style="color:#9876aa;font-style:italic;">CREATE</span>) !== <span style="color:#cf8e6d;">true</span>) {<br> <span style="color:#cf8e6d;">exit</span>(<span style="color:#6aab73;">'</span><span style="color:#6aab73;font-family:'宋体',monospace;">无法创建</span><span style="color:#6aab73;"> zip'</span>);<br> }<br> <span style="color:#7a7e85;">/* 4.1 </span><span style="color:#7a7e85;font-family:'宋体',monospace;">递归添加目录</span><span style="color:#7a7e85;"> */<br></span><span style="color:#7a7e85;"> </span><span style="color:#9876aa;">$iterator </span>= <span style="color:#cf8e6d;">new </span><span style="color:#6f737a;">\</span>RecursiveIteratorIterator(<br> <span style="color:#cf8e6d;">new </span><span style="color:#6f737a;">\</span>RecursiveDirectoryIterator(<span style="color:#9876aa;">$tmpDir</span>, <span style="color:#6f737a;">\</span>FilesystemIterator::<span style="color:#9876aa;font-style:italic;">SKIP_DOTS</span>),<br> <span style="color:#6f737a;">\</span>RecursiveIteratorIterator::<span style="color:#9876aa;font-style:italic;">SELF_FIRST<br></span><span style="color:#9876aa;font-style:italic;"> </span>);<br><br> <span style="color:#cf8e6d;">foreach </span>(<span style="color:#9876aa;">$iterator </span><span style="color:#cf8e6d;">as </span><span style="color:#9876aa;">$file</span>) {<br> <span style="color:#9876aa;">$localPath </span>= <span style="color:#57aaf7;">str_replace</span>(<span style="color:#9876aa;">$tmpDir </span>. <span style="color:#9876aa;font-style:italic;">DIRECTORY_SEPARATOR</span>, <span style="color:#6aab73;">''</span>, <span style="color:#9876aa;">$file</span>-><span style="color:#57aaf7;">getPathname</span>());<br> <span style="color:#7a7e85;">// </span><span style="color:#7a7e85;font-family:'宋体',monospace;">转</span><span style="color:#7a7e85;"> GBK</span><span style="color:#7a7e85;font-family:'宋体',monospace;">,让</span><span style="color:#7a7e85;"> Windows </span><span style="color:#7a7e85;font-family:'宋体',monospace;">自带解压不乱码<br></span><span style="color:#7a7e85;font-family:'宋体',monospace;"> </span><span style="color:#9876aa;">$gbkPath </span>= <span style="color:#57aaf7;">iconv</span>(<span style="color:#6aab73;">'UTF-8'</span>, <span style="color:#6aab73;">'GBK//IGNORE'</span>, <span style="color:#9876aa;">$cnFolder </span>. <span style="color:#6aab73;">'/' </span>. <span style="color:#9876aa;">$localPath</span>);<br> <span style="color:#cf8e6d;">if </span>(<span style="color:#9876aa;">$file</span>-><span style="color:#57aaf7;">isDir</span>()) {<br> <span style="color:#9876aa;">$zip</span>-><span style="color:#57aaf7;">addEmptyDir</span>(<span style="color:#9876aa;">$gbkPath</span>);<br> } <span style="color:#cf8e6d;">else </span>{<br> <span style="color:#9876aa;">$zip</span>-><span style="color:#57aaf7;">addFile</span>(<span style="color:#9876aa;">$file</span>-><span style="color:#57aaf7;">getPathname</span>(), <span style="color:#9876aa;">$gbkPath</span>);<br> }<br> }<br><br> <span style="color:#9876aa;">$zip</span>-><span style="color:#57aaf7;">close</span>();<br> <span style="color:#9876aa;">$this</span>-><span style="color:#57aaf7;">redirect</span>(<span style="color:#6aab73;">'/tmp/' </span>. <span style="color:#9876aa;">$cnFolder</span>. <span style="color:#6aab73;">'.zip'</span>);<br> }</pre></div>
相关文章