浏览代码

Merge remote-tracking branch 'origin/dev_v3.2.2' into dev_v3.2.2

wangliang 2 年之前
父节点
当前提交
878ca13fdb
共有 16 个文件被更改,包括 374 次插入22 次删除
  1. 5 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/DataPermissionInfo.java
  2. 35 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/DataPermissionRule.java
  3. 8 8
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/SysRolePrivilegeParams.java
  4. 22 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/DataPermissionTypeEnum.java
  5. 18 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicRoleDataPermissionService.java
  6. 134 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicRoleDataPermissionServiceImpl.java
  7. 4 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradePaperStructServiceImpl.java
  8. 31 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysPrivilegeController.java
  9. 3 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysRoleController.java
  10. 17 0
      teachcloud-common-api/src/main/java/com/qmth/teachcloud/common/api/api/BasicSchoolController.java
  11. 10 0
      teachcloud-common-api/src/main/java/com/qmth/teachcloud/common/api/api/TSAuthController.java
  12. 10 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/SchoolDto.java
  13. 13 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/BasicSchool.java
  14. 3 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicSchoolService.java
  15. 60 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicSchoolServiceImpl.java
  16. 1 1
      teachcloud-common/src/main/resources/mapper/BasicSchoolMapper.xml

+ 5 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/DataPermissionInfo.java

@@ -15,17 +15,17 @@ import java.io.Serializable;
 public class DataPermissionInfo implements Serializable {
 public class DataPermissionInfo implements Serializable {
     @ApiModelProperty("权限表id")
     @ApiModelProperty("权限表id")
     @JsonSerialize(using = ToStringSerializer.class)
     @JsonSerialize(using = ToStringSerializer.class)
-    private Long id;
+    private Long privilegeId;
 
 
     @ApiModelProperty("数据权限类型")
     @ApiModelProperty("数据权限类型")
     private DataPermissionTypeEnum dataPermissionType;
     private DataPermissionTypeEnum dataPermissionType;
 
 
-    public Long getId() {
-        return id;
+    public Long getPrivilegeId() {
+        return privilegeId;
     }
     }
 
 
-    public void setId(Long id) {
-        this.id = id;
+    public void setPrivilegeId(Long privilegeId) {
+        this.privilegeId = privilegeId;
     }
     }
 
 
     public DataPermissionTypeEnum getDataPermissionType() {
     public DataPermissionTypeEnum getDataPermissionType() {

+ 35 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/DataPermissionRule.java

@@ -0,0 +1,35 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Set;
+
+/**
+ * @Description: 数据权限查询参数
+ * @Author: CaoZixuan
+ * @Date: 22022-12-07
+ */
+public class DataPermissionRule implements Serializable {
+    @ApiModelProperty("有数据权限的机构集合(所有、本机构及以下、本机构)")
+    private Set<Long> orgIdSet;
+
+    @ApiModelProperty("登录用户数据权限(只允许看自己的数据)")
+    private Long requestUserId;
+
+    public Set<Long> getOrgIdSet() {
+        return orgIdSet;
+    }
+
+    public void setOrgIdSet(Set<Long> orgIdSet) {
+        this.orgIdSet = orgIdSet;
+    }
+
+    public Long getRequestUserId() {
+        return requestUserId;
+    }
+
+    public void setRequestUserId(Long requestUserId) {
+        this.requestUserId = requestUserId;
+    }
+}

+ 8 - 8
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/SysRolePrivilegeParams.java

@@ -33,11 +33,11 @@ public class SysRolePrivilegeParams implements Serializable {
 
 
     @ApiModelProperty("权限id数组")
     @ApiModelProperty("权限id数组")
     @NotEmpty(message = "权限集合不能为空")
     @NotEmpty(message = "权限集合不能为空")
-    private Long[] privilegeIds;
+    private List<String> privilegeIds;
 
 
     @ApiModelProperty("数据权限集合")
     @ApiModelProperty("数据权限集合")
     @NotEmpty(message = "数据权限集合不能为空")
     @NotEmpty(message = "数据权限集合不能为空")
-    private List<DataPermissionInfo> datePermissionInfo;
+    private List<DataPermissionInfo> dataPermissionInfo;
 
 
     public Long getId() {
     public Long getId() {
         return id;
         return id;
@@ -63,19 +63,19 @@ public class SysRolePrivilegeParams implements Serializable {
         this.interpret = interpret;
         this.interpret = interpret;
     }
     }
 
 
-    public Long[] getPrivilegeIds() {
+    public List<String> getPrivilegeIds() {
         return privilegeIds;
         return privilegeIds;
     }
     }
 
 
-    public void setPrivilegeIds(Long[] privilegeIds) {
+    public void setPrivilegeIds(List<String> privilegeIds) {
         this.privilegeIds = privilegeIds;
         this.privilegeIds = privilegeIds;
     }
     }
 
 
-    public List<DataPermissionInfo> getDatePermissionInfo() {
-        return datePermissionInfo;
+    public List<DataPermissionInfo> getDataPermissionInfo() {
+        return dataPermissionInfo;
     }
     }
 
 
-    public void setDatePermissionInfo(List<DataPermissionInfo> datePermissionInfo) {
-        this.datePermissionInfo = datePermissionInfo;
+    public void setDataPermissionInfo(List<DataPermissionInfo> dataPermissionInfo) {
+        this.dataPermissionInfo = dataPermissionInfo;
     }
     }
 }
 }

+ 22 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/DataPermissionTypeEnum.java

@@ -1,10 +1,13 @@
 package com.qmth.distributed.print.business.enums;
 package com.qmth.distributed.print.business.enums;
 
 
 import com.qmth.teachcloud.common.enums.EnumResult;
 import com.qmth.teachcloud.common.enums.EnumResult;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.List;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * @Description: 角色数据权限类型
  * @Description: 角色数据权限类型
@@ -48,4 +51,23 @@ public enum DataPermissionTypeEnum {
         }
         }
         return list;
         return list;
     }
     }
+
+    /**
+     * 根据数据权限权重查询枚举
+     *
+     * @param weight 权重
+     * @return 数据权限类型
+     */
+    public static DataPermissionTypeEnum findByWeight(int weight) {
+        List<DataPermissionTypeEnum> dataPermissionTypes = Arrays.stream(DataPermissionTypeEnum.values())
+                .filter(e -> weight == e.getWeight()).collect(Collectors.toList());
+        if (dataPermissionTypes.size() > 1) {
+            throw ExceptionResultEnum.ERROR.exception("数据权限枚举类 权重值异常");
+        }
+        if (dataPermissionTypes.size() == 0) {
+            return null;
+        } else {
+            return dataPermissionTypes.get(0);
+        }
+    }
 }
 }

