Browse Source

重构部分代码

宋悦 8 years ago
parent
commit
d54deb5ccd

+ 3 - 12
.gitignore

@@ -1,20 +1,11 @@
-*.class
-
-# Proguard folder generated by ide
 .project
 .project
 .classpath
 .classpath
 .settings
 .settings
 target/
 target/
 .idea/
 .idea/
 *.iml
 *.iml
-
-# Log Files
-*.log
-*.class
-
-
+*test/
 # Package Files #
 # Package Files #
 *.jar
 *.jar
-*.war
-*.ear
-/core-main/src/test/
+
+

+ 21 - 1
core-api/pom.xml

@@ -15,7 +15,27 @@
         <dependency>
         <dependency>
             <groupId>cn.com.qmth.examcloud.service</groupId>
             <groupId>cn.com.qmth.examcloud.service</groupId>
             <artifactId>core-domain</artifactId>
             <artifactId>core-domain</artifactId>
-            <version>0.1.0</version>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.com.qmth.examcloud.common</groupId>
+            <artifactId>common-util</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.com.qmth.examcloud.common</groupId>
+            <artifactId>common-uac</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.com.qmth.examcloud.common</groupId>
+            <artifactId>common-config</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <groupId>org.springframework.cloud</groupId>

+ 1 - 1
core-api/src/main/java/cn/com/qmth/examcloud/service/core/api/OrgApi.java

@@ -11,7 +11,7 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 /**
 /**
- * 学校服务API
+ * 机构服务API
  * Created by songyue on 17/1/14.
  * Created by songyue on 17/1/14.
  */
  */
 @RestController
 @RestController

+ 3 - 3
core-api/src/main/java/cn/com/qmth/examcloud/service/core/api/UserApi.java

@@ -1,12 +1,11 @@
 package cn.com.qmth.examcloud.service.core.api;
 package cn.com.qmth.examcloud.service.core.api;
 
 
+import cn.com.qmth.examcloud.service.core.dao.User;
 import cn.com.qmth.examcloud.service.core.enums.UserType;
 import cn.com.qmth.examcloud.service.core.enums.UserType;
 import cn.com.qmth.examcloud.service.core.repo.UserRepo;
 import cn.com.qmth.examcloud.service.core.repo.UserRepo;
-import cn.com.qmth.examcloud.service.core.dao.User;
 import cn.com.qmth.examcloud.service.core.service.UserService;
 import cn.com.qmth.examcloud.service.core.service.UserService;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.PageRequest;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
