Selaa lähdekoodia

学习资料代码提交

jingyuanchao 2 vuotta sitten
vanhempi
commit
c60c15abfc

+ 2 - 4
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/dto/SysLearningMaterialsPageDto.java

@@ -1,6 +1,7 @@
 package com.xunmei.common.core.domain.edu.dto;
 
 import com.xunmei.common.core.web.domain.BaseEntity;
+import com.xunmei.common.core.web.domain.PageRequest;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -15,16 +16,13 @@ import java.util.List;
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-public class SysLearningMaterialsPageDto extends BaseEntity {
+public class SysLearningMaterialsPageDto extends PageRequest {
     @ApiModelProperty(value = "资料类型(知识库标签)")
     private Long knowledgeId;
     @ApiModelProperty(value = "公开状态,0:未公开,1:已公开")
     private Integer isOpen;
     @ApiModelProperty(value = "资料标题")
     private String title;
-    @ApiModelProperty(value = "资料标题")
-    private Long orgId;
-
     @ApiModelProperty(value = "上级机构id集合",notes = "学习资料分页列表默认查询上级机构且公开的数据,此字段无需传递,后端自行获取")
     private List<Long> orgIdList;
 

+ 4 - 4
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/web/domain/PageRequest.java

@@ -12,14 +12,14 @@ public class PageRequest {
 
     private Boolean checkSub = Boolean.FALSE;
 
-    private int page = 0;
+    private int pageNum = 0;
 
-    private int size = 10;
+    private int pageSize = 10;
 
     public <T> Page<T> getPageRequest() {
         Page<T> mePage = new Page<>();
-        mePage.setCurrent(this.getPage());
-        mePage.setSize(this.getSize());
+        mePage.setCurrent(this.getPageNum());
+        mePage.setSize(this.getPageSize());
         return mePage;
     }
 }

+ 21 - 19
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/SysLearningMaterialsServiceImpl.java

@@ -52,19 +52,12 @@ public class SysLearningMaterialsServiceImpl extends ServiceImpl<SysLearningMate
     private RemoteOrgService remoteOrgService;
 
     @Override
-    public TableDataInfo selectPage(SysLearningMaterialsPageDto sysLearningMaterials) {
-        Page<SysLearningMaterialsPageVo> page;
-        //分页
-        if (ObjectUtil.isAllNotEmpty(sysLearningMaterials.getPageNum(), sysLearningMaterials.getPageSize())) {
-            page = new Page<>(sysLearningMaterials.getPageNum(), sysLearningMaterials.getPageSize());
-        } else {
-            page = new Page<>();
-        }
-        final List<Long> list = dealParentOrgId(sysLearningMaterials.getOrgId(), true);
-        sysLearningMaterials.setOrgIdList(list);
-        sysLearningMaterials.setUserId(SecurityUtils.getUserId());
-        //获取数据
-        page = sysLearningMaterialsMapper.selectPageData(page, sysLearningMaterials);
+    public TableDataInfo selectPage(SysLearningMaterialsPageDto request) {
+        final List<Long> list = dealParentOrgId(request, request.getOrgId());
+        request.setOrgIdList(list);
+        request.setUserId(SecurityUtils.getUserId());
+        //获取数据 默认查询当前及上级机构公开,当前用户创建的的数据
+        Page<SysLearningMaterialsPageVo> page = sysLearningMaterialsMapper.selectPageData(request.getPageRequest(), request);
         for (SysLearningMaterialsPageVo record : page.getRecords()) {
             extractStringFromUrl(record);
         }
@@ -77,7 +70,7 @@ public class SysLearningMaterialsServiceImpl extends ServiceImpl<SysLearningMate
         return tableDataInfo;
     }
 
-    private List<Long> dealParentOrgId(Long orgId, Boolean isNeedRemoveSelf) {
+    private List<Long> dealParentOrgId(SysLearningMaterialsPageDto request, Long orgId) {
         SysOrg sysOrg = remoteOrgService.selectSysOrgById(orgId, SecurityConstants.INNER);
         if (sysOrg == null || ObjectUtil.isEmpty(sysOrg.getPath())) {
             throw new RuntimeException("机构不存在或机构信息缺失!");
@@ -85,9 +78,18 @@ public class SysLearningMaterialsServiceImpl extends ServiceImpl<SysLearningMate
         String[] split = sysOrg.getPath().split("-");
         List<Long> list = new ArrayList<>();
         Stream.of(split).forEach(s -> list.add(Long.valueOf(s)));
-        if (isNeedRemoveSelf) {
-            list.remove(orgId);
+        request.setOrgPath(sysOrg.getPath());
+        return list;
+    }
+
+    private List<Long> dealParentOrgId(Long orgId) {
+        SysOrg sysOrg = remoteOrgService.selectSysOrgById(orgId, SecurityConstants.INNER);
+        if (sysOrg == null || ObjectUtil.isEmpty(sysOrg.getPath())) {
+            throw new RuntimeException("机构不存在或机构信息缺失!");
         }
+        String[] split = sysOrg.getPath().split("-");
+        List<Long> list = new ArrayList<>();
+        Stream.of(split).forEach(s -> list.add(Long.valueOf(s)));
         return list;
     }
 
@@ -159,7 +161,7 @@ public class SysLearningMaterialsServiceImpl extends ServiceImpl<SysLearningMate
     /**
      * 修改学习资料
      *
-     * @param sysLearningMaterials 学习资料
+     * @param request 学习资料
      * @return 结果
      */
     @Override
@@ -208,7 +210,7 @@ public class SysLearningMaterialsServiceImpl extends ServiceImpl<SysLearningMate
 
     @Override
     public TableDataInfo filePageList(SysLearningMaterialsFileListPageDto request) {
-        final List<Long> list = dealParentOrgId(request.getOrgId(), false);
+        final List<Long> list = dealParentOrgId(request.getOrgId());
         request.setOrgIdList(list);
         final IPage<SysLearningMaterialsFileListVo> page = sysLearningMaterialsMapper.selectFilePageList(request.getPageRequest(), request);
         final List<SysLearningMaterialsFileListVo> records = page.getRecords();
@@ -226,7 +228,7 @@ public class SysLearningMaterialsServiceImpl extends ServiceImpl<SysLearningMate
             IOException {
         SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> remoteOrgService.selectOrgById(sysLearningMaterials.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
 
-        sysLearningMaterials.setPageSize((long) Integer.MAX_VALUE);
+        sysLearningMaterials.setPageSize(Integer.MAX_VALUE);
         final TableDataInfo tableDataInfo = this.selectPage(sysLearningMaterials);
         if (ObjectUtil.isEmpty(tableDataInfo.getRows())) {
             throw new RuntimeException("导出数据为空!");

+ 17 - 41
soc-modules/soc-modules-core/src/main/resources/mapper/edu/SysLearningMaterialsMapper.xml

@@ -88,7 +88,10 @@
             and m.knowledge_id = #{request.knowledgeId}
         </if>
         <if test="request.title != null ">
-            and m.title  like concat('%', #{request.title}, '%')
+            and m.title like concat('%', #{request.title}, '%')
+        </if>
+        <if test="request.isOpen != null ">
+            and m.is_open = #{request.isOpen}
         </if>
     </sql>
     <select id="selectPageData" resultType="com.xunmei.common.core.domain.edu.vo.SysLearningMaterialsPageVo">
@@ -109,46 +112,19 @@
         inner join sys_user u on u.id=m.create_by
         where m.deleted = 0
         and k.deleted = 0
-        <choose>
-            <!-- 查询公开的,需要判断是否关联上级机构,类型与标题 -->
-            <when test="request.isOpen != null and request.isOpen ==1">
-                <if test="request.checkSub==false">
-                    and m.org_id = #{request.orgId} and m.is_open = 1
-                </if>
-                <if test="request.checkSub==true">
-                    or ( m.org_id in
-                    <foreach collection="request.orgIdList" item="item" open="(" separator="," close=")">
-                        #{item}
-                    </foreach>
-                    and m.is_open = 1
-                    <include refid="pageRequest"/>)
-                </if>
-            </when>
-            <!-- 查询未公开的,需要判断类型与标题 且查询当前机构自己创建的, -->
-            <when test="request.isOpen != null">
-                <include refid="pageRequest"/>
-                and m.org_id = #{request.orgId}
-                and m.create_by = #{request.userId}
-                and m.is_open = 0
-            </when>
-            <!-- 公开条件等于null时,需要判断类型与标题 且查询当前机构自己创建的, -->
-            <otherwise>
-                <include refid="pageRequest"/>
-                <if test="request.checkSub==false">
-                    and m.org_id = #{request.orgId}
-                </if>
-                <if test="request.checkSub==true">
-                    or ( m.is_open = 1
-                    <if test="request.orgIdList.size>0">
-                        and m.org_id in
-                        <foreach collection="request.orgIdList" item="item" open="(" separator="," close=")">
-                            #{item}
-                        </foreach>
-                    </if>
-                    <include refid="pageRequest"/>)
-                </if>
-            </otherwise>
-        </choose>
+        and m.create_by=#{request.userId}
+        <include refid="pageRequest"/>
+        <if test="request.checkSub==true">
+            or ( m.org_path like concat(#{request.orgPath},'%') and m.is_open = 1 and m.org_path !=#{request.orgPath}
+            <include refid="pageRequest"/>)
+        </if>
+        or ( m.org_id in
+        <foreach collection="request.orgIdList" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+        and m.is_open = 1
+        <include refid="pageRequest"/>
+        )
         order by m.org_id, m.create_time desc
     </select>