+ 18 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicRoleDataPermissionService.java

@@ -2,6 +2,7 @@ package com.qmth.distributed.print.business.service;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.bean.dto.DataPermissionInfo;
 import com.qmth.distributed.print.business.bean.dto.DataPermissionInfo;
+import com.qmth.distributed.print.business.bean.dto.DataPermissionRule;
 import com.qmth.distributed.print.business.entity.BasicRoleDataPermission;
 import com.qmth.distributed.print.business.entity.BasicRoleDataPermission;
 
 
 import java.util.List;
 import java.util.List;
@@ -15,10 +16,26 @@ public interface BasicRoleDataPermissionService extends IService<BasicRoleDataPe
 
 
     /**
     /**
      * 新增角色数据权限设置
      * 新增角色数据权限设置
-     * @param roleId 角色id
+     *
+     * @param roleId                 角色id
      * @param dataPermissionInfoList 角色数据权限集合
      * @param dataPermissionInfoList 角色数据权限集合
      */
      */
     void saveRoleDataPermission(Long roleId, List<DataPermissionInfo> dataPermissionInfoList);
     void saveRoleDataPermission(Long roleId, List<DataPermissionInfo> dataPermissionInfoList);
 
 
+    /**
+     * 查询角色数据权限
+     * @param roleId 角色id
+     * @return 该角色数据权限信息集合
+     */
+    List<DataPermissionInfo> findRoleDataPermissionInfo(Long roleId);
 
 
+    /**
+     * 查询数据权限
+     *
+     * @param schoolId      学校id
+     * @param requestUserId 请求的用户id
+     * @param url           请求的url
+     * @return 数据权限查询集合
+     */
+    DataPermissionRule findDataPermission(Long schoolId, Long requestUserId, String url);
 }
 }

+ 134 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicRoleDataPermissionServiceImpl.java

@@ -3,7 +3,9 @@ package com.qmth.distributed.print.business.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.bean.dto.DataPermissionInfo;
 import com.qmth.distributed.print.business.bean.dto.DataPermissionInfo;
