zouxuan 5 years ago
parent
commit
2444bcb1f2

+ 30 - 0
edu-auth/edu-auth-api/src/main/java/com/keao/edu/auth/api/entity/LoginEntity.java

@@ -9,6 +9,36 @@ public class LoginEntity {
 
     private String phone;
 
+    private String registerFlag;
+
+    private String tenantId;
+
+    private Integer organId;
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+    public String getRegisterFlag() {
+        return registerFlag;
+    }
+
+    public void setRegisterFlag(String registerFlag) {
+        this.registerFlag = registerFlag;
+    }
+
+    public String getTenantId() {
+        return tenantId;
+    }
+
+    public void setTenantId(String tenantId) {
+        this.tenantId = tenantId;
+    }
+
     public String getSmsCode() {
         return smsCode;
     }

+ 4 - 0
edu-auth/edu-auth-server/pom.xml

@@ -92,5 +92,9 @@
             <version>1.0</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>com.keao.edu</groupId>
+            <artifactId>edu-user-client-api</artifactId>
+        </dependency>
     </dependencies>
 </project>

+ 6 - 0
edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/core/provider/PhoneAuthenticationProvider.java

@@ -1,5 +1,6 @@
 package com.keao.edu.auth.core.provider;
 
+import com.keao.edu.auth.api.dto.SysUserInfo;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.InternalAuthenticationServiceException;
@@ -43,6 +44,11 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 
 		String smsCode = loginEntity.getSmsCode();
 
+		SysUserInfo userInfo = sysUserService.queryUserInfoByPhone(loginEntity.getPhone());
+		if (userInfo == null && StringUtils.isNotEmpty(loginEntity.getRegisterFlag())) {
+			sysUserService.initUser(loginEntity);
+		}
+
 		// 验证码验证
 		boolean b = smsCodeService.verifyValidCode(StringUtils.substringAfter(phone, SecurityConstants.PHONE_PRINCIPAL_PREFIX), smsCode);
 		if (!b) {

+ 7 - 0
edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/service/SysUserService.java

@@ -1,6 +1,7 @@
 package com.keao.edu.auth.service;
 
 import com.keao.edu.auth.api.dto.SysUserInfo;
+import com.keao.edu.auth.api.entity.LoginEntity;
 import com.keao.edu.auth.api.entity.SysUser;
 import com.keao.edu.common.service.BaseService;
 import com.keao.edu.im.api.entity.ImUserModel;
@@ -96,4 +97,10 @@ public interface SysUserService extends BaseService<Integer, SysUser> {
 	 */
     void refreshImToken(SysUser sysUser);
 
+	/**
+	 * 学员注册
+	 * @return
+	 */
+	SysUserInfo initUser(LoginEntity loginEntity);
+
 }

+ 17 - 0
edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/service/impl/SysUserServiceImpl.java

@@ -1,6 +1,7 @@
 package com.keao.edu.auth.service.impl;
 
 import com.keao.edu.auth.api.dto.SysUserInfo;
+import com.keao.edu.auth.api.entity.LoginEntity;
 import com.keao.edu.auth.api.entity.SysUser;
 import com.keao.edu.auth.dal.dao.SysUserDao;
 import com.keao.edu.auth.service.SysRoleMenuService;
@@ -12,7 +13,11 @@ import com.keao.edu.common.service.impl.BaseServiceImpl;
 import com.keao.edu.im.api.client.ImFeignService;
 import com.keao.edu.im.api.entity.ImResult;
 import com.keao.edu.im.api.entity.ImUserModel;
+import com.keao.edu.user.api.client.EduUserFeignService;
+import com.keao.edu.user.api.entity.Student;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -30,6 +35,8 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 	private SysRoleMenuService sysRoleMenuService;
 	@Autowired
 	private ImFeignService imFeignService;
+	@Autowired
+	private EduUserFeignService eduUserFeignService;
 
 	@Override
 	public BaseDAO<Integer, SysUser> getDAO() {
@@ -134,4 +141,14 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 		sysUserDao.refreshImToken(sysUser.getId(),sysUser.getImToken());
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public SysUserInfo initUser(LoginEntity loginEntity) {
+		if(StringUtils.equalsIgnoreCase(loginEntity.getClientId(),"STUDENT")){
+			eduUserFeignService.studentApply(new Student(loginEntity.getOrganId(),loginEntity.getPhone()));
+			return queryUserInfoByPhone(loginEntity.getPhone());
+		}
+		throw new UsernameNotFoundException("404.9");
+	}
+
 }

+ 7 - 1
edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/client/EduUserFeignService.java

@@ -1,11 +1,14 @@
 package com.keao.edu.user.api.client;
 
 
+import com.keao.edu.common.config.FeignConfiguration;
 import com.keao.edu.user.api.client.fallback.EduUserFeignServiceFallback;
 import com.keao.edu.user.api.entity.ExamRoom;
-import com.keao.edu.common.config.FeignConfiguration;
+import com.keao.edu.user.api.entity.Student;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
 @FeignClient(contextId = "eduUserFeignService", name = "user-server", configuration = { FeignConfiguration.class }, fallback = EduUserFeignServiceFallback.class)
@@ -13,4 +16,7 @@ public interface EduUserFeignService {
 
 	@GetMapping(value = "examRoom/get")
 	ExamRoom getExamRoom(@RequestParam("id") Integer id);
+
+	@PostMapping(value = "student/apply", consumes = MediaType.APPLICATION_JSON_VALUE)
+	Boolean studentApply(Student student);
 }

+ 6 - 0
edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/client/fallback/EduUserFeignServiceFallback.java

@@ -2,6 +2,7 @@ package com.keao.edu.user.api.client.fallback;
 
 import com.keao.edu.user.api.client.EduUserFeignService;
 import com.keao.edu.user.api.entity.ExamRoom;
+import com.keao.edu.user.api.entity.Student;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.RequestParam;
 
@@ -13,4 +14,9 @@ public class EduUserFeignServiceFallback implements EduUserFeignService {
 		return null;
 	}
 
+	@Override
+	public Boolean studentApply(Student student) {
+		return null;
+	}
+
 }

+ 22 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/Student.java → edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/entity/Student.java

@@ -1,4 +1,4 @@
-package com.keao.edu.user.entity;
+package com.keao.edu.user.api.entity;
 
 import com.keao.edu.auth.api.entity.SysUser;
 import io.swagger.annotations.ApiModelProperty;
@@ -21,8 +21,29 @@ public class Student extends SysUser {
 
 	private String tenantId;
 
+	private Integer organId;
+
 	private SysUser sysUser;
 
+	public Student(Integer organId, String phone) {
+		this.organId = organId;
+		SysUser user = new SysUser();
+		user.setPhone(phone);
+		this.sysUser = user;
+	}
+
+	public Student() {
+		super();
+	}
+
+	public Integer getOrganId() {
+		return organId;
+	}
+
+	public void setOrganId(Integer organId) {
+		this.organId = organId;
+	}
+
 	public SysUser getSysUser() {
 		return sysUser;
 	}

+ 11 - 3
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/StudentController.java

@@ -5,7 +5,7 @@ import com.keao.edu.common.controller.BaseController;
 import com.keao.edu.common.entity.HttpResponseResult;
 import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.common.page.QueryInfo;
-import com.keao.edu.user.entity.Student;
+import com.keao.edu.user.api.entity.Student;
 import com.keao.edu.user.service.StudentService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -28,15 +28,23 @@ public class StudentController extends BaseController {
 
 	@ApiOperation(value = "学员列表")
 	@GetMapping(value = "list")
-    @PreAuthorize("@pcs.hasPermissions('teacher/list')")
+    @PreAuthorize("@pcs.hasPermissions('student/list')")
 	public HttpResponseResult<PageInfo<Student>> list(QueryInfo queryInfo) {
 		return succeed(studentService.queryPage(queryInfo));
 	}
 
 	@ApiOperation(value = "查询学员")
 	@GetMapping(value = "get")
-    @PreAuthorize("@pcs.hasPermissions('teacher/get')")
+    @PreAuthorize("@pcs.hasPermissions('student/get')")
 	public HttpResponseResult<Student> get(Integer id) {
 		return succeed(studentService.get(id));
 	}
+
+	@ApiOperation(value = "学员报名")
+	@GetMapping(value = "studentApply")
+    @PreAuthorize("@pcs.hasPermissions('student/apply')")
+	public HttpResponseResult apply(Student student) {
+		studentService.addStudent(student);
+		return succeed();
+	}
 }

+ 1 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/StudentDao.java

@@ -1,7 +1,7 @@
 package com.keao.edu.user.dao;
 
 import com.keao.edu.common.dal.BaseDAO;
-import com.keao.edu.user.entity.Student;
+import com.keao.edu.user.api.entity.Student;
 
 public interface StudentDao extends BaseDAO<Integer, Student> {
 

+ 1 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/ExamRegistration.java

@@ -1,6 +1,7 @@
 package com.keao.edu.user.entity;
 
 import com.keao.edu.auth.api.entity.SysUser;
+import com.keao.edu.user.api.entity.Student;
 import com.keao.edu.user.enums.StudentRegistrationStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;

+ 1 - 2
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/StudentService.java

@@ -1,8 +1,7 @@
 package com.keao.edu.user.service;
 
 import com.keao.edu.common.service.BaseService;
-import com.keao.edu.user.entity.ExamSong;
-import com.keao.edu.user.entity.Student;
+import com.keao.edu.user.api.entity.Student;
 
 /**
  * @Author Joburgess

+ 29 - 8
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/StudentServiceImpl.java

@@ -4,9 +4,15 @@ import com.keao.edu.auth.api.entity.SysUser;
 import com.keao.edu.common.dal.BaseDAO;
 import com.keao.edu.common.exception.BizException;
 import com.keao.edu.common.service.impl.BaseServiceImpl;
+import com.keao.edu.im.api.client.ImFeignService;
+import com.keao.edu.im.api.entity.ImResult;
+import com.keao.edu.im.api.entity.ImUserModel;
 import com.keao.edu.user.dao.StudentDao;
 import com.keao.edu.user.dao.SysUserDao;
-import com.keao.edu.user.entity.Student;
+import com.keao.edu.user.api.entity.Student;
+import com.keao.edu.user.entity.Organization;
+import com.keao.edu.user.enums.YesOrNoEnum;
+import com.keao.edu.user.service.OrganizationService;
 import com.keao.edu.user.service.StudentService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,6 +30,10 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     private StudentDao studentDao;
     @Autowired
     private SysUserDao sysUserDao;
+    @Autowired
+    private OrganizationService organizationService;
+    @Autowired
+    private ImFeignService imFeignService;
 
     @Override
     public BaseDAO<Integer, Student> getDAO() {
@@ -37,19 +47,30 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         if (sysUser == null || StringUtils.isEmpty(sysUser.getPhone())) {
             throw new BizException("参数校验失败");
         }
-        SysUser sysUser1 = sysUserDao.queryByPhone(sysUser.getPhone());
-        if (sysUser1 != null) {
-            if (sysUser1.getUserType().contains("STUDENT")) {
-                throw new BizException("手机号已被占用");
-            } else {
-                sysUser.setId(sysUser1.getId());
-                sysUser.setUserType(sysUser1.getUserType() + ",STUDENT");
+        SysUser user = sysUserDao.queryByPhone(sysUser.getPhone());
+        if (user != null && user.getId() != null) {
+            Student stu = studentDao.get(user.getId());
+            if(stu == null){
+                student.setUserId(user.getId());
+                student.setTenantId(user.getTenantId());
+                studentDao.insert(student);
+                sysUser.setId(user.getId());
+                sysUser.setUserType(user.getUserType() + ",STUDENT");
                 sysUserDao.update(sysUser);
                 return;
+            }else{
+                throw new BizException("用户已存在");
             }
         }
+        Organization organization = organizationService.get(student.getOrganId());
+        student.setTenantId(organization.getTenantId());
+        sysUser.setTenantId(organization.getTenantId());
         sysUser.setUserType("STUDENT");
         sysUserDao.insert(sysUser);
+        ImResult imResult = imFeignService.register(new ImUserModel(sysUser.getId().toString(), sysUser.getRealName(),null));
+        sysUser.setImToken(imResult.getToken());
+        sysUserDao.update(sysUser);
+        student.setUserId(sysUser.getId());
         studentDao.insert(student);
     }
 

+ 3 - 3
edu-user/edu-user-server/src/main/resources/config/mybatis/StudentMapper.xml

@@ -6,7 +6,7 @@
 -->
 <mapper namespace="com.keao.edu.user.dao.StudentDao">
 	
-	<resultMap type="com.keao.edu.user.entity.Student" id="Student">
+	<resultMap type="com.keao.edu.user.api.entity.Student" id="Student">
 		<result column="user_id_" property="userId" />
 		<result column="certificate_photo_" property="certificatePhoto" />
 		<result column="create_time_" property="createTime" />
@@ -27,13 +27,13 @@
 	</select>
 	
 	<!-- 向数据库增加一条记录 -->
-	<insert id="insert" parameterType="com.keao.edu.user.entity.Student" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+	<insert id="insert" parameterType="com.keao.edu.user.api.entity.Student" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		INSERT INTO student (user_id_,certificate_photo_,create_time_,update_time_,tenant_id_)
 		VALUES(#{userId},#{certificatePhoto},#{createTime},#{updateTime},#{tenantId})
 	</insert>
 
 	<!-- 根据主键查询一条记录 -->
-	<update id="update" parameterType="com.keao.edu.user.entity.Student">
+	<update id="update" parameterType="com.keao.edu.user.api.entity.Student">
 		UPDATE student
 		<set>
 			<if test="certificatePhoto != null">