@@ -89,7 +88,8 @@ public class UserApi {
 
 
     @ApiOperation(value="一般登录",notes="登录")
     @ApiOperation(value="一般登录",notes="登录")
     @PostMapping("/login")
     @PostMapping("/login")
-    public ResponseEntity login(@RequestParam String loginName,@RequestParam String password){
+    public ResponseEntity login(@RequestParam String loginName,
+                                @RequestParam String password){
         return userService.login(loginName,password);
         return userService.login(loginName,password);
     }
     }
 
 

+ 38 - 9
core-api/src/main/java/cn/com/qmth/examcloud/service/core/service/UserService.java

@@ -1,24 +1,28 @@
 package cn.com.qmth.examcloud.service.core.service;
 package cn.com.qmth.examcloud.service.core.service;
 
 
+import cn.com.qmth.examcloud.common.uac.AccessCtrlUtil;
+import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
+import cn.com.qmth.examcloud.common.util.RedisUtil;
 import cn.com.qmth.examcloud.service.core.dao.Org;
 import cn.com.qmth.examcloud.service.core.dao.Org;
 import cn.com.qmth.examcloud.service.core.dao.Student;
 import cn.com.qmth.examcloud.service.core.dao.Student;
+import cn.com.qmth.examcloud.service.core.dao.User;
+import cn.com.qmth.examcloud.service.core.dao.UserRole;
 import cn.com.qmth.examcloud.service.core.dto.UserInfo;
 import cn.com.qmth.examcloud.service.core.dto.UserInfo;
 import cn.com.qmth.examcloud.service.core.enums.UserType;
 import cn.com.qmth.examcloud.service.core.enums.UserType;
 import cn.com.qmth.examcloud.service.core.params.UserParam;
 import cn.com.qmth.examcloud.service.core.params.UserParam;
 import cn.com.qmth.examcloud.service.core.repo.OrgRepo;
 import cn.com.qmth.examcloud.service.core.repo.OrgRepo;
 import cn.com.qmth.examcloud.service.core.repo.StudentRepo;
 import cn.com.qmth.examcloud.service.core.repo.StudentRepo;
 import cn.com.qmth.examcloud.service.core.repo.UserRepo;
 import cn.com.qmth.examcloud.service.core.repo.UserRepo;
-import cn.com.qmth.examcloud.service.core.dao.User;
+import cn.com.qmth.examcloud.service.core.repo.UserRoleRepo;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Example;
-import org.springframework.data.domain.ExampleMatcher;
-import org.springframework.data.domain.Pageable;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
-import static org.springframework.data.domain.ExampleMatcher.GenericPropertyMatchers.startsWith;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * 用户服务类
  * 用户服务类
@@ -36,6 +40,9 @@ public class UserService {
     @Autowired
     @Autowired
     OrgRepo orgRepo;
     OrgRepo orgRepo;
 
 
+    @Autowired
+    UserRoleRepo userRoleRepo;
+
     /**
     /**
      * 初始化密码
      * 初始化密码
      * @param userId
      * @param userId
@@ -62,7 +69,8 @@ public class UserService {
      * @param password
      * @param password
      * @return
      * @return
      */
      */
-    public ResponseEntity login(String loginName,String password){
+    public ResponseEntity login(String loginName,
+                                String password){
         User user = userRepo.findByLoginName(loginName);
         User user = userRepo.findByLoginName(loginName);
         return loginProcess(user,password);
         return loginProcess(user,password);
 
 
@@ -75,7 +83,9 @@ public class UserService {
      * @param password
      * @param password
      * @return
      * @return
      */
      */
-    public ResponseEntity login(long orgId,String loginName,String password){
+    public ResponseEntity login(long orgId,
+                                String loginName,
+                                String password){
         User user = userRepo.findByRootOrgIdAndLoginName(orgId,loginName);
         User user = userRepo.findByRootOrgIdAndLoginName(orgId,loginName);
         return loginProcess(user,password);
         return loginProcess(user,password);
     }
     }
@@ -86,16 +96,35 @@ public class UserService {
      * @param password
      * @param password
      * @return
      * @return
      */
      */
-    public ResponseEntity loginProcess(User user,String password){
+    public ResponseEntity loginProcess(User user,
+                                       String password){
         if(user == null){
         if(user == null){
             return new ResponseEntity("该用户不存在",HttpStatus.NOT_FOUND);
             return new ResponseEntity("该用户不存在",HttpStatus.NOT_FOUND);
         }else if(!user.getPassword().equals(password)){
         }else if(!user.getPassword().equals(password)){
             return new ResponseEntity("密码错误",HttpStatus.EXPECTATION_FAILED);
             return new ResponseEntity("密码错误",HttpStatus.EXPECTATION_FAILED);
         }else{
         }else{
-            String token = "";
+            String token = AccessCtrlUtil.buildToken();
+            createAccessUser(token,user);
             return new ResponseEntity(getUserInfo(user,token),HttpStatus.OK);
             return new ResponseEntity(getUserInfo(user,token),HttpStatus.OK);
         }
         }
+    }
 
 
+    /**
+     * 创建访问用户并加入K/V缓存
+     * @param token
+     * @param user
+     */
+    public void createAccessUser(String token,User user){
+        AccessUser accessUser = new AccessUser();
+        Set<UserRole> userRoleSet = userRoleRepo.findByUserId(user.getId());
+        Map<String,Set<String>> rolesMap = userRoleSet.stream()
+                .collect(Collectors.groupingBy(UserRole::getAppCode,
+                        Collectors.mapping(UserRole::getRoleCode,Collectors.toSet())));
+        accessUser.setLoginName(user.getLoginName());
+        accessUser.setOrgId(user.getOrgId());
+        accessUser.setUserId(user.getId());
+        accessUser.setRoles(rolesMap);
+        RedisUtil.setByte(token,accessUser);
     }
     }
 
 
     /**
     /**

+ 16 - 0
core-api/src/test/java/cn/com/qmth/examcloud/service/core/TestApi.java

@@ -0,0 +1,16 @@
+package cn.com.qmth.examcloud.service.core;
+
+import org.junit.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Created by songyue on 17/2/24.
+ */
+@SpringBootTest
+public class TestApi{
+
+    @Test
+    public void testUser(){
+
+    }
+}

+ 6 - 0
core-domain/pom.xml

@@ -28,5 +28,11 @@
             <artifactId>hibernate-validator</artifactId>
             <artifactId>hibernate-validator</artifactId>
         </dependency>
         </dependency>
 
 
+        <dependency>
+            <groupId>cn.com.qmth.examcloud.common</groupId>
+            <artifactId>common-uac</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
     </dependencies>
     </dependencies>
 </project>
 </project>

+ 11 - 0
core-domain/src/main/java/cn/com/qmth/examcloud/service/core/dao/Course.java

@@ -30,6 +30,9 @@ public class Course implements Serializable{
 	@NotNull
 	@NotNull
     private String name;
     private String name;
 
 
+	@NotNull
+	private Long orgId;
+
 	@Temporal(value = TemporalType.DATE)
 	@Temporal(value = TemporalType.DATE)
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	@Column(columnDefinition = "default now()")
 	@Column(columnDefinition = "default now()")
@@ -96,6 +99,14 @@ public class Course implements Serializable{
 		this.enable = enable;
 		this.enable = enable;
 	}
 	}
 
 
+	public Long getOrgId() {
+		return orgId;
+	}
+
+	public void setOrgId(Long orgId) {
+		this.orgId = orgId;
+	}
+
 	public Course() {
 	public Course() {
 	}
 	}
 }
 }

+ 1 - 0
core-domain/src/main/java/cn/com/qmth/examcloud/service/core/dao/UserRole.java

@@ -1,5 +1,6 @@
 package cn.com.qmth.examcloud.service.core.dao;
 package cn.com.qmth.examcloud.service.core.dao;
 
 
+import cn.com.qmth.examcloud.common.uac.enums.RoleMeta;
 import org.springframework.data.annotation.Id;
 import org.springframework.data.annotation.Id;
 
 
 import javax.persistence.Entity;
 import javax.persistence.Entity;

+ 0 - 3
core-main/pom.xml

@@ -51,13 +51,10 @@
     </dependencies>
     </dependencies>
 
 
     <build>
     <build>
-        <!-- 为jar包取名 -->
-        <finalName>ExamCloud-service-core</finalName>
         <plugins>
         <plugins>
             <plugin>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
-                <version>${spring.boot.version}</version>
             </plugin>
             </plugin>
             <plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <groupId>org.apache.maven.plugins</groupId>

+ 1 - 1
core-main/src/main/resources/application.properties

@@ -1,4 +1,4 @@
-spring.datasource.url=jdbc:mysql://localhost:3306/examcloud?useUnicode=true&characterEncoding=UTF-8
+spring.datasource.url=jdbc:mysql://localhost:3306/exam_cloud_test?useUnicode=true&characterEncoding=UTF-8
 spring.datasource.username=root
 spring.datasource.username=root
 spring.datasource.password=root
 spring.datasource.password=root
 spring.datasource.validation-query=SELECT 1 FROM DUAL
 spring.datasource.validation-query=SELECT 1 FROM DUAL

+ 5 - 25
pom.xml

@@ -19,26 +19,20 @@
     <parent>
     <parent>
         <groupId>org.springframework.boot</groupId>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>1.4.3.RELEASE</version>
+        <version>1.5.1.RELEASE</version>
     </parent>
     </parent>
 
 
 
 
-
-
     <properties>
     <properties>
         <!-- non-dependencies -->
         <!-- non-dependencies -->
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <java.version>1.8</java.version>
         <java.version>1.8</java.version>
         <mysql.version>5.1.21</mysql.version>
         <mysql.version>5.1.21</mysql.version>
-        <poi.version>3.8</poi.version>
-        <!--反射工具类 -->
-        <reflectasm.version>1.11.3</reflectasm.version>
-        <!-- 图片压缩 -->
-        <thumbnailator.version>0.4.8</thumbnailator.version>
         <!-- maven plugins -->
         <!-- maven plugins -->
         <maven-surefire-plugin.version>2.19.1</maven-surefire-plugin.version>
         <maven-surefire-plugin.version>2.19.1</maven-surefire-plugin.version>
-        <maven-compiler-plugin.version>3.3</maven-compiler-plugin.version>
-        <spring.boot.version>1.4.3.RELEASE</spring.boot.version>
+        <maven-compiler-plugin.version>3.6.1</maven-compiler-plugin.version>
+        <spring.boot.version>1.5.1.RELEASE</spring.boot.version>
+        <project.version>0.1.0</project.version>
     </properties>
     </properties>
 
 
     <dependencyManagement>
     <dependencyManagement>
@@ -50,21 +44,6 @@
                 <artifactId>mysql-connector-java</artifactId>
                 <artifactId>mysql-connector-java</artifactId>
                 <version>${mysql.version}</version>
                 <version>${mysql.version}</version>
             </dependency>
             </dependency>
-            <dependency>
-                <groupId>org.apache.poi</groupId>
-                <artifactId>poi-ooxml</artifactId>
-                <version>${poi.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.esotericsoftware</groupId>
-                <artifactId>reflectasm</artifactId>
-                <version>${reflectasm.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>net.coobird</groupId>
-                <artifactId>thumbnailator</artifactId>
-                <version>${thumbnailator.version}</version>
-            </dependency>
             <dependency>
             <dependency>
                 <groupId>org.springframework.cloud</groupId>
                 <groupId>org.springframework.cloud</groupId>
                 <artifactId>spring-cloud-dependencies</artifactId>
                 <artifactId>spring-cloud-dependencies</artifactId>
@@ -72,6 +51,7 @@
                 <type>pom</type>
                 <type>pom</type>
                 <scope>import</scope>
                 <scope>import</scope>
             </dependency>
             </dependency>
+
         </dependencies>
         </dependencies>
     </dependencyManagement>
     </dependencyManagement>