+import com.qmth.distributed.print.business.bean.dto.DataPermissionRule;
 import com.qmth.distributed.print.business.entity.BasicRoleDataPermission;
 import com.qmth.distributed.print.business.entity.BasicRoleDataPermission;
+import com.qmth.distributed.print.business.enums.DataPermissionTypeEnum;
 import com.qmth.distributed.print.business.mapper.BasicRoleDataPermissionMapper;
 import com.qmth.distributed.print.business.mapper.BasicRoleDataPermissionMapper;
 import com.qmth.distributed.print.business.service.BasicRoleDataPermissionService;
 import com.qmth.distributed.print.business.service.BasicRoleDataPermissionService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -11,13 +13,19 @@ import com.qmth.teachcloud.common.entity.SysPrivilege;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.PrivilegeEnum;
 import com.qmth.teachcloud.common.enums.PrivilegeEnum;
+import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.service.SysPrivilegeService;
 import com.qmth.teachcloud.common.service.SysPrivilegeService;
+import com.qmth.teachcloud.common.service.SysRoleService;
+import com.qmth.teachcloud.common.service.SysUserService;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import java.util.HashSet;
 import java.util.List;
 import java.util.List;
+import java.util.Objects;
+import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import java.util.stream.Stream;
 
 
@@ -30,6 +38,12 @@ import java.util.stream.Stream;
 public class BasicRoleDataPermissionServiceImpl extends ServiceImpl<BasicRoleDataPermissionMapper, BasicRoleDataPermission> implements BasicRoleDataPermissionService {
 public class BasicRoleDataPermissionServiceImpl extends ServiceImpl<BasicRoleDataPermissionMapper, BasicRoleDataPermission> implements BasicRoleDataPermissionService {
     @Resource
     @Resource
     SysPrivilegeService sysPrivilegeService;
     SysPrivilegeService sysPrivilegeService;
+    @Resource
+    SysRoleService sysRoleService;
+    @Resource
+    SysUserService sysUserService;
+    @Resource
+    SysOrgService sysOrgService;
 
 
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     @Override
     @Override
@@ -38,7 +52,7 @@ public class BasicRoleDataPermissionServiceImpl extends ServiceImpl<BasicRoleDat
         Long schoolId = SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()));
         Long schoolId = SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()));
 
 
         List<Long> privilegeIdList = dataPermissionInfoList.stream()
         List<Long> privilegeIdList = dataPermissionInfoList.stream()
-                .map(DataPermissionInfo::getId)
+                .map(DataPermissionInfo::getPrivilegeId)
                 .distinct()
                 .distinct()
                 .collect(Collectors.toList());
                 .collect(Collectors.toList());
 
 
@@ -52,7 +66,7 @@ public class BasicRoleDataPermissionServiceImpl extends ServiceImpl<BasicRoleDat
                 throw ExceptionResultEnum.ERROR.exception("角色数据权限要绑在菜单级权限上");
                 throw ExceptionResultEnum.ERROR.exception("角色数据权限要绑在菜单级权限上");
             }
             }
             this.remove(new QueryWrapper<BasicRoleDataPermission>().lambda()
             this.remove(new QueryWrapper<BasicRoleDataPermission>().lambda()
-                    .eq(BasicRoleDataPermission::getSchoolId, requestUser.getSchoolId())
+                    .eq(BasicRoleDataPermission::getSchoolId, schoolId)
                     .eq(BasicRoleDataPermission::getRoleId, roleId));
                     .eq(BasicRoleDataPermission::getRoleId, roleId));
 
 
             List<BasicRoleDataPermission> basicRoleDataPermissionList = dataPermissionInfoList.stream().flatMap(e -> {
             List<BasicRoleDataPermission> basicRoleDataPermissionList = dataPermissionInfoList.stream().flatMap(e -> {
@@ -60,7 +74,7 @@ public class BasicRoleDataPermissionServiceImpl extends ServiceImpl<BasicRoleDat
                 basicRoleDataPermission.insertInfo(requestUser.getId());
                 basicRoleDataPermission.insertInfo(requestUser.getId());
                 basicRoleDataPermission.setSchoolId(schoolId);
                 basicRoleDataPermission.setSchoolId(schoolId);
                 basicRoleDataPermission.setRoleId(roleId);
                 basicRoleDataPermission.setRoleId(roleId);
-                basicRoleDataPermission.setPrivilegeId(e.getId());
+                basicRoleDataPermission.setPrivilegeId(e.getPrivilegeId());
                 basicRoleDataPermission.setDataPermissionType(e.getDataPermissionType());
                 basicRoleDataPermission.setDataPermissionType(e.getDataPermissionType());
                 return Stream.of(basicRoleDataPermission);
                 return Stream.of(basicRoleDataPermission);
             }).collect(Collectors.toList());
             }).collect(Collectors.toList());
