浏览代码

角色修改

wangliang 3 年之前
父节点
当前提交
dde6a78a33

+ 5 - 5
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)) {
-        return true;
-//        } else {
-//            return AuthUtil.adminAuthInterceptor(request, response);
-//        }
+        if (request.getServletPath().contains(endpoint)) {
+            return true;
+        } else {
+            return AuthUtil.adminAuthInterceptor(request, response);
+        }
     }
 
     @Override

+ 6 - 4
distributed-print/src/main/resources/application-dev.properties

@@ -10,17 +10,19 @@ server.tomcat.uri-encoding=UTF-8
 spring.application.name=distributed-print
 
 #\u6570\u636E\u6E90\u914D\u7F6E
+#db.host=192.168.10.136
 db.host=localhost
 db.port=3306
-db.name=distributed-136
+db.name=distributed-v2.2.0
 db.username=root
+#db.password=Qmth87863577!
 db.password=123456789
 
 #redis\u6570\u636E\u6E90\u914D\u7F6E
 com.qmth.redis.host=${db.host}
 com.qmth.redis.port=6379
-com.qmth.redis.db=0
-#com.qmth.redis.password=
+com.qmth.redis.db=15
+#com.qmth.redis.password=123456
 
 #mysql\u914D\u7F6E
 com.qmth.mysql.url=jdbc:mysql://${db.host}:${db.port}/${db.name}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true
@@ -84,7 +86,7 @@ org.center.orgQueryApi=/api/open/org/query
 #com.qmth.api.uri-prefix=/aaa
 #\u7EDF\u8BA1\u9875\u9762\u914D\u7F6E
 com.qmth.api.metrics-endpoint=/metrics-count
-com.qmth.api.global-auth=true
+com.qmth.api.global-auth=false
 #com.qmth.api.global-strict=false
 #com.qmth.api.global-rate-limit=1/5s
 

+ 4 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/SysRole.java

@@ -8,6 +8,8 @@ import com.qmth.teachcloud.common.base.BaseEntity;
 import com.qmth.teachcloud.common.enums.RoleTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
 import java.io.Serializable;
 
 /**
@@ -36,6 +38,7 @@ public class SysRole extends BaseEntity implements Serializable {
     /**
      * 角色名称
      */
