wzy
2021-12-15 9cb9637f10c527da0a60f778323b5dd14314bcef
fix video add no complete
6 files modified
1 files added
382 ■■■■ changed files
src/main/java/cc/mrbird/febs/video/controller/AdminVideoController.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/video/entity/VideoMasterInfoEntity.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/video/entity/VideoMasterItemsEntity.java 2 ●●●●● patch | view | raw | blame | history
src/main/resources/static/febs/index.js 1 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/video/video/video-add.html 192 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/video/video/video-list.html 2 ●●● patch | view | raw | blame | history
xc-video.iml 172 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/video/controller/AdminVideoController.java
@@ -113,6 +113,13 @@
    @RequiresPermissions("source:view")
    @ControllerEndpoint(operation = "视频列表", exceptionMessage = "获取视频列表失败")
    public FebsResponse videoList(VideoMasterInfoEntity info, QueryRequest request) {
        return new FebsResponse().success();
    }
    @PostMapping("/video/add")
    @RequiresPermissions("source:add")
    public FebsResponse videoAdd(@RequestBody VideoMasterInfoEntity info) {
        System.out.println(info);
        return null;
    }
src/main/java/cc/mrbird/febs/video/entity/VideoMasterInfoEntity.java
@@ -1,8 +1,11 @@
package cc.mrbird.febs.video.entity;
import cc.mrbird.febs.common.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.List;
@Data
@TableName("video_master_info")
@@ -25,4 +28,7 @@
     * 是否免费 1/免费 2/会员
     */
    private Integer isFree;
    @TableField(exist = false)
    private List<VideoMasterItemsEntity> items;
}
src/main/java/cc/mrbird/febs/video/entity/VideoMasterItemsEntity.java
@@ -21,4 +21,6 @@
    private String videoUrl;
    private String seq;
    private Long sourceId;
}
src/main/resources/static/febs/index.js
@@ -3,6 +3,5 @@
    validate: 'lay/modules/validate'
}).define(['febs', 'conf'], function (exports) {
    layui.febs.initPage();
    console.log("\n %c FEBS-Shiro 2.0 %c https://github.com/wuyouzhuguli/FEBS-Shiro %c 如果该项目对您有帮助的话,还请点个star给予精神支持!🐤", "color: #fff; font-size: .84rem;background: #366ed8; padding:5px 0;", "font-size: .84rem;background: #fff; border: 2px solid #b0e0a8;border-left: none; padding:3px 0;"," font-size: .84rem;background: #fcf9ec; padding:5px 0;margin-left: 8px");
    exports('index', {});
});
src/main/resources/templates/febs/views/video/video/video-add.html
@@ -24,7 +24,7 @@
            <div class="layui-col-md6">
                <label class="layui-form-label febs-form-item-require">视频标题:</label>
                <div class="layui-input-block">
                    <input type="text" name="username" minlength="2" maxlength="10" lay-verify="range|username"
                    <input type="text" name="title" minlength="2" maxlength="10" lay-verify="range"
                           autocomplete="off" class="layui-input">
                </div>
            </div>
@@ -72,44 +72,44 @@
                        </tr>
                    </thead>
                    <tbody id="itemList">
                    <tr>
                        <th>
                            1
                        </th>
                        <th>
                            <input type="text" class="layui-input" placeholder="" />
                        </th>
                        <th>
                            <div class="upload">
                                <img class="layui-upload-img item-img febs-hide" style="width: 150px;"/>
                                <button class="layui-btn layui-btn-xs"  type="button">点击上传</button>
                                <input type="text" class="febs-hide" name="itemThumb" />
                            </div>
                        </th>
                        <th>123</th>
                        <th>
                            <button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>
                        </th>
                    </tr>
                    <tr>
                        <th>
                            2
                        </th>
                        <th>
                            <input type="text" class="layui-input" placeholder="" />
                        </th>
                        <th>
                            <div class="upload">
                                <img class="layui-upload-img item-img" src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.jj20.com%2Fup%2Fallimg%2Ftp05%2F19100120461512E-0-lp.jpg&refer=http%3A%2F%2Fimg.jj20.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg" style="width: 150px;"/>
                                <button class="layui-btn layui-btn-xs febs-hide" type="button">点击上传</button>
                                <input type="text" class="febs-hide" name="itemThumb" />
                            </div>
                        </th>
                        <th>123</th>
                        <th>
                            <button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>
                        </th>
                    </tr>