@@ -68,4 +82,121 @@ public class BasicRoleDataPermissionServiceImpl extends ServiceImpl<BasicRoleDat
         }
         }
 
 
     }
     }
+
+    @Override
+    public List<DataPermissionInfo> findRoleDataPermissionInfo(Long roleId) {
+        return this.list(new QueryWrapper<BasicRoleDataPermission>().lambda()
+                        .eq(BasicRoleDataPermission::getRoleId, roleId))
+                .stream()
+                .flatMap(e -> {
+                    DataPermissionInfo dataPermissionInfo = new DataPermissionInfo();
+                    dataPermissionInfo.setPrivilegeId(e.getPrivilegeId());
+                    dataPermissionInfo.setDataPermissionType(e.getDataPermissionType());
+                    return Stream.of(dataPermissionInfo);
+                })
+                .distinct()
+                .collect(Collectors.toList());
+    }
+
+    @Override
+    public DataPermissionRule findDataPermission(Long schoolId, Long requestUserId, String url) {
+        DataPermissionRule result = new DataPermissionRule();
+        // 角色集合
+        List<Long> roleIdList = sysRoleService.getUserRoles(requestUserId);
+
+        // 方法的权限
+        SysPrivilege sysPrivilege = sysPrivilegeService.getOne(new QueryWrapper<SysPrivilege>()
+                .lambda()
+                .eq(SysPrivilege::getUrl, url)
+                .eq(SysPrivilege::getType, PrivilegeEnum.URL));
+
+        if (Objects.nonNull(sysPrivilege)) {
+            // 数据库中存在该方法的url
+            int maxWeight = 0;
+            for (Long roleId : roleIdList) {
+                DataPermissionTypeEnum roleDataPermissionType = this.searchRoleDataPermissionByPrivilege(roleId, sysPrivilege);
+                if (Objects.nonNull(roleDataPermissionType)) {
+                    // 角色数据权限不为空时,筛选出所有角色在该url中的最大范围数据权限为该url的最终数据权限
+                    int weight = roleDataPermissionType.getWeight();
+                    if (weight > maxWeight) {
+                        maxWeight = weight;
+                    }
+                }
+            }
+            DataPermissionTypeEnum finalPermissionType = DataPermissionTypeEnum.findByWeight(maxWeight);
+            if (Objects.nonNull(finalPermissionType)) {
+                // 最终数据权限不为空
+                SysUser requestUser = sysUserService.getById(requestUserId);
+                switch (finalPermissionType) {
+                    case SELF:
+                        // 只能看自己创建的
+                        result.setRequestUserId(requestUserId);
+                        break;
+                    case SELF_ORG:
+                        // 只能看自己所在机构
+                        Long orgId = requestUser.getOrgId();
+                        Set<Long> orgIdSet = new HashSet<>();
+                        orgIdSet.add(orgId);
+                        result.setOrgIdSet(orgIdSet);
+                        break;
+                    case SELF_ORG_BELOW:
+                        // 只能看自己所在机构和所辖机构
+                        result.setOrgIdSet(sysOrgService.findDeepOrgIdListByUserId(requestUser.getId()));
+                        break;
+                    case ALL:
+                        break;
+                }
+            }
+        }
+        return result;
+    }
+
+    /**
+     * 递归搜索角色的数据权限
+     *
+     * @param roleId    角色id
+     * @param privilege url权限
+     * @return 角色数据权限规则
+     */
+    private DataPermissionTypeEnum searchRoleDataPermissionByPrivilege(Long roleId, SysPrivilege privilege) {
+        Long privilegeId = privilege.getId();
+        PrivilegeEnum type = privilege.getType();
+        // 如果是菜单,搜索该菜单是否绑定了数据权限
+        if (PrivilegeEnum.MENU.equals(type)) {
+            BasicRoleDataPermission basicRoleDataPermission = this.getOne(new QueryWrapper<BasicRoleDataPermission>().lambda()
+                    .eq(BasicRoleDataPermission::getRoleId, roleId)
+                    .eq(BasicRoleDataPermission::getPrivilegeId, privilegeId));
+            if (Objects.nonNull(basicRoleDataPermission)) {
+                // 有数据权限
+                return basicRoleDataPermission.getDataPermissionType();
+            } else {
+                // 没数据权限查父菜单
+                return getDataPermissionRule(roleId, privilege);
+            }
+        } else {
+            // 如果该url不是菜单类型则查询其父目录
+            return getDataPermissionRule(roleId, privilege);
+        }
+    }
+
+    /**
+     * 查询父菜单是否包含数据权限
+     *
+     * @param roleId    角色id
+     * @param privilege 权限
+     * @return 数据权限规则
+     */
+    private DataPermissionTypeEnum getDataPermissionRule(Long roleId, SysPrivilege privilege) {
+        Long parentId = privilege.getParentId();
+        if (SystemConstant.longNotNull(parentId)) {
+            SysPrivilege parent = sysPrivilegeService.getById(parentId);
+            if (Objects.nonNull(parent)) {
+                return this.searchRoleDataPermissionByPrivilege(roleId, parent);
+            } else {
+                return null;
+            }
+        } else {
+            return null;
+        }
+    }
 }
 }

