{
    "version": "https://jsonfeed.org/version/1",
    "title": "咩咩君",
    "description": "coding日常",
    "home_page_url": "http://miemieFeng.github.io",
    "items": [
        {
            "id": "http://miemiefeng.github.io/python%E6%89%93%E5%8C%85exe,%E5%B0%86%E5%86%B0%E5%A2%A9%E5%A2%A9%E9%80%81%E7%BB%99%E4%BD%A0%E7%88%B1%E7%9A%84%E4%BA%BA/",
            "url": "http://miemiefeng.github.io/python%E6%89%93%E5%8C%85exe,%E5%B0%86%E5%86%B0%E5%A2%A9%E5%A2%A9%E9%80%81%E7%BB%99%E4%BD%A0%E7%88%B1%E7%9A%84%E4%BA%BA/",
            "title": "python打包exe,将冰墩墩送给你爱的人",
            "date_published": "2022-02-10T03:35:02.000Z",
            "content_html": "<blockquote>\n<p>最近大家都有冰墩墩，抢不到就去 github 拉一个</p>\n</blockquote>\n<h3 id=\"一-拉项目略\"><a class=\"markdownIt-Anchor\" href=\"#一-拉项目略\">#</a> 一、拉项目（略）</h3>\n<h3 id=\"二-pip安装pyinstaller\"><a class=\"markdownIt-Anchor\" href=\"#二-pip安装pyinstaller\">#</a> 二、pip 安装 pyinstaller</h3>\n<pre><code>pip3 install pyinstaller\n</code></pre>\n<h3 id=\"三-使用pyinstaller打包成exe发送给你爱的人\"><a class=\"markdownIt-Anchor\" href=\"#三-使用pyinstaller打包成exe发送给你爱的人\">#</a> 三、使用 pyinstaller 打包成 exe 发送给你爱的人</h3>\n<p>打包命令</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">Pyinstaller -F setup.py 打包exe</span><br><span class=\"line\">Pyinstaller -F -w setup.py 不带控制台的打包</span><br><span class=\"line\">Pyinstaller -F -i xx.ico setup.py 打包指定exe图标打包</span><br><span class=\"line\"></span><br></pre></td></tr></table></figure>\n<p><img data-src=\"http://47.108.248.23:8090/upload/2022/02/b7701875be59fa6a2651cbab82b319b-fcc39472663d4237b693d39ede0bad43.png\" alt=\"b7701875be59fa6a2651cbab82b319b.png\"></p>\n<h3 id=\"成果\"><a class=\"markdownIt-Anchor\" href=\"#成果\">#</a> 成果</h3>\n<p><img data-src=\"http://47.108.248.23:8090/upload/2022/02/image-5773bb8dbb3b4e5084dcd4affcd21a36.png\" alt=\"image.png\"></p>\n",
            "tags": [
                "python"
            ]
        },
        {
            "id": "http://miemiefeng.github.io/%E4%BD%BF%E7%94%A8%E9%BB%91%E7%BE%A4%E6%99%96%E6%90%AD%E5%BB%BA%E6%97%81%E8%B7%AF%E7%94%B1/",
            "url": "http://miemiefeng.github.io/%E4%BD%BF%E7%94%A8%E9%BB%91%E7%BE%A4%E6%99%96%E6%90%AD%E5%BB%BA%E6%97%81%E8%B7%AF%E7%94%B1/",
            "title": "使用黑群晖搭建旁路由",
            "date_published": "2022-02-09T01:41:28.000Z",
            "content_html": "<blockquote>\n<p>家里购置了 switch 自然是需要全家富强才可以更舒适的使用</p>\n</blockquote>\n<h3 id=\"一-安装虚拟机套件\"><a class=\"markdownIt-Anchor\" href=\"#一-安装虚拟机套件\">#</a> 一、安装虚拟机套件</h3>\n<p><strong>这里我选择安装旧版虚拟机套件，因为新版需要 vip 才可以开启 cpu 兼容</strong><br>\n<img data-src=\"https://cdn.jsdelivr.net/gh/miemieFeng/blogImg/Blogs/image-602efa6a1b774c4397f317bbb091fcc0.png\" alt=\"image-602efa6a1b774c4397f317bbb091fcc0\"><br>\n 可以看到我这里安装了 2.31 版</p>\n<h3 id=\"二-下载旁路由镜像\"><a class=\"markdownIt-Anchor\" href=\"#二-下载旁路由镜像\">#</a> 二、下载旁路由镜像</h3>\n<p><strong>这里我选择下载恩山大佬第一的镜像，下载地址 https://openwrt.mpdn.fun:8443</strong></p>\n<h3 id=\"三-导入镜像\"><a class=\"markdownIt-Anchor\" href=\"#三-导入镜像\">#</a> 三、导入镜像</h3>\n<p>打开虚拟机软件，选择新增，导入 pc 镜像<img data-src=\"https://cdn.jsdelivr.net/gh/miemieFeng/blogImg/Blogs/20221116192456.png\" alt=\"20221116192456\"> 等待上传完毕即可</p>\n<h3 id=\"四-启动镜像\"><a class=\"markdownIt-Anchor\" href=\"#四-启动镜像\">#</a> 四、启动镜像</h3>\n<p>首先选择虚拟机 - 导入<br>\n<img data-src=\"https://cdn.jsdelivr.net/gh/miemieFeng/blogImg/Blogs/20221116192548.png\" alt=\"20221116192548\"><br>\n 导入刚才上传的镜像<br>\n 1、然后启动并连接。在跳出来的窗口界面输入命令，vi etc/config/network ，修改一下软路由的 IP。<br>\n2、在 option ipaddr 后面把 IP 修改成为和主路由一个网段的，可以按 i 键进行修改，比如我设置成 192.1168。1.10，修改完后按 Esc 退出，接着输入命令 ：wq ，保存刚才的修改。<br>\n3、再输入 passwd 修改一下密码，修改的时候密码不会显示，不用担心，输完按回车就行，要连续输入两次。<br>\n4、最后输入命令 reboot 进行重启就 OK 了。<br>\n5、在浏览器输入刚才咱们修改过的 IP，这时候已经可以进入 Openwrt 的登陆界面了，填上自己设置的密码就可以进系统了</p>\n<p><img data-src=\"https://cdn.jsdelivr.net/gh/miemieFeng/blogImg/Blogs/20221116192621.png\" alt=\"20221116192621\"></p>\n<h3 id=\"五-openwrt系统配置\"><a class=\"markdownIt-Anchor\" href=\"#五-openwrt系统配置\">#</a> 五、Openwrt 系统配置</h3>\n<p>系统装完了，要想正常使用还得配置一下，找到左侧菜单 网络 — 接口，选择 LAN 的接口进行修改。<br>\n<img data-src=\"https://cdn.jsdelivr.net/gh/miemieFeng/blogImg/Blogs/20221116192643.png\" alt=\"20221116192643\"><br>\n 网关和 dns 填自己的网关（忽略此接口处打上勾，不让旁路由提供 DHCP 服务，避免和主路由冲突。）<br>\n<img data-src=\"https://cdn.jsdelivr.net/gh/miemieFeng/blogImg/Blogs/20221116192705.png\" alt=\"20221116192705\"></p>\n<h3 id=\"六-修改上网设备ip\"><a class=\"markdownIt-Anchor\" href=\"#六-修改上网设备ip\">#</a> 六、修改上网设备 ip</h3>\n<p>此时将上网设备的 ip 和 dns 改为我们旁路由的地址即可，我这里是改了小米路由器做二级路由</p>\n<blockquote>\n<p>此时连接了小米路由器的设备都可以通过旁路由来设置策略了</p>\n</blockquote>\n",
            "tags": [
                "旁路由"
            ]
        },
        {
            "id": "http://miemiefeng.github.io/swagger2%20%E5%B8%B8%E7%94%A8%E6%B3%A8%E8%A7%A3%E6%95%B4%E7%90%86/",
            "url": "http://miemiefeng.github.io/swagger2%20%E5%B8%B8%E7%94%A8%E6%B3%A8%E8%A7%A3%E6%95%B4%E7%90%86/",
            "title": "swagger2 常用注解整理",
            "date_published": "2022-01-25T09:18:32.000Z",
            "content_html": "<blockquote>\n<p>最近用到 swagger 想着整理一下常用注解 (只能说是真的不好用，写一堆注解头痛)</p>\n</blockquote>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">@Api：用在请求的类上，表示对类的说明</span><br><span class=\"line\">    tags=&quot;说明该类的作用，可以在UI界面上看到的注解&quot;</span><br><span class=\"line\">    value=&quot;该参数没什么意义，在UI界面上也看到，所以不需要配置&quot;</span><br><span class=\"line\"> </span><br><span class=\"line\"> </span><br><span class=\"line\">@ApiOperation：用在请求的方法上，说明方法的用途、作用</span><br><span class=\"line\">    value=&quot;说明方法的用途、作用&quot;</span><br><span class=\"line\">    notes=&quot;方法的备注说明&quot;</span><br><span class=\"line\"> </span><br><span class=\"line\"> </span><br><span class=\"line\">@ApiImplicitParams：用在请求的方法上，表示一组参数说明</span><br><span class=\"line\">    @ApiImplicitParam：用在@ApiImplicitParams注解中，指定一个请求参数的各个方面</span><br><span class=\"line\">        name：参数名</span><br><span class=\"line\">        value：参数的汉字说明、解释</span><br><span class=\"line\">        required：参数是否必须传</span><br><span class=\"line\">        paramType：参数放在哪个地方</span><br><span class=\"line\">            · header --&gt; 请求参数的获取：@RequestHeader</span><br><span class=\"line\">            · query --&gt; 请求参数的获取：@RequestParam</span><br><span class=\"line\">            · path（用于restful接口）--&gt; 请求参数的获取：@PathVariable</span><br><span class=\"line\">            · body（不常用）</span><br><span class=\"line\">            · form（不常用）    </span><br><span class=\"line\">        dataType：参数类型，默认String，其它值dataType=&quot;Integer&quot;       </span><br><span class=\"line\">        defaultValue：参数的默认值</span><br><span class=\"line\"> </span><br><span class=\"line\"> </span><br><span class=\"line\">@ApiResponses：用在请求的方法上，表示一组响应</span><br><span class=\"line\">    @ApiResponse：用在@ApiResponses中，一般用于表达一个错误的响应信息</span><br><span class=\"line\">        code：数字，例如400</span><br><span class=\"line\">        message：信息，例如&quot;请求参数没填好&quot;</span><br><span class=\"line\">        response：抛出异常的类</span><br><span class=\"line\"> </span><br><span class=\"line\"> </span><br><span class=\"line\">@ApiModel：用于响应类上，表示一个返回响应数据的信息</span><br><span class=\"line\">            （这种一般用在post创建的时候，使用@RequestBody这样的场景，</span><br><span class=\"line\">            请求参数无法使用@ApiImplicitParam注解进行描述的时候）</span><br><span class=\"line\">    @ApiModelProperty：用在属性上，描述响应类的属性</span><br></pre></td></tr></table></figure>\n<h3 id=\"1-api\"><a class=\"markdownIt-Anchor\" href=\"#1-api\">#</a> 1、@Api</h3>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">@Api(tags=&quot;APP用户注册Controller&quot;)</span><br></pre></td></tr></table></figure>\n<blockquote>\n<p>@Api：用在请求的类上，说明该类的作用<br>\n tags=“说明该类的作用”<br>\nvalue=“该参数没什么意义，所以不需要配置”</p>\n</blockquote>\n<h3 id=\"2-apioperation\"><a class=\"markdownIt-Anchor\" href=\"#2-apioperation\">#</a> 2、@ApiOperation</h3>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">@ApiOperation(value=&quot;用户登录&quot;,notes=&quot;填写账号密码都是必填&quot;)</span><br></pre></td></tr></table></figure>\n<blockquote>\n<p>@ApiOperation：用在请求的方法上，说明方法的作用<br>\n @ApiOperation：“用在请求的方法上，说明方法的作用”<br>\nvalue=“说明方法的作用”<br>\nnotes=“方法的备注说明”</p>\n</blockquote>\n<h3 id=\"3-apiimplicitparams和apiimplicitparam这两个用的比较多\"><a class=\"markdownIt-Anchor\" href=\"#3-apiimplicitparams和apiimplicitparam这两个用的比较多\">#</a> <strong>3、@ApiImplicitParams 和 @ApiImplicitParam</strong> 这两个用的比较多</h3>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">@ApiImplicitParams(&#123;</span><br><span class=\"line\">    @ApiImplicitParam(name=&quot;mobile&quot;,value=&quot;手机号&quot;,required=true,paramType=&quot;form&quot;),</span><br><span class=\"line\">    @ApiImplicitParam(name=&quot;password&quot;,value=&quot;密码&quot;,required=true,paramType=&quot;form&quot;),</span><br><span class=\"line\">    @ApiImplicitParam(name=&quot;age&quot;,value=&quot;年龄&quot;,required=true,paramType=&quot;form&quot;,dataType=&quot;Integer&quot;)</span><br><span class=\"line\">&#125;)</span><br><span class=\"line\">//@ApiImplicitParams：用在请求的方法上，包含一组参数说明</span><br><span class=\"line\">     //@ApiImplicitParams：用在请求的方法上，包含一组参数说明</span><br><span class=\"line\">     //@ApiImplicitParam：用在 @ApiImplicitParams 注解中，指定一个请求参数的配置信息       </span><br></pre></td></tr></table></figure>\n<blockquote>\n<p>@ApiImplicitParams：用在请求的方法上，包含一组参数说明<br>\n @ApiImplicitParams：用在请求的方法上，包含一组参数说明<br>\n @ApiImplicitParam：用在 @ApiImplicitParams 注解中，指定一个请求参数的配置信息<br>\n name：参数名<br>\n value：参数的汉字说明、解释<br>\n required：参数是否必须传<br>\n paramType：参数放在哪个地方<br>\n・header --&gt; 请求参数的获取：@RequestHeader<br>\n・query --&gt; 请求参数的获取：@RequestParam<br>\n・path（用于 restful 接口）–&gt; 请求参数的获取：@PathVariable<br>\n・body（不常用）<br>\n・form（不常用）<br>\ndataType：参数类型，默认 String，其它值 dataType=“Integer”<br>\ndefaultValue：参数的默认值</p>\n</blockquote>\n<h3 id=\"4-apiresponses\"><a class=\"markdownIt-Anchor\" href=\"#4-apiresponses\">#</a> 4、@ApiResponses</h3>\n<p>@ApiOperation (value = “select1 请求”,notes = “多个参数，多种的查询参数类型”)</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">@ApiResponses(&#123;</span><br><span class=\"line\">    @ApiResponse(code=400,message=&quot;请求参数没填好&quot;),</span><br><span class=\"line\">    @ApiResponse(code=404,message=&quot;请求路径没有或页面跳转路径不对&quot;)</span><br><span class=\"line\">&#125;)</span><br></pre></td></tr></table></figure>\n<blockquote>\n<p>@ApiResponses：用于请求的方法上，表示一组响应<br>\n @ApiResponses：用于请求的方法上，表示一组响应<br>\n @ApiResponse：用在 @ApiResponses 中，一般用于表达一个错误的响应信息<br>\n code：数字，例如 400<br>\nmessage：信息，例如 &quot;请求参数没填好&quot;<br>\nresponse：抛出异常的类</p>\n</blockquote>\n<h3 id=\"5-apimodel\"><a class=\"markdownIt-Anchor\" href=\"#5-apimodel\">#</a> 5、@ApiModel</h3>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">@ApiModel(description= &quot;返回响应数据&quot;)</span><br><span class=\"line\">public class RestMessage implements Serializable&#123;</span><br><span class=\"line\"> </span><br><span class=\"line\">    @ApiModelProperty(value = &quot;是否成功&quot;)</span><br><span class=\"line\">    private boolean success=true;</span><br><span class=\"line\">    @ApiModelProperty(value = &quot;返回对象&quot;)</span><br><span class=\"line\">    private Object data;</span><br><span class=\"line\">    @ApiModelProperty(value = &quot;错误编号&quot;)</span><br><span class=\"line\">    private Integer errCode;</span><br><span class=\"line\">    @ApiModelProperty(value = &quot;错误信息&quot;)</span><br><span class=\"line\">    private String message;</span><br><span class=\"line\">&#125;</span><br></pre></td></tr></table></figure>\n<blockquote>\n<p>@ApiModel：用于响应类上，表示一个返回响应数据的信息<br>\n @ApiModel：用于响应类上，表示一个返回响应数据的信息<br>\n（这种一般用在 post 创建的时候，使用 @RequestBody 这样的场景，<br>\n请求参数无法使用 @ApiImplicitParam 注解进行描述的时候）<br>\n@ApiModelProperty：用在属性上，描述响应类的属性</p>\n</blockquote>\n",
            "tags": [
                "后端"
            ]
        },
        {
            "id": "http://miemiefeng.github.io/layui%E4%BD%BF%E7%94%A8%E5%AF%8C%E6%96%87%E6%9C%AC%E7%BC%96%E8%BE%91%E5%99%A8%E5%B9%B6%E5%9B%9E%E6%98%BE/",
            "url": "http://miemiefeng.github.io/layui%E4%BD%BF%E7%94%A8%E5%AF%8C%E6%96%87%E6%9C%AC%E7%BC%96%E8%BE%91%E5%99%A8%E5%B9%B6%E5%9B%9E%E6%98%BE/",
            "title": "layui使用富文本编辑器并回显",
            "date_published": "2022-01-21T08:34:39.000Z",
            "content_html": "<blockquote>\n<p>正好要做一个文章管理，记录一下遇到的坑</p>\n</blockquote>\n<p>1. 引入富文本编辑器</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">var layedit = layui.layedit;</span><br><span class=\"line\">layedit.set(&#123;</span><br><span class=\"line\">\tuploadImage: &#123;</span><br><span class=\"line\">\t\turl: &#x27;/v1/openApi/uploadImage&#x27; //接口url</span><br><span class=\"line\">\t\t,type: &#x27;&#x27; //默认post</span><br><span class=\"line\">\t&#125;</span><br><span class=\"line\">&#125;);</span><br><span class=\"line\">var index = layedit.build(&#x27;demo&#x27;);</span><br></pre></td></tr></table></figure>\n<blockquote>\n<p>这里我接入了图片上传</p>\n</blockquote>\n<p><strong>图片上传需要定义好接口</strong></p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">&#123;</span><br><span class=\"line\">  &quot;code&quot;: 0 //0表示成功，其它失败</span><br><span class=\"line\">  ,&quot;msg&quot;: &quot;&quot; //提示信息 //一般上传失败后返回</span><br><span class=\"line\">  ,&quot;data&quot;: &#123;</span><br><span class=\"line\">    &quot;src&quot;: &quot;图片路径&quot;</span><br><span class=\"line\">    ,&quot;title&quot;: &quot;图片名称&quot; //可选</span><br><span class=\"line\">  &#125;</span><br><span class=\"line\">&#125;</span><br></pre></td></tr></table></figure>\n<p>2. 富文本编辑器回显</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">&lt;textarea id=&quot;demo&quot; style=&quot;display: none;&quot; name=&quot;article&quot; autocomplete=&quot;off&quot; placeholder=&quot;内容&quot; th:text=&quot;*&#123;article&#125;&quot; &gt;&lt;/textarea&gt;</span><br></pre></td></tr></table></figure>\n<p>这里我使用了 th:text</p>\n<p>3. 最终效果<br>\n<img data-src=\"https://cdn.jsdelivr.net/gh/miemieFeng/blogImg/Blogs/20221116193413.png\" alt=\"20221116193413\"></p>\n",
            "tags": [
                "前端"
            ]
        },
        {
            "id": "http://miemiefeng.github.io/%20%E8%A7%A3%E5%86%B3%20fatal:%20unable%20to%20connect%20to%20gitee.com:%20gitee.com[0:%20180.97.125.228]:%20errno=Unknown%20error/",
            "url": "http://miemiefeng.github.io/%20%E8%A7%A3%E5%86%B3%20fatal:%20unable%20to%20connect%20to%20gitee.com:%20gitee.com[0:%20180.97.125.228]:%20errno=Unknown%20error/",
            "title": "解决fatal:unable to connect to gitee.com:gitee.com[0:180.97.125.228]:errno=Unknown error",
            "date_published": "2022-01-10T03:35:51.000Z",
            "content_html": "<p>fatal: unable to connect to <span class=\"exturl\" data-url=\"aHR0cDovL2dpdGVlLmNvbQ==\">gitee.com</span>:<br>\n<span class=\"exturl\" data-url=\"aHR0cDovL2dpdGVlLmNvbQ==\">gitee.com</span>[0: 180.97.125.228]: errno=Unknown error</p>\n<p>直接找到.gitconfig 文件，把这几个配置删掉，就可以正常 push 了</p>\n<p>[url “<span class=\"exturl\" data-url=\"bWFpbHRvOmdpdEBnaXRodWIuY29t\">git@github.com</span>”]<br>\ninsteadOf = <span class=\"exturl\" data-url=\"aHR0cHM6Ly9naXRodWIuY29tLzo=\">https://github.com/:</span><br>\n[url “git://”]<br>\ninsteadOf = https://<br>\n[url “https://”]<br>\ninsteadOf = git://</p>\n<blockquote>\n<p>百度好久都找不到 焦躁哦</p>\n</blockquote>\n",
            "tags": [
                "git"
            ]
        },
        {
            "id": "http://miemiefeng.github.io/uni-app%E5%B0%81%E8%A3%85%E5%85%AC%E5%85%B1%E8%AF%B7%E6%B1%82(%E6%90%BA%E5%B8%A6token)/",
            "url": "http://miemiefeng.github.io/uni-app%E5%B0%81%E8%A3%85%E5%85%AC%E5%85%B1%E8%AF%B7%E6%B1%82(%E6%90%BA%E5%B8%A6token)/",
            "title": "uni-app封装公共请求(携带token)",
            "date_published": "2021-12-24T05:21:40.000Z",
            "content_html": "<blockquote>\n<p>在日常开发过程中，一般请求我们都会携带 token, 以保证安全性</p>\n</blockquote>\n<h3 id=\"1-在工程目录下新建个common文件夹\"><a class=\"markdownIt-Anchor\" href=\"#1-在工程目录下新建个common文件夹\">#</a> 1、在工程目录下新建个 common 文件夹</h3>\n<p>在 common 目录下新增 request.js</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br><span class=\"line\">43</span><br><span class=\"line\">44</span><br><span class=\"line\">45</span><br><span class=\"line\">46</span><br><span class=\"line\">47</span><br><span class=\"line\">48</span><br><span class=\"line\">49</span><br><span class=\"line\">50</span><br><span class=\"line\">51</span><br><span class=\"line\">52</span><br><span class=\"line\">53</span><br><span class=\"line\">54</span><br><span class=\"line\">55</span><br><span class=\"line\">56</span><br><span class=\"line\">57</span><br><span class=\"line\">58</span><br><span class=\"line\">59</span><br><span class=\"line\">60</span><br><span class=\"line\">61</span><br><span class=\"line\">62</span><br><span class=\"line\">63</span><br><span class=\"line\">64</span><br><span class=\"line\">65</span><br><span class=\"line\">66</span><br><span class=\"line\">67</span><br><span class=\"line\">68</span><br><span class=\"line\">69</span><br><span class=\"line\">70</span><br><span class=\"line\">71</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">//请求函数</span><br><span class=\"line\">const request = (url = &#x27;&#x27;, data = &#123;&#125;,type = &#x27;POST&#x27;, header = &#123;&#125;) =&gt; &#123;</span><br><span class=\"line\">\t// 缓存中获取token </span><br><span class=\"line\">\t header.token = data.token? data.token:uni.getStorageSync(&#x27;token&#x27;);</span><br><span class=\"line\">\t //请求地址</span><br><span class=\"line\">\t var baseUrl =  &#x27;http://localhost:9001/v1/openApi/&#x27;;  </span><br><span class=\"line\">    return new Promise((resolve, reject) =&gt; &#123;</span><br><span class=\"line\">        uni.request(&#123;</span><br><span class=\"line\">            method: type,</span><br><span class=\"line\">            url: baseUrl +url,</span><br><span class=\"line\">            data: data,</span><br><span class=\"line\">            header: header,</span><br><span class=\"line\">            dataType: &#x27;json&#x27;,        </span><br><span class=\"line\">        &#125;).then((response) =&gt; &#123;</span><br><span class=\"line\">            uni.hideLoading();</span><br><span class=\"line\">            uni.stopPullDownRefresh();</span><br><span class=\"line\">            let [error, res] = response;</span><br><span class=\"line\">\t\t\t</span><br><span class=\"line\">\t\t\tconsole.log(res,&#x27;res&#x27;);</span><br><span class=\"line\">            if(res.data.code == 200)&#123;</span><br><span class=\"line\">                setTimeout(function () &#123;</span><br><span class=\"line\">                    resolve(res.data);</span><br><span class=\"line\">                &#125;, 1000);</span><br><span class=\"line\">            &#125;else if(res.data.code == 401)&#123;   //token失效时重新登录</span><br><span class=\"line\">                uni.showToast(&#123;</span><br><span class=\"line\">                    title:res.data.msg,</span><br><span class=\"line\">                    image:&#x27;../../static/public/close.png&#x27;,</span><br><span class=\"line\">                    duration: 2000,</span><br><span class=\"line\">                &#125;);</span><br><span class=\"line\">\t\t\t\tsetTimeout(function()&#123;</span><br><span class=\"line\">\t\t\t\t\tuni.navigateTo(&#123;</span><br><span class=\"line\">\t\t\t\t\t    url: &#x27;/pages/login/login_vfcode&#x27;,</span><br><span class=\"line\">\t\t\t\t\t\tcomplete(e)&#123;</span><br><span class=\"line\">\t\t\t\t\t\t\tconsole.log(e,&#x27;eeeeeeeeee&#x27;)</span><br><span class=\"line\">\t\t\t\t\t\t&#125;</span><br><span class=\"line\">\t\t\t\t\t&#125;);</span><br><span class=\"line\">\t\t\t\t&#125;,1000);</span><br><span class=\"line\">\t\t\t\t</span><br><span class=\"line\">            &#125; else if(res.data.code == -100)&#123;   //-100时返回处理</span><br><span class=\"line\">\t\t\tuni.showToast(&#123;</span><br><span class=\"line\">\t\t\t    title:res.data.msg,</span><br><span class=\"line\">\t\t\t    duration: 1000,</span><br><span class=\"line\">\t\t\t&#125;);</span><br><span class=\"line\">\t\t\tsetTimeout(function () &#123;</span><br><span class=\"line\">\t\t\t\t//回调</span><br><span class=\"line\">\t\t\t    resolve(res.data);</span><br><span class=\"line\">\t\t\t&#125;, 1000);</span><br><span class=\"line\">\t\t\t</span><br><span class=\"line\">            &#125;else &#123;  //其它code 返回提示</span><br><span class=\"line\">                uni.showToast(&#123;</span><br><span class=\"line\">                    title:res.data.msg,</span><br><span class=\"line\">                    image:&#x27;../../static/public/close.png&#x27;,</span><br><span class=\"line\">                    duration: 2000,</span><br><span class=\"line\">                &#125;);</span><br><span class=\"line\">            &#125;</span><br><span class=\"line\">        &#125;).catch(error =&gt; &#123;</span><br><span class=\"line\">            uni.hideLoading();</span><br><span class=\"line\">            uni.stopPullDownRefresh();</span><br><span class=\"line\">            let [err, res] = error;</span><br><span class=\"line\">            reject(err)</span><br><span class=\"line\">\t\t\tconsole.log(error ,&#x27;请求返回error&#x27;)</span><br><span class=\"line\">        &#125;)</span><br><span class=\"line\">    &#125;);</span><br><span class=\"line\">&#125;</span><br><span class=\"line\"> </span><br><span class=\"line\">//定义对象</span><br><span class=\"line\">var api = &#123;</span><br><span class=\"line\">\trequest</span><br><span class=\"line\">&#125;;</span><br><span class=\"line\"> </span><br><span class=\"line\">export default api</span><br></pre></td></tr></table></figure>\n<p>这里我是把 token 加到了请求头里</p>\n<h3 id=\"2-在-mainjs-中引入-定义\"><a class=\"markdownIt-Anchor\" href=\"#2-在-mainjs-中引入-定义\">#</a> 2、在 main.js 中引入、定义</h3>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">import request from &#x27;common/request.js&#x27;  //引入封装全局</span><br><span class=\"line\"> </span><br><span class=\"line\"> </span><br><span class=\"line\"> </span><br><span class=\"line\"> </span><br><span class=\"line\">Vue.prototype.$api = request  </span><br></pre></td></tr></table></figure>\n<h3 id=\"3-实际使用\"><a class=\"markdownIt-Anchor\" href=\"#3-实际使用\">#</a> 3、实际使用</h3>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">this.$api.request(&#x27;getBookingList&#x27;, </span><br><span class=\"line\">\t\t&#123;time: &#x27;2021-11-10&#x27;&#125;, </span><br><span class=\"line\">\t\t&#x27;post&#x27;).then((res) =&gt; &#123;</span><br><span class=\"line\">\tconsole.log(res, &#x27;res----&#x27;);</span><br><span class=\"line\">&#125;);</span><br></pre></td></tr></table></figure>\n",
            "tags": [
                "前端"
            ]
        },
        {
            "id": "http://miemiefeng.github.io/%E8%A7%A3%E5%86%B3%E7%BE%A4%E8%BE%89%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E5%90%8Essh%E8%BF%9E%E6%8E%A5%E5%87%BA%E7%8E%B0connection%20is%20closed%20by%20foreign%20host/",
            "url": "http://miemiefeng.github.io/%E8%A7%A3%E5%86%B3%E7%BE%A4%E8%BE%89%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E5%90%8Essh%E8%BF%9E%E6%8E%A5%E5%87%BA%E7%8E%B0connection%20is%20closed%20by%20foreign%20host/",
            "title": "解决 fatal:unable to connect to gitee.com:gitee.com[0:180.97.125.228]：errno=Unknown error",
            "date_published": "2021-12-23T00:41:46.000Z",
            "content_html": "<h3 id=\"上次内网穿透后发现在家里一直无法通过穿透服务器连接群辉ssh\"><a class=\"markdownIt-Anchor\" href=\"#上次内网穿透后发现在家里一直无法通过穿透服务器连接群辉ssh\">#</a> 上次内网穿透后，发现在家里一直无法通过穿透服务器连接群辉 ssh</h3>\n<p><img data-src=\"https://cdn.jsdelivr.net/gh/miemieFeng/blogImg/Blogs/20221116194141.png\" alt=\"20221116194141\"></p>\n<h3 id=\"后来发现是被群辉拉入了黑名单解除就可以了\"><a class=\"markdownIt-Anchor\" href=\"#后来发现是被群辉拉入了黑名单解除就可以了\">#</a> 后来发现是被群辉拉入了黑名单，解除就可以了</h3>\n<p><img data-src=\"https://cdn.jsdelivr.net/gh/miemieFeng/blogImg/Blogs/20221116194201.png\" alt=\"20221116194201\"></p>\n<blockquote>\n<p>取消自动封锁，或者把 ip 移出来</p>\n</blockquote>\n",
            "tags": [
                "群晖"
            ]
        },
        {
            "id": "http://miemiefeng.github.io/%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6nginx%E6%8A%A5%E9%94%99(413%20Request%20Entity%20Too%20Large)/",
            "url": "http://miemiefeng.github.io/%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6nginx%E6%8A%A5%E9%94%99(413%20Request%20Entity%20Too%20Large)/",
            "title": "上传文件nginx报错(413 Request Entity Too Large)",
            "date_published": "2021-12-22T05:15:55.000Z",
            "content_html": "<blockquote>\n<p>部署舔狗日记的时候发现，字体文件太大无法上传.</p>\n</blockquote>\n<p>这可能是由于 Nginx 的上传大小限制所导致的。<br>\n可以在 Nginx 的配置文件下的 http 节点加入 client_max_body_size 1024m<br>\n 就解决了<br>\n<img data-src=\"https://cdn.jsdelivr.net/gh/miemieFeng/blogImg/Blogs/20221116194510.png\" alt=\"20221116194510\"></p>\n",
            "tags": [
                "服务器"
            ]
        },
        {
            "id": "http://miemiefeng.github.io/%E9%BB%91%E7%BE%A4%E6%99%96frp%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/",
            "url": "http://miemiefeng.github.io/%E9%BB%91%E7%BE%A4%E6%99%96frp%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/",
            "title": "黑群晖frp内网穿透",
            "date_published": "2021-12-14T05:48:58.000Z",
            "content_html": "<blockquote>\n<p>前段时间闲来无事，吧家里的旧笔记本改造成了黑群晖.<br>\n 开通内网穿透踩了很多坑，特此记录一下</p>\n</blockquote>\n<p><strong>frp 分别有服务端 (frps) 和客户端 (frpc)</strong></p>\n<h2 id=\"一-下面先说服务端\"><a class=\"markdownIt-Anchor\" href=\"#一-下面先说服务端\">#</a> 一、下面先说服务端</h2>\n<p>因为是第一次操作，所以没有使用 docker 管理。有时间一定要换成 docker</p>\n<h4 id=\"1-首先下载frp根据自己的系统选择\"><a class=\"markdownIt-Anchor\" href=\"#1-首先下载frp根据自己的系统选择\">#</a> 1、首先下载 frp（根据自己的系统选择）</h4>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz</span><br></pre></td></tr></table></figure>\n<h4 id=\"2-解压命令解压出来\"><a class=\"markdownIt-Anchor\" href=\"#2-解压命令解压出来\">#</a> 2、解压命令解压出来</h4>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">tar -zxvf frp_0.33.0_linux_amd64.tar.gz</span><br></pre></td></tr></table></figure>\n<h4 id=\"3-进入-frp-目录\"><a class=\"markdownIt-Anchor\" href=\"#3-进入-frp-目录\">#</a> 3、进入 frp 目录</h4>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">cd frp_0.33.0_linux_amd64</span><br></pre></td></tr></table></figure>\n<h4 id=\"4-配置服务器端文件\"><a class=\"markdownIt-Anchor\" href=\"#4-配置服务器端文件\">#</a> 4、配置服务器端文件</h4>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">vi frps.ini</span><br><span class=\"line\"></span><br></pre></td></tr></table></figure>\n<blockquote>\n<p>下面我把配置文件贴出来</p>\n</blockquote>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">[common]\t\t\t#必填</span><br><span class=\"line\">bind_port = 1231  \t\t#服务端口（可自定义）</span><br><span class=\"line\">vhost_http_port = 1232 \t\t#访问端口（可自定义）</span><br><span class=\"line\">dashboard_port = 7500 \t\t#dashboard 界面端口</span><br><span class=\"line\">dashboard_user = 账号\t\t#登录 dashboard 用户名</span><br><span class=\"line\">dashboard_pwd = 密码\t\t#登录 dashboard 密码</span><br><span class=\"line\">max_pool_count = 5\t\t#最大连接池数量</span><br><span class=\"line\">authentication_timeout = 900\t#超时验证时间</span><br><span class=\"line\">subdomain_host = 你的域名\t#自定义二级域名（这里我用了我另一个备案的域名）</span><br><span class=\"line\">[ssh]</span><br><span class=\"line\">listen_port = 6000 \t\t#访问端口</span><br><span class=\"line\">auth_token = 123321\t\t#用户身份认证</span><br></pre></td></tr></table></figure>\n<h4 id=\"6-启动服务器端frps测试启动\"><a class=\"markdownIt-Anchor\" href=\"#6-启动服务器端frps测试启动\">#</a> 6、启动服务器端 frps（测试启动）</h4>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">./frps -c ./frps.ini</span><br></pre></td></tr></table></figure>\n<blockquote>\n<p>如果没有报错，那么服务端的操作暂时完毕</p>\n</blockquote>\n<p>二、开始说客户端（群晖端）</p>\n<blockquote>\n<p>一开始群晖也是使用了和上边一样的操作，只是配置文件不同，后来发现一个弊端 ----&gt; 每次重启群晖后，frpc 不会自启动。或者因为不可抗力因素，frpc 关闭了很不方便</p>\n</blockquote>\n<h4 id=\"1-下载docker套件\"><a class=\"markdownIt-Anchor\" href=\"#1-下载docker套件\">#</a> 1、下载 docker 套件</h4>\n<p>首先我们打开套件中心，搜索 docker 并安装。docker 应该算是黑群晖必备套件我就不细说了</p>\n<h4 id=\"2-下载frp\"><a class=\"markdownIt-Anchor\" href=\"#2-下载frp\">#</a> 2、下载 frp</h4>\n<p><img data-src=\"https://cdn.jsdelivr.net/gh/miemieFeng/blogImg/Blogs/20221116194700.png\" alt=\"20221116194700\"></p>\n<h3 id=\"2-启动容器\"><a class=\"markdownIt-Anchor\" href=\"#2-启动容器\">#</a> 2、启动容器</h3>\n<p>映射 frpc 文件，容器内路径为 <code>/frp/frpc.ini</code> ，容器外路径随意，自己选</p>\n<h4 id=\"3-修改配置文件\"><a class=\"markdownIt-Anchor\" href=\"#3-修改配置文件\">#</a> 3、修改配置文件</h4>\n<p>一定要注意，我们的配置文件是 `frpc.ini，下面我把文件内容贴出来</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">[common]</span><br><span class=\"line\">server_addr = 服务端ip</span><br><span class=\"line\">server_port = 端口设置</span><br><span class=\"line\">auth_token = 随便设置</span><br><span class=\"line\">pool_count = 1</span><br><span class=\"line\">[ssh]</span><br><span class=\"line\">type = tcp</span><br><span class=\"line\">local_ip = 本地群晖ip</span><br><span class=\"line\">local_port = 22</span><br><span class=\"line\">remote_port = 6000</span><br><span class=\"line\">use_compression = true</span><br><span class=\"line\">use_encryption = true</span><br><span class=\"line\">[qh]\t\t\t#如果有多个端口一定不能和下面的名字重复了</span><br><span class=\"line\">type = http</span><br><span class=\"line\">local_port = 5000</span><br><span class=\"line\">subdomain = qh\t\t#这里一定是写你的二级域名前缀（坑点）</span><br><span class=\"line\">[ql]</span><br><span class=\"line\">type = http</span><br><span class=\"line\">local_port = 5700</span><br><span class=\"line\">subdomain = ql</span><br><span class=\"line\">[nl]</span><br><span class=\"line\">type = http</span><br><span class=\"line\">local_port = 5703</span><br><span class=\"line\">subdomain = nl</span><br><span class=\"line\">[sn]</span><br><span class=\"line\">type = http</span><br><span class=\"line\">local_port = 8181</span><br><span class=\"line\">subdomain = sn</span><br><span class=\"line\"></span><br></pre></td></tr></table></figure>\n<h4 id=\"4-启动服务器端\"><a class=\"markdownIt-Anchor\" href=\"#4-启动服务器端\">#</a> 4、启动服务器端</h4>\n<p>群晖启动服务端，进入高级设置，选择停止后重启，并且一定要选择使用和 dockerhost 相同网络</p>\n<blockquote>\n<p>此时如果容器没有无限容器那么说明已经是链接成功了，可以访问刚才自己配的地址去看，一定是域名加端口号访问。除非像我一样在服务端使用 nginx 分别反向代理</p>\n</blockquote>\n<h2 id=\"三-服务端frp后台运行\"><a class=\"markdownIt-Anchor\" href=\"#三-服务端frp后台运行\">#</a> 三、服务端 frp 后台运行</h2>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">nohup ./frps -c ./frps.ini &amp;</span><br></pre></td></tr></table></figure>\n<p>最后贴上成果<br>\n<img data-src=\"https://cdn.jsdelivr.net/gh/miemieFeng/blogImg/Blogs/20221116194719.png\" alt=\"20221116194719\"></p>\n",
            "tags": [
                "群晖"
            ]
        },
        {
            "id": "http://miemiefeng.github.io/%E6%88%91%E7%9A%84%E4%BB%BB%E5%8A%A1%E6%97%B6%E9%97%B4%E6%88%91%E5%81%9A%E4%B8%BB(cron%E6%8F%92%E4%BB%B6)/",
            "url": "http://miemiefeng.github.io/%E6%88%91%E7%9A%84%E4%BB%BB%E5%8A%A1%E6%97%B6%E9%97%B4%E6%88%91%E5%81%9A%E4%B8%BB(cron%E6%8F%92%E4%BB%B6)/",
            "title": "我的任务时间我做主(cron插件)",
            "date_published": "2021-12-03T06:04:40.000Z",
            "content_html": "<h2 id=\"先说一下插件怎么使用\"><a class=\"markdownIt-Anchor\" href=\"#先说一下插件怎么使用\">#</a> 先说一下插件怎么使用</h2>\n<h3 id=\"1-点击浏览器右上角\"><a class=\"markdownIt-Anchor\" href=\"#1-点击浏览器右上角\">#</a> 1、点击浏览器右上角</h3>\n<p><img data-src=\"https://cdn.jsdelivr.net/gh/miemieFeng/blogImg/Blogs/20221116194923.png\" alt=\"20221116194923\"></p>\n<h3 id=\"2-打开开发者模式\"><a class=\"markdownIt-Anchor\" href=\"#2-打开开发者模式\">#</a> 2、打开开发者模式</h3>\n<p><img data-src=\"https://cdn.jsdelivr.net/gh/miemieFeng/blogImg/Blogs/20221116194944.png\" alt=\"20221116194944\"></p>\n<h3 id=\"3-拖入下载的压缩包即可使用啦\"><a class=\"markdownIt-Anchor\" href=\"#3-拖入下载的压缩包即可使用啦\">#</a> 3、拖入下载的压缩包即可使用啦</h3>\n<blockquote>\n<p>github 地址：<span class=\"exturl\" data-url=\"aHR0cHM6Ly9naXRodWIuY29tL2p1aWxsZXRzL2Nyb24vcmVsZWFzZXM=\">cron 插件</span></p>\n</blockquote>\n<h2 id=\"下面说下浏览器插件的核心文件manifestjson\"><a class=\"markdownIt-Anchor\" href=\"#下面说下浏览器插件的核心文件manifestjson\">#</a> 下面说下浏览器插件的核心文件（manifest.json）</h2>\n<blockquote>\n<p>这个文件必须要有</p>\n</blockquote>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">&#123;\t</span><br><span class=\"line\">\t// 清单文件的版本，这个必须写，而且必须是2</span><br><span class=\"line\">\t&quot;manifest_version&quot;: 2,</span><br><span class=\"line\">\t// 插件的名称</span><br><span class=\"line\">\t&quot;name&quot;: &quot;Cron表达式生成&quot;,</span><br><span class=\"line\">\t// 插件的版本</span><br><span class=\"line\">\t&quot;version&quot;: &quot;1.0.0&quot;,</span><br><span class=\"line\">\t// 插件描述\t</span><br><span class=\"line\">\t&quot;description&quot;: &quot;Cron表达式生成&quot;,</span><br><span class=\"line\">\t// 图标，这里我偷懒全部用一个尺寸</span><br><span class=\"line\">\t&quot;icons&quot;: &#123;</span><br><span class=\"line\">\t\t&quot;16&quot;: &quot;img/icon.png&quot;,</span><br><span class=\"line\">\t\t&quot;48&quot;: &quot;img/icon.png&quot;,</span><br><span class=\"line\">\t\t&quot;128&quot;: &quot;img/icon.png&quot;</span><br><span class=\"line\">\t&#125;,</span><br><span class=\"line\">    </span><br><span class=\"line\">\t// 浏览器右上角图标设置，browser_action、page_action、app必须三选一</span><br><span class=\"line\">\t&quot;browser_action&quot;: &#123;</span><br><span class=\"line\">\t\t&quot;default_icon&quot;: &quot;img/icon.png&quot;,</span><br><span class=\"line\">\t\t&quot;default_title&quot;: &quot;Cron表达式生成&quot;,</span><br><span class=\"line\">\t\t&quot;default_popup&quot;: &quot;demo.html&quot;</span><br><span class=\"line\">\t&#125;,</span><br><span class=\"line\">\t&quot;options_ui&quot;: &#123;</span><br><span class=\"line\">\t\t&quot;page&quot;: &quot;demo.html&quot;,</span><br><span class=\"line\">\t\t// 添加一些默认的样式，推荐使用</span><br><span class=\"line\">\t\t&quot;chrome_style&quot;: true</span><br><span class=\"line\">\t&#125;,</span><br><span class=\"line\">\t//权限申请</span><br><span class=\"line\">\t&quot;permissions&quot;: [</span><br><span class=\"line\">\t\t</span><br><span class=\"line\">\t],</span><br><span class=\"line\">\t//插件主页</span><br><span class=\"line\">\t&quot;homepage_url&quot;: &quot;http://47.108.248.23:8090/&quot;,</span><br><span class=\"line\">&#125;</span><br></pre></td></tr></table></figure>\n",
            "tags": [
                "cron插件"
            ]
        },
        {
            "id": "http://miemiefeng.github.io/nginx%E7%9A%84%E5%AE%89%E8%A3%85%E4%B8%8E%E9%85%8D%E7%BD%AE/",
            "url": "http://miemiefeng.github.io/nginx%E7%9A%84%E5%AE%89%E8%A3%85%E4%B8%8E%E9%85%8D%E7%BD%AE/",
            "title": "nginx的安装与配置",
            "date_published": "2021-11-17T05:30:04.000Z",
            "content_html": "<h4 id=\"一-nginx的安装\"><a class=\"markdownIt-Anchor\" href=\"#一-nginx的安装\">#</a> 一、nginx 的安装</h4>\n<p>最近正好申请了 ssl 证书寻思重新配置一下 nginx，做个记录。</p>\n<h5 id=\"1-安装\"><a class=\"markdownIt-Anchor\" href=\"#1-安装\">#</a> 1、安装</h5>\n<p>这里我选择下载安装包，所以先创建 nginx 的默认目录。</p>\n<p>一般是放在 <code>/usr/local</code>  下</p>\n<blockquote>\n<p>以下操作在 <code>/user/local</code>  进行<br>\n本次下载非最新版，可自行更改版本号</p>\n</blockquote>\n<figure class=\"highlight sh\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">wget -c https://nginx.org/download/nginx-1.10.1.tar.gz</span><br></pre></td></tr></table></figure>\n<h5 id=\"2-解压安装包\"><a class=\"markdownIt-Anchor\" href=\"#2-解压安装包\">#</a> 2、解压安装包</h5>\n<figure class=\"highlight sh\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">tar -zxvf nginx-1.10.1.tar.gz</span><br></pre></td></tr></table></figure>\n<h5 id=\"3-安装\"><a class=\"markdownIt-Anchor\" href=\"#3-安装\">#</a> 3、安装</h5>\n<p>进入解压后的文件夹</p>\n<blockquote>\n<p>这里我们使用默认配置</p>\n</blockquote>\n<figure class=\"highlight sh\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">./configure</span><br></pre></td></tr></table></figure>\n<h5 id=\"4-编译安装\"><a class=\"markdownIt-Anchor\" href=\"#4-编译安装\">#</a> 4、编译安装</h5>\n<figure class=\"highlight sh\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">make</span><br><span class=\"line\">make install</span><br></pre></td></tr></table></figure>\n<h5 id=\"5-启动nginx\"><a class=\"markdownIt-Anchor\" href=\"#5-启动nginx\">#</a> 5、启动 nginx</h5>\n<p>此时返回上一级目录便可看到 nginx 文件夹<br>\n进入 /usr/local/nginx/sbin<br>\n<img data-src=\"https://cdn.jsdelivr.net/gh/miemieFeng/blogImg/Blogs/20221116195150.png\" alt=\"20221116195150\"><br>\n 输入 <code>./nginx</code>  即可启动 nginx</p>\n<figure class=\"highlight sh\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">./nginx <span class=\"comment\">#启动nginx</span></span><br><span class=\"line\">./nginx -s quit <span class=\"comment\">#关闭nginx</span></span><br><span class=\"line\">./nginx -s reload <span class=\"comment\">#重启nginx</span></span><br></pre></td></tr></table></figure>\n<h4 id=\"二-配置nginx\"><a class=\"markdownIt-Anchor\" href=\"#二-配置nginx\">#</a> 二、配置 nginx</h4>\n<p>进入 /usr/local/nginx/conf</p>\n<figure class=\"highlight sh\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">vim nginx.conf</span><br></pre></td></tr></table></figure>\n<p>修改自己所需要的配置即可</p>\n",
            "tags": [
                "nginx"
            ]
        },
        {
            "id": "http://miemiefeng.github.io/layui%E5%BC%95%E5%85%A5%E7%99%BE%E5%BA%A6%E5%9C%B0%E5%9B%BE%EF%BC%8C%E7%82%B9%E5%87%BB%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E4%BD%8D%E7%BD%AE/",
            "url": "http://miemiefeng.github.io/layui%E5%BC%95%E5%85%A5%E7%99%BE%E5%BA%A6%E5%9C%B0%E5%9B%BE%EF%BC%8C%E7%82%B9%E5%87%BB%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E4%BD%8D%E7%BD%AE/",
            "title": "layui引入百度地图，点击获取当前位置",
            "date_published": "2021-11-11T02:26:19.000Z",
            "content_html": "<h5 id=\"一-申请百度地图的ak略\"><a class=\"markdownIt-Anchor\" href=\"#一-申请百度地图的ak略\">#</a> 一、申请百度地图的 ak（略）</h5>\n<h5 id=\"二-引入百度地图\"><a class=\"markdownIt-Anchor\" href=\"#二-引入百度地图\">#</a> 二、引入百度地图</h5>\n<p class=\"note note-primary\">先插入代码，分块讲解</p>\n<figure class=\"highlight html\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br><span class=\"line\">43</span><br><span class=\"line\">44</span><br><span class=\"line\">45</span><br><span class=\"line\">46</span><br><span class=\"line\">47</span><br><span class=\"line\">48</span><br><span class=\"line\">49</span><br><span class=\"line\">50</span><br><span class=\"line\">51</span><br><span class=\"line\">52</span><br><span class=\"line\">53</span><br><span class=\"line\">54</span><br><span class=\"line\">55</span><br><span class=\"line\">56</span><br><span class=\"line\">57</span><br><span class=\"line\">58</span><br><span class=\"line\">59</span><br><span class=\"line\">60</span><br><span class=\"line\">61</span><br><span class=\"line\">62</span><br><span class=\"line\">63</span><br><span class=\"line\">64</span><br><span class=\"line\">65</span><br><span class=\"line\">66</span><br><span class=\"line\">67</span><br><span class=\"line\">68</span><br><span class=\"line\">69</span><br><span class=\"line\">70</span><br><span class=\"line\">71</span><br><span class=\"line\">72</span><br><span class=\"line\">73</span><br><span class=\"line\">74</span><br><span class=\"line\">75</span><br><span class=\"line\">76</span><br><span class=\"line\">77</span><br><span class=\"line\">78</span><br><span class=\"line\">79</span><br><span class=\"line\">80</span><br><span class=\"line\">81</span><br><span class=\"line\">82</span><br><span class=\"line\">83</span><br><span class=\"line\">84</span><br><span class=\"line\">85</span><br><span class=\"line\">86</span><br><span class=\"line\">87</span><br><span class=\"line\">88</span><br><span class=\"line\">89</span><br><span class=\"line\">90</span><br><span class=\"line\">91</span><br><span class=\"line\">92</span><br><span class=\"line\">93</span><br><span class=\"line\">94</span><br><span class=\"line\">95</span><br><span class=\"line\">96</span><br><span class=\"line\">97</span><br><span class=\"line\">98</span><br><span class=\"line\">99</span><br><span class=\"line\">100</span><br><span class=\"line\">101</span><br><span class=\"line\">102</span><br><span class=\"line\">103</span><br><span class=\"line\">104</span><br><span class=\"line\">105</span><br><span class=\"line\">106</span><br><span class=\"line\">107</span><br><span class=\"line\">108</span><br><span class=\"line\">109</span><br><span class=\"line\">110</span><br><span class=\"line\">111</span><br><span class=\"line\">112</span><br><span class=\"line\">113</span><br><span class=\"line\">114</span><br><span class=\"line\">115</span><br><span class=\"line\">116</span><br><span class=\"line\">117</span><br><span class=\"line\">118</span><br><span class=\"line\">119</span><br><span class=\"line\">120</span><br><span class=\"line\">121</span><br><span class=\"line\">122</span><br><span class=\"line\">123</span><br><span class=\"line\">124</span><br><span class=\"line\">125</span><br><span class=\"line\">126</span><br><span class=\"line\">127</span><br><span class=\"line\">128</span><br><span class=\"line\">129</span><br><span class=\"line\">130</span><br><span class=\"line\">131</span><br><span class=\"line\">132</span><br><span class=\"line\">133</span><br><span class=\"line\">134</span><br><span class=\"line\">135</span><br><span class=\"line\">136</span><br><span class=\"line\">137</span><br><span class=\"line\">138</span><br><span class=\"line\">139</span><br><span class=\"line\">140</span><br><span class=\"line\">141</span><br><span class=\"line\">142</span><br><span class=\"line\">143</span><br><span class=\"line\">144</span><br><span class=\"line\">145</span><br><span class=\"line\">146</span><br><span class=\"line\">147</span><br><span class=\"line\">148</span><br><span class=\"line\">149</span><br><span class=\"line\">150</span><br><span class=\"line\">151</span><br><span class=\"line\">152</span><br><span class=\"line\">153</span><br><span class=\"line\">154</span><br><span class=\"line\">155</span><br><span class=\"line\">156</span><br><span class=\"line\">157</span><br><span class=\"line\">158</span><br><span class=\"line\">159</span><br><span class=\"line\">160</span><br><span class=\"line\">161</span><br><span class=\"line\">162</span><br><span class=\"line\">163</span><br><span class=\"line\">164</span><br><span class=\"line\">165</span><br><span class=\"line\">166</span><br><span class=\"line\">167</span><br><span class=\"line\">168</span><br><span class=\"line\">169</span><br><span class=\"line\">170</span><br><span class=\"line\">171</span><br><span class=\"line\">172</span><br><span class=\"line\">173</span><br><span class=\"line\">174</span><br><span class=\"line\">175</span><br><span class=\"line\">176</span><br><span class=\"line\">177</span><br><span class=\"line\">178</span><br><span class=\"line\">179</span><br><span class=\"line\">180</span><br><span class=\"line\">181</span><br><span class=\"line\">182</span><br><span class=\"line\">183</span><br><span class=\"line\">184</span><br><span class=\"line\">185</span><br><span class=\"line\">186</span><br><span class=\"line\">187</span><br><span class=\"line\">188</span><br><span class=\"line\">189</span><br><span class=\"line\">190</span><br><span class=\"line\">191</span><br><span class=\"line\">192</span><br><span class=\"line\">193</span><br><span class=\"line\">194</span><br><span class=\"line\">195</span><br><span class=\"line\">196</span><br><span class=\"line\">197</span><br><span class=\"line\">198</span><br><span class=\"line\">199</span><br><span class=\"line\">200</span><br><span class=\"line\">201</span><br><span class=\"line\">202</span><br><span class=\"line\">203</span><br><span class=\"line\">204</span><br><span class=\"line\">205</span><br><span class=\"line\">206</span><br><span class=\"line\">207</span><br><span class=\"line\">208</span><br><span class=\"line\">209</span><br><span class=\"line\">210</span><br><span class=\"line\">211</span><br><span class=\"line\">212</span><br><span class=\"line\">213</span><br><span class=\"line\">214</span><br><span class=\"line\">215</span><br><span class=\"line\">216</span><br><span class=\"line\">217</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\">&lt;!DOCTYPE <span class=\"keyword\">html</span>&gt;</span></span><br><span class=\"line\"><span class=\"tag\">&lt;<span class=\"name\">html</span> <span class=\"attr\">lang</span>=<span class=\"string\">&quot;en&quot;</span> <span class=\"attr\">xmlns:th</span>=<span class=\"string\">&quot;http://www.thymeleaf.org&quot;</span>&gt;</span></span><br><span class=\"line\"><span class=\"tag\">&lt;<span class=\"name\">head</span>&gt;</span></span><br><span class=\"line\">    <span class=\"tag\">&lt;<span class=\"name\">th:block</span> <span class=\"attr\">th:include</span>=<span class=\"string\">&quot;include :: header(&#x27;服务网点管理修改&#x27;)&quot;</span>/&gt;</span></span><br><span class=\"line\">    <span class=\"tag\">&lt;<span class=\"name\">script</span> <span class=\"attr\">type</span>=<span class=\"string\">&quot;text/javascript&quot;</span></span></span><br><span class=\"line\"><span class=\"tag\">            <span class=\"attr\">src</span>=<span class=\"string\">&quot;http://api.map.baidu.com/api?v=2.0&amp;ak=自己申请&quot;</span>&gt;</span><span class=\"tag\">&lt;/<span class=\"name\">script</span>&gt;</span></span><br><span class=\"line\">    <span class=\"comment\">&lt;!--百度地图key要自己注册,或者用1.4以下的版本(不需要key)--&gt;</span></span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"tag\">&lt;/<span class=\"name\">head</span>&gt;</span></span><br><span class=\"line\"><span class=\"tag\">&lt;<span class=\"name\">body</span>&gt;</span></span><br><span class=\"line\"><span class=\"tag\">&lt;<span class=\"name\">form</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form&quot;</span> <span class=\"attr\">action</span>=<span class=\"string\">&quot;&quot;</span> <span class=\"attr\">th:object</span>=<span class=\"string\">&quot;$&#123;ServiceNetwork&#125;&quot;</span>&gt;</span></span><br><span class=\"line\">    <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;mainBox&quot;</span>&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;main-container&quot;</span>&gt;</span></span><br><span class=\"line\">            <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;main-container&quot;</span>&gt;</span></span><br><span class=\"line\"></span><br><span class=\"line\">                <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-item&quot;</span> <span class=\"attr\">style</span>=<span class=\"string\">&quot;display:none;&quot;</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;<span class=\"name\">label</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-label&quot;</span>&gt;</span>id<span class=\"tag\">&lt;/<span class=\"name\">label</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-input-block&quot;</span>&gt;</span></span><br><span class=\"line\">                        <span class=\"tag\">&lt;<span class=\"name\">input</span> <span class=\"attr\">th:value</span>=<span class=\"string\">&quot;*&#123;id&#125;&quot;</span> <span class=\"attr\">type</span>=<span class=\"string\">&quot;text&quot;</span> <span class=\"attr\">name</span>=<span class=\"string\">&quot;id&quot;</span> <span class=\"attr\">autocomplete</span>=<span class=\"string\">&quot;off&quot;</span> <span class=\"attr\">placeholder</span>=<span class=\"string\">&quot;电站编号&quot;</span></span></span><br><span class=\"line\"><span class=\"tag\">                               <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-input&quot;</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\">                <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\"></span><br><span class=\"line\"></span><br><span class=\"line\">                <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-item&quot;</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;<span class=\"name\">label</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-label&quot;</span>&gt;</span>服务网点名称<span class=\"tag\">&lt;/<span class=\"name\">label</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-input-block&quot;</span>&gt;</span></span><br><span class=\"line\">                        <span class=\"tag\">&lt;<span class=\"name\">input</span> <span class=\"attr\">th:value</span>=<span class=\"string\">&quot;*&#123;serviceName&#125;&quot;</span> <span class=\"attr\">type</span>=<span class=\"string\">&quot;text&quot;</span> <span class=\"attr\">name</span>=<span class=\"string\">&quot;serviceName&quot;</span> <span class=\"attr\">autocomplete</span>=<span class=\"string\">&quot;off&quot;</span></span></span><br><span class=\"line\"><span class=\"tag\">                               <span class=\"attr\">placeholder</span>=<span class=\"string\">&quot;服务网点名称&quot;</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-input&quot;</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\">                <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\"></span><br><span class=\"line\"></span><br><span class=\"line\">                <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-item&quot;</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;<span class=\"name\">label</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-label&quot;</span>&gt;</span>服务网点地址<span class=\"tag\">&lt;/<span class=\"name\">label</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-input-block&quot;</span>&gt;</span></span><br><span class=\"line\">                        <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">style</span>=<span class=\"string\">&quot;width:697px;height:550px;border:#ccc solid 1px;&quot;</span> <span class=\"attr\">id</span>=<span class=\"string\">&quot;dituContent&quot;</span>&gt;</span><span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\"></span><br><span class=\"line\">                        <span class=\"tag\">&lt;<span class=\"name\">input</span> <span class=\"attr\">th:value</span>=<span class=\"string\">&quot;*&#123;serviceAddress&#125;&quot;</span> <span class=\"attr\">type</span>=<span class=\"string\">&quot;text&quot;</span> <span class=\"attr\">name</span>=<span class=\"string\">&quot;serviceAddress&quot;</span> <span class=\"attr\">autocomplete</span>=<span class=\"string\">&quot;off&quot;</span></span></span><br><span class=\"line\"><span class=\"tag\">                               <span class=\"attr\">placeholder</span>=<span class=\"string\">&quot;服务网点地址&quot;</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-input&quot;</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\">                <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\"></span><br><span class=\"line\"></span><br><span class=\"line\">                <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-item&quot;</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;<span class=\"name\">label</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-label&quot;</span>&gt;</span>营业时间<span class=\"tag\">&lt;/<span class=\"name\">label</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-input-block&quot;</span>&gt;</span></span><br><span class=\"line\">                        <span class=\"tag\">&lt;<span class=\"name\">input</span> <span class=\"attr\">th:value</span>=<span class=\"string\">&quot;*&#123;businessHours&#125;&quot;</span> <span class=\"attr\">type</span>=<span class=\"string\">&quot;text&quot;</span> <span class=\"attr\">name</span>=<span class=\"string\">&quot;businessHours&quot;</span> <span class=\"attr\">autocomplete</span>=<span class=\"string\">&quot;off&quot;</span></span></span><br><span class=\"line\"><span class=\"tag\">                               <span class=\"attr\">placeholder</span>=<span class=\"string\">&quot;营业时间&quot;</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-input&quot;</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\">                <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\"></span><br><span class=\"line\"></span><br><span class=\"line\">                <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-item&quot;</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;<span class=\"name\">label</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-label&quot;</span>&gt;</span>营运状态 <span class=\"tag\">&lt;/<span class=\"name\">label</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-input-block&quot;</span>&gt;</span></span><br><span class=\"line\"></span><br><span class=\"line\">                        <span class=\"tag\">&lt;<span class=\"name\">select</span> <span class=\"attr\">th:field</span>=<span class=\"string\">&quot;*&#123;operatingStatus&#125;&quot;</span> <span class=\"attr\">name</span>=<span class=\"string\">&quot;operatingStatus&quot;</span> <span class=\"attr\">id</span>=<span class=\"string\">&quot;operatingStatus&quot;</span></span></span><br><span class=\"line\"><span class=\"tag\">                                <span class=\"attr\">th:with</span>=<span class=\"string\">&quot;type=$&#123;@dict.getType(&#x27;operating_status&#x27;)&#125;&quot;</span>&gt;</span></span><br><span class=\"line\">                            <span class=\"tag\">&lt;<span class=\"name\">option</span> <span class=\"attr\">th:each</span>=<span class=\"string\">&quot;dict : $&#123;type&#125;&quot;</span> <span class=\"attr\">th:text</span>=<span class=\"string\">&quot;$&#123;dict.dictLabel&#125;&quot;</span></span></span><br><span class=\"line\"><span class=\"tag\">                                    <span class=\"attr\">th:value</span>=<span class=\"string\">&quot;$&#123;dict.dictValue&#125;&quot;</span>&gt;</span><span class=\"tag\">&lt;/<span class=\"name\">option</span>&gt;</span></span><br><span class=\"line\">                        <span class=\"tag\">&lt;/<span class=\"name\">select</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\">                <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\"></span><br><span class=\"line\"></span><br><span class=\"line\">                <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-item&quot;</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;<span class=\"name\">label</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-label&quot;</span>&gt;</span>服务网点状态<span class=\"tag\">&lt;/<span class=\"name\">label</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-input-block&quot;</span>&gt;</span></span><br><span class=\"line\">                        <span class=\"tag\">&lt;<span class=\"name\">select</span> <span class=\"attr\">th:field</span>=<span class=\"string\">&quot;*&#123;serviceStatus&#125;&quot;</span> <span class=\"attr\">name</span>=<span class=\"string\">&quot;serviceStatus&quot;</span> <span class=\"attr\">id</span>=<span class=\"string\">&quot;serviceStatus&quot;</span></span></span><br><span class=\"line\"><span class=\"tag\">                                <span class=\"attr\">th:with</span>=<span class=\"string\">&quot;type=$&#123;@dict.getType(&#x27;serviceStatus&#x27;)&#125;&quot;</span>&gt;</span></span><br><span class=\"line\">                            <span class=\"tag\">&lt;<span class=\"name\">option</span> <span class=\"attr\">th:each</span>=<span class=\"string\">&quot;dict : $&#123;type&#125;&quot;</span> <span class=\"attr\">th:text</span>=<span class=\"string\">&quot;$&#123;dict.dictLabel&#125;&quot;</span></span></span><br><span class=\"line\"><span class=\"tag\">                                    <span class=\"attr\">th:value</span>=<span class=\"string\">&quot;$&#123;dict.dictValue&#125;&quot;</span>&gt;</span><span class=\"tag\">&lt;/<span class=\"name\">option</span>&gt;</span></span><br><span class=\"line\">                        <span class=\"tag\">&lt;/<span class=\"name\">select</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\">                <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\"></span><br><span class=\"line\"></span><br><span class=\"line\">                <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-item&quot;</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;<span class=\"name\">label</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-label&quot;</span>&gt;</span>电柜容量<span class=\"tag\">&lt;/<span class=\"name\">label</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-input-block&quot;</span>&gt;</span></span><br><span class=\"line\">                        <span class=\"tag\">&lt;<span class=\"name\">input</span> <span class=\"attr\">th:value</span>=<span class=\"string\">&quot;*&#123;electricCabinetCapacity&#125;&quot;</span> <span class=\"attr\">type</span>=<span class=\"string\">&quot;text&quot;</span> <span class=\"attr\">name</span>=<span class=\"string\">&quot;electricCabinetCapacity&quot;</span></span></span><br><span class=\"line\"><span class=\"tag\">                               <span class=\"attr\">autocomplete</span>=<span class=\"string\">&quot;off&quot;</span> <span class=\"attr\">placeholder</span>=<span class=\"string\">&quot;电柜容量&quot;</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-input&quot;</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\">                <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\"></span><br><span class=\"line\"></span><br><span class=\"line\">                <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-item&quot;</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;<span class=\"name\">label</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-label&quot;</span>&gt;</span>电柜数量<span class=\"tag\">&lt;/<span class=\"name\">label</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-input-block&quot;</span>&gt;</span></span><br><span class=\"line\">                        <span class=\"tag\">&lt;<span class=\"name\">input</span> <span class=\"attr\">th:value</span>=<span class=\"string\">&quot;*&#123;numberElectricCabinets&#125;&quot;</span> <span class=\"attr\">type</span>=<span class=\"string\">&quot;text&quot;</span> <span class=\"attr\">name</span>=<span class=\"string\">&quot;numberElectricCabinets&quot;</span></span></span><br><span class=\"line\"><span class=\"tag\">                               <span class=\"attr\">autocomplete</span>=<span class=\"string\">&quot;off&quot;</span> <span class=\"attr\">placeholder</span>=<span class=\"string\">&quot;电柜数量&quot;</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-input&quot;</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\">                <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\"></span><br><span class=\"line\"></span><br><span class=\"line\">                <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-item&quot;</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;<span class=\"name\">label</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-label&quot;</span>&gt;</span>电池数据<span class=\"tag\">&lt;/<span class=\"name\">label</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-input-block&quot;</span>&gt;</span></span><br><span class=\"line\">                        <span class=\"tag\">&lt;<span class=\"name\">input</span> <span class=\"attr\">th:value</span>=<span class=\"string\">&quot;*&#123;batteryData&#125;&quot;</span> <span class=\"attr\">type</span>=<span class=\"string\">&quot;text&quot;</span> <span class=\"attr\">name</span>=<span class=\"string\">&quot;batteryData&quot;</span> <span class=\"attr\">autocomplete</span>=<span class=\"string\">&quot;off&quot;</span></span></span><br><span class=\"line\"><span class=\"tag\">                               <span class=\"attr\">placeholder</span>=<span class=\"string\">&quot;电池数据&quot;</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-input&quot;</span>&gt;</span></span><br><span class=\"line\">                    <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\">                <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\"></span><br><span class=\"line\"></span><br><span class=\"line\">            <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\">    <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\">    <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;bottom&quot;</span>&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;button-container&quot;</span>&gt;</span></span><br><span class=\"line\">            <span class=\"tag\">&lt;<span class=\"name\">button</span> <span class=\"attr\">type</span>=<span class=\"string\">&quot;submit&quot;</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-btn layui-btn-normal layui-btn-sm&quot;</span> <span class=\"attr\">lay-submit</span>=<span class=\"string\">&quot;&quot;</span></span></span><br><span class=\"line\"><span class=\"tag\">                    <span class=\"attr\">lay-filter</span>=<span class=\"string\">&quot;serviceNetwork-update&quot;</span>&gt;</span></span><br><span class=\"line\">                <span class=\"tag\">&lt;<span class=\"name\">i</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-icon layui-icon-ok&quot;</span>&gt;</span><span class=\"tag\">&lt;/<span class=\"name\">i</span>&gt;</span></span><br><span class=\"line\">                提交</span><br><span class=\"line\">            <span class=\"tag\">&lt;/<span class=\"name\">button</span>&gt;</span></span><br><span class=\"line\">            <span class=\"tag\">&lt;<span class=\"name\">button</span> <span class=\"attr\">type</span>=<span class=\"string\">&quot;reset&quot;</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-btn layui-btn-primary layui-btn-sm&quot;</span>&gt;</span></span><br><span class=\"line\">                <span class=\"tag\">&lt;<span class=\"name\">i</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-icon layui-icon-refresh&quot;</span>&gt;</span><span class=\"tag\">&lt;/<span class=\"name\">i</span>&gt;</span></span><br><span class=\"line\">                重置</span><br><span class=\"line\">            <span class=\"tag\">&lt;/<span class=\"name\">button</span>&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\">    <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\"><span class=\"tag\">&lt;/<span class=\"name\">form</span>&gt;</span></span><br><span class=\"line\"><span class=\"tag\">&lt;<span class=\"name\">th:block</span> <span class=\"attr\">th:include</span>=<span class=\"string\">&quot;include :: footer&quot;</span>/&gt;</span></span><br><span class=\"line\"><span class=\"tag\">&lt;<span class=\"name\">script</span> <span class=\"attr\">type</span>=<span class=\"string\">&quot;text/javascript&quot;</span>&gt;</span><span class=\"language-javascript\"></span></span><br><span class=\"line\"><span class=\"language-javascript\">    <span class=\"comment\">//创建和初始化地图函数：</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">    <span class=\"keyword\">function</span> <span class=\"title function_\">initMap</span>(<span class=\"params\"></span>) &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"title function_\">createMap</span>();<span class=\"comment\">//创建地图</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"title function_\">setMapEvent</span>();<span class=\"comment\">//设置地图事件</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"title function_\">addMapControl</span>();<span class=\"comment\">//向地图添加控件</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">    &#125;</span></span><br><span class=\"line\"><span class=\"language-javascript\"></span></span><br><span class=\"line\"><span class=\"language-javascript\">    <span class=\"comment\">//创建地图函数：</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">    <span class=\"keyword\">function</span> <span class=\"title function_\">createMap</span>(<span class=\"params\"></span>) &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"keyword\">var</span> map = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">Map</span>(<span class=\"string\">&quot;dituContent&quot;</span>);<span class=\"comment\">//在百度地图容器中创建一个地图</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"keyword\">var</span> point = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">Point</span>(<span class=\"number\">106.61680</span>, <span class=\"number\">29.57793</span>);<span class=\"comment\">//定义一个中心点坐标(当前坐标重庆)</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        map.<span class=\"title function_\">centerAndZoom</span>(point, <span class=\"number\">12</span>);<span class=\"comment\">//设定地图的中心点和坐标并将地图显示在地图容器中</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"variable language_\">window</span>.<span class=\"property\">map</span> = map;<span class=\"comment\">//将map变量存储在全局</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">    &#125;</span></span><br><span class=\"line\"><span class=\"language-javascript\"></span></span><br><span class=\"line\"><span class=\"language-javascript\">    <span class=\"comment\">//地图事件设置函数：</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">    <span class=\"keyword\">function</span> <span class=\"title function_\">setMapEvent</span>(<span class=\"params\"></span>) &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">        map.<span class=\"title function_\">enableDragging</span>();<span class=\"comment\">//启用地图拖拽事件，默认启用(可不写)</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        map.<span class=\"title function_\">enableScrollWheelZoom</span>();<span class=\"comment\">//启用地图滚轮放大缩小</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        map.<span class=\"title function_\">enableDoubleClickZoom</span>();<span class=\"comment\">//启用鼠标双击放大，默认启用(可不写)</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        map.<span class=\"title function_\">enableKeyboard</span>();<span class=\"comment\">//启用键盘上下左右键移动地图</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        map.<span class=\"title function_\">addEventListener</span>(<span class=\"string\">&#x27;click&#x27;</span>, <span class=\"keyword\">function</span> (<span class=\"params\">e</span>) &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">            <span class=\"variable language_\">console</span>.<span class=\"title function_\">log</span>(e)</span></span><br><span class=\"line\"><span class=\"language-javascript\">            <span class=\"keyword\">var</span> point = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">Point</span>(e.<span class=\"property\">Ag</span>.<span class=\"property\">lng</span>, e.<span class=\"property\">Ag</span>.<span class=\"property\">lat</span>);</span></span><br><span class=\"line\"><span class=\"language-javascript\">            <span class=\"keyword\">var</span> gc = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">Geocoder</span>();</span></span><br><span class=\"line\"><span class=\"language-javascript\">            gc.<span class=\"title function_\">getLocation</span>(point, <span class=\"keyword\">function</span> (<span class=\"params\">rs</span>) &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">                $(<span class=\"string\">&quot;input[name=&#x27;serviceAddress&#x27;]&quot;</span>).<span class=\"title function_\">val</span>(rs.<span class=\"property\">address</span>);</span></span><br><span class=\"line\"><span class=\"language-javascript\">                <span class=\"variable language_\">console</span>.<span class=\"title function_\">log</span>(rs.<span class=\"property\">address</span>)</span></span><br><span class=\"line\"><span class=\"language-javascript\">                <span class=\"keyword\">var</span> opts = &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">                    <span class=\"attr\">title</span>: <span class=\"string\">&#x27;行政区划归属&#x27;</span>,</span></span><br><span class=\"line\"><span class=\"language-javascript\">                    <span class=\"attr\">width</span>: <span class=\"number\">220</span>,</span></span><br><span class=\"line\"><span class=\"language-javascript\">                    <span class=\"attr\">height</span>: <span class=\"number\">92</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">                &#125;;</span></span><br><span class=\"line\"><span class=\"language-javascript\">                <span class=\"keyword\">var</span> infoStr = <span class=\"string\">&#x27;&lt;div&gt;省：&#x27;</span> + rs.<span class=\"property\">addressComponents</span>.<span class=\"property\">province</span> + <span class=\"string\">&#x27;&lt;/div&gt;&#x27;</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">                    + <span class=\"string\">&#x27;&lt;div&gt;市：&#x27;</span> + rs.<span class=\"property\">addressComponents</span>.<span class=\"property\">city</span> + <span class=\"string\">&#x27;&lt;/div&gt;&#x27;</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">                    + <span class=\"string\">&#x27;&lt;div&gt;区：&#x27;</span> + rs.<span class=\"property\">addressComponents</span>.<span class=\"property\">district</span> + <span class=\"string\">&#x27;&lt;/div&gt;&#x27;</span>;</span></span><br><span class=\"line\"><span class=\"language-javascript\">                <span class=\"keyword\">var</span> infoWindow = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">InfoWindow</span>(infoStr, opts);</span></span><br><span class=\"line\"><span class=\"language-javascript\">                map.<span class=\"title function_\">openInfoWindow</span>(infoWindow, point);</span></span><br><span class=\"line\"><span class=\"language-javascript\"></span></span><br><span class=\"line\"><span class=\"language-javascript\">            &#125;);</span></span><br><span class=\"line\"><span class=\"language-javascript\">        &#125;);</span></span><br><span class=\"line\"><span class=\"language-javascript\">    &#125;</span></span><br><span class=\"line\"><span class=\"language-javascript\"></span></span><br><span class=\"line\"><span class=\"language-javascript\">    <span class=\"comment\">//地图控件添加函数：</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">    <span class=\"keyword\">function</span> <span class=\"title function_\">addMapControl</span>(<span class=\"params\"></span>) &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"comment\">//向地图中添加缩放控件</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"keyword\">var</span> ctrl_nav = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">NavigationControl</span>(&#123;<span class=\"attr\">anchor</span>: <span class=\"variable constant_\">BMAP_ANCHOR_TOP_LEFT</span>, <span class=\"attr\">type</span>: <span class=\"variable constant_\">BMAP_NAVIGATION_CONTROL_LARGE</span>&#125;);</span></span><br><span class=\"line\"><span class=\"language-javascript\">        map.<span class=\"title function_\">addControl</span>(ctrl_nav);</span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"comment\">//向地图中添加缩略图控件</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"keyword\">var</span> ctrl_ove = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">OverviewMapControl</span>(&#123;<span class=\"attr\">anchor</span>: <span class=\"variable constant_\">BMAP_ANCHOR_BOTTOM_RIGHT</span>, <span class=\"attr\">isOpen</span>: <span class=\"number\">1</span>&#125;);</span></span><br><span class=\"line\"><span class=\"language-javascript\">        map.<span class=\"title function_\">addControl</span>(ctrl_ove);</span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"comment\">//向地图中添加比例尺控件</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"keyword\">var</span> ctrl_sca = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">ScaleControl</span>(&#123;<span class=\"attr\">anchor</span>: <span class=\"variable constant_\">BMAP_ANCHOR_BOTTOM_LEFT</span>&#125;);</span></span><br><span class=\"line\"><span class=\"language-javascript\">        map.<span class=\"title function_\">addControl</span>(ctrl_sca);</span></span><br><span class=\"line\"><span class=\"language-javascript\">    &#125;</span></span><br><span class=\"line\"><span class=\"language-javascript\"></span></span><br><span class=\"line\"><span class=\"language-javascript\"></span></span><br><span class=\"line\"><span class=\"language-javascript\">    <span class=\"title function_\">initMap</span>();<span class=\"comment\">//创建和初始化地图</span></span></span><br><span class=\"line\"><span class=\"language-javascript\"></span><span class=\"tag\">&lt;/<span class=\"name\">script</span>&gt;</span></span><br><span class=\"line\"><span class=\"tag\">&lt;<span class=\"name\">script</span>&gt;</span><span class=\"language-javascript\"></span></span><br><span class=\"line\"><span class=\"language-javascript\">    layui.<span class=\"title function_\">use</span>([<span class=\"string\">&#x27;form&#x27;</span>, <span class=\"string\">&#x27;laydate&#x27;</span>, <span class=\"string\">&#x27;jquery&#x27;</span>], <span class=\"keyword\">function</span> (<span class=\"params\"></span>) &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"keyword\">let</span> form = layui.<span class=\"property\">form</span>;</span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"keyword\">let</span> $ = layui.<span class=\"property\">jquery</span>;</span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"keyword\">let</span> <span class=\"variable constant_\">MODULE_PATH</span> = rootPath + <span class=\"string\">&quot;/ServiceNetworkController&quot;</span>;</span></span><br><span class=\"line\"><span class=\"language-javascript\"></span></span><br><span class=\"line\"><span class=\"language-javascript\"></span></span><br><span class=\"line\"><span class=\"language-javascript\">        form.<span class=\"title function_\">on</span>(<span class=\"string\">&#x27;submit(serviceNetwork-update)&#x27;</span>, <span class=\"keyword\">function</span> (<span class=\"params\">data</span>) &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">            <span class=\"keyword\">let</span> loader = layer.<span class=\"title function_\">load</span>();</span></span><br><span class=\"line\"><span class=\"language-javascript\">            $.<span class=\"title function_\">ajax</span>(&#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">                <span class=\"attr\">url</span>: <span class=\"variable constant_\">MODULE_PATH</span> + <span class=\"string\">&#x27;/edit&#x27;</span>,</span></span><br><span class=\"line\"><span class=\"language-javascript\">                <span class=\"attr\">data</span>: data.<span class=\"property\">field</span>,</span></span><br><span class=\"line\"><span class=\"language-javascript\">                <span class=\"attr\">dataType</span>: <span class=\"string\">&#x27;json&#x27;</span>,</span></span><br><span class=\"line\"><span class=\"language-javascript\">                <span class=\"attr\">contentType</span>: <span class=\"string\">&#x27;application/x-www-form-urlencoded&#x27;</span>,</span></span><br><span class=\"line\"><span class=\"language-javascript\">                <span class=\"attr\">type</span>: <span class=\"string\">&#x27;post&#x27;</span>,</span></span><br><span class=\"line\"><span class=\"language-javascript\">                <span class=\"attr\">success</span>: <span class=\"keyword\">function</span> (<span class=\"params\">result</span>) &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">                    <span class=\"keyword\">if</span> (result.<span class=\"property\">code</span> == <span class=\"number\">200</span>) &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">                        layer.<span class=\"title function_\">msg</span>(result.<span class=\"property\">msg</span>, &#123;<span class=\"attr\">icon</span>: <span class=\"number\">1</span>, <span class=\"attr\">time</span>: <span class=\"number\">1000</span>&#125;, <span class=\"keyword\">function</span> (<span class=\"params\"></span>) &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">                            parent.<span class=\"property\">layer</span>.<span class=\"title function_\">close</span>(parent.<span class=\"property\">layer</span>.<span class=\"title function_\">getFrameIndex</span>(<span class=\"variable language_\">window</span>.<span class=\"property\">name</span>));<span class=\"comment\">//关闭当前页</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">                            parent.<span class=\"property\">layui</span>.<span class=\"property\">table</span>.<span class=\"title function_\">reload</span>(<span class=\"string\">&quot;serviceNetwork-table&quot;</span>);</span></span><br><span class=\"line\"><span class=\"language-javascript\">                            layer.<span class=\"title function_\">close</span>(loader);</span></span><br><span class=\"line\"><span class=\"language-javascript\">                        &#125;);</span></span><br><span class=\"line\"><span class=\"language-javascript\">                    &#125; <span class=\"keyword\">else</span> &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">                        layer.<span class=\"title function_\">msg</span>(result.<span class=\"property\">msg</span>, &#123;<span class=\"attr\">icon</span>: <span class=\"number\">2</span>, <span class=\"attr\">time</span>: <span class=\"number\">1000</span>&#125;);</span></span><br><span class=\"line\"><span class=\"language-javascript\">                        layer.<span class=\"title function_\">close</span>(loader);</span></span><br><span class=\"line\"><span class=\"language-javascript\">                    &#125;</span></span><br><span class=\"line\"><span class=\"language-javascript\">                &#125;</span></span><br><span class=\"line\"><span class=\"language-javascript\">            &#125;)</span></span><br><span class=\"line\"><span class=\"language-javascript\">            <span class=\"keyword\">return</span> <span class=\"literal\">false</span>;</span></span><br><span class=\"line\"><span class=\"language-javascript\">        &#125;);</span></span><br><span class=\"line\"><span class=\"language-javascript\">    &#125;)</span></span><br><span class=\"line\"><span class=\"language-javascript\"></span><span class=\"tag\">&lt;/<span class=\"name\">script</span>&gt;</span></span><br><span class=\"line\"><span class=\"tag\">&lt;/<span class=\"name\">body</span>&gt;</span></span><br><span class=\"line\"><span class=\"tag\">&lt;/<span class=\"name\">html</span>&gt;</span></span><br></pre></td></tr></table></figure>\n<h6 id=\"1引入地图ak需要自己申请\"><a class=\"markdownIt-Anchor\" href=\"#1引入地图ak需要自己申请\">#</a> 1. 引入地图 (ak 需要自己申请)</h6>\n<figure class=\"highlight html\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"tag\">&lt;<span class=\"name\">script</span> <span class=\"attr\">type</span>=<span class=\"string\">&quot;text/javascript&quot;</span> <span class=\"attr\">src</span>=<span class=\"string\">&quot;http://api.map.baidu.com/api?v=2.0&amp;ak=ak需要自己申请&quot;</span>&gt;</span><span class=\"tag\">&lt;/<span class=\"name\">script</span>&gt;</span></span><br></pre></td></tr></table></figure>\n<h6 id=\"2将地图div放置在合适的地方\"><a class=\"markdownIt-Anchor\" href=\"#2将地图div放置在合适的地方\">#</a> 2. 将地图 div 放置在合适的地方</h6>\n<figure class=\"highlight html\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-item&quot;</span>&gt;</span></span><br><span class=\"line\">    <span class=\"tag\">&lt;<span class=\"name\">label</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-form-label&quot;</span>&gt;</span>服务网点地址<span class=\"tag\">&lt;/<span class=\"name\">label</span>&gt;</span></span><br><span class=\"line\">    <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-input-block&quot;</span>&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;<span class=\"name\">div</span> <span class=\"attr\">style</span>=<span class=\"string\">&quot;width:697px;height:550px;border:#ccc solid 1px;&quot;</span> <span class=\"attr\">id</span>=<span class=\"string\">&quot;dituContent&quot;</span>&gt;</span><span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\"></span><br><span class=\"line\">        <span class=\"tag\">&lt;<span class=\"name\">input</span> <span class=\"attr\">th:value</span>=<span class=\"string\">&quot;*&#123;serviceAddress&#125;&quot;</span> <span class=\"attr\">type</span>=<span class=\"string\">&quot;text&quot;</span> <span class=\"attr\">name</span>=<span class=\"string\">&quot;serviceAddress&quot;</span> <span class=\"attr\">autocomplete</span>=<span class=\"string\">&quot;off&quot;</span></span></span><br><span class=\"line\"><span class=\"tag\">               <span class=\"attr\">placeholder</span>=<span class=\"string\">&quot;服务网点地址&quot;</span> <span class=\"attr\">class</span>=<span class=\"string\">&quot;layui-input&quot;</span>&gt;</span></span><br><span class=\"line\">    <span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br><span class=\"line\"><span class=\"tag\">&lt;/<span class=\"name\">div</span>&gt;</span></span><br></pre></td></tr></table></figure>\n<p>3. 设置地图相关函数</p>\n<figure class=\"highlight html\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br><span class=\"line\">43</span><br><span class=\"line\">44</span><br><span class=\"line\">45</span><br><span class=\"line\">46</span><br><span class=\"line\">47</span><br><span class=\"line\">48</span><br><span class=\"line\">49</span><br><span class=\"line\">50</span><br><span class=\"line\">51</span><br><span class=\"line\">52</span><br><span class=\"line\">53</span><br><span class=\"line\">54</span><br><span class=\"line\">55</span><br><span class=\"line\">56</span><br><span class=\"line\">57</span><br><span class=\"line\">58</span><br><span class=\"line\">59</span><br><span class=\"line\">60</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"tag\">&lt;<span class=\"name\">script</span> <span class=\"attr\">type</span>=<span class=\"string\">&quot;text/javascript&quot;</span>&gt;</span><span class=\"language-javascript\"></span></span><br><span class=\"line\"><span class=\"language-javascript\">    <span class=\"comment\">//创建和初始化地图函数：</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">    <span class=\"keyword\">function</span> <span class=\"title function_\">initMap</span>(<span class=\"params\"></span>) &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"title function_\">createMap</span>();<span class=\"comment\">//创建地图</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"title function_\">setMapEvent</span>();<span class=\"comment\">//设置地图事件</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"title function_\">addMapControl</span>();<span class=\"comment\">//向地图添加控件</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">    &#125;</span></span><br><span class=\"line\"><span class=\"language-javascript\"></span></span><br><span class=\"line\"><span class=\"language-javascript\">    <span class=\"comment\">//创建地图函数：</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">    <span class=\"keyword\">function</span> <span class=\"title function_\">createMap</span>(<span class=\"params\"></span>) &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"keyword\">var</span> map = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">Map</span>(<span class=\"string\">&quot;dituContent&quot;</span>);<span class=\"comment\">//在百度地图容器中创建一个地图</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"keyword\">var</span> point = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">Point</span>(<span class=\"number\">106.61680</span>, <span class=\"number\">29.57793</span>);<span class=\"comment\">//定义一个中心点坐标(当前坐标重庆)</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        map.<span class=\"title function_\">centerAndZoom</span>(point, <span class=\"number\">12</span>);<span class=\"comment\">//设定地图的中心点和坐标并将地图显示在地图容器中</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"variable language_\">window</span>.<span class=\"property\">map</span> = map;<span class=\"comment\">//将map变量存储在全局</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">    &#125;</span></span><br><span class=\"line\"><span class=\"language-javascript\"></span></span><br><span class=\"line\"><span class=\"language-javascript\">    <span class=\"comment\">//地图事件设置函数：</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">    <span class=\"keyword\">function</span> <span class=\"title function_\">setMapEvent</span>(<span class=\"params\"></span>) &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">        map.<span class=\"title function_\">enableDragging</span>();<span class=\"comment\">//启用地图拖拽事件，默认启用(可不写)</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        map.<span class=\"title function_\">enableScrollWheelZoom</span>();<span class=\"comment\">//启用地图滚轮放大缩小</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        map.<span class=\"title function_\">enableDoubleClickZoom</span>();<span class=\"comment\">//启用鼠标双击放大，默认启用(可不写)</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        map.<span class=\"title function_\">enableKeyboard</span>();<span class=\"comment\">//启用键盘上下左右键移动地图</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        map.<span class=\"title function_\">addEventListener</span>(<span class=\"string\">&#x27;click&#x27;</span>, <span class=\"keyword\">function</span> (<span class=\"params\">e</span>) &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">            <span class=\"variable language_\">console</span>.<span class=\"title function_\">log</span>(e)</span></span><br><span class=\"line\"><span class=\"language-javascript\">            <span class=\"keyword\">var</span> point = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">Point</span>(e.<span class=\"property\">Ag</span>.<span class=\"property\">lng</span>, e.<span class=\"property\">Ag</span>.<span class=\"property\">lat</span>);</span></span><br><span class=\"line\"><span class=\"language-javascript\">            <span class=\"keyword\">var</span> gc = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">Geocoder</span>();</span></span><br><span class=\"line\"><span class=\"language-javascript\">            gc.<span class=\"title function_\">getLocation</span>(point, <span class=\"keyword\">function</span> (<span class=\"params\">rs</span>) &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">                $(<span class=\"string\">&quot;input[name=&#x27;serviceAddress&#x27;]&quot;</span>).<span class=\"title function_\">val</span>(rs.<span class=\"property\">address</span>);</span></span><br><span class=\"line\"><span class=\"language-javascript\">                <span class=\"variable language_\">console</span>.<span class=\"title function_\">log</span>(rs.<span class=\"property\">address</span>)</span></span><br><span class=\"line\"><span class=\"language-javascript\">                <span class=\"keyword\">var</span> opts = &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">                    <span class=\"attr\">title</span>: <span class=\"string\">&#x27;行政区划归属&#x27;</span>,</span></span><br><span class=\"line\"><span class=\"language-javascript\">                    <span class=\"attr\">width</span>: <span class=\"number\">220</span>,</span></span><br><span class=\"line\"><span class=\"language-javascript\">                    <span class=\"attr\">height</span>: <span class=\"number\">92</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">                &#125;;</span></span><br><span class=\"line\"><span class=\"language-javascript\">                <span class=\"keyword\">var</span> infoStr = <span class=\"string\">&#x27;&lt;div&gt;省：&#x27;</span> + rs.<span class=\"property\">addressComponents</span>.<span class=\"property\">province</span> + <span class=\"string\">&#x27;&lt;/div&gt;&#x27;</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">                    + <span class=\"string\">&#x27;&lt;div&gt;市：&#x27;</span> + rs.<span class=\"property\">addressComponents</span>.<span class=\"property\">city</span> + <span class=\"string\">&#x27;&lt;/div&gt;&#x27;</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">                    + <span class=\"string\">&#x27;&lt;div&gt;区：&#x27;</span> + rs.<span class=\"property\">addressComponents</span>.<span class=\"property\">district</span> + <span class=\"string\">&#x27;&lt;/div&gt;&#x27;</span>;</span></span><br><span class=\"line\"><span class=\"language-javascript\">                <span class=\"keyword\">var</span> infoWindow = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">InfoWindow</span>(infoStr, opts);</span></span><br><span class=\"line\"><span class=\"language-javascript\">                map.<span class=\"title function_\">openInfoWindow</span>(infoWindow, point);</span></span><br><span class=\"line\"><span class=\"language-javascript\"></span></span><br><span class=\"line\"><span class=\"language-javascript\">            &#125;);</span></span><br><span class=\"line\"><span class=\"language-javascript\">        &#125;);</span></span><br><span class=\"line\"><span class=\"language-javascript\">    &#125;</span></span><br><span class=\"line\"><span class=\"language-javascript\"></span></span><br><span class=\"line\"><span class=\"language-javascript\">    <span class=\"comment\">//地图控件添加函数：</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">    <span class=\"keyword\">function</span> <span class=\"title function_\">addMapControl</span>(<span class=\"params\"></span>) &#123;</span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"comment\">//向地图中添加缩放控件</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"keyword\">var</span> ctrl_nav = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">NavigationControl</span>(&#123;<span class=\"attr\">anchor</span>: <span class=\"variable constant_\">BMAP_ANCHOR_TOP_LEFT</span>, <span class=\"attr\">type</span>: <span class=\"variable constant_\">BMAP_NAVIGATION_CONTROL_LARGE</span>&#125;);</span></span><br><span class=\"line\"><span class=\"language-javascript\">        map.<span class=\"title function_\">addControl</span>(ctrl_nav);</span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"comment\">//向地图中添加缩略图控件</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"keyword\">var</span> ctrl_ove = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">OverviewMapControl</span>(&#123;<span class=\"attr\">anchor</span>: <span class=\"variable constant_\">BMAP_ANCHOR_BOTTOM_RIGHT</span>, <span class=\"attr\">isOpen</span>: <span class=\"number\">1</span>&#125;);</span></span><br><span class=\"line\"><span class=\"language-javascript\">        map.<span class=\"title function_\">addControl</span>(ctrl_ove);</span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"comment\">//向地图中添加比例尺控件</span></span></span><br><span class=\"line\"><span class=\"language-javascript\">        <span class=\"keyword\">var</span> ctrl_sca = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">ScaleControl</span>(&#123;<span class=\"attr\">anchor</span>: <span class=\"variable constant_\">BMAP_ANCHOR_BOTTOM_LEFT</span>&#125;);</span></span><br><span class=\"line\"><span class=\"language-javascript\">        map.<span class=\"title function_\">addControl</span>(ctrl_sca);</span></span><br><span class=\"line\"><span class=\"language-javascript\">    &#125;</span></span><br><span class=\"line\"><span class=\"language-javascript\"></span></span><br><span class=\"line\"><span class=\"language-javascript\"></span></span><br><span class=\"line\"><span class=\"language-javascript\">    <span class=\"title function_\">initMap</span>();<span class=\"comment\">//创建和初始化地图</span></span></span><br><span class=\"line\"><span class=\"language-javascript\"></span><span class=\"tag\">&lt;/<span class=\"name\">script</span>&gt;</span></span><br></pre></td></tr></table></figure>\n<h5 id=\"三-地图函数\"><a class=\"markdownIt-Anchor\" href=\"#三-地图函数\">#</a> 三、地图函数</h5>\n<p class=\"note note-primary\">以下为点击并获取当前地址名称</p>\n<figure class=\"highlight javascript\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">//地图事件设置函数：</span></span><br><span class=\"line\"><span class=\"keyword\">function</span> <span class=\"title function_\">setMapEvent</span>(<span class=\"params\"></span>) &#123;</span><br><span class=\"line\">    map.<span class=\"title function_\">enableDragging</span>();<span class=\"comment\">//启用地图拖拽事件，默认启用(可不写)</span></span><br><span class=\"line\">    map.<span class=\"title function_\">enableScrollWheelZoom</span>();<span class=\"comment\">//启用地图滚轮放大缩小</span></span><br><span class=\"line\">    map.<span class=\"title function_\">enableDoubleClickZoom</span>();<span class=\"comment\">//启用鼠标双击放大，默认启用(可不写)</span></span><br><span class=\"line\">    map.<span class=\"title function_\">enableKeyboard</span>();<span class=\"comment\">//启用键盘上下左右键移动地图</span></span><br><span class=\"line\">    map.<span class=\"title function_\">addEventListener</span>(<span class=\"string\">&#x27;click&#x27;</span>, <span class=\"keyword\">function</span> (<span class=\"params\">e</span>) &#123;</span><br><span class=\"line\">        <span class=\"variable language_\">console</span>.<span class=\"title function_\">log</span>(e)</span><br><span class=\"line\">        <span class=\"keyword\">var</span> point = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">Point</span>(e.<span class=\"property\">Ag</span>.<span class=\"property\">lng</span>, e.<span class=\"property\">Ag</span>.<span class=\"property\">lat</span>);</span><br><span class=\"line\">        <span class=\"keyword\">var</span> gc = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">Geocoder</span>();</span><br><span class=\"line\">        gc.<span class=\"title function_\">getLocation</span>(point, <span class=\"keyword\">function</span> (<span class=\"params\">rs</span>) &#123;</span><br><span class=\"line\">            $(<span class=\"string\">&quot;input[name=&#x27;serviceAddress&#x27;]&quot;</span>).<span class=\"title function_\">val</span>(rs.<span class=\"property\">address</span>);</span><br><span class=\"line\">            <span class=\"variable language_\">console</span>.<span class=\"title function_\">log</span>(rs.<span class=\"property\">address</span>)</span><br><span class=\"line\">            <span class=\"keyword\">var</span> opts = &#123;</span><br><span class=\"line\">                <span class=\"attr\">title</span>: <span class=\"string\">&#x27;行政区划归属&#x27;</span>,</span><br><span class=\"line\">                <span class=\"attr\">width</span>: <span class=\"number\">220</span>,</span><br><span class=\"line\">                <span class=\"attr\">height</span>: <span class=\"number\">92</span></span><br><span class=\"line\">            &#125;;</span><br><span class=\"line\">            <span class=\"keyword\">var</span> infoStr = <span class=\"string\">&#x27;&lt;div&gt;省：&#x27;</span> + rs.<span class=\"property\">addressComponents</span>.<span class=\"property\">province</span> + <span class=\"string\">&#x27;&lt;/div&gt;&#x27;</span></span><br><span class=\"line\">                + <span class=\"string\">&#x27;&lt;div&gt;市：&#x27;</span> + rs.<span class=\"property\">addressComponents</span>.<span class=\"property\">city</span> + <span class=\"string\">&#x27;&lt;/div&gt;&#x27;</span></span><br><span class=\"line\">                + <span class=\"string\">&#x27;&lt;div&gt;区：&#x27;</span> + rs.<span class=\"property\">addressComponents</span>.<span class=\"property\">district</span> + <span class=\"string\">&#x27;&lt;/div&gt;&#x27;</span>;</span><br><span class=\"line\">            <span class=\"keyword\">var</span> infoWindow = <span class=\"keyword\">new</span> <span class=\"title class_\">BMap</span>.<span class=\"title class_\">InfoWindow</span>(infoStr, opts);</span><br><span class=\"line\">            map.<span class=\"title function_\">openInfoWindow</span>(infoWindow, point);</span><br><span class=\"line\"></span><br><span class=\"line\">        &#125;);</span><br><span class=\"line\">    &#125;);</span><br><span class=\"line\">&#125;</span><br></pre></td></tr></table></figure>\n<p>其中 <code>$(&quot;input[name='serviceAddress']&quot;).val(rs.address);</code>  赋值给 input 框</p>\n<p>三、成果<br>\n<img data-src=\"https://cdn.jsdelivr.net/gh/miemieFeng/blogImg/Blogs/20221116201128.png\" alt=\"20221116201128\"></p>\n",
            "tags": [
                "前端"
            ]
        },
        {
            "id": "http://miemiefeng.github.io/SpringBoot%E5%AE%9E%E7%8E%B0%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E5%92%8C%E4%B8%8B%E8%BD%BD/",
            "url": "http://miemiefeng.github.io/SpringBoot%E5%AE%9E%E7%8E%B0%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E5%92%8C%E4%B8%8B%E8%BD%BD/",
            "title": "SpringBoot实现文件上传和下载",
            "date_published": "2021-11-11T01:25:17.000Z",
            "content_html": "<p class=\"note note-danger\">本文仅展示了部分文件</p>\n<h4 id=\"一-搭建springboot开发环境\"><a class=\"markdownIt-Anchor\" href=\"#一-搭建springboot开发环境\">#</a> 一、搭建 SpringBoot 开发环境</h4>\n<h5 id=\"1创建项目略\"><a class=\"markdownIt-Anchor\" href=\"#1创建项目略\">#</a> 1. 创建项目（略）</h5>\n<h5 id=\"2配置applicationyml参数\"><a class=\"markdownIt-Anchor\" href=\"#2配置applicationyml参数\">#</a> 2. 配置 application.yml 参数</h5>\n<figure class=\"highlight yml\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"attr\">server:</span></span><br><span class=\"line\">  <span class=\"attr\">port:</span> <span class=\"number\">8036</span></span><br><span class=\"line\"><span class=\"attr\">spring:</span></span><br><span class=\"line\">  <span class=\"attr\">datasource:</span></span><br><span class=\"line\">    <span class=\"attr\">username:</span> <span class=\"string\">****</span></span><br><span class=\"line\">    <span class=\"attr\">password:</span>  <span class=\"string\">****</span></span><br><span class=\"line\">    <span class=\"attr\">url:</span>  <span class=\"string\">****</span></span><br><span class=\"line\">    <span class=\"attr\">driver-class-name:</span> <span class=\"string\">com.mysql.cj.jdbc.Driver</span></span><br><span class=\"line\">    <span class=\"attr\">type:</span> <span class=\"string\">com.mysql.cj.jdbc.MysqlConnectionPoolDataSource</span></span><br><span class=\"line\">  <span class=\"attr\">application:</span></span><br><span class=\"line\">    <span class=\"attr\">name:</span> <span class=\"string\">hospital-file</span></span><br><span class=\"line\">  <span class=\"attr\">thymeleaf:</span></span><br><span class=\"line\">    <span class=\"attr\">cache:</span> <span class=\"literal\">false</span></span><br><span class=\"line\">  <span class=\"attr\">servlet:</span></span><br><span class=\"line\">    <span class=\"attr\">multipart:</span></span><br><span class=\"line\">      <span class=\"attr\">enabled:</span> <span class=\"literal\">true</span> <span class=\"comment\">#开启 multipart 上传功能</span></span><br><span class=\"line\">      <span class=\"attr\">max-file-size:</span> <span class=\"string\">500MB</span></span><br><span class=\"line\">      <span class=\"attr\">file-size-threshold:</span> <span class=\"string\">2KB</span></span><br><span class=\"line\">      <span class=\"attr\">max-request-size:</span> <span class=\"string\">1024MB</span></span><br><span class=\"line\"><span class=\"attr\">mybatis-plus:</span> </span><br><span class=\"line\">  <span class=\"attr\">mapper-locations:</span> <span class=\"string\">classpath*:mybatis/*.xml</span></span><br><span class=\"line\"><span class=\"attr\">file:</span></span><br><span class=\"line\">  <span class=\"attr\">locations:</span> <span class=\"string\">D:/home/</span></span><br><span class=\"line\"></span><br></pre></td></tr></table></figure>\n<p class=\"note note-primary\">其中file.upload.path =D:/aplus参数为自定义的参数，有两种方式可以获取到此参数</p>\n<ul>\n<li>使用 @Value (&quot;${file.upload.path}&quot;)</li>\n<li>使配置参数可以自动绑定到 POJO 类。</li>\n</ul>\n<p class=\"note note-primary\">使配置参数绑定实体类详细代码如下：</p>\n<figure class=\"highlight java\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\"> * 配置信息</span></span><br><span class=\"line\"><span class=\"comment\"> * <span class=\"doctag\">@author</span> fengbo</span></span><br><span class=\"line\"><span class=\"comment\"> *</span></span><br><span class=\"line\"><span class=\"comment\"> */</span></span><br><span class=\"line\"><span class=\"meta\">@ConfigurationProperties(prefix = &quot;file&quot;)</span></span><br><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"keyword\">class</span> <span class=\"title class_\">FileProperty</span> &#123;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">private</span> String filePath;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> String <span class=\"title function_\">getFilePath</span><span class=\"params\">()</span> &#123;</span><br><span class=\"line\">        <span class=\"keyword\">return</span> filePath;</span><br><span class=\"line\">    &#125;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"keyword\">void</span> <span class=\"title function_\">setFilePath</span><span class=\"params\">(String filePath)</span> &#123;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.filePath = filePath;</span><br><span class=\"line\">    &#125;</span><br><span class=\"line\">&#125;</span><br></pre></td></tr></table></figure>\n<p class=\"note note-primary\">必须在@SpringbootUploadApplication注解的类中添加@EnableConfigurationProperties注解以开启ConfigurationProperties功能</p>\n<figure class=\"highlight java\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\">@EnableConfigurationProperties(&#123;</span></span><br><span class=\"line\"><span class=\"meta\">        FileProperty.class</span></span><br><span class=\"line\"><span class=\"meta\">&#125;)</span></span><br><span class=\"line\"><span class=\"comment\">//@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)</span></span><br><span class=\"line\"><span class=\"meta\">@SpringBootApplication</span></span><br><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"keyword\">class</span> <span class=\"title class_\">FileApplication</span> &#123;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"keyword\">void</span> <span class=\"title function_\">main</span><span class=\"params\">(String[] args)</span> &#123;</span><br><span class=\"line\">        SpringApplication.run(FileApplication.class, args);</span><br><span class=\"line\">    &#125;</span><br><span class=\"line\"></span><br><span class=\"line\">&#125;</span><br></pre></td></tr></table></figure>\n<h5 id=\"3实体响应类和异常信息类\"><a class=\"markdownIt-Anchor\" href=\"#3实体响应类和异常信息类\">#</a> 3. 实体响应类和异常信息类</h5>\n<p class=\"note note-primary\">文件成功后需要有的响应实体类UploadFileResponse和文件出现上传异常类FileException来处理异常信息</p>\n<figure class=\"highlight java\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br><span class=\"line\">43</span><br><span class=\"line\">44</span><br><span class=\"line\">45</span><br><span class=\"line\">46</span><br><span class=\"line\">47</span><br><span class=\"line\">48</span><br><span class=\"line\">49</span><br><span class=\"line\">50</span><br><span class=\"line\">51</span><br><span class=\"line\">52</span><br><span class=\"line\">53</span><br><span class=\"line\">54</span><br><span class=\"line\">55</span><br><span class=\"line\">56</span><br><span class=\"line\">57</span><br><span class=\"line\">58</span><br><span class=\"line\">59</span><br><span class=\"line\">60</span><br><span class=\"line\">61</span><br><span class=\"line\">62</span><br><span class=\"line\">63</span><br><span class=\"line\">64</span><br><span class=\"line\">65</span><br><span class=\"line\">66</span><br><span class=\"line\">67</span><br><span class=\"line\">68</span><br><span class=\"line\">69</span><br><span class=\"line\">70</span><br><span class=\"line\">71</span><br><span class=\"line\">72</span><br><span class=\"line\">73</span><br><span class=\"line\">74</span><br><span class=\"line\">75</span><br><span class=\"line\">76</span><br><span class=\"line\">77</span><br><span class=\"line\">78</span><br><span class=\"line\">79</span><br><span class=\"line\">80</span><br><span class=\"line\">81</span><br><span class=\"line\">82</span><br><span class=\"line\">83</span><br><span class=\"line\">84</span><br><span class=\"line\">85</span><br><span class=\"line\">86</span><br><span class=\"line\">87</span><br><span class=\"line\">88</span><br><span class=\"line\">89</span><br><span class=\"line\">90</span><br><span class=\"line\">91</span><br><span class=\"line\">92</span><br><span class=\"line\">93</span><br><span class=\"line\">94</span><br><span class=\"line\">95</span><br><span class=\"line\">96</span><br><span class=\"line\">97</span><br><span class=\"line\">98</span><br><span class=\"line\">99</span><br><span class=\"line\">100</span><br><span class=\"line\">101</span><br><span class=\"line\">102</span><br><span class=\"line\">103</span><br><span class=\"line\">104</span><br><span class=\"line\">105</span><br><span class=\"line\">106</span><br><span class=\"line\">107</span><br><span class=\"line\">108</span><br><span class=\"line\">109</span><br><span class=\"line\">110</span><br><span class=\"line\">111</span><br><span class=\"line\">112</span><br><span class=\"line\">113</span><br><span class=\"line\">114</span><br><span class=\"line\">115</span><br><span class=\"line\">116</span><br><span class=\"line\">117</span><br><span class=\"line\">118</span><br><span class=\"line\">119</span><br><span class=\"line\">120</span><br><span class=\"line\">121</span><br><span class=\"line\">122</span><br><span class=\"line\">123</span><br><span class=\"line\">124</span><br><span class=\"line\">125</span><br><span class=\"line\">126</span><br><span class=\"line\">127</span><br><span class=\"line\">128</span><br><span class=\"line\">129</span><br><span class=\"line\">130</span><br><span class=\"line\">131</span><br><span class=\"line\">132</span><br><span class=\"line\">133</span><br><span class=\"line\">134</span><br><span class=\"line\">135</span><br><span class=\"line\">136</span><br><span class=\"line\">137</span><br><span class=\"line\">138</span><br><span class=\"line\">139</span><br><span class=\"line\">140</span><br><span class=\"line\">141</span><br><span class=\"line\">142</span><br><span class=\"line\">143</span><br><span class=\"line\">144</span><br><span class=\"line\">145</span><br><span class=\"line\">146</span><br><span class=\"line\">147</span><br><span class=\"line\">148</span><br><span class=\"line\">149</span><br><span class=\"line\">150</span><br><span class=\"line\">151</span><br><span class=\"line\">152</span><br><span class=\"line\">153</span><br><span class=\"line\">154</span><br><span class=\"line\">155</span><br><span class=\"line\">156</span><br><span class=\"line\">157</span><br><span class=\"line\">158</span><br><span class=\"line\">159</span><br><span class=\"line\">160</span><br><span class=\"line\">161</span><br><span class=\"line\">162</span><br><span class=\"line\">163</span><br><span class=\"line\">164</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\"> * 文件管理表</span></span><br><span class=\"line\"><span class=\"comment\"> * <span class=\"doctag\">@author</span> fengbo</span></span><br><span class=\"line\"><span class=\"comment\"> */</span></span><br><span class=\"line\"><span class=\"meta\">@ApiModel(value=&quot;文件管理表&quot;)</span></span><br><span class=\"line\"><span class=\"meta\">@Data</span></span><br><span class=\"line\"><span class=\"meta\">@Builder</span></span><br><span class=\"line\"><span class=\"meta\">@AllArgsConstructor</span></span><br><span class=\"line\"><span class=\"meta\">@NoArgsConstructor</span></span><br><span class=\"line\"><span class=\"meta\">@TableName(value = &quot;sys_file&quot;)</span></span><br><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"keyword\">class</span> <span class=\"title class_\">SysFileDto</span> <span class=\"keyword\">implements</span> <span class=\"title class_\">Serializable</span> &#123;</span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 主键id</span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@TableId(value = &quot;id&quot;, type = IdType.INPUT)</span></span><br><span class=\"line\">    <span class=\"meta\">@ApiModelProperty(value=&quot;主键id&quot;)</span></span><br><span class=\"line\">    <span class=\"keyword\">private</span> String id;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 文件名称</span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@TableField(value = &quot;file_name&quot;)</span></span><br><span class=\"line\">    <span class=\"meta\">@ApiModelProperty(value=&quot;文件名称&quot;)</span></span><br><span class=\"line\">    <span class=\"keyword\">private</span> String fileName;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 文件类型</span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@TableField(value = &quot;file_type&quot;)</span></span><br><span class=\"line\">    <span class=\"meta\">@ApiModelProperty(value=&quot;文件类型&quot;)</span></span><br><span class=\"line\">    <span class=\"keyword\">private</span> String fileType;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 文件大小</span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@TableField(value = &quot;file_size&quot;)</span></span><br><span class=\"line\">    <span class=\"meta\">@ApiModelProperty(value=&quot;文件大小&quot;)</span></span><br><span class=\"line\">    <span class=\"keyword\">private</span> Long fileSize;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 保存名称</span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@TableField(value = &quot;save_name&quot;)</span></span><br><span class=\"line\">    <span class=\"meta\">@ApiModelProperty(value=&quot;保存名称&quot;)</span></span><br><span class=\"line\">    <span class=\"keyword\">private</span> String saveName;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 保存路径</span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@TableField(value = &quot;save_path&quot;)</span></span><br><span class=\"line\">    <span class=\"meta\">@ApiModelProperty(value=&quot;保存路径&quot;)</span></span><br><span class=\"line\">    <span class=\"keyword\">private</span> String savePath;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 下载路径</span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@TableField(value = &quot;download_path&quot;)</span></span><br><span class=\"line\">    <span class=\"meta\">@ApiModelProperty(value=&quot;下载路径&quot;)</span></span><br><span class=\"line\">    <span class=\"keyword\">private</span> String downloadPath;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 删除标识</span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@TableField(value = &quot;`valid`&quot;)</span></span><br><span class=\"line\">    <span class=\"meta\">@ApiModelProperty(value=&quot;删除标识&quot;)</span></span><br><span class=\"line\">    <span class=\"keyword\">private</span> Integer valid;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 创建时间</span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@TableField(value = &quot;create_at&quot;)</span></span><br><span class=\"line\">    <span class=\"meta\">@ApiModelProperty(value=&quot;创建时间&quot;)</span></span><br><span class=\"line\">    <span class=\"keyword\">private</span> Long createAt;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 修改时间</span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@TableField(value = &quot;update_at&quot;)</span></span><br><span class=\"line\">    <span class=\"meta\">@ApiModelProperty(value=&quot;修改时间&quot;)</span></span><br><span class=\"line\">    <span class=\"keyword\">private</span> Long updateAt;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 容器名称</span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@TableField(value = &quot;bucket_name&quot;)</span></span><br><span class=\"line\">    <span class=\"meta\">@ApiModelProperty(value=&quot;容器名称&quot;)</span></span><br><span class=\"line\">    <span class=\"keyword\">private</span> String bucketName;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 用户所属系统</span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@TableField(value = &quot;solution_code&quot;)</span></span><br><span class=\"line\">    <span class=\"meta\">@ApiModelProperty(value=&quot;用户所属系统&quot;)</span></span><br><span class=\"line\">    <span class=\"keyword\">private</span> String solutionCode;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 用户id</span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@TableField(value = &quot;user_id&quot;)</span></span><br><span class=\"line\">    <span class=\"meta\">@ApiModelProperty(value=&quot;用户id&quot;)</span></span><br><span class=\"line\">    <span class=\"keyword\">private</span> String userId;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 文件后缀</span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@TableField(value = &quot;suffix&quot;)</span></span><br><span class=\"line\">    <span class=\"meta\">@ApiModelProperty(value=&quot;文件后缀&quot;)</span></span><br><span class=\"line\">    <span class=\"keyword\">private</span> String suffix;</span><br><span class=\"line\"></span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"title function_\">SysFileDto</span><span class=\"params\">(String fileName, String downloadPath, String fileType,</span></span><br><span class=\"line\"><span class=\"params\">                      <span class=\"type\">long</span> fileSize, String suffix,String userId,String solutionCode,</span></span><br><span class=\"line\"><span class=\"params\">                      Long updateAt,Long createAt,Integer valid,String savePath,String saveName,String id)</span> &#123;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.fileName = fileName;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.userId = userId;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.solutionCode = solutionCode;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.updateAt = updateAt;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.createAt = createAt;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.valid = valid;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.savePath = savePath;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.id = id;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.saveName = saveName;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.suffix = suffix;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.downloadPath = downloadPath;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.fileType = fileType;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.fileSize = fileSize;</span><br><span class=\"line\">    &#125;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"title function_\">SysFileDto</span><span class=\"params\">(String fileName, String downloadPath, String fileType, <span class=\"type\">long</span> fileSize)</span> &#123;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.fileName = fileName;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.downloadPath = downloadPath;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.fileType = fileType;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.fileSize = fileSize;</span><br><span class=\"line\">    &#125;</span><br><span class=\"line\">    <span class=\"keyword\">private</span> <span class=\"keyword\">static</span> <span class=\"keyword\">final</span> <span class=\"type\">long</span> <span class=\"variable\">serialVersionUID</span> <span class=\"operator\">=</span> <span class=\"number\">1L</span>;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"keyword\">final</span> <span class=\"type\">String</span> <span class=\"variable\">COL_ID</span> <span class=\"operator\">=</span> <span class=\"string\">&quot;id&quot;</span>;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"keyword\">final</span> <span class=\"type\">String</span> <span class=\"variable\">COL_FILE_NAME</span> <span class=\"operator\">=</span> <span class=\"string\">&quot;file_name&quot;</span>;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"keyword\">final</span> <span class=\"type\">String</span> <span class=\"variable\">COL_FILE_TYPE</span> <span class=\"operator\">=</span> <span class=\"string\">&quot;file_type&quot;</span>;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"keyword\">final</span> <span class=\"type\">String</span> <span class=\"variable\">COL_FILE_SIZE</span> <span class=\"operator\">=</span> <span class=\"string\">&quot;file_size&quot;</span>;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"keyword\">final</span> <span class=\"type\">String</span> <span class=\"variable\">COL_SAVE_NAME</span> <span class=\"operator\">=</span> <span class=\"string\">&quot;save_name&quot;</span>;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"keyword\">final</span> <span class=\"type\">String</span> <span class=\"variable\">COL_SAVE_PATH</span> <span class=\"operator\">=</span> <span class=\"string\">&quot;save_path&quot;</span>;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"keyword\">final</span> <span class=\"type\">String</span> <span class=\"variable\">COL_DOWNLOAD_PATH</span> <span class=\"operator\">=</span> <span class=\"string\">&quot;download_path&quot;</span>;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"keyword\">final</span> <span class=\"type\">String</span> <span class=\"variable\">COL_VALID</span> <span class=\"operator\">=</span> <span class=\"string\">&quot;valid&quot;</span>;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"keyword\">final</span> <span class=\"type\">String</span> <span class=\"variable\">COL_CREATE_AT</span> <span class=\"operator\">=</span> <span class=\"string\">&quot;create_at&quot;</span>;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"keyword\">final</span> <span class=\"type\">String</span> <span class=\"variable\">COL_UPDATE_AT</span> <span class=\"operator\">=</span> <span class=\"string\">&quot;update_at&quot;</span>;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"keyword\">final</span> <span class=\"type\">String</span> <span class=\"variable\">COL_BUCKET_NAME</span> <span class=\"operator\">=</span> <span class=\"string\">&quot;bucket_name&quot;</span>;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"keyword\">final</span> <span class=\"type\">String</span> <span class=\"variable\">COL_SOLUTION_CODE</span> <span class=\"operator\">=</span> <span class=\"string\">&quot;solution_code&quot;</span>;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"keyword\">final</span> <span class=\"type\">String</span> <span class=\"variable\">COL_USER_ID</span> <span class=\"operator\">=</span> <span class=\"string\">&quot;user_id&quot;</span>;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"keyword\">final</span> <span class=\"type\">String</span> <span class=\"variable\">COL_SUFFIX</span> <span class=\"operator\">=</span> <span class=\"string\">&quot;suffix&quot;</span>;</span><br><span class=\"line\">&#125;</span><br></pre></td></tr></table></figure>\n<p class=\"note note-primary\">异常信息处理类</p>\n<figure class=\"highlight java\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\"> * <span class=\"doctag\">@author</span> fengbo</span></span><br><span class=\"line\"><span class=\"comment\"> * <span class=\"doctag\">@Title</span>: FileException</span></span><br><span class=\"line\"><span class=\"comment\"> * 异常信息配置</span></span><br><span class=\"line\"><span class=\"comment\"> */</span></span><br><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"keyword\">class</span> <span class=\"title class_\">FileException</span> <span class=\"keyword\">extends</span> <span class=\"title class_\">RuntimeException</span> &#123;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"title function_\">FileException</span><span class=\"params\">(String message)</span> &#123;</span><br><span class=\"line\">        <span class=\"built_in\">super</span>(message);</span><br><span class=\"line\">    &#125;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"title function_\">FileException</span><span class=\"params\">(String message, Throwable cause)</span> &#123;</span><br><span class=\"line\">        <span class=\"built_in\">super</span>(message, cause);</span><br><span class=\"line\">    &#125;</span><br><span class=\"line\">&#125;</span><br></pre></td></tr></table></figure>\n<h5 id=\"4创建filecontroller\"><a class=\"markdownIt-Anchor\" href=\"#4创建filecontroller\">#</a> 4. 创建 FileController</h5>\n<figure class=\"highlight java\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br><span class=\"line\">43</span><br><span class=\"line\">44</span><br><span class=\"line\">45</span><br><span class=\"line\">46</span><br><span class=\"line\">47</span><br><span class=\"line\">48</span><br><span class=\"line\">49</span><br><span class=\"line\">50</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\"> * 文件上传下载</span></span><br><span class=\"line\"><span class=\"comment\"> *</span></span><br><span class=\"line\"><span class=\"comment\"> * <span class=\"doctag\">@author</span> fengbo</span></span><br><span class=\"line\"><span class=\"comment\"> */</span></span><br><span class=\"line\"><span class=\"meta\">@RestController</span></span><br><span class=\"line\"><span class=\"meta\">@Component</span></span><br><span class=\"line\"><span class=\"meta\">@Api(tags = &quot;文件管理&quot;)</span></span><br><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"keyword\">class</span> <span class=\"title class_\">FileController</span> &#123;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"meta\">@Autowired</span></span><br><span class=\"line\">    <span class=\"keyword\">private</span> FileService fileService;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 单文件上传</span></span><br><span class=\"line\"><span class=\"comment\">     *</span></span><br><span class=\"line\"><span class=\"comment\">     * <span class=\"doctag\">@param</span> file</span></span><br><span class=\"line\"><span class=\"comment\">     * <span class=\"doctag\">@return</span></span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@PostMapping(&quot;/uploadFile&quot;)</span></span><br><span class=\"line\">    <span class=\"keyword\">public</span> SysFileDto <span class=\"title function_\">uploadFile</span><span class=\"params\">(<span class=\"meta\">@RequestParam(&quot;file&quot;)</span> MultipartFile file)</span> &#123;</span><br><span class=\"line\">        <span class=\"keyword\">return</span> fileService.uploadFile(file);</span><br><span class=\"line\">    &#125;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 多文件上传</span></span><br><span class=\"line\"><span class=\"comment\">     *</span></span><br><span class=\"line\"><span class=\"comment\">     * <span class=\"doctag\">@param</span> files</span></span><br><span class=\"line\"><span class=\"comment\">     * <span class=\"doctag\">@return</span></span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@PostMapping(&quot;/uploadMultipleFiles&quot;)</span></span><br><span class=\"line\">    <span class=\"keyword\">public</span> List&lt;SysFileDto&gt; <span class=\"title function_\">uploadMultipleFiles</span><span class=\"params\">(<span class=\"meta\">@RequestParam(&quot;files&quot;)</span> MultipartFile[] files)</span> &#123;</span><br><span class=\"line\">        <span class=\"keyword\">return</span> fileService.uploadMultiple(files);</span><br><span class=\"line\"></span><br><span class=\"line\">    &#125;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 下载</span></span><br><span class=\"line\"><span class=\"comment\">     *</span></span><br><span class=\"line\"><span class=\"comment\">     * <span class=\"doctag\">@param</span> fileName</span></span><br><span class=\"line\"><span class=\"comment\">     * <span class=\"doctag\">@param</span> request</span></span><br><span class=\"line\"><span class=\"comment\">     * <span class=\"doctag\">@return</span></span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@GetMapping(&quot;/downloadFile/&#123;fileName:.*&#125;&quot;)</span></span><br><span class=\"line\">    <span class=\"keyword\">public</span> ResponseEntity&lt;Resource&gt; <span class=\"title function_\">downloadFile</span><span class=\"params\">(<span class=\"meta\">@PathVariable</span> String fileName, HttpServletRequest request)</span> &#123;</span><br><span class=\"line\">        <span class=\"keyword\">return</span> fileService.download(fileName, request);</span><br><span class=\"line\">    &#125;</span><br><span class=\"line\">&#125;</span><br><span class=\"line\"></span><br></pre></td></tr></table></figure>\n<p class=\"note note-primary\">FileService实现类</p>\n<figure class=\"highlight java\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br><span class=\"line\">43</span><br><span class=\"line\">44</span><br><span class=\"line\">45</span><br><span class=\"line\">46</span><br><span class=\"line\">47</span><br><span class=\"line\">48</span><br><span class=\"line\">49</span><br><span class=\"line\">50</span><br><span class=\"line\">51</span><br><span class=\"line\">52</span><br><span class=\"line\">53</span><br><span class=\"line\">54</span><br><span class=\"line\">55</span><br><span class=\"line\">56</span><br><span class=\"line\">57</span><br><span class=\"line\">58</span><br><span class=\"line\">59</span><br><span class=\"line\">60</span><br><span class=\"line\">61</span><br><span class=\"line\">62</span><br><span class=\"line\">63</span><br><span class=\"line\">64</span><br><span class=\"line\">65</span><br><span class=\"line\">66</span><br><span class=\"line\">67</span><br><span class=\"line\">68</span><br><span class=\"line\">69</span><br><span class=\"line\">70</span><br><span class=\"line\">71</span><br><span class=\"line\">72</span><br><span class=\"line\">73</span><br><span class=\"line\">74</span><br><span class=\"line\">75</span><br><span class=\"line\">76</span><br><span class=\"line\">77</span><br><span class=\"line\">78</span><br><span class=\"line\">79</span><br><span class=\"line\">80</span><br><span class=\"line\">81</span><br><span class=\"line\">82</span><br><span class=\"line\">83</span><br><span class=\"line\">84</span><br><span class=\"line\">85</span><br><span class=\"line\">86</span><br><span class=\"line\">87</span><br><span class=\"line\">88</span><br><span class=\"line\">89</span><br><span class=\"line\">90</span><br><span class=\"line\">91</span><br><span class=\"line\">92</span><br><span class=\"line\">93</span><br><span class=\"line\">94</span><br><span class=\"line\">95</span><br><span class=\"line\">96</span><br><span class=\"line\">97</span><br><span class=\"line\">98</span><br><span class=\"line\">99</span><br><span class=\"line\">100</span><br><span class=\"line\">101</span><br><span class=\"line\">102</span><br><span class=\"line\">103</span><br><span class=\"line\">104</span><br><span class=\"line\">105</span><br><span class=\"line\">106</span><br><span class=\"line\">107</span><br><span class=\"line\">108</span><br><span class=\"line\">109</span><br><span class=\"line\">110</span><br><span class=\"line\">111</span><br><span class=\"line\">112</span><br><span class=\"line\">113</span><br><span class=\"line\">114</span><br><span class=\"line\">115</span><br><span class=\"line\">116</span><br><span class=\"line\">117</span><br><span class=\"line\">118</span><br><span class=\"line\">119</span><br><span class=\"line\">120</span><br><span class=\"line\">121</span><br><span class=\"line\">122</span><br><span class=\"line\">123</span><br><span class=\"line\">124</span><br><span class=\"line\">125</span><br><span class=\"line\">126</span><br><span class=\"line\">127</span><br><span class=\"line\">128</span><br><span class=\"line\">129</span><br><span class=\"line\">130</span><br><span class=\"line\">131</span><br><span class=\"line\">132</span><br><span class=\"line\">133</span><br><span class=\"line\">134</span><br><span class=\"line\">135</span><br><span class=\"line\">136</span><br><span class=\"line\">137</span><br><span class=\"line\">138</span><br><span class=\"line\">139</span><br><span class=\"line\">140</span><br><span class=\"line\">141</span><br><span class=\"line\">142</span><br><span class=\"line\">143</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\"> * 文件管理</span></span><br><span class=\"line\"><span class=\"comment\"> * <span class=\"doctag\">@author</span> fengbo</span></span><br><span class=\"line\"><span class=\"comment\"> */</span></span><br><span class=\"line\"><span class=\"meta\">@Service</span></span><br><span class=\"line\"><span class=\"meta\">@Component</span></span><br><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"keyword\">class</span> <span class=\"title class_\">FileServiceImpl</span> <span class=\"keyword\">extends</span> <span class=\"title class_\">ServiceImpl</span>&lt;FileMapper, SysFileDto&gt; <span class=\"keyword\">implements</span> <span class=\"title class_\">FileService</span>&#123;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">private</span> <span class=\"keyword\">static</span> <span class=\"keyword\">final</span> <span class=\"type\">Logger</span> <span class=\"variable\">logger</span> <span class=\"operator\">=</span> LoggerFactory.getLogger(FileServiceImpl.class);</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">private</span> Path fileStorageLocation; <span class=\"comment\">// 文件在本地存储的地址</span></span><br><span class=\"line\">    <span class=\"meta\">@Autowired</span></span><br><span class=\"line\">    FileMapper fileMapper;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"keyword\">public</span> <span class=\"title function_\">FileServiceImpl</span><span class=\"params\">( <span class=\"meta\">@Value(&quot;$&#123;file.locations&#125;&quot;)</span> String path)</span> &#123;</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.fileStorageLocation = Paths.get(path).toAbsolutePath().normalize();</span><br><span class=\"line\">        <span class=\"keyword\">try</span> &#123;</span><br><span class=\"line\">            Files.createDirectories(<span class=\"built_in\">this</span>.fileStorageLocation);</span><br><span class=\"line\">        &#125; <span class=\"keyword\">catch</span> (IOException e) &#123;</span><br><span class=\"line\">            <span class=\"keyword\">throw</span> <span class=\"keyword\">new</span> <span class=\"title class_\">FileException</span>(<span class=\"string\">&quot;Could not create the directory&quot;</span>, e);</span><br><span class=\"line\">        &#125;</span><br><span class=\"line\">    &#125;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 存储文件到系统</span></span><br><span class=\"line\"><span class=\"comment\">     * <span class=\"doctag\">@param</span> file 文件</span></span><br><span class=\"line\"><span class=\"comment\">     * <span class=\"doctag\">@return</span> 文件名</span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@Override</span></span><br><span class=\"line\">    <span class=\"keyword\">public</span> String <span class=\"title function_\">storeFile</span><span class=\"params\">(MultipartFile file)</span> &#123;</span><br><span class=\"line\">        <span class=\"comment\">// Normalize file name</span></span><br><span class=\"line\">        <span class=\"type\">String</span> <span class=\"variable\">fileName</span> <span class=\"operator\">=</span> UUID.randomUUID().toString()+file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(<span class=\"string\">&quot;.&quot;</span>),file.getOriginalFilename().length());</span><br><span class=\"line\"><span class=\"comment\">//        String fileName = StringUtils.cleanPath(file.getOriginalFilename());</span></span><br><span class=\"line\"></span><br><span class=\"line\">        <span class=\"keyword\">try</span> &#123;</span><br><span class=\"line\">            <span class=\"comment\">// Check if the file&#x27;s name contains invalid characters</span></span><br><span class=\"line\">            <span class=\"keyword\">if</span>(fileName.contains(<span class=\"string\">&quot;..&quot;</span>)) &#123;</span><br><span class=\"line\">                <span class=\"keyword\">throw</span> <span class=\"keyword\">new</span> <span class=\"title class_\">FileException</span>(<span class=\"string\">&quot;Sorry! Filename contains invalid path sequence &quot;</span> + fileName);</span><br><span class=\"line\">            &#125;</span><br><span class=\"line\"></span><br><span class=\"line\">            <span class=\"comment\">// Copy file to the target location (Replacing existing file with the same name)</span></span><br><span class=\"line\">            <span class=\"type\">Path</span> <span class=\"variable\">targetLocation</span> <span class=\"operator\">=</span> <span class=\"built_in\">this</span>.fileStorageLocation.resolve(fileName);</span><br><span class=\"line\">            Files.copy(file.getInputStream(), targetLocation, StandardCopyOption.REPLACE_EXISTING);</span><br><span class=\"line\"></span><br><span class=\"line\">            <span class=\"keyword\">return</span> fileName;</span><br><span class=\"line\">        &#125; <span class=\"keyword\">catch</span> (IOException ex) &#123;</span><br><span class=\"line\">            <span class=\"keyword\">throw</span> <span class=\"keyword\">new</span> <span class=\"title class_\">FileException</span>(<span class=\"string\">&quot;Could not store file &quot;</span> + fileName + <span class=\"string\">&quot;. Please try again!&quot;</span>, ex);</span><br><span class=\"line\">        &#125;</span><br><span class=\"line\">    &#125;</span><br><span class=\"line\">    <span class=\"meta\">@Override</span></span><br><span class=\"line\">    <span class=\"keyword\">public</span> Resource <span class=\"title function_\">loadFileAsResource</span><span class=\"params\">(String fileName)</span> &#123;</span><br><span class=\"line\">        <span class=\"keyword\">try</span> &#123;</span><br><span class=\"line\">            <span class=\"type\">Path</span> <span class=\"variable\">filePath</span> <span class=\"operator\">=</span> <span class=\"built_in\">this</span>.fileStorageLocation.resolve(fileName).normalize();</span><br><span class=\"line\">            <span class=\"type\">Resource</span> <span class=\"variable\">resource</span> <span class=\"operator\">=</span> <span class=\"keyword\">new</span> <span class=\"title class_\">UrlResource</span>(filePath.toUri());</span><br><span class=\"line\">            <span class=\"keyword\">if</span>(resource.exists()) &#123;</span><br><span class=\"line\">                <span class=\"keyword\">return</span> resource;</span><br><span class=\"line\">            &#125; <span class=\"keyword\">else</span> &#123;</span><br><span class=\"line\">                <span class=\"keyword\">throw</span> <span class=\"keyword\">new</span> <span class=\"title class_\">FileException</span>(<span class=\"string\">&quot;File not found &quot;</span> + fileName);</span><br><span class=\"line\">            &#125;</span><br><span class=\"line\">        &#125; <span class=\"keyword\">catch</span> (MalformedURLException ex) &#123;</span><br><span class=\"line\">            <span class=\"keyword\">throw</span> <span class=\"keyword\">new</span> <span class=\"title class_\">FileException</span>(<span class=\"string\">&quot;File not found &quot;</span> + fileName, ex);</span><br><span class=\"line\">        &#125;</span><br><span class=\"line\">    &#125;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 单文件上传</span></span><br><span class=\"line\"><span class=\"comment\">     * <span class=\"doctag\">@param</span> file</span></span><br><span class=\"line\"><span class=\"comment\">     * <span class=\"doctag\">@return</span></span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@Override</span></span><br><span class=\"line\">    <span class=\"keyword\">public</span> SysFileDto <span class=\"title function_\">uploadFile</span><span class=\"params\">(MultipartFile file)</span> &#123;</span><br><span class=\"line\">        <span class=\"type\">String</span> <span class=\"variable\">fileName</span> <span class=\"operator\">=</span> <span class=\"built_in\">this</span>.storeFile(file);</span><br><span class=\"line\"></span><br><span class=\"line\">        <span class=\"type\">String</span> <span class=\"variable\">fileDownloadUri</span> <span class=\"operator\">=</span> ServletUriComponentsBuilder.fromCurrentContextPath()</span><br><span class=\"line\">                .path(<span class=\"string\">&quot;/downloadFile/&quot;</span>)</span><br><span class=\"line\">                .path(fileName)</span><br><span class=\"line\">                .toUriString();</span><br><span class=\"line\">        <span class=\"comment\">//填充dto</span></span><br><span class=\"line\">        <span class=\"type\">SysFileDto</span> <span class=\"variable\">sysFileDto</span> <span class=\"operator\">=</span> <span class=\"keyword\">new</span> <span class=\"title class_\">SysFileDto</span>();</span><br><span class=\"line\">        sysFileDto.setFileSize(file.getSize());</span><br><span class=\"line\">        sysFileDto.setFileName(fileName);</span><br><span class=\"line\">        sysFileDto.setFileType(file.getContentType());</span><br><span class=\"line\">        sysFileDto.setDownloadPath(fileDownloadUri);</span><br><span class=\"line\">        sysFileDto.setCreateAt(System.currentTimeMillis());</span><br><span class=\"line\">        sysFileDto.setUpdateAt(System.currentTimeMillis());</span><br><span class=\"line\">        sysFileDto.setId(UUID.randomUUID().toString());</span><br><span class=\"line\">        sysFileDto.setSaveName(file.getOriginalFilename().replace(<span class=\"string\">&quot; &quot;</span>,<span class=\"string\">&quot;&quot;</span>));</span><br><span class=\"line\">        sysFileDto.setUserId(<span class=\"string\">&quot;测试&quot;</span>);</span><br><span class=\"line\">        sysFileDto.setSavePath(fileStorageLocation.toFile().getPath());</span><br><span class=\"line\">        <span class=\"comment\">//默认生效0-生效1-失效</span></span><br><span class=\"line\">        sysFileDto.setValid(<span class=\"number\">0</span>);</span><br><span class=\"line\">        sysFileDto.setSuffix(file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(<span class=\"string\">&quot;.&quot;</span>),file.getOriginalFilename().length()));</span><br><span class=\"line\">        <span class=\"built_in\">this</span>.save(sysFileDto);</span><br><span class=\"line\">        <span class=\"keyword\">return</span> sysFileDto;</span><br><span class=\"line\">    &#125;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"comment\">/**</span></span><br><span class=\"line\"><span class=\"comment\">     * 多文件上传</span></span><br><span class=\"line\"><span class=\"comment\">     * <span class=\"doctag\">@param</span> files</span></span><br><span class=\"line\"><span class=\"comment\">     * <span class=\"doctag\">@return</span></span></span><br><span class=\"line\"><span class=\"comment\">     */</span></span><br><span class=\"line\">    <span class=\"meta\">@Override</span></span><br><span class=\"line\">    <span class=\"keyword\">public</span> List&lt;SysFileDto&gt; <span class=\"title function_\">uploadMultiple</span><span class=\"params\">(MultipartFile[] files)</span>&#123;</span><br><span class=\"line\">        List&lt;SysFileDto&gt; list = <span class=\"keyword\">new</span> <span class=\"title class_\">ArrayList</span>&lt;&gt;();</span><br><span class=\"line\">        <span class=\"keyword\">if</span> (files != <span class=\"literal\">null</span>) &#123;</span><br><span class=\"line\">            <span class=\"keyword\">for</span> (MultipartFile multipartFile:files) &#123;</span><br><span class=\"line\">                <span class=\"type\">SysFileDto</span> <span class=\"variable\">uploadFileResponse</span> <span class=\"operator\">=</span> uploadFile(multipartFile);</span><br><span class=\"line\">                list.add(uploadFileResponse);</span><br><span class=\"line\">            &#125;</span><br><span class=\"line\">        &#125;</span><br><span class=\"line\">        <span class=\"keyword\">return</span> list;</span><br><span class=\"line\">    &#125;</span><br><span class=\"line\"></span><br><span class=\"line\">    <span class=\"meta\">@Override</span></span><br><span class=\"line\">    <span class=\"keyword\">public</span> ResponseEntity&lt;Resource&gt; <span class=\"title function_\">download</span><span class=\"params\">(String fileName, HttpServletRequest request)</span> &#123;</span><br><span class=\"line\">        <span class=\"type\">Resource</span> <span class=\"variable\">resource</span> <span class=\"operator\">=</span> <span class=\"built_in\">this</span>.loadFileAsResource(fileName);</span><br><span class=\"line\">        <span class=\"type\">String</span> <span class=\"variable\">contentType</span> <span class=\"operator\">=</span> <span class=\"literal\">null</span>;</span><br><span class=\"line\">        <span class=\"keyword\">try</span> &#123;</span><br><span class=\"line\">            request.getServletContext().getMimeType(resource.getFile().getAbsolutePath());</span><br><span class=\"line\">        &#125; <span class=\"keyword\">catch</span> (IOException e) &#123;</span><br><span class=\"line\">            logger.info(<span class=\"string\">&quot;Could not determine file type.&quot;</span>);</span><br><span class=\"line\">        &#125;</span><br><span class=\"line\">        <span class=\"keyword\">if</span>(contentType == <span class=\"literal\">null</span>) &#123;</span><br><span class=\"line\">            contentType = <span class=\"string\">&quot;application/octet-stream&quot;</span>;</span><br><span class=\"line\">        &#125;</span><br><span class=\"line\"></span><br><span class=\"line\">        List&lt;String&gt; saveName  = fileMapper.findSaveNameByFileName(fileName);</span><br><span class=\"line\">        <span class=\"type\">String</span> <span class=\"variable\">name</span> <span class=\"operator\">=</span> saveName.get(<span class=\"number\">0</span>);</span><br><span class=\"line\">        <span class=\"keyword\">try</span> &#123;</span><br><span class=\"line\">            name = URLEncoder.encode(name,<span class=\"string\">&quot;UTF-8&quot;</span>);</span><br><span class=\"line\">        &#125;<span class=\"keyword\">catch</span>(UnsupportedEncodingException e)&#123;</span><br><span class=\"line\">            logger.info(<span class=\"string\">&quot;文件名转换异常&quot;</span>);</span><br><span class=\"line\">            e.printStackTrace();</span><br><span class=\"line\">        &#125;</span><br><span class=\"line\">        <span class=\"keyword\">return</span> ResponseEntity.ok()</span><br><span class=\"line\">                .contentType(MediaType.parseMediaType(contentType))</span><br><span class=\"line\">                .header(HttpHeaders.CONTENT_DISPOSITION, <span class=\"string\">&quot;attachment; filename=\\&quot;&quot;</span> +name+ <span class=\"string\">&quot;\\&quot;&quot;</span>)</span><br><span class=\"line\">                .body(resource);</span><br><span class=\"line\">    &#125;</span><br><span class=\"line\">&#125;</span><br><span class=\"line\"></span><br><span class=\"line\"></span><br></pre></td></tr></table></figure>\n<p>需要注意的是，文件名称中文乱码的问题。这里使用了 <code>URLEncoder.encode();</code></p>\n<p>文件名使用 uuid 生成储存。下载时替换为原文件名下载。</p>\n<p class=\"note note-primary\">mapper文件(只是为了查询文件名称)</p>\n<figure class=\"highlight xml\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\">&lt;?xml version=<span class=\"string\">&quot;1.0&quot;</span> encoding=<span class=\"string\">&quot;UTF-8&quot;</span>?&gt;</span></span><br><span class=\"line\"><span class=\"meta\">&lt;!DOCTYPE <span class=\"keyword\">mapper</span> <span class=\"keyword\">PUBLIC</span> <span class=\"string\">&quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;</span> <span class=\"string\">&quot;http://mybatis.org/dtd/mybatis-3-mapper.dtd&quot;</span>&gt;</span></span><br><span class=\"line\"><span class=\"tag\">&lt;<span class=\"name\">mapper</span> <span class=\"attr\">namespace</span>=<span class=\"string\">&quot;com.hostpital.file.mapper.FileMapper&quot;</span>&gt;</span></span><br><span class=\"line\">    <span class=\"tag\">&lt;<span class=\"name\">resultMap</span> <span class=\"attr\">id</span>=<span class=\"string\">&quot;BaseResultMap&quot;</span> <span class=\"attr\">type</span>=<span class=\"string\">&quot;com.hostpital.file.vo.SysFileVo&quot;</span>&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;<span class=\"name\">result</span> <span class=\"attr\">column</span>=<span class=\"string\">&quot;id&quot;</span> <span class=\"attr\">property</span>=<span class=\"string\">&quot;id&quot;</span>/&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;<span class=\"name\">result</span> <span class=\"attr\">column</span>=<span class=\"string\">&quot;file_name&quot;</span> <span class=\"attr\">property</span>=<span class=\"string\">&quot;fileName&quot;</span>/&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;<span class=\"name\">result</span> <span class=\"attr\">column</span>=<span class=\"string\">&quot;file_type&quot;</span> <span class=\"attr\">property</span>=<span class=\"string\">&quot;fileType&quot;</span>/&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;<span class=\"name\">result</span> <span class=\"attr\">column</span>=<span class=\"string\">&quot;file_size&quot;</span> <span class=\"attr\">property</span>=<span class=\"string\">&quot;fileSize&quot;</span>/&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;<span class=\"name\">result</span> <span class=\"attr\">column</span>=<span class=\"string\">&quot;save_name&quot;</span> <span class=\"attr\">property</span>=<span class=\"string\">&quot;saveName&quot;</span>/&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;<span class=\"name\">result</span> <span class=\"attr\">column</span>=<span class=\"string\">&quot;save_path&quot;</span> <span class=\"attr\">property</span>=<span class=\"string\">&quot;savePath&quot;</span>/&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;<span class=\"name\">result</span> <span class=\"attr\">column</span>=<span class=\"string\">&quot;download_path&quot;</span> <span class=\"attr\">property</span>=<span class=\"string\">&quot;downloadPath&quot;</span>/&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;<span class=\"name\">result</span> <span class=\"attr\">column</span>=<span class=\"string\">&quot;valid&quot;</span> <span class=\"attr\">property</span>=<span class=\"string\">&quot;valid&quot;</span>/&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;<span class=\"name\">result</span> <span class=\"attr\">column</span>=<span class=\"string\">&quot;create_at&quot;</span> <span class=\"attr\">property</span>=<span class=\"string\">&quot;createAt&quot;</span>/&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;<span class=\"name\">result</span> <span class=\"attr\">column</span>=<span class=\"string\">&quot;update_at&quot;</span> <span class=\"attr\">property</span>=<span class=\"string\">&quot;updateAt&quot;</span>/&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;<span class=\"name\">result</span> <span class=\"attr\">column</span>=<span class=\"string\">&quot;bucket_name&quot;</span> <span class=\"attr\">property</span>=<span class=\"string\">&quot;bucketName&quot;</span>/&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;<span class=\"name\">result</span> <span class=\"attr\">column</span>=<span class=\"string\">&quot;solution_code&quot;</span> <span class=\"attr\">property</span>=<span class=\"string\">&quot;solutionCode&quot;</span>/&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;<span class=\"name\">result</span> <span class=\"attr\">column</span>=<span class=\"string\">&quot;user_id&quot;</span> <span class=\"attr\">property</span>=<span class=\"string\">&quot;userId&quot;</span>/&gt;</span></span><br><span class=\"line\">        <span class=\"tag\">&lt;<span class=\"name\">result</span> <span class=\"attr\">column</span>=<span class=\"string\">&quot;suffix&quot;</span> <span class=\"attr\">property</span>=<span class=\"string\">&quot;suffix&quot;</span>/&gt;</span></span><br><span class=\"line\">    <span class=\"tag\">&lt;/<span class=\"name\">resultMap</span>&gt;</span></span><br><span class=\"line\">    <span class=\"tag\">&lt;<span class=\"name\">sql</span> <span class=\"attr\">id</span>=<span class=\"string\">&quot;Base_Column_List&quot;</span>&gt;</span></span><br><span class=\"line\">        id,</span><br><span class=\"line\">        file_name,</span><br><span class=\"line\">        file_type,</span><br><span class=\"line\">        file_size,</span><br><span class=\"line\">        save_name,</span><br><span class=\"line\">        save_path,</span><br><span class=\"line\">        download_path,</span><br><span class=\"line\">        `valid`,</span><br><span class=\"line\">        create_at,</span><br><span class=\"line\">        update_at,</span><br><span class=\"line\">        bucket_name,</span><br><span class=\"line\">        solution_code,</span><br><span class=\"line\">        user_id,</span><br><span class=\"line\">        suffix</span><br><span class=\"line\">    <span class=\"tag\">&lt;/<span class=\"name\">sql</span>&gt;</span></span><br><span class=\"line\">    <span class=\"tag\">&lt;<span class=\"name\">select</span> <span class=\"attr\">id</span>=<span class=\"string\">&quot;findSaveNameByFileName&quot;</span> <span class=\"attr\">resultType</span>=<span class=\"string\">&quot;java.lang.String&quot;</span>&gt;</span></span><br><span class=\"line\">        select save_name</span><br><span class=\"line\">        from sys_file</span><br><span class=\"line\">        where file_name=#&#123;fileName&#125;</span><br><span class=\"line\">    <span class=\"tag\">&lt;/<span class=\"name\">select</span>&gt;</span></span><br><span class=\"line\"><span class=\"tag\">&lt;/<span class=\"name\">mapper</span>&gt;</span></span><br><span class=\"line\"></span><br></pre></td></tr></table></figure>\n<h4 id=\"二-接口测试\"><a class=\"markdownIt-Anchor\" href=\"#二-接口测试\">#</a> 二、接口测试</h4>\n<p><img data-src=\"https://cdn.jsdelivr.net/gh/miemieFeng/blogImg/Blogs/20221116201344.png\" alt=\"20221116201344\"></p>\n",
            "tags": [
                "java",
                "springboot",
                "后端"
            ]
        },
        {
            "id": "http://miemiefeng.github.io/%E8%8B%B1%E9%9B%84%E8%81%94%E7%9B%9F%E7%BE%8E%E6%B5%8B%E6%9C%8D%E6%B1%89%E5%8C%96/",
            "url": "http://miemiefeng.github.io/%E8%8B%B1%E9%9B%84%E8%81%94%E7%9B%9F%E7%BE%8E%E6%B5%8B%E6%9C%8D%E6%B1%89%E5%8C%96/",
            "title": "英雄联盟美测服汉化",
            "date_published": "2021-11-01T05:10:21.000Z",
            "content_html": "<p>第一步：首先第一步我们进入到 PBE 的原始文件夹里，找到 LOLPBE 的打开程序，然后右键发送桌面快捷方式</p>\n<p>第二步：我们到桌面 右键属性 打开快捷方式</p>\n<p>第三步，我们在目标后面添加：</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">--locale=zh_CN </span><br></pre></td></tr></table></figure>\n<p>记住加个空格</p>\n<p class=\"note note-primary\">更改完成后会重新下载一些东西</p>",
            "tags": [
                "game"
            ]
        },
        {
            "id": "http://miemiefeng.github.io/%E5%8D%9A%E5%AE%A2%E4%B8%8A%E4%BA%91%E5%B0%8F%E8%AE%B0/",
            "url": "http://miemiefeng.github.io/%E5%8D%9A%E5%AE%A2%E4%B8%8A%E4%BA%91%E5%B0%8F%E8%AE%B0/",
            "title": "博客上云小记",
            "date_published": "2021-10-18T06:51:04.000Z",
            "content_html": "<h3 id=\"一-服务器和域名\"><a class=\"markdownIt-Anchor\" href=\"#一-服务器和域名\">#</a> 一、服务器和域名</h3>\n<ul>\n<li>腾讯云轻量级服务器</li>\n<li>腾讯云域名</li>\n</ul>\n<p>服务器系统  <code>  Centos7</code></p>\n<h5 id=\"1-配置nginx\"><a class=\"markdownIt-Anchor\" href=\"#1-配置nginx\">#</a> 1、配置 <code>nginx</code></h5>\n<p>使用云命令安装</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">yum install -y nginx</span><br></pre></td></tr></table></figure>\n<p>启动服务器</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">systemctl start nginx</span><br><span class=\"line\">systemctl enable nginx</span><br></pre></td></tr></table></figure>\n<h5 id=\"2-配置服务器路由\"><a class=\"markdownIt-Anchor\" href=\"#2-配置服务器路由\">#</a> 2、配置服务器路由</h5>\n<p>安装并启动服务器后，我们就完成了第一步，现在我们可以尝试使用自己的电脑去访问服务器的公网 IP。可以发现，公网 IP 可以打开一个 nginx 的默认网页。这样，我们就成功了第一步。</p>\n<p>但我们实际上是想要让这个地址指向我们的博客，而不是 nginx 的默认网址，这就需要我们去配置 nginx 的配置文件。很多关于 centOS 的资料都是说配置位于 etc/nginx/conf.d/ 下的 dafault.conf 这个配置文件，但腾讯云和阿里云默认的库下载的是 fedora 版本的 nginx，我们应该配置的是位于 etc/nginx/ 下的 nginx.conf 。</p>\n<p>打开 <code>/etc/nginx/</code>  目录下的 <code>nginx.conf</code>  文件 <code>vi /etc/nginx/nginx.conf</code></p>\n<p>按 i 键进入编辑模式，编辑完成后按 Esc 键退出编辑模式，依次按 ：wq 保存并退出，注意是先按：键，然后输入 wq 再按回车</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">server &#123;</span><br><span class=\"line\">        listen       80 default_server;</span><br><span class=\"line\">        listen       [::]:80 default_server;</span><br><span class=\"line\">        server_name  _;   #把server_name后面的_换为自己的域名，没有域名可以先填公网ip</span><br><span class=\"line\">        root         /home/hexo;       #root后面改为git仓库目录</span><br><span class=\"line\">    # Load configuration files for the default server block.</span><br><span class=\"line\">    include /etc/nginx/default.d/*.conf;</span><br><span class=\"line\"></span><br><span class=\"line\">    location / &#123;</span><br><span class=\"line\">    &#125;</span><br></pre></td></tr></table></figure>\n<h5 id=\"3-安装git\"><a class=\"markdownIt-Anchor\" href=\"#3-安装git\">#</a> 3、安装 git</h5>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">yum install git</span><br></pre></td></tr></table></figure>\n<p>配置 git 用户</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">adduser git</span><br></pre></td></tr></table></figure>\n<p>修改用户权限:</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">chmod 740 /etc/sudoers</span><br><span class=\"line\">vi /etc/sudoers</span><br></pre></td></tr></table></figure>\n<p>按向下键在文件中找到字段</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">root    ALL=(ALL)       ALL</span><br></pre></td></tr></table></figure>\n<p>按 i 进入编辑模式，在这一句下面加上一句</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">git     ALL=(ALL)       ALL</span><br></pre></td></tr></table></figure>\n<p>按 Esc 退出编辑，再按:wq 回车保存退出后，然后将 sudoers 文件权限改回原样</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">chmod 400 /etc/sudoers</span><br></pre></td></tr></table></figure>\n<p>设置 git 用户的密码</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">sudo passwd git</span><br></pre></td></tr></table></figure>\n<p>注意 git 用户的密码要在 root 用户下修改，否则会提示权限不足。下面操作也是一样，要注意是在 git 用户还是 root 用户</p>\n<p>切换到 git 用户，然后在～目录下创建.ssh 文件夹</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">su git</span><br><span class=\"line\">cd ~</span><br><span class=\"line\">mkdir .ssh</span><br><span class=\"line\">cd .ssh</span><br></pre></td></tr></table></figure>\n<p>生成公钥密钥文件</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">ssh-keygen</span><br></pre></td></tr></table></figure>\n<p>此时在目录下就会有两个文件，分别是</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">id_rsa 和 id_rsa.pub</span><br></pre></td></tr></table></figure>\n<p>其中  <code>id_rsa.pub</code>  就是公钥文件，我们把它复制一份</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">cp id_rsa.pub authorized_keys</span><br></pre></td></tr></table></figure>\n<p>这样目录下就会有一个 authorized_keys 文件</p>\n<p>然后我们修改它的权限</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">chmod 755 ~</span><br><span class=\"line\">chmod 700 ~/.ssh</span><br><span class=\"line\">chmod 600 ~/.ssh/authorized_keys</span><br></pre></td></tr></table></figure>\n<p>这样我们就可以在自己的电脑上打开 cmd，使用 ssh 方式连接我们的云服务器</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">ssh -v git@公网ip    #@后面输入云服务器公网ip</span><br></pre></td></tr></table></figure>\n<p>输入密码，就能成功登录服务器</p>\n<p>接着我们创建一个 git 的仓库，并且新建一个 post-receive 文件，用来把提交到服务器仓库操作如下:</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">su root</span><br><span class=\"line\">cd /home/git</span><br><span class=\"line\">git init --bare blog.git  #在/home/git下创建新仓库blog.git</span><br><span class=\"line\">chown git:git -R blog.git #给予git用户权限</span><br></pre></td></tr></table></figure>\n<p>在  <code>/home/hexo/blog.git</code>  下，有一个自动生成的  <code>hooks</code>  文件夹，我们创建一个  <code>post-receive</code>  钩子，把提交到 <code>/home/git/blog.git</code>  仓库里的文件同步到 <code>/home/hexo</code>  中。</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">cd blog.git/hooks</span><br><span class=\"line\">vim post-receive</span><br></pre></td></tr></table></figure>\n<p>在 <code>post-receive</code>  中输入</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">#!/bin/bash </span><br><span class=\"line\"> git --work-tree=/home/hexo --git-dir=/home/git/blog.git checkout -f</span><br></pre></td></tr></table></figure>\n<p>保存退出后授予该文件可执行权限</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">chmod +x /home/git/blog.git/hooks/post-receive</span><br></pre></td></tr></table></figure>\n<h3 id=\"二-关于本地主机的操作\"><a class=\"markdownIt-Anchor\" href=\"#二-关于本地主机的操作\">#</a> 二、关于本地主机的操作</h3>\n<h4 id=\"1-安裝hexo\"><a class=\"markdownIt-Anchor\" href=\"#1-安裝hexo\">#</a> 1、安裝 hexo</h4>\n<p>由于使用 npm 直接下载会有很多人遇到卡顿的问题 (国外服务器)，所以我们要做的第一步工作是将 npm 换成淘宝的服务器。cmd 输入下面的命令：</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">npm config set registry https://registry.npm.taobao.org</span><br><span class=\"line\"># 然后安装cnpm</span><br><span class=\"line\">npm install -g cnpm --registry=https://registry.npm.taobao.org</span><br></pre></td></tr></table></figure>\n<p>接下来就直接安装 hexo</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">cnpm install -g hexo-cli</span><br></pre></td></tr></table></figure>\n<p>然后我们选一个目录用来初始化博客<br>\n例如 D:/Blog</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">D:</span><br><span class=\"line\">cd Blog</span><br><span class=\"line\">hexo init</span><br></pre></td></tr></table></figure>\n<p>执行成功后安装两个插件</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">npm install hexo-deployer-git --save</span><br><span class=\"line\">npm install hexo-server</span><br></pre></td></tr></table></figure>\n<p>之后我们就可以在自己的本机上查看自己的博客了</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">hexo g</span><br><span class=\"line\">hexo s</span><br></pre></td></tr></table></figure>\n<h4 id=\"2-配置服務\"><a class=\"markdownIt-Anchor\" href=\"#2-配置服務\">#</a> 2、配置服務</h4>\n<p>在刚才生成博客的目录下，找到 <code>_config.yml</code> ，打开它。</p>\n<p>找到 deploy 做如下配置，注意 deploy：下面几行一定要缩进两格</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">deploy:</span><br><span class=\"line\">  type: git</span><br><span class=\"line\">  repo: root@服务器仓库位置   #@后输入 服务器公网IP:/home/git/blog.git       </span><br><span class=\"line\">branch: master </span><br></pre></td></tr></table></figure>\n<p>保存退出</p>\n<p>在服务器上重新运行 nginx 服务器<br>\n <code>nginx -s reload</code></p>\n<p>注意每次修改配置文件按后都要重启 nginx 使之生效</p>\n<p>然后尝试写一篇文章并且发布到服务器上</p>\n<figure class=\"highlight plaintext\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">hexo new &quot;Hello My First Blog&quot;</span><br><span class=\"line\">hexo clean &amp;&amp; hexo generate --deploy</span><br></pre></td></tr></table></figure>\n<p>打开本地博客目录，会发现 deploy_git 目录下有了 Hello My First Blog 文件夹，里面是个简单的 index.html 文件。</p>\n<p>在服务器的 home/hexo/2020/12/17 目录下可以发现也有个 Hello My First Blog 文件，这说明文件上传成功。</p>\n",
            "tags": [
                "hexo"
            ]
        }
    ]
}