<!--                    <tr>-->
<!--                        <th>-->
<!--                            1-->
<!--                        </th>-->
<!--                        <th>-->
<!--                            <input type="text" class="layui-input" placeholder="" />-->
<!--                        </th>-->
<!--                        <th>-->
<!--                            <div class="upload">-->
<!--                                <img class="layui-upload-img item-img febs-hide" style="width: 150px;"/>-->
<!--                                <button class="layui-btn layui-btn-xs"  type="button">点击上传</button>-->
<!--                                <input type="text" class="febs-hide" name="itemThumb" />-->
<!--                            </div>-->
<!--                        </th>-->
<!--                        <th>123</th>-->
<!--                        <th>-->
<!--                            <button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>-->
<!--                        </th>-->
<!--                    </tr>-->
<!--                    <tr>-->
<!--                        <th>-->
<!--                            2-->
<!--                        </th>-->
<!--                        <th>-->
<!--                            <input type="text" class="layui-input" placeholder="" />-->
<!--                        </th>-->
<!--                        <th>-->
<!--                            <div class="upload">-->
<!--                                <img class="layui-upload-img item-img" src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.jj20.com%2Fup%2Fallimg%2Ftp05%2F19100120461512E-0-lp.jpg&refer=http%3A%2F%2Fimg.jj20.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg" style="width: 150px;"/>-->
<!--                                <button class="layui-btn layui-btn-xs febs-hide" type="button">点击上传</button>-->
<!--                                <input type="text" class="febs-hide" name="itemThumb" />-->
<!--                            </div>-->
<!--                        </th>-->
<!--                        <th>123</th>-->
<!--                        <th>-->
<!--                            <button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>-->
<!--                        </th>-->
<!--                    </tr>-->
                    </tbody>
                </table>
            </div>