+ 4 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradePaperStructServiceImpl.java

@@ -142,6 +142,10 @@ public class GradePaperStructServiceImpl extends ServiceImpl<GradePaperStructMap
                 result.add(cell);
                 result.add(cell);
             }
             }
         }
         }
+        Comparator<GradePaperStructResult> bigComparator=Comparator.comparing(o -> Integer.parseInt(o.getBigQuestionNumber()));
+        Comparator<GradePaperStructResult> smallComparator=Comparator.comparing(o -> Integer.parseInt(o.getSmallQuestionNumber()));
+        result.sort(bigComparator.thenComparing(smallComparator));
+
         return result;
         return result;
     }
     }
 
 

+ 31 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/SysPrivilegeController.java

@@ -1,11 +1,17 @@
 package com.qmth.distributed.print.api;
 package com.qmth.distributed.print.api;
 
 
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.distributed.print.business.bean.dto.DataPermissionInfo;
+import com.qmth.distributed.print.business.bean.params.SysRolePrivilegeParams;
+import com.qmth.distributed.print.business.service.BasicRoleDataPermissionService;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysPrivilege;
 import com.qmth.teachcloud.common.entity.SysPrivilege;
+import com.qmth.teachcloud.common.entity.SysRole;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
 import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
 import com.qmth.teachcloud.common.service.SysPrivilegeService;
 import com.qmth.teachcloud.common.service.SysPrivilegeService;