+    @NotBlank(message = "角色名称不能为空")
     private String name;
 
     /**
@@ -50,6 +53,7 @@ public class SysRole extends BaseEntity implements Serializable {
 
     @JsonSerialize(using = ToStringSerializer.class)
     @TableField(exist = false)
+    @NotEmpty(message = "权限集合不能为空")
     private Long[] privilegeIds;
 
     public static long getSerialVersionUID() {

+ 2 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/TBSession.java

@@ -95,7 +95,8 @@ public class TBSession implements Serializable {
 
     }
 
-    public TBSession(String id, String identity, String type, String source, String platform, String deviceId, String address, String accessToken, Long expireTime, AppSourceEnum appSource) {
+    public TBSession(Long schoolId, String id, String identity, String type, String source, String platform, String deviceId, String address, String accessToken, Long expireTime, AppSourceEnum appSource) {
+        this.schoolId = schoolId;
         this.id = id;
         this.identity = identity;
         this.type = type;

+ 3 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/FieldUniqueEnum.java

@@ -11,7 +11,9 @@ import java.util.Objects;
  */
 public enum FieldUniqueEnum {
 
-    user_schoolId_orgId_loginName_idx("登录名");
+    user_schoolId_orgId_loginName_idx("登录名"),
+
+    schoolId_name_idx("角色名");
 
     private String title;
 

+ 9 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysRoleService.java

@@ -18,8 +18,17 @@ public interface SysRoleService extends IService<SysRole> {
 
     IPage<SysRole> list(String name, Boolean enable, Integer pageNumber, Integer pageSize);
 
+    @Deprecated
     boolean saveRole(SysRole role);
 
+    /**
+     * 新增角色
+     *
+     * @param role
+     * @return
+     */
+    boolean saveRoleNew(SysRole role);
+
     boolean enable(SysRole role);
 
     boolean remove(Long id);

+ 55 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysRoleServiceImpl.java

@@ -5,21 +5,29 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.boot.api.exception.ApiException;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysRole;
+import com.qmth.teachcloud.common.entity.SysRolePrivilege;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUserRole;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
 import com.qmth.teachcloud.common.mapper.SysRoleMapper;
 import com.qmth.teachcloud.common.service.CacheService;
 import com.qmth.teachcloud.common.service.SysRolePrivilegeService;
 import com.qmth.teachcloud.common.service.SysRoleService;
 import com.qmth.teachcloud.common.service.SysUserRoleService;
+import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import sun.misc.Request;
 
+import javax.annotation.Resource;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
@@ -44,6 +52,9 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
     @Autowired
     private CacheService cacheService;
 
+    @Resource
+    SysRoleService sysRoleService;
+
     @Override
     public IPage<SysRole> list(String name, Boolean enable, Integer pageNumber, Integer pageSize) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
@@ -53,6 +64,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
 
     @Transactional
     @Override
+    @Deprecated
     public boolean saveRole(SysRole role) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         role.setSchoolId(schoolId);
@@ -104,6 +116,49 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
         return isSuccess;
     }
 
+    /**
+     * 新增角色
+     *
+     * @param role
+     * @return
+     */
+    @Transactional
+    @Override
+    public boolean saveRoleNew(SysRole role) {
+        try {
+            SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+            if (Objects.nonNull(role.getId())) {//编辑
+                QueryWrapper<SysRolePrivilege> sysRolePrivilegeQueryWrapper = new QueryWrapper<>();
+                sysRolePrivilegeQueryWrapper.lambda().eq(SysRolePrivilege::getRoleId, role.getId())
+                        .eq(SysRolePrivilege::getEnable, true);
+                List<SysRolePrivilege> sysRolePrivilegeList = sysRolePrivilegeService.list(sysRolePrivilegeQueryWrapper);
+                int count = (int) sysRolePrivilegeList.stream().filter(s -> Arrays.asList(role.getPrivilegeIds()).contains(s.getPrivilegeId())).count();
+                role.setUpdateId(sysUser.getId());
+                sysRoleService.updateById(role);
+                if (count != sysRolePrivilegeList.size()) {
+                    sysRolePrivilegeService.removeByRoleId(role.getId());
+                    //角色权限
+                    sysRolePrivilegeService.saveBatch(role);
+                }
+            } else {
+                role.setCreateId(sysUser.getId());
+                sysRoleService.save(role);
+                sysRolePrivilegeService.saveBatch(role);
+            }
+        } catch (Exception e) {
+            if (e instanceof DuplicateKeyException) {
+                String errorColumn = e.getCause().toString();
+                String columnStr = errorColumn.substring(errorColumn.lastIndexOf("key") + 3, errorColumn.length()).replaceAll("'", "");
+                throw ExceptionResultEnum.SQL_ERROR.exception("[" + FieldUniqueEnum.convertToTitle(columnStr) + "]数据不允许重复插入");
+            } else if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        }
+        return true;
+    }
+
     @Override
     public boolean enable(SysRole role) {
         UpdateWrapper<SysRole> updateWrapper = new UpdateWrapper<>();

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

@@ -639,16 +639,16 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         Set<RoleTypeEnum> roleType = authBean.getRoleList().stream().map(s -> s.getType()).collect(Collectors.toSet());
         String sessionId = SessionUtil.digest(sysUser.getId(), Math.abs(roleType.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(sessionId, String.valueOf(sysUser.getId()), roleType.toString(),
+        TBSession tbSession = new TBSession(sysUser.getSchoolId(), sessionId, String.valueOf(sysUser.getId()), roleType.toString(),
                 platform.name(), platform.name(), deviceId, ServletUtil.getRequest().getLocalAddr(), token,
                 expireTime.getDate().getTime(), appSource);
         tbSessionService.saveOrUpdate(tbSession);
         redisUtil.setUserSession(sessionId, tbSession, expireTime.getExpireSeconds());
 
-//        LoginResult loginResult = new LoginResult(sysUser, sessionId, test, roleType, appSource);
-        LoginResult loginResult = new LoginResult(sysUser, sessionId, token, roleType, appSource);
+        LoginResult loginResult = new LoginResult(sysUser, sessionId, test, roleType, appSource);
+//        LoginResult loginResult = new LoginResult(sysUser, sessionId, token, roleType, 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());