@@ -144,10 +144,10 @@
            <input type="text" class="febs-hide" name="sourceId" value="{{item.id}}"/>
        </th>
        <th>
            <input type="text" class="layui-input" placeholder="" value=""/>
            <input type="text" class="layui-input" name="name" placeholder="" value=""/>
        </th>
        <th>
            <div class="upload">
            <div class="upload{{item.id}}">
                {{#  if(!item.thumb || item.thumb == ''){ }}
                <img class="layui-upload-img item-img  febs-hide" src="" style="width: 150px;"/>
                <button class="layui-btn layui-btn-xs" type="button">点击上传</button>
@@ -161,7 +161,7 @@
        </th>
        <th>{{item.name}}</th>
        <th>
            <button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>
            <button class="layui-btn layui-btn-xs layui-btn-danger item-delete" type="button">删除</button>
        </th>
    </tr>
    {{#  }); }}
@@ -185,6 +185,7 @@
        form.verify(validate);
        form.render();
        // 已添加的item数据
        var itemData = [];
        var videoCate = xmSelect.render({
            el: '#video-cate',
@@ -203,8 +204,6 @@
        })
        $("#addItem").on('click', function() {
            febs.modal.open('选择视频资源', 'video/source/select/list', {
                area: $(window).width() <= 750 ? '90%' : '50%',
                offset: '30px',
@@ -212,8 +211,8 @@
                yes: function (index, layero) {
                    var selectData = table.checkStatus('videoSourceSelectTable').data;
                    // 去重
                    var noRepeatData = [];
                    // 需要去重
                    if (itemData.length != 0) {
                        for (var i = 0; i < selectData.length; i++) {
                            var flag = true;
@@ -230,16 +229,22 @@
                        }
                    } else {
                        itemData = selectData;
                        noRepeatData = selectData;
                    }
                    var data = itemData.concat(noRepeatData);
                    $itemList.empty();
                    laytpl(templateHtml).render(data, function(html) {
                        $itemList.append(html);
                    })
                    if (noRepeatData.length > 0) {
                        itemData = itemData.concat(noRepeatData);
                        laytpl(templateHtml).render(noRepeatData, function(html) {
                            $itemList.append(html);
                        })
                    bindUpload();
                        for (var i = 0; i < noRepeatData.length; i++) {
                            bindUpload(noRepeatData[i].id);
                        }
                    }
``
                    deleteUnBind();
                    deleteBind();
                    layer.close(layer.index);
                },
                btn2: function () {
@@ -248,7 +253,7 @@
            });
        });
        var uploadInst = upload.render({
        upload.render({
            elem: '#thumbUpload'
            ,url: 'common/upload'
            ,before: function(obj){
@@ -272,9 +277,9 @@
        });
        // 表格中的图片上传
        function bindUpload() {
        function bindUpload(id) {
            upload.render({
                elem: '.upload'
                elem: '.upload' + id
                ,url: ctx + 'common/upload' //改成您自己的上传接口
                // ,accept: 'file'
                ,before: function(obj){
@@ -318,15 +323,82 @@
            });
        }
        bindUpload();
        form.on('submit(video-add-form-submit)', function (data) {
            // febs.post(ctx + 'user', data.field, function () {
            var $tr = $("#itemList").find("tr");
            var itemLength = $tr.length;
            if (itemLength == 0) {
                layer.msg('请添加章节!');
                return;
            }
            var cateIds = videoCate.getValue('value');
            if (cateIds.length <= 0) {
                febs.alert.warn('至少选择一个目录');
                return false;
            }
            var itemData = [];
            $tr.each(function() {
                var data = {};
                var sourceId = $(this).find("input[name = 'sourceId']").val();
                var videoItemName = $(this).find("input[name = 'name']").val();
                var itemThumb = $(this).find("input[name = 'itemThumb']").val();
                data.sourceId = sourceId;
                data.name = videoItemName;
                data.thumb = itemThumb;
                itemData.push(data);
            });
            var field = {};
            field.items = itemData;
            field.title = data.field.title;
            field.cateIds = cateIds.join(",");
            field.thumb = data.field.thumb;
            console.log(field);
            // febs.post(ctx + 'video/video/add', data.field, function () {
            //     layer.closeAll();
            //     febs.alert.success('新增用户成功,初始密码为 1234qwer');
            //     $('#febs-user').find('#query').click();
            // });
            $.ajax({
                url : ctx + 'video/video/add',
                type : "post",
                dataType : "json",
                contentType : "application/json",
                data : JSON.stringify(field),
                success : function(res) {
                    console.log(res)
                },
                error : function(err) {
                }
            })
            return false;
        });
        function deleteBind() {
            $(".item-delete").each(function(index, element) {
                $(this).on("click", function() {
                    var $tr = $(this).parents("tr");
                    var id = $tr.find("input[name='sourceId']").val();
                    for (var i = 0; i < itemData.length; i++) {
                        if (itemData[i].id == id) {
                            itemData.splice(i, 1);
                            break;
                        }
                    }
                    $tr.remove();
                });
            })
        }
        function deleteUnBind() {
            $(".item-delete").each(function(index, element) {
                $(this).unbind('click');
            })
        }
    });
</script>
src/main/resources/templates/febs/views/video/video/video-list.html
@@ -197,7 +197,7 @@
            tableIns = febs.table.init({
                elem: $view.find('table'),
                id: 'videoTable',
                url: ctx + 'video/list',
                url: ctx + 'video/video/list',
                cols: [[
                    {type: 'checkbox'},
                    {field: 'title', title: '视频名', minWidth: 100},
xc-video.iml
New file
@@ -0,0 +1,172 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
  <component name="FacetManager">
    <facet type="web" name="Web">
      <configuration>
        <webroots />
      </configuration>
    </facet>
    <facet type="Spring" name="Spring">
      <configuration />
    </facet>
  </component>
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
    <output url="file://$MODULE_DIR$/target/classes" />
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/annotations" isTestSource="false" generated="true" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.3.1.Final" level="project" />
    <orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.3.1" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.12.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.12.1" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
    <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.2.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.2.4.RELEASE" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.25" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.10.2" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.10.2" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.10.2" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.31" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.31" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.31" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.18.Final" level="project" />
    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.2.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.2.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.2.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.2.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.2.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.2.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.5" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-thymeleaf:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.thymeleaf:thymeleaf-spring5:3.0.11.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.thymeleaf:thymeleaf:3.0.11.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.attoparser:attoparser:2.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.unbescape:unbescape:1.1.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.thymeleaf.extras:thymeleaf-extras-java8time:3.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.2.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: io.lettuce:lettuce-core:5.2.2.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.45.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.45.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.45.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.45.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.45.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.45.Final" level="project" />
    <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-cache:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.2.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-configuration-processor:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-actuator:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.10.2" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.10.2" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.10.2" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-actuator:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-actuator-autoconfigure:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: io.micrometer:micrometer-core:1.3.5" level="project" />
    <orderEntry type="library" name="Maven: org.hdrhistogram:HdrHistogram:2.1.11" level="project" />
    <orderEntry type="library" name="Maven: org.latencyutils:LatencyUtils:2.0.3" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.7.0" level="project" />
    <orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.3.2" level="project" />
    <orderEntry type="library" name="Maven: com.mchange:mchange-commons-java:0.2.15" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.3.1" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.3.1" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.2.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.4.2" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.2.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-generator:3.3.1" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.3.1" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.3.1" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.3.1" level="project" />
    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:3.1" level="project" />
    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.3" level="project" />
    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.3" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:dynamic-datasource-spring-boot-starter:3.0.0" level="project" />
    <orderEntry type="library" name="Maven: org.freemarker:freemarker:2.3.28" level="project" />
    <orderEntry type="library" name="Maven: p6spy:p6spy:3.8.1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:8.0.19" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.4.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.4.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.4.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-cache:1.4.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-hash:1.4.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-core:1.4.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.4.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-core:1.4.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-ogdl:1.4.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-event:1.4.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-web:1.4.2" level="project" />
    <orderEntry type="library" name="Maven: org.crazycake:shiro-redis:3.2.3" level="project" />
    <orderEntry type="library" name="Maven: redis.clients:jedis:2.9.0" level="project" />
    <orderEntry type="library" name="Maven: com.github.theborakompanioni:thymeleaf-extras-shiro:2.0.0" level="project" />
    <orderEntry type="library" name="Maven: org.lionsoul:ip2region:1.7.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.9" level="project" />
    <orderEntry type="library" name="Maven: commons-io:commons-io:2.6" level="project" />
    <orderEntry type="library" name="Maven: com.google.guava:guava:27.0-jre" level="project" />
    <orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0" level="project" />
    <orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
    <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
    <orderEntry type="library" name="Maven: org.checkerframework:checker-qual:2.5.2" level="project" />
    <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.2.0" level="project" />
    <orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.1" level="project" />
    <orderEntry type="library" name="Maven: org.codehaus.mojo:animal-sniffer-annotations:1.17" level="project" />
    <orderEntry type="library" name="Maven: com.wuwenze:ExcelKit:2.0.72" level="project" />
    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:3.17" level="project" />
    <orderEntry type="library" name="Maven: org.apache.poi:poi:3.17" level="project" />
    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.1" level="project" />
    <orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.04" level="project" />
    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:3.17" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:2.6.0" level="project" />
    <orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
    <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
    <orderEntry type="library" name="Maven: jaxen:jaxen:1.2.0" level="project" />
    <orderEntry type="library" name="Maven: xerces:xercesImpl:2.11.0" level="project" />
    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.3" level="project" />
    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.12" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.70" level="project" />
    <orderEntry type="library" name="Maven: com.github.whvcse:easy-captcha:1.6.2" level="project" />
    <orderEntry type="library" name="Maven: org.jsoup:jsoup:1.12.1" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.20" level="project" />
    <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.10.8" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.4.01" level="project" />
  </component>
</module>