+import com.qmth.teachcloud.common.service.SysRoleService;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
@@ -13,6 +19,11 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
 /**
 /**
  * <p>
  * <p>
  * 菜单权限表 前端控制器
  * 菜单权限表 前端控制器
@@ -26,8 +37,12 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX  + SystemConstant.PREFIX_URL_SYS + "/privilege")
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX  + SystemConstant.PREFIX_URL_SYS + "/privilege")
 public class SysPrivilegeController {
 public class SysPrivilegeController {
 
 
-    @Autowired
+    @Resource
     private SysPrivilegeService sysPrivilegeService;
     private SysPrivilegeService sysPrivilegeService;
+    @Resource
+    private BasicRoleDataPermissionService basicRoleDataPermissionService;
+    @Resource
+    private SysRoleService sysRoleService;
 
 
     /**
     /**
      * 查询
      * 查询
@@ -89,7 +104,21 @@ public class SysPrivilegeController {
     @RequestMapping(value = "/get_role_privileges", method = RequestMethod.POST)
     @RequestMapping(value = "/get_role_privileges", method = RequestMethod.POST)
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.SEARCH)
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.SEARCH)
     public Result getRolePrivileges(@RequestParam(value = "roleId", required = true) Long roleId) {
     public Result getRolePrivileges(@RequestParam(value = "roleId", required = true) Long roleId) {
-        return ResultUtil.ok(sysPrivilegeService.getRolePrivileges(roleId));
+        SysRole sysRole = sysRoleService.getById(roleId);
+        if (Objects.isNull(sysRole)){
+            throw ExceptionResultEnum.ERROR.exception("角色不存在");
+        }
+
+        SysRolePrivilegeParams result = new SysRolePrivilegeParams();
+        // 该角色拥有的权限集合
+        result.setPrivilegeIds(sysPrivilegeService.getRolePrivileges(roleId));
+        // 该角色拥有的数据权限
+        result.setDataPermissionInfo(basicRoleDataPermissionService.findRoleDataPermissionInfo(roleId));
+        result.setId(roleId);
+        result.setInterpret(sysRole.getInterpret());
+        result.setName(sysRole.getName());
+
+        return ResultUtil.ok(result);
     }
     }
 }
 }
 
 

+ 3 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/SysRoleController.java

@@ -23,6 +23,7 @@ import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
 import javax.validation.constraints.Min;
 import java.security.NoSuchAlgorithmException;
 import java.security.NoSuchAlgorithmException;
 import java.util.List;
 import java.util.List;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -92,14 +93,14 @@ public class SysRoleController {
         role.setId(sysRolePrivilegeParams.getId());
         role.setId(sysRolePrivilegeParams.getId());
         role.setName(sysRolePrivilegeParams.getName());
         role.setName(sysRolePrivilegeParams.getName());
         role.setInterpret(sysRolePrivilegeParams.getInterpret());
         role.setInterpret(sysRolePrivilegeParams.getInterpret());
-        role.setPrivilegeIds(sysRolePrivilegeParams.getPrivilegeIds());
+        role.setPrivilegeIds(sysRolePrivilegeParams.getPrivilegeIds().stream().map(SystemConstant::convertIdToLong).toArray(Long[]::new));
         boolean rolePrivilegeResult = sysRoleService.saveRoleNew(role);
         boolean rolePrivilegeResult = sysRoleService.saveRoleNew(role);
 
 
         // 组装角色权限
         // 组装角色权限
         Long roleId = role.getId();
         Long roleId = role.getId();
         // 数据权限集合
         // 数据权限集合
         if (rolePrivilegeResult && roleId > 0){
         if (rolePrivilegeResult && roleId > 0){
-            List<DataPermissionInfo> dataPermissionInfoList = sysRolePrivilegeParams.getDatePermissionInfo();
+            List<DataPermissionInfo> dataPermissionInfoList = sysRolePrivilegeParams.getDataPermissionInfo();
             basicRoleDataPermissionService.saveRoleDataPermission(roleId,dataPermissionInfoList);
             basicRoleDataPermissionService.saveRoleDataPermission(roleId,dataPermissionInfoList);
         }
         }
         return ResultUtil.ok();
         return ResultUtil.ok();

+ 17 - 0
teachcloud-common-api/src/main/java/com/qmth/teachcloud/common/api/api/BasicSchoolController.java

@@ -3,6 +3,7 @@ package com.qmth.teachcloud.common.api.api;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.teachcloud.common.bean.dto.SchoolDto;
 import com.qmth.teachcloud.common.bean.dto.SchoolDto;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.BasicSchool;
 import com.qmth.teachcloud.common.service.BasicSchoolService;
 import com.qmth.teachcloud.common.service.BasicSchoolService;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ResultUtil;
@@ -11,7 +12,9 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
 
 import java.util.List;
 import java.util.List;
 
 
@@ -41,5 +44,19 @@ public class BasicSchoolController {
         List<SchoolDto> list = basicSchoolService.listSchool();
         List<SchoolDto> list = basicSchoolService.listSchool();
         return ResultUtil.ok(list);
         return ResultUtil.ok(list);
     }
     }
+
+    /**
+     * 学校查询
+     * @return
+     */
+    @ApiOperation(value = "修改")
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    public Result update(@RequestParam(value = "id") Long id,
+                         @RequestParam(value = "code") String code,
+                         @RequestParam(value = "name") String name,
+                         @RequestParam(value = "logo", required = false) MultipartFile logo,
+                         @RequestParam(value = "logoMd5") String logoMd5) {
+        return ResultUtil.ok(basicSchoolService.updateSchool(id, code, name, logo, logoMd5));
+    }
 }
 }
 
 

+ 10 - 0
teachcloud-common-api/src/main/java/com/qmth/teachcloud/common/api/api/TSAuthController.java

@@ -83,6 +83,16 @@ public class TSAuthController {
         return ResultUtil.ok(true);
         return ResultUtil.ok(true);
     }
     }
 
 
