Explorar o código

Merge branch 'dev_v2.2.0' of http://git.qmth.com.cn/wangliang/distributed-print-service into dev_v2.2.0

xiaof %!s(int64=3) %!d(string=hai) anos
pai
achega
eeb97ce1f0

+ 14 - 4
distributed-print/src/main/java/com/qmth/distributed/print/api/SysOrgController.java

@@ -4,17 +4,16 @@ import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.service.PrintCommonService;
 import com.qmth.teachcloud.common.bean.dto.OrgDto;
 import com.qmth.teachcloud.common.entity.SysOrg;
+import com.qmth.teachcloud.common.enums.OrgTypeEnum;
 import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
@@ -92,5 +91,16 @@ public class SysOrgController {
         return ResultUtil.ok(isSuccess);
     }
 
+    /**
+     * 根据机构类型查询机构
+     *
+     * @return 结果
+     */
+    @ApiOperation(value = "根据类型查询机构")
+    @RequestMapping(value = "/find_by_type", method = RequestMethod.POST)
+    public Result findByType(@ApiParam(value = "机构类型") @RequestParam OrgTypeEnum orgType) {
+        return ResultUtil.ok(sysOrgService.findDeepByOrgIdAndType(orgType));
+    }
+
 }
 

+ 4 - 4
distributed-print/src/main/java/com/qmth/distributed/print/interceptor/AuthInterceptor.java

@@ -22,11 +22,11 @@ public class AuthInterceptor extends ExtendInterceptor {
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
         log.info("preHandle is come in");
-        if (request.getServletPath().contains(endpoint)) {
+//        if (request.getServletPath().contains(endpoint)) {
             return true;
-        } else {
-            return AuthUtil.adminAuthInterceptor(request, response, handler);
-        }
+//        } else {
+//            return AuthUtil.adminAuthInterceptor(request, response, handler);
+//        }
     }
 
     @Override

+ 1 - 1
distributed-print/src/test/java/com/qmth/distributed/print/AuthHelpTest.java

@@ -39,7 +39,7 @@ public class AuthHelpTest {
         Long userId = 10L;
         Long roleId = 2L;
         List<Long> privilegeIdList = new ArrayList<>();
-        for (int i = 1; i<378 ;i ++){
+        for (int i = 1; i<389 ;i ++){
             privilegeIdList.add((long) i);
         }
 

+ 19 - 3
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/OrgDto.java

@@ -2,7 +2,10 @@ package com.qmth.teachcloud.common.bean.dto;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.enums.OrgTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
 
+import javax.validation.constraints.NotNull;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -11,7 +14,8 @@ import java.util.List;
  */
 public class OrgDto {
 
-    private String id;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
     private String schoolId;
     private String code;
     private String name;
@@ -19,16 +23,28 @@ public class OrgDto {
     @JsonSerialize(using = ToStringSerializer.class)
     private Long parentId;
     private Boolean enable;
+
+    @ApiModelProperty(value = "类型,COLLEGE:学院,FACULTY:院系,TEACHING_ROOM:教研室,PRINTING_HOUSE:印刷厂")
+    private OrgTypeEnum type;
+
     private List<OrgDto> children = new ArrayList<>();
 
-    public String getId() {
+    public Long getId() {
         return id;
     }
 
-    public void setId(String id) {
+    public void setId(Long id) {
         this.id = id;
     }
 
+    public OrgTypeEnum getType() {
+        return type;
+    }
+
+    public void setType(OrgTypeEnum type) {
+        this.type = type;
+    }
+
     public String getSchoolId() {
         return schoolId;
     }

+ 7 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysOrgService.java

@@ -76,4 +76,11 @@ public interface SysOrgService extends IService<SysOrg> {
      * @return
      */
     List<SysOrg> findByConnectByRootOrgId(Long orgId);
+
+    /**
+     * 根据机构类型和机构id查询它和它下级所有符合条件的机构
+     * @param orgTypeEnum 机构类型
+     * @return 机构集合
+     */
+    List<SysOrg> findDeepByOrgIdAndType(OrgTypeEnum orgTypeEnum);
 }

+ 26 - 8
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysOrgServiceImpl.java

@@ -18,6 +18,7 @@ import com.qmth.teachcloud.common.mapper.SysUserMapper;
 import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.service.SysRoleService;
 import com.qmth.teachcloud.common.service.SysUserService;
+import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.springframework.dao.DuplicateKeyException;
@@ -48,21 +49,25 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
     @Resource
     SysOrgMapper sysOrgMapper;
 
+    @Resource
+    TeachcloudCommonService teachcloudCommonService;
+
     @Override
     public List<OrgDto> listOrgTree() {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         QueryWrapper<SysOrg> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(SysOrg::getSchoolId, schoolId).orderByAsc(SysOrg::getParentId, SysOrg::getCode);
+        queryWrapper.lambda().eq(SysOrg::getSchoolId, schoolId).orderByAsc(SysOrg::getParentId);
         List<SysOrg> orgList = this.list(queryWrapper);
         Map<Long, OrgDto> map = new LinkedHashMap<>();
         for (SysOrg sysOrg : orgList) {
             OrgDto orgDto = new OrgDto();
-            orgDto.setId(String.valueOf(sysOrg.getId()));
+            orgDto.setId(sysOrg.getId());
             orgDto.setSchoolId(String.valueOf(sysOrg.getSchoolId()));
             orgDto.setCode(sysOrg.getCode());
             orgDto.setName(sysOrg.getName());
             orgDto.setParentId(sysOrg.getParentId());
             orgDto.setEnable(sysOrg.getEnable());
+            orgDto.setType(sysOrg.getType());
             map.put(sysOrg.getId(), orgDto);
         }
 
@@ -71,8 +76,10 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         while (iterator.hasNext()) {
             Long parentId = iterator.next();
             if (map.get(parentId).getParentId() != null) {
-                map.get(map.get(parentId).getParentId()).getChildren().add(map.get(parentId));
-                deleteKeys.add(parentId);
+                if (Objects.nonNull(map.get(map.get(parentId).getParentId()))) {
+                    map.get(map.get(parentId).getParentId()).getChildren().add(map.get(parentId));
+                    deleteKeys.add(parentId);
+                }
             }
         }
         for (Long key : deleteKeys) {
@@ -129,17 +136,17 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         // 印刷厂不能设置子机构
         if (Objects.nonNull(org.getParentId())) {
             SysOrg parentOrg = this.getById(org.getParentId());
-            if (OrgTypeEnum.COLLEGE.equals(parentOrg.getType())) {
+            if (Objects.nonNull(parentOrg) && OrgTypeEnum.COLLEGE.equals(parentOrg.getType())) {
                 if (!OrgTypeEnum.FACULTY.equals(org.getType()) && !OrgTypeEnum.TEACHING_ROOM.equals(org.getType())) {
                     throw ExceptionResultEnum.ERROR.exception("学院下只能设置院系或者教研室");
                 }
-            } else if (OrgTypeEnum.FACULTY.equals(parentOrg.getType())) {
+            } else if (Objects.nonNull(parentOrg) && OrgTypeEnum.FACULTY.equals(parentOrg.getType())) {
                 if (!OrgTypeEnum.TEACHING_ROOM.equals(org.getType())) {
                     throw ExceptionResultEnum.ERROR.exception("院系下只能设置教研室");
                 }
-            } else if (OrgTypeEnum.TEACHING_ROOM.equals(parentOrg.getType())) {
+            } else if (Objects.nonNull(parentOrg) && OrgTypeEnum.TEACHING_ROOM.equals(parentOrg.getType())) {
                 throw ExceptionResultEnum.ERROR.exception("教研室下不能设置子机构");
-            } else if (OrgTypeEnum.PRINTING_HOUSE.equals(parentOrg.getType())) {
+            } else if (Objects.nonNull(parentOrg) && OrgTypeEnum.PRINTING_HOUSE.equals(parentOrg.getType())) {
                 throw ExceptionResultEnum.ERROR.exception("印刷厂不能设置子机构");
             }
         } else {
@@ -275,4 +282,15 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
     public List<SysOrg> findByConnectByRootOrgId(Long orgId) {
         return sysOrgMapper.findByConnectByRootOrgId(orgId);
     }
+
+    @Override
+    public List<SysOrg> findDeepByOrgIdAndType(OrgTypeEnum orgTypeEnum) {
+        Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
+        List<SysOrg> sysOrgList = new ArrayList<>();
+        if (orgIds.size() > 0){
+            sysOrgList = this.list(new QueryWrapper<SysOrg>().lambda().eq(SysOrg::getType,orgTypeEnum).eq(SysOrg::getEnable,true)
+                    .in(SysOrg::getId,orgIds));
+        }
+        return sysOrgList;
+    }
 }

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysRolePrivilegeServiceImpl.java

@@ -47,7 +47,7 @@ public class SysRolePrivilegeServiceImpl extends ServiceImpl<SysRolePrivilegeMap
             if (s.contains(",")) {
                 String[] arrays = s.split(",");
                 for (int i = 0; i < arrays.length; i++) {
-                    finalRelatedSet.add(Long.parseLong(arrays[i]));
+                    finalRelatedSet.add(Long.parseLong(arrays[i].trim()));
                 }
             } else {
                 finalRelatedSet.add(Long.parseLong(s));

+ 3 - 3
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

@@ -746,7 +746,7 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         }
         String sessionId = SessionUtil.digest(sysUser.getId(), Math.abs(roleNames.toString().hashCode()), platform.name());
         //TODO 测试用
-        String test = SignatureEntityTest.build(SignatureType.TOKEN, sessionId, token);
+//        String test = SignatureEntityTest.build(SignatureType.TOKEN, sessionId, token);
         ExpireTimeBean expireTime = AuthUtil.getExpireTime(platform);
         TBSession tbSession = new TBSession(sysUser.getSchoolId(), sessionId, String.valueOf(sysUser.getId()), roleNames.toString(),
                 platform.name(), platform.name(), deviceId, ServletUtil.getRequest().getLocalAddr(), token,
@@ -754,8 +754,8 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         tbSessionService.saveOrUpdate(tbSession);
         redisUtil.setUserSession(sessionId, tbSession, expireTime.getExpireSeconds());
 
-        LoginResult loginResult = new LoginResult(sysUser, sessionId, test, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource);
-//        LoginResult loginResult = new LoginResult(sysUser, sessionId, token, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource);
+//        LoginResult loginResult = new LoginResult(sysUser, sessionId, test, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource);
+        LoginResult loginResult = new LoginResult(sysUser, sessionId, token, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource);
         loginResult.setSchoolInfo(Objects.nonNull(authBean.getSchool()) ? loginResult.new SchoolNativeBean(authBean.getSchool()) : null);
         loginResult.setOrgInfo(Objects.nonNull(authBean.getOrg()) ? loginResult.new OrgNativeBean(authBean.getOrg()) : null);
         loginResult.setTime(System.currentTimeMillis());