+    @ApiOperation(value = "在线激活")
+    @ApiResponses({@ApiResponse(code = 200, message = "授权配置信息", response = Boolean.class)})
+    @RequestMapping(value = "/online/activation", method = RequestMethod.POST)
+    public Result onlineActivation(@ApiParam(value = "accessKey", required = true) @RequestParam(required = true) String accessKey,
+                                   @ApiParam(value = "accessSecret", required = true) @RequestParam(required = true) String accessSecret) {
+        solarService.update(accessKey, accessSecret);
+        authInfoService.appInfoInit();
+        return ResultUtil.ok(true);
+    }
+
     @ApiOperation(value = "查询激活信息")
     @ApiOperation(value = "查询激活信息")
     @ApiResponses({@ApiResponse(code = 200, message = "授权配置信息", response = Long.class)})
     @ApiResponses({@ApiResponse(code = 200, message = "授权配置信息", response = Long.class)})
     @RequestMapping(value = "/select", method = RequestMethod.POST)
     @RequestMapping(value = "/select", method = RequestMethod.POST)

+ 10 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/SchoolDto.java

@@ -6,6 +6,8 @@ package com.qmth.teachcloud.common.bean.dto;
 public class SchoolDto {
 public class SchoolDto {
 
 
     private String id;
     private String id;
+
+    private String code;
     private String name;
     private String name;
     private Boolean enable;
     private Boolean enable;
     private String logo;
     private String logo;
@@ -18,6 +20,14 @@ public class SchoolDto {
         this.id = id;
         this.id = id;
     }
     }
 
 
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
     public String getName() {
     public String getName() {
         return name;
         return name;
     }
     }

+ 13 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/BasicSchool.java

@@ -24,6 +24,9 @@ public class BasicSchool extends BaseEntity implements Serializable {
 
 
     private String code;
     private String code;
 
 
+    @TableField("domain_name")
+    private String domainName;
+
     private String name;
     private String name;
 
 
     @ApiModelProperty(value = "是否启用,0:停用,1:启用")
     @ApiModelProperty(value = "是否启用,0:停用,1:启用")
@@ -47,6 +50,7 @@ public class BasicSchool extends BaseEntity implements Serializable {
 
 
     public BasicSchool(Long id, String code, String name, String accessKey, String accessSecret) {
     public BasicSchool(Long id, String code, String name, String accessKey, String accessSecret) {
         this.code = code;
         this.code = code;
+        this.domainName = code;
         this.name = name;
         this.name = name;
         this.accessKey = accessKey;
         this.accessKey = accessKey;
         this.accessSecret = accessSecret;
         this.accessSecret = accessSecret;
@@ -56,6 +60,7 @@ public class BasicSchool extends BaseEntity implements Serializable {
 
 
     public BasicSchool(String code, String name, String accessKey, String accessSecret, String logo) {
     public BasicSchool(String code, String name, String accessKey, String accessSecret, String logo) {
         this.code = code;
         this.code = code;
+        this.domainName = code;
         this.name = name;
         this.name = name;
         this.accessKey = accessKey;
         this.accessKey = accessKey;
         this.accessSecret = accessSecret;
         this.accessSecret = accessSecret;
@@ -101,6 +106,14 @@ public class BasicSchool extends BaseEntity implements Serializable {
         this.code = code;
         this.code = code;
     }
     }
 
 
+    public String getDomainName() {
+        return domainName;
+    }
+
+    public void setDomainName(String domainName) {
+        this.domainName = domainName;
+    }
+
     public String getName() {
     public String getName() {
         return name;
         return name;
     }
     }

+ 3 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicSchoolService.java

@@ -3,6 +3,7 @@ package com.qmth.teachcloud.common.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.bean.dto.SchoolDto;
 import com.qmth.teachcloud.common.bean.dto.SchoolDto;
 import com.qmth.teachcloud.common.entity.BasicSchool;
 import com.qmth.teachcloud.common.entity.BasicSchool;
+import org.springframework.web.multipart.MultipartFile;
 
 
 import java.util.List;
 import java.util.List;
 
 
@@ -17,4 +18,6 @@ import java.util.List;
 public interface BasicSchoolService extends IService<BasicSchool> {
 public interface BasicSchoolService extends IService<BasicSchool> {
 
 
     List<SchoolDto> listSchool();
     List<SchoolDto> listSchool();
+
+    boolean updateSchool(Long id, String code, String name, MultipartFile logo, String logoMd5);
 }
 }

+ 60 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicSchoolServiceImpl.java

@@ -2,12 +2,27 @@ package com.qmth.teachcloud.common.service.impl;
 
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.teachcloud.common.bean.dto.SchoolDto;
 import com.qmth.teachcloud.common.bean.dto.SchoolDto;
+import com.qmth.teachcloud.common.config.DictionaryConfig;
+import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicSchool;
 import com.qmth.teachcloud.common.entity.BasicSchool;
+import com.qmth.teachcloud.common.enums.LocalCatalogEnum;
+import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.mapper.BasicSchoolMapper;
 import com.qmth.teachcloud.common.mapper.BasicSchoolMapper;
 import com.qmth.teachcloud.common.service.BasicSchoolService;
 import com.qmth.teachcloud.common.service.BasicSchoolService;
+import com.qmth.teachcloud.common.util.FileStoreUtil;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 
+import javax.annotation.Resource;
+import java.io.File;
+import java.io.FileInputStream;
 import java.util.List;
 import java.util.List;
+import java.util.Objects;
+import java.util.StringJoiner;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -20,8 +35,53 @@ import java.util.List;
 @Service
 @Service
 public class BasicSchoolServiceImpl extends ServiceImpl<BasicSchoolMapper, BasicSchool> implements BasicSchoolService {
 public class BasicSchoolServiceImpl extends ServiceImpl<BasicSchoolMapper, BasicSchool> implements BasicSchoolService {
 
 
+    @Resource
+    DictionaryConfig dictionaryConfig;
+
+    @Resource
+    FileStoreUtil fileStoreUtil;
+
     @Override
     @Override
     public List<SchoolDto> listSchool() {
     public List<SchoolDto> listSchool() {
         return this.baseMapper.listSchool();
         return this.baseMapper.listSchool();
     }
     }
+
+    @Override
+    public boolean updateSchool(Long id, String code, String name, MultipartFile logo, String logoMd5) {
+        BasicSchool basicSchool = this.getById(id);
+        basicSchool.setCode(code);
+        basicSchool.setName(name);
+
+        if (logo != null) {
+            boolean oss = dictionaryConfig.sysDomain().isOss();
+            StringJoiner stringJoiner = new StringJoiner("");
+            if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+            }
+            stringJoiner = SystemConstant.getDirName(stringJoiner, UploadFileEnum.FILE, true);
+
+            File fileTemp = null;
+            String dirName = null;
+            try {
+                fileTemp = File.createTempFile("temp", SystemConstant.JPG_PREFIX);
+                FileUtils.copyInputStreamToFile(new FileInputStream((File) logo), fileTemp);
+
+                dirName = stringJoiner + SystemConstant.getNanoId() + "." + FilenameUtils.getExtension(fileTemp.getPath());
+                String jpgFileMd5 = DigestUtils.md5Hex(new FileInputStream(fileTemp));
+                if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
+                    fileStoreUtil.localUpload(dirName, new FileInputStream(fileTemp), jpgFileMd5, LocalCatalogEnum.LOCAL_FILE);
+                } else {
+                    fileStoreUtil.ossUpload(dirName, fileTemp, jpgFileMd5, UploadFileEnum.FILE.getFssType());
+                }
+                basicSchool.setLogo(dirName);
+            } catch (Exception e) {
+                log.error(SystemConstant.LOG_ERROR, e);
+            } finally {
+                if (Objects.nonNull(fileTemp)) {
+                    fileTemp.delete();
+                }
+            }
+        }
+        return this.updateById(basicSchool);
+    }
 }
 }

+ 1 - 1
teachcloud-common/src/main/resources/mapper/BasicSchoolMapper.xml

@@ -21,7 +21,7 @@
         code, name, enable, access_key, access_secret, remark, create_time, update_time
         code, name, enable, access_key, access_secret, remark, create_time, update_time
     </sql>
     </sql>
     <select id="listSchool" resultType="com.qmth.teachcloud.common.bean.dto.SchoolDto">
     <select id="listSchool" resultType="com.qmth.teachcloud.common.bean.dto.SchoolDto">
-        select id, name, enable, logo from basic_school where enable = true order by create_time desc
+        select id, code, name, enable, logo from basic_school where enable = true order by create_time desc
     </select>
     </select>
 
 
 </mapper>